Wiktionary
zhwiktionary
https://zh.wiktionary.org/wiki/Wiktionary:%E9%A6%96%E9%A1%B5
MediaWiki 1.47.0-wmf.3
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
9788491
9786907
2026-05-25T05:47:53Z
TongcyBot
83009
機器人:更新每日統計數據 (2026-05-25)
9788491
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-05-01
| fr | mg | zh | th | el
| 6910311 | 5911338 | 2317075 | 2180613 | 1578407
| 6910465 | 5911778 | 2317733 | 2180625 | 1578438
| 6910902 | 5911947 | 2318306 | 2180659 | 1578642
| 6911431 | 5912087 | 2318644 | 2180659 | 1578727
| 6911789 | 5912618 | 2319200 | 2180693 | 1578858
| 6912182 | 5912774 | 2319756 | 2180695 | 1578878
| 6912997 | 5913101 | 2320558 | 2180707 | 1578945
| 6913587 | 5914311 | 2321341 | 2180732 | 1578967
| 6914008 | 5914542 | 2321908 | 2180738 | 1578993
| 6914917 | 5914730 | 2322662 | 2180747 | 1579019
| 6915864 | 5914994 | 2323162 | 2180753 | 1579114
| 6916634 | 5915340 | 2323608 | 2180766 | 1579178
| 6916940 | 5916674 | 2323976 | 2180768 | 1579265
| 6917350 | 5917831 | 2324585 | 2180776 | 1579287
| 6917821 | 5918823 | 2325063 | 2180778 | 1579331
| 6918489 | 5920727 | 2325493 | 2180780 | 1579363
| 6919012 | 5922295 | 2325985 | 2180790 | 1579553
| 6920483 | 5922806 | 2326264 | 2180793 | 1579602
| 6921440 | 5923377 | 2326763 | 2180798 | 1579709
| 6922423 | 5924318 | 2327241 | 2180916 | 1579751
| 6922956 | 5924613 | 2327841 | 2180952 | 1579964
| 6923347 | 5924733 | 2328465 | 2180971 | 1580103
| 6923718 | 5925570 | 2329055 | 2180972 | 1580118
| 6924312 | 5926161 | 2329450 | 2180972 | 1580323
| 6925410 | 5927039 | 2329816 | 2180972 | 1580456
| 6926077 | 5927481 | 2330090 | 2180977 | 1580660
}}
* 来源:[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:維基詞典統計]]
ti70x28w3qdfxqxbw909os2m8yktvhv
Hispanio
0
15839
9787547
6008055
2026-05-24T17:43:31Z
TongcyDai
53191
9787547
wikitext
text/x-wiki
==世界語==
{{wp|eo:}}
[[Image:Spain in its region (whole).svg|250px|thumb|right|Hispanio]]
===詞源===
源自 {{af|eo|hispano|t1=西班牙人|-io<id:地點>|t2=國家}}。
===發音===
{{eo-pr|a=Eo-Hispanio.ogg;LL-Q143 (epo)-Lepticed7-Hispanio.wav;LL-Q143 (epo)-Robin van der Vliet-Hispanio.wav}}
===專有名詞===
{{eo-head}}
# {{tcl|eo|西班牙|id=Q29}}
#: {{syn|eo|Hispanujo}}
====分體詞====
* {{l|eo|hispano|t=西班牙人}}
* {{l|eo|Andaluzio|t=安達盧西亞}}
* {{l|eo|Galegio|t=加利西亞}}
* {{l|eo|Kantabrio|t=坎塔布里亞}}
* {{l|eo|Kastilio kaj Leono|t=卡斯提爾和萊昂}}
* {{l|eo|Kastilio-Manĉo|t=卡斯蒂利亞-拉曼恰}}
* {{l|eo|Katalunio|t=加泰隆尼亞}}
* {{l|eo|Leono|t=萊昂}}
====整體詞====
* {{l|eo|Eŭropo|t=歐洲}}
* {{l|eo|Eŭropa Unio|t=歐盟}}
* {{l|eo|Unuiĝintaj Nacioj|t=聯合國}}
====相關詞彙====
* {{l|eo|hispana|t=Spanish}}
===參見===
{{compass|eo|w=Portugalio|n=Francio,Andoro,Francio|e=Mediteraneo|s=Ĝibraltara Markolo,Ĝibraltaro|se=Mediteraneo|sw=Atlantiko}}
{{eo GCSE|6}}
jkkvrvi2fpmszq99mz12xxqcdfsus6k
Spanien
0
16970
9787522
5936390
2026-05-24T17:38:19Z
TongcyDai
53191
9787522
wikitext
text/x-wiki
==丹麥語==
{{swp|da:}}
===專有名詞===
{{head|da|專有名詞}}
# {{tcl|da|西班牙|id=Q29}}
====相關詞彙====
{{col2|da|spansk
|spanier}}
===參見===
{{list:countries in Europe/da}}
{{cln|da|外名}}
==德語==
{{wp|de:}}
===詞源===
{{etymon|de|:inh|gmh:Spāne<id:伊比利亞半島>|id=西班牙}}
{{inh+|de|gmh|Spane}},{{inh+|de|goh|Spānia}},源自{{der|de|la|Hispania}}。
===發音===
* {{IPA|de|/ˈʃpaːni̯ən/|[ˈʃpaːn.jən]|[ˈʃpaː.ni.ən]}}
* {{audio|de|De-Spanien.ogg}}
* {{audio|de|De-Spanien2.ogg|a=柏林}}
* {{rhymes|de|aːni̯ən}}
===專有名詞===
{{de-proper noun|toponym}}
# {{tcl|de|西班牙|id=Q29}}
====相關詞彙====
{{col|de|spanisch
|Spanisch
|Spanier
|Hispanien}}
====派生語彙====
* {{desc|hrx|Spanje|bor=1}}
===參見===
{{list:countries in Europe/de}}
===延伸閱讀===
* {{R:de:Duden}}
* {{R:de:DWDS}}
* {{pedia|lang=de}}
{{cln|de|外名}}
==門諾低地德語==
===詞源===
最终源自{{der|pdt|la|Hispania}}。{{etystub|pdt}}
===發音===
* {{IPA|pdt|/ʃpaːnin/}}
===名詞===
{{head|pdt|專有名詞|g=n}}
# {{tcl|pdt|西班牙|id=Q29}}
==瑞典語==
{{wp|sv:}}
===詞源===
{{bor+|sv|de|Spanien}}。
===發音===
* {{IPA|sv|/ˈspanjɛn/}}
* {{audio|sv|Sv-Spanien.ogg}}
===專有名詞===
{{sv-proper noun|n}}
# {{tcl|sv|西班牙|id=Q29}}
#: {{ux|sv|Många svenskar åker på semester till '''Spanien'''.|許多瑞典人會去'''西班牙'''度假。}}
====相關詞彙====
* {{l|sv|spanjor}}
* {{l|sv|spanjorska}}
* {{l|sv|spansk}}
* {{l|sv|spanska}}
====參見====
{{list:countries in Europe/sv}}
===參考資料===
* {{R:svenska.se|saol}}
* {{R:runeberg.org|svetym|0917.html Spanien}}
* [https://mesh.kib.ki.se/term/D013030/spain Svensk MeSH]
{{cln|sv|外名}}
dx3ce37lf63ikn153kwp7oyxcz1e5wj
furtively
0
89853
9788501
8445929
2026-05-25T07:30:13Z
Chihunglu83
87715
9788501
wikitext
text/x-wiki
==英語==
===詞源===
源自{{suffix|en|furtive|ly}}。
===發音===
* {{IPA|en|/ˈfɜːtɪvli/|a=UK}}
* {{audio|en|LL-Q1860 (eng)-Vealhurl-furtively.wav|a=Southern England}}
===副詞===
{{en-adv}}
# [[偷偷]]地,[[悄悄]]地
====近義詞====
* {{l|en|secretively}}
* {{l|en|surreptitiously}}
6xqre5aqrtozpczxrjk592y83fe3ye8
Juglandaceae
0
96798
9788164
6629186
2026-05-25T01:28:42Z
Sayonzei
40728
Sayonzei移动页面[[juglandaceae]]至[[Juglandaceae]],不留重定向
6629186
wikitext
text/x-wiki
==英語==
:'''juglandaceae'''
#[[胡桃科]]
{{-refer-}}
#[[胡桃]]
[[Category:待分類的英語詞]]
[[Category:英語]]
[[分类:拉丁文字]]
5di51qivygtogjgdwuanidb3fu0ydnq
9788165
9788164
2026-05-25T01:29:19Z
Sayonzei
40728
9788165
wikitext
text/x-wiki
==跨語言==
===詞源===
{{suffix|mul|Juglans|aceae}}
===專有名詞===
{{taxoninfl}}
# {{taxon|科|殼斗|目|[[胡桃]]科}}
====上位詞====
* {{sense|科}} {{Fagales Hypernyms}}
====下位詞====
* {{sense|科}} {{taxlink|Alfaroa|genus}}、{{taxfmt|Carya|genus}}、{{taxlink|Cyclocarya|genus}}、{{taxlink|Engelhardia|genus}}、{{taxfmt|Juglans|genus}}、{{taxlink|Oreomunnea|genus}}、{{taxfmt|Platycarya|genus}}、{{taxfmt|Pterocarya|genus}}{{--}} 屬
===參考資料===
* {{R:OneLook}}
* {{pedia}}
* {{specieslite}}
* {{comcatlite}}
{{C|mul|殼斗目植物}}
qe5lsy6jkr52fw39dmz7nj63agjm3v5
心中
0
137427
9787480
9782698
2026-05-24T15:02:09Z
Fglffer
55252
/* 派生字 */
9787480
wikitext
text/x-wiki
==漢語==
{{zh-forms}}
===發音===
{{zh-pron
|m=xīnzhōng
|c=sam1 zung1
|ca=LL-Q9186 (yue)-Justinrleung-心中.wav
|h=pfs=sîm-chûng;hrs=h:simˋ zhungˋ;gd=xim1 zung1
|mn=sim-tiong
|cat=n
}}
===名詞===
{{head|zh|名詞}}
# [[內心]],[[心裡]]
#: {{zh-x|心中 暗喜}}
====同義詞====
{{syn-saurus|zh|心中}}
====派生詞====
{{col3|zh|心中有鬼|心中有數}}
{{zh-cat|Advanced}}
==日語==
===詞源1===
{{wikipedia|lang=ja}}
{{ja-kanjitab|しん|ちゅう|k2=じゅう|yomi=on|r=y}}
{{compound|ja|sort=しんちゆう|心|tr1=shin|中|tr2=-jū|t2=[[內]],[[裡]]}}。
====發音====
{{ja-pron|しんじゅう|acc=0|acc_ref=DJR,NHK}}
====名詞====
{{ja-noun|しんじゅう|hhira=しんぢゆう}}
# [[殉情]]
#: {{syn|ja|情死|tr=jōshi}}
# [[一同]][[自殺]],[[集體]][[自殺]]
=====派生詞=====
{{col|ja
|{{ja-r|心中%尽く|しんじゅう%-ずく}}
|{{ja-r|心中%立て|しんじゅう%-だて}}
|{{ja-r|心中%箱|しんじゅう%-ばこ}}
|{{ja-r|心中%者|しんじゅう%-もの}}
|{{ja-r|心中%善し|しんじゅう%-よし}}
|{{ja-r|抱%合い心中|だき%あい しんじゅう|rom=-}}、{{ja-r|抱き合い心中|だきあい しんじゅう}}
|{{ja-r|跡追い心中|あと.おい しんじゅう|rom=-}}、{{ja-r|後追い心中|あと.おい しんじゅう|其配偶或情人去世後立即自殺}}
|{{ja-r|一家心中|いっか しんじゅう|全家自殺}}
|{{ja-r|合意心中|ごうい しんじゅう|一同自殺}}
|{{ja-r|ネット心中|ネット しんじゅう}}
|{{ja-r|不心中|ぶしんじゅう}}
|{{ja-r|無理心中|むり しんじゅう|強迫一起自殺}}
}}
====動詞====
{{ja-verb-suru|tr=intrans|しんじゅう|hhira=しんぢゆう}}
# [[殉情]]
# [[一同]][[自殺]]
=====活用=====
{{ja-suru|しんじゅう}}
===詞源2===
{{ja-kanjitab|しん|ちゅう|yomi=on}}
源自{{bor|ja|ltc|sort=しんちゆう|-}}複合詞{{ltc-l|心中|id=1,1}}。
====發音====
{{ja-pron|しんちゅう|acc=1|acc2=0|acc_ref=DJR,NHK|acc2_ref=DJR}}
====名詞====
{{ja-noun|しんちゅう}}
# [[內心]],[[心裡]]
#: {{syn|ja|胸中|tr=kyōchū|中情|tr2=chūjō|[[肚裏]], [[肚裡]]|tr3=tori|内心|tr4=naishin}}
=====諺語=====
* {{ja-r|山中の賊を破るは易く心中の賊を破るは難し|さんちゅう の ぞく を やぶる は やすく しんちゅう の ぞく を やぶる は かたし}}
===來源===
<references/>
:* {{R:Kanjipedia Kotoba|0003579500}}
{{C|ja|自殺|sort=しんじゅう}}
==朝鮮語==
{{ko-hanjatab}}
===名詞===
{{ko-noun|hangeul=심중}}
# {{hanja form of|심중}}
o9vcyhy2k5n9cgirpvdeq1z3fvudwin
Template:Cite-book
10
145361
9787438
7272511
2026-05-24T13:57:11Z
TongcyDai
53191
9787438
wikitext
text/x-wiki
<includeonly>{{#invoke:quote|cite_t|type=book
}}</includeonly><!--
--><noinclude>{{cite-book|en|author=F[rancis] Scott Fitzgerald|authorlink=F. Scott Fitzgerald|chapter=IX|title=[[w:The Great Gatsby|The Great Gatsby]]|location=New York, N.Y.|publisher=[[w:Charles Scribner's Sons|Charles Scribner’s Sons]]|year=1925|oclc=884653065|location2=New York, N.Y.|publisher2=Charles Scribner’s Sons|year2=1953|isbn2=978-0-684-16498-4|page2=182|pageurl2=https://archive.org/stream/in.ernet.dli.2015.184960/2015.184960.The-Great-Gatsby#page/n185/mode/1up|passage=So we beat on, boats against the current, borne back '''ceaselessly''' into the past.}}<!--
-->{{documentation}}</noinclude>
0v16bpt848uuu23iam1ufvgrhi9rwfj
峴
0
306908
9788494
9659253
2026-05-25T06:45:43Z
Fglffer
55252
9788494
wikitext
text/x-wiki
{{character info}}
==跨語言==
===漢字===
{{Han char|rn=46|rad=山|as=07|sn=10|four=26710|canj=UBUU|ids=⿰山見}}
====來源====
* {{Han ref|kx=0312.020|dkj=08106|dj=0612.090|hdz=10773.120|sbgy=289.08|ch=4570003.04|uh=5CF4}}
==漢語==
{{zh-forms|s=岘}}
===字源===
{{Han etym}}
{{Han compound|山|見|c1=s|c2=p|ls=psc}}。
===發音===
{{zh-pron
|m=xiàn
|c=jin6
|mc=y
|oc=y
|cat=n
}}
===釋義===
{{head|zh|漢字}}
# 小而[[險峻]]的[[山嶺]]
===組詞===
{{col3|zh|峴山|峴山碑|古峴鎮|峴港}}
==日語==
===漢字===
{{ja-kanji|grade=|rs=山07}}
# {{rfdef|ja|sort=山07}}
====讀法====
* {{ja-readings
|goon=けん, げん
|kanon=けん
|kun=けわ-し.い
}}
==朝鮮語==
===漢字===
{{ko-hanja|hangeul=현|rv=hyeon|mr=hyŏn}}
# {{rfdef|ko|sort=山07}}
==越南語==
===漢字===
{{vi-readings|reading=nghiễn, hiện|rs=山07}}
# {{rfdef|vi|sort=山07}}
slp0cur6hfxhwzb6qxk5ch1rzhqy3nc
9788495
9788494
2026-05-25T06:46:00Z
Fglffer
55252
/* 釋義 */
9788495
wikitext
text/x-wiki
{{character info}}
==跨語言==
===漢字===
{{Han char|rn=46|rad=山|as=07|sn=10|four=26710|canj=UBUU|ids=⿰山見}}
====來源====
* {{Han ref|kx=0312.020|dkj=08106|dj=0612.090|hdz=10773.120|sbgy=289.08|ch=4570003.04|uh=5CF4}}
==漢語==
{{zh-forms|s=岘}}
===字源===
{{Han etym}}
{{Han compound|山|見|c1=s|c2=p|ls=psc}}。
===發音===
{{zh-pron
|m=xiàn
|c=jin6
|mc=y
|oc=y
|cat=n
}}
===釋義===
{{head|zh|漢字}}
# [[小]]而[[險峻]]的[[山嶺]]
===組詞===
{{col3|zh|峴山|峴山碑|古峴鎮|峴港}}
==日語==
===漢字===
{{ja-kanji|grade=|rs=山07}}
# {{rfdef|ja|sort=山07}}
====讀法====
* {{ja-readings
|goon=けん, げん
|kanon=けん
|kun=けわ-し.い
}}
==朝鮮語==
===漢字===
{{ko-hanja|hangeul=현|rv=hyeon|mr=hyŏn}}
# {{rfdef|ko|sort=山07}}
==越南語==
===漢字===
{{vi-readings|reading=nghiễn, hiện|rs=山07}}
# {{rfdef|vi|sort=山07}}
gluf871vzq3a6sf0kq5e5maqz5i8qtq
9788496
9788495
2026-05-25T06:47:50Z
Sayonzei
40728
/* 組詞 */
9788496
wikitext
text/x-wiki
{{character info}}
==跨語言==
===漢字===
{{Han char|rn=46|rad=山|as=07|sn=10|four=26710|canj=UBUU|ids=⿰山見}}
====來源====
* {{Han ref|kx=0312.020|dkj=08106|dj=0612.090|hdz=10773.120|sbgy=289.08|ch=4570003.04|uh=5CF4}}
==漢語==
{{zh-forms|s=岘}}
===字源===
{{Han etym}}
{{Han compound|山|見|c1=s|c2=p|ls=psc}}。
===發音===
{{zh-pron
|m=xiàn
|c=jin6
|mc=y
|oc=y
|cat=n
}}
===釋義===
{{head|zh|漢字}}
# [[小]]而[[險峻]]的[[山嶺]]
===組詞===
{{col3|zh|峴山|古峴|峴港}}
==日語==
===漢字===
{{ja-kanji|grade=|rs=山07}}
# {{rfdef|ja|sort=山07}}
====讀法====
* {{ja-readings
|goon=けん, げん
|kanon=けん
|kun=けわ-し.い
}}
==朝鮮語==
===漢字===
{{ko-hanja|hangeul=현|rv=hyeon|mr=hyŏn}}
# {{rfdef|ko|sort=山07}}
==越南語==
===漢字===
{{vi-readings|reading=nghiễn, hiện|rs=山07}}
# {{rfdef|vi|sort=山07}}
e1iyqpajnr0qb37tqd5rus6oi0iri8u
9788639
9788496
2026-05-25T10:59:37Z
TongcyDai
53191
9788639
wikitext
text/x-wiki
{{character info}}
==跨語言==
===漢字===
{{Han char|rn=46|rad=山|as=07|sn=10|four=26710|canj=UBUU|ids=⿰山見}}
====來源====
* {{Han ref|kx=0312.020|dkj=08106|dj=0612.090|hdz=10773.120|sbgy=289.08|ch=4570003.04|uh=5CF4}}
==漢語==
{{zh-forms|s=岘}}
===字源===
{{Han etym}}
{{Han compound|山|見|c1=s|c2=p|ls=psc}}。
===發音===
{{zh-pron
|m=xiàn
|c=jin6
|h=pfs=hién;hrs=h:hienˊ
|md=hiēng/ngiēng
|mn=hián
|mn-t=hiêng3/hiang3
|mn-t_note=hiêng3 - 潮州; hiang3 - 汕頭、揭陽、澄海、潮陽
|px=pt,xy:heng5
|w=sz:5shie;tx:3ie;cx:1shien
|mc=y
|oc=y
|cat=n,pn
}}
===釋義===
{{head|zh|漢字}}
# [[小]]而[[險峻]]的[[山嶺]]
#* {{zh-x|逶迤 傍 隈隩,苕遞 陟 陘峴。||TCP|ref=南朝宋·{{w|謝靈運}}〈[[s:從斤竹澗越嶺溪行|從斤竹澗越嶺溪行]]〉}}
#* {{zh-x|捫 陘 歷 峴,來 適 公 志。||CL|ref=唐·{{w|劉禹錫}}〈[[s:含輝洞述|含輝洞述]]〉}}
#* {{zh-x|疏窗 夜深 啟,孤月 掛 遙 峴。||TCP|ref=元末明初·{{w|劉基}}〈[[s:若耶溪杳郭深居精舍|若耶溪杳郭深居精舍]]〉}}
# 山名,位於今[[中國]][[湖北]]省[[襄陽]]市
#* {{zh-x|若 更 登 高 ^峴,看 碑 定 淚 流。||TCP|ref=唐·{{w|賈島}}〈[[s:全唐詩/卷573#岐下送友人歸襄陽|岐下送友人歸襄陽]]〉}}
===組詞===
{{col3|zh|峴山|古峴|峴港}}
===參考資料===
* {{R:zh:cbgycdxdb|7151}}
* {{R:zh:HYDCD}}
==日語==
===漢字===
{{ja-kanji|grade=|rs=山07}}
# {{rfdef|ja|sort=山07}}
====讀法====
* {{ja-readings
|goon=けん, げん
|kanon=けん
|kun=けわ-し.い
}}
==朝鮮語==
===漢字===
{{ko-hanja|hangeul=현|rv=hyeon|mr=hyŏn}}
# {{rfdef|ko|sort=山07}}
==越南語==
===漢字===
{{vi-readings|reading=nghiễn, hiện|rs=山07}}
# {{rfdef|vi|sort=山07}}
badvhhu4wt0qno86z5vd2kj679na9ip
9788641
9788639
2026-05-25T11:01:12Z
TongcyDai
53191
9788641
wikitext
text/x-wiki
{{character info}}
==跨語言==
===漢字===
{{Han char|rn=46|rad=山|as=07|sn=10|four=26710|canj=UBUU|ids=⿰山見}}
====來源====
* {{Han ref|kx=0312.020|dkj=08106|dj=0612.090|hdz=10773.120|sbgy=289.08|ch=4570003.04|uh=5CF4}}
==漢語==
{{was wotd|2026|5月|31日}}
{{zh-forms|s=岘}}
===字源===
{{Han etym}}
{{Han compound|山|見|c1=s|c2=p|ls=psc}}。
===發音===
{{zh-pron
|m=xiàn
|c=jin6
|h=pfs=hién;hrs=h:hienˊ
|md=hiēng/ngiēng
|mn=hián
|mn-t=hiêng3/hiang3
|mn-t_note=hiêng3 - 潮州; hiang3 - 汕頭、揭陽、澄海、潮陽
|px=pt,xy:heng5
|w=sz:5shie;tx:3ie;cx:1shien
|mc=y
|oc=y
|cat=n,pn
}}
===釋義===
{{head|zh|漢字}}
# [[小]]而[[險峻]]的[[山嶺]]
#* {{zh-x|逶迤 傍 隈隩,苕遞 陟 陘峴。||TCP|ref=南朝宋·{{w|謝靈運}}〈[[s:從斤竹澗越嶺溪行|從斤竹澗越嶺溪行]]〉}}
#* {{zh-x|捫 陘 歷 峴,來 適 公 志。||CL|ref=唐·{{w|劉禹錫}}〈[[s:含輝洞述|含輝洞述]]〉}}
#* {{zh-x|疏窗 夜深 啟,孤月 掛 遙 峴。||TCP|ref=元末明初·{{w|劉基}}〈[[s:若耶溪杳郭深居精舍|若耶溪杳郭深居精舍]]〉}}
# 山名,位於今[[中國]][[湖北]]省[[襄陽]]市
#* {{zh-x|若 更 登 高 ^峴,看 碑 定 淚 流。||TCP|ref=唐·{{w|賈島}}〈[[s:全唐詩/卷573#岐下送友人歸襄陽|岐下送友人歸襄陽]]〉}}
===組詞===
{{col3|zh|峴山|古峴|峴港}}
===參考資料===
* {{R:zh:cbgycdxdb|7151}}
* {{R:zh:HYDCD}}
==日語==
===漢字===
{{ja-kanji|grade=|rs=山07}}
# {{rfdef|ja|sort=山07}}
====讀法====
* {{ja-readings
|goon=けん, げん
|kanon=けん
|kun=けわ-し.い
}}
==朝鮮語==
===漢字===
{{ko-hanja|hangeul=현|rv=hyeon|mr=hyŏn}}
# {{rfdef|ko|sort=山07}}
==越南語==
===漢字===
{{vi-readings|reading=nghiễn, hiện|rs=山07}}
# {{rfdef|vi|sort=山07}}
juxle1hyhv0d150l9vr8xyx1a8e8elz
amariner
0
318707
9788174
5541945
2026-05-25T01:46:46Z
Sayonzei
40728
9788174
wikitext
text/x-wiki
==法語==
===詞源===
{{ety|fr|:af|a-|marin|-er<id:verbal>}}
源自 {{af|fr|a-|marin|-er<id:動詞性>}}。
===發音===
* {{fr-IPA}}
* {{audio|fr|LL-Q150 (fra)-Lepticed7-amariner.wav|a=圖盧茲}}
* {{audio|fr|LL-Q150 (fra)-Lyokoï-amariner.wav|a=里昂}}
* {{audio|fr|LL-Q150 (fra)-Jérémy-Günther-Heinz Jähnick-amariner.wav|a=索曼}}
===動詞===
{{fr-verb}}
# 使[[习惯]]于[[海上]][[工作]]
# (给缴获的敌船)[[配备]][[船员]]
====變位====
{{fr-conj-auto}}
===延伸閱讀===
* {{R:fr:TLFi}}
suuav6z9fq1k0d2ql1qz8h4vvxg4n5f
baliverner
0
320787
9788169
5543560
2026-05-25T01:44:33Z
Sayonzei
40728
9788169
wikitext
text/x-wiki
==法語==
===詞源===
源自 {{compound|fr|baller|verner}} 或 {{m|fr|vironner}}。對照{{cog|frm|-}} {{m|fr|bouleverser}} 及 {{m|fr|balevolter}}。{{surf|fr|baliverne|-er<id:動詞性>}}。
===發音===
* {{audio|fr|LL-Q150 (fra)-LoquaxFR-baliverner.wav|a=孚日}}
* {{audio|fr|LL-Q150 (fra)-Lyokoï-baliverner.wav|a=里昂}}
* {{audio|fr|LL-Q150 (fra)-WikiLucas00-baliverner.wav|a=里昂}}
* {{audio|fr|LL-Q150 (fra)-Jérémy-Günther-Heinz Jähnick-baliverner.wav|a=索曼}}
===動詞===
{{fr-verb}}
# [[胡說八道]],[[說]][[廢話]]
# [[嘲笑]],[[譏諷]]
====變位====
{{fr-conj-auto}}
===延伸閱讀===
* {{R:fr:TLFi}}
npziitlh2tlcg3wx89dntjh04lz5d42
bichonner
0
321373
9788181
9365826
2026-05-25T01:50:27Z
Sayonzei
40728
使用[[WP:HOTCAT|HotCat]]已移除[[Category:法語自反 verbs]]; 已添加[[Category:法語反身動詞]]
9788181
wikitext
text/x-wiki
==法語==
===詞源===
源自 {{af|fr|bichon|gloss1=比熊犬|-er}}。
===發音===
* {{fr-IPA}}
* {{audio|fr|LL-Q150 (fra)-LoquaxFR-bichonner.wav}}
===動詞===
{{fr-verb}}
# {{lb|fr|及物}} [[精心]][[打扮]]
#: {{ux|fr|Elle aime '''bichonner''' sa petite fille.|她喜欢给自己的小女儿'''打扮'''。}}
# {{lb|fr|及物}} [[關懷]];[[愛撫]];[[憐愛]],[[疼愛]]
# {{lb|fr|pronominal|口語}} 精心打扮自己
#: {{syn|fr|parer|pomponner}}
#: {{ux|fr|Il est ridicule qu'un jeune homme passe une heure à se '''bichonner'''.|小伙子花一个小时'''打扮''',真是太离谱了。}}
====變位====
{{fr-conj-auto|refl=y}}
===延伸閱讀===
* {{R:fr:TLFi}}
{{cln|fr|反身動詞}}
sjfpmlnkybvfxkjvjetw55woitznkjk
couronné
0
330923
9788183
5547259
2026-05-25T01:56:39Z
Sayonzei
40728
9788183
wikitext
text/x-wiki
{{also|couronne|Couronne}}
==法語==
===發音===
* {{audio|fr|LL-Q150 (fra)-LoquaxFR-couronné.wav|a=孚日}}
* {{audio|fr|LL-Q150 (fra)-WikiLucas00-couronné.wav|a=里昂}}
===形容詞===
{{fr-adj}}
# {{lb|fr|紋章學}} 飾有[[王冠]]圖案的
===分詞===
{{fr-past participle}}
# {{past participle of|fr|couronner}}
===延伸閱讀===
* {{R:fr:TLFi}}
74yyiiuh76cwvyuwbmdvwspp36g4o29
couronner
0
330925
9788182
6060500
2026-05-25T01:55:46Z
Sayonzei
40728
9788182
wikitext
text/x-wiki
==法語==
===詞源===
{{inh+|fr|fro|coroner}},{{inh+|fr|la|corōnō|corōnāre}}。{{surf|fr|couronne|-er<id:動詞性>}}。
===發音===
* {{fr-IPA}}
* {{audio|fr|Fr-couronner.ogg}}
* {{audio|fr|LL-Q150 (fra)-LoquaxFR-couronner.wav|a=孚日}}
* {{audio|fr|LL-Q150 (fra)-Poslovitch-couronner.wav|a=孚日}}
* {{audio|fr|LL-Q150 (fra)-Jérémy-Günther-Heinz Jähnick-couronner.wav|a=索曼}}
===動詞===
{{fr-verb}}
# 為……[[戴上]][[花冠]]
# 為……[[加冕]]
# [[褒揚]];[[獎賞]]
# 像花冠似的[[裝飾]]在[[頭]]上或[[頂部]]
# {{lb|fr|比喻}} [[環繞]],[[圍繞]]
# {{lb|fr|literary|比喻}} [[圓滿]][[完成]]
# [[馬]][[腕]][[關節]][[受傷]]
====變位====
{{fr-conj-auto}}
====派生詞彙====
* {{l|fr|couronnement}}
* {{l|fr|couronner le tout}}
===延伸閱讀===
* {{R:fr:TLFi}}
a9ds28s0xukp6z2ax9r0mr5qhn2ciq2
stave
0
336382
9788503
7672997
2026-05-25T08:04:15Z
Chihunglu83
87715
9788503
wikitext
text/x-wiki
{{also|Stave|stavě|šťávě}}
==挪威语==
[动词] 拼,拼字
[[Category:挪威语动词]]
[[Category:英语动词]]
[[Category:英语名词]]
5w2y67w68tmpcklouvnm2whlfhzrufd
가겟방
0
346780
9788480
8350267
2026-05-25T03:08:34Z
Sayonzei
40728
9788480
wikitext
text/x-wiki
==朝鮮語==
===詞源===
源自 {{af|ko|가게|-ㅅ-|방(房)|t1=商店|pos2=屬格中綴|t3=屋子,房屋}}。
===發音===
{{ko-IPA}}
===名詞===
{{ko-noun}}
# {{lb|ko|口語}} [[店面]],[[門面]],[[鋪面]]
2tlp28492osq22jur98diocf63nd1g7
담뱃갑
0
385943
9788476
5239781
2026-05-25T03:01:38Z
Sayonzei
40728
9788476
wikitext
text/x-wiki
==朝鲜语==
===詞源===
{{af|ko|담배|t1=煙草,香煙|-ㅅ-|갑(匣)|pos2=屬格中綴|t3=盒子}}
===發音===
{{ko-IPA}}
===名詞===
{{ko-noun}}
# [[烟盒]]
gipbt5llejbz1h41453ezz6w8pj8wse
뒷거래
0
394962
9788479
6757357
2026-05-25T03:07:05Z
Sayonzei
40728
9788479
wikitext
text/x-wiki
==朝鮮語==
===詞源===
{{af|ko|뒤|t1=後面|-ㅅ-|pos2=屬格中綴|거래(去來)|t3=交易;往來}}
===發音===
{{ko-IPA}}
===名詞===
{{ko-noun|hanja=뒷去來}}
# [[幕後]][[交易]];[[走後門]]
kuor8lebqk1a2gh03djgudqjzaa18lm
본명
0
422563
9788485
5247891
2026-05-25T04:26:43Z
Sayonzei
40728
9788485
wikitext
text/x-wiki
==朝鮮語==
===發音===
{{ko-IPA}}
===詞源1===
{{ko-etym-sino|本名}}。
====名詞====
{{ko-noun|hanja=本名}}
# [[真名]],[[本名]]
#: {{syn|ko|실명(實名)}}
#: {{ant|ko|가명(假名)|예명(藝名)|별명(別名)}}
# {{lb|ko|天主教}} [[洗禮]]時取的[[教名]]
===詞源2===
{{ko-etym-sino|本命}}。
====名詞====
{{ko-noun|hanja=本命}}
# 人[[出生]][[年份]]的[[干支]]
# {{lb|ko|命理學}} 人的[[先天]][[命運]]
8gizw0v6alxmsp2j5vohxqoolby3kp8
졸업
0
519024
9788487
5262960
2026-05-25T04:31:13Z
Sayonzei
40728
9788487
wikitext
text/x-wiki
==朝鮮語==
{{ko-dv|h}}
===詞源===
{{ko-etym-sino|卒|完成|業|事業,工作}}。
===發音===
{{ko-IPA}}
===名詞===
{{ko-noun|hanja=卒業}}
# [[畢業]]
====派生詞彙====
{{col|ko|졸업식(卒業式)|졸업장(卒業狀)|졸업사진(卒業寫眞)}}
kqu5dwahoiq45p2vc8vnijbm9lugiz5
졸업식
0
519036
9788488
1367890
2026-05-25T04:31:27Z
Sayonzei
40728
9788488
wikitext
text/x-wiki
==朝鮮語==
===詞源===
{{ko-etym-sino|卒業式}}。
===發音===
{{ko-IPA}}
===名詞===
{{ko-noun|hanja=卒業式}}
# [[畢業]][[典禮]]
alf8voqtx6gzkkt7eii9tf72skfm4lp
졸업장
0
519042
9788489
5262962
2026-05-25T04:31:54Z
Sayonzei
40728
9788489
wikitext
text/x-wiki
==朝鮮語==
===詞源===
{{ko-etym-sino|卒業狀}}。
===發音===
{{ko-IPA}}
===名詞===
{{ko-noun|hanja=卒業狀}}
# [[畢業證]]
sns67j8rc51qrs4hcptvs7i8toxg9w5
콧수염
0
539896
9788477
7027941
2026-05-25T03:03:14Z
Sayonzei
40728
9788477
wikitext
text/x-wiki
==朝鮮語==
===詞源===
源自 {{compound|ko|코|t1=鼻子|-ㅅ-|수염(鬚髥)|t3=鬍鬚,鬍子}}。
===發音===
{{ko-IPA|nobc=1}}
===名詞===
{{ko-noun}}
# 唇上的[[胡子]],[[髭]]
{{C|ko|鬍鬚}}
6autnhtolebkt43hezs6srole9t6wie
푸줏간
0
560038
9788478
8350272
2026-05-25T03:04:34Z
Sayonzei
40728
9788478
wikitext
text/x-wiki
==朝鮮語==
===詞源===
源自 {{af|ko|푸주|-ㅅ-|간(間)|pos2=屬格中綴|t1=肉鋪|t3=店面}}。
===發音===
{{ko-IPA}}
===名詞===
{{ko-noun}}
# [[肉铺]],[[肉店]]
2fl3h06sxpadl7jnea77im6r6r6lnop
薄明
0
585954
9787474
6683404
2026-05-24T14:46:53Z
Fglffer
55252
9787474
wikitext
text/x-wiki
==漢語==
{{zh-forms}}
===發音===
{{zh-pron
|m=bómíng
|cat=n
}}
===名詞===
{{head|zh|名詞}}
# [[接近]][[天亮]]的[[時候]]
==日語==
===詞源1===
{{ja-kanjitab|はく|めい|yomi=on}}
====發音====
{{ja-pron|はくめい}}
====名詞====
{{ja-noun|はくめい}}
# [[黃昏]];[[黎明]]
====衍生詞====
* {{ja-r|市%民% 薄%明|し%みん% はく%めい|t=曙暮光}}
====參見====
* {{ja-r|薄%明かり|うす%あかり}}
* {{ja-r|薄%明るい|うす%あかるい}}
===詞源2===
{{ja-kanjitab|うす|あ|o2=かり|yomi=k}}
{{ja-see|うすあかり}}
===來源===
* {{R:Kanjipedia Kotoba|0005643700}}
==朝鮮語==
{{ko-hanjatab}}
===名詞===
{{ko-noun|hangeul=박명}}
# {{hanja form of|박명|黃昏}}
ce3cje8gqe6nei0gh3l2rkqmel4wvrc
曷勝
0
627589
9788646
8161644
2026-05-25T11:22:57Z
TongcyDai
53191
9788646
wikitext
text/x-wiki
==漢語==
{{zh-forms|s=曷胜}}
===發音===
{{zh-pron
|m=hé勝
|c=hot3 sing1
|cat=v
}}
{{attention|yue|Cantonese pronunciation 'sing1' not found in the entry 勝.}}
===動詞===
{{zh-verb}}
# [[怎麼]]能[[承受]],[[哪裡]]承受得住;常用於[[反問]][[語氣]],表示[[不勝]]、[[極度]]
#* {{zh-x|賢昆仲 敦 念 宿誼,垂詢 不遺,曷勝 感戢。||CL|ref=明·{{w|張居正}}〈[[s:答藩伯王麟洲|答藩伯王麟洲]]〉}}
#* {{zh-x|今 之 人 則 不然,一 有 婚姻,乃 心 財利,或 專 在 吉凶,殊不知 貧賤 富貴 在 天,吉凶 在 我。茫然 顛倒,曷勝 歎 歟!曷勝 歎 歟!||CL|ref=明·{{w|陶輔}}《[[s:花影集/卷17|花影集·卷十七]]》}}
#* {{zh-x|屬{zhǔ}饜 之 餘,曷勝 銘謝!||CL|ref=清·{{w|許思湄}}《[[s:秋水軒尺牘/第088首|秋水軒尺牘·謝滄州諸友送蟹]]》}}
#* {{zh-x|朕 與 卿 等 居 暖室,宗戚、昆弟 遠 戍 邊陲,曷勝 其 苦!||CL|ref=清·{{w|畢沅}}等《[[s:續資治通鑑|續資治通鑑·元仁宗延祐六年]]》}}
===參考資料===
* {{R:zh:HYDCD}}
8vk5lhvmkn7c7fldlpsqbslosf7p4l5
9788647
9788646
2026-05-25T11:24:01Z
TongcyDai
53191
9788647
wikitext
text/x-wiki
==漢語==
{{was wotd|2026|6月|1日}}
{{zh-forms|s=曷胜}}
===發音===
{{zh-pron
|m=hé勝
|c=hot3 sing1
|cat=v
}}
===動詞===
{{zh-verb}}
# {{lb|zh|書面}} [[怎麼]]能[[承受]],[[哪裡]]承受得住;常用於[[反問]][[語氣]],表示[[不勝]]、[[極度]]
#* {{zh-x|賢昆仲 敦 念 宿誼,垂詢 不遺,曷勝 感戢。||CL|ref=明·{{w|張居正}}〈[[s:答藩伯王麟洲|答藩伯王麟洲]]〉}}
#* {{zh-x|今 之 人 則 不然,一 有 婚姻,乃 心 財利,或 專 在 吉凶,殊不知 貧賤 富貴 在 天,吉凶 在 我。茫然 顛倒,曷勝 歎 歟!曷勝 歎 歟!||CL|ref=明·{{w|陶輔}}《[[s:花影集/卷17|花影集·卷十七]]》}}
#* {{zh-x|屬{zhǔ}饜 之 餘,曷勝 銘謝!||CL|ref=清·{{w|許思湄}}《[[s:秋水軒尺牘/第088首|秋水軒尺牘·謝滄州諸友送蟹]]》}}
#* {{zh-x|朕 與 卿 等 居 暖室,宗戚、昆弟 遠 戍 邊陲,曷勝 其 苦!||CL|ref=清·{{w|畢沅}}等《[[s:續資治通鑑|續資治通鑑·元仁宗延祐六年]]》}}
===參考資料===
* {{R:zh:HYDCD}}
7jc58vapg77ecrzn62wy7e2cby7l8z8
9788650
9788647
2026-05-25T11:26:14Z
TongcyDai
53191
9788650
wikitext
text/x-wiki
==漢語==
{{was wotd|2026|6月|1日}}
{{zh-forms|s=曷胜}}
===發音===
{{zh-pron
|m=hé勝
|c=hot3 sing1
|cat=v
}}
===動詞===
{{zh-verb}}
# {{lb|zh|書面}} [[怎麼]]能[[承受]],[[哪裡]]承受得住;常用於[[反問]][[語氣]],表示[[不勝]]、[[極度]]
#* {{zh-x|賢昆仲 敦 念 宿誼,垂詢 不遺,曷勝 感戢。||CL|ref=明·{{w|張居正}}〈[[s:答藩伯王麟洲|答藩伯王麟洲]]〉}}
#* {{zh-x|今 之 人 則 不然,一 有 婚姻,乃 心 財利,或 專 在 吉凶,殊不知 貧賤 富貴 在 天,吉凶 在 我。茫然 顛倒,曷勝 歎 歟!曷勝 歎 歟!||CL|ref=明·{{w|陶輔}}《[[s:花影集/卷17|花影集·卷十七]]》}}
#* {{zh-x|屬{zhǔ}饜 之 餘,曷勝 銘謝!||CL|ref=清·{{w|許思湄}}《[[s:秋水軒尺牘/第088首|秋水軒尺牘·謝滄州諸友送蟹]]》}}
#* {{zh-x|朕 與 卿 等 居 暖室,宗戚、昆弟 遠 戍 邊陲,曷勝 其 苦!||CL|ref=清·{{w|畢沅}}等《[[s:續資治通鑑/卷200#仁宗聖文欽孝皇帝延祐六年〈(己未,一三一九年)〉|續資治通鑑·元仁宗延祐六年]]》}}
===參考資料===
* {{R:zh:HYDCD}}
goms403g5vqgysfwtuwhttzg9vb39dy
決戰
0
640586
9788525
8295505
2026-05-25T08:23:10Z
Apisite
85347
9788525
wikitext
text/x-wiki
==漢語==
{{zh-forms|s=决战}}
===發音===
{{zh-pron
|m=juézhàn
|c=kyut3 zin3
|h=pfs=kiet-chan;hrs=h:gied zhanˇ
|mn=koat-chiàn
|mn-t=guag4 ziang3
|cat=v,n
}}
===動詞===
{{zh-verb}}
# 展開[[決定性]]的[[會戰]]
#* {{zh-x|其後 ^諸葛 ^孔明,獨 識 其 遺制,以為{wéi} 可 用以 取 天下,然 相持 數 歲,^魏 人 不敢 決戰,而 ^孔明 亦 卒 無 尺寸 之 功。||CL|ref=宋·{{w|蘇軾}}《[[s:管仲論二|管仲論]]》}}
===名詞===
{{head|zh|名詞}}
# [[決鬥]]
===同義詞===
* {{zh-l|死戰}}
{{zh-cat|Advanced}}
==日語==
{{ja-kanjitab|けつ|k1=けっ|せん|yomi=o}}
===名詞===
{{ja-noun|けっせん}}
# {{ja-kyujitai spelling of|決戦}}
===動詞===
{{ja-verb-suru|tr=intrans|けっせん}}
# {{ja-kyujitai spelling of|決戦}}
==朝鮮語==
{{ko-hanjatab}}
===名詞===
{{ko-noun|hangeul=결전}}
# {{hanja form of|결전}}
9osxt3l3t6xqv0yjt3kg6vlp04vgzgl
スペイン
0
725042
9787598
8635571
2026-05-24T17:59:10Z
TongcyDai
53191
9787598
wikitext
text/x-wiki
==日語==
{{ja-kanjitab|alt=西班牙:obsolete}}
{{swp|ja:}}
===其他形式===
* {{qualifier|縮寫}} {{ja-r|西|せい|caps=y}}
===詞源===
{{bor+|ja|en|Spain}}。
===發音===
{{ja-pron|スペ.イン|acc=2|dev=1}}
===專有名詞===
{{ja-pos|proper}}
# {{tcl|ja|西班牙|id=Q29}}
====派生詞彙====
{{col|ja
| {{ja-r|スペイン語|^スペイン-ご|[[西班牙語]]}}
| {{ja-r|スペイン人|^スペイン-じん|[[西班牙人]]}}
| {{ja-r|スペイン風邪|^スペイン かぜ|[[西班牙流感]]}}
| {{ja-r|スペイン内%戦|^スペイン ない%せん|西班牙[[内戰]]}}
| {{ja-r|スペイン国|^スペイン-こく|西班牙國}}
| {{ja-r|スペイン王%国|^スペイン ^おう%こく|[[西班牙王國]]}}
}}
===參見===
* {{ja-r|ポートオブスペイン|^ポート オブ ^スペイン}}
{{cln|ja|外名}}
h0ly5ehszga3u6jy6qckcs08ubdlp6a
vorwärts
0
822259
9787415
5984081
2026-05-24T12:54:13Z
TongcyDai
53191
9787415
wikitext
text/x-wiki
==德語==
===詞源===
源自 {{affix|de|vor-|-wärts}};比較{{cog|en|forward}}、{{cog|nl|voorwaarts}}。
===發音===
* {{IPA|de|/ˈfoːr.vɛrts/|[ˈfoːɐ̯vɛɐ̯ts]}}
** {{audio|de|De-vorwärts.ogg|a=柏林}}
* {{IPA|de|/ˈfɔr.vɛrts/|[ˈfɔɐ̯vɛɐ̯ts]}}
* {{hyphenation|de|vor|wärts}}
===副詞===
{{de-adv}}
# [[向前]],[[往前]],[[前进]]
#: {{ant|de|rückwärts|zurück}}
====相關詞彙====
{{col3|de
|aufwärts
|abwärts
|auswärts
|einwärts
|südwärts
|nordwärts
|ostwärts
|westwärts}}
====參見====
{{col3|de
|auswärtig
|gegenwärtig
|seitwärtig
|landwärtig
|seewärtig}}
===延伸閱讀===
* {{R:de:Duden}}
* {{R:de:DWDS}}
4opxxd5h067ev344nf9svg8hbri190r
rückwärts
0
832352
9787417
5977253
2026-05-24T13:03:57Z
TongcyDai
53191
9787417
wikitext
text/x-wiki
==德語==
===詞源===
{{ety|de|:af|rück|-wärts}}
源自 {{affix|de|rück|-wärts}}。
===發音===
* {{IPA|de|/ˈʁʏkˌvɛʁts/|[ˈʁʏkʰˌvɛɐ̯ts]}}
* {{audio|de|De-rückwärts.ogg|a=柏林}}
* {{hyphenation|de|rück|wärts}}
===副詞===
{{de-adv}}
# [[向後]],[[往後]],[[後退]]
#: {{ant|de|vorwärts}}
====派生詞彙====
* {{l|de|Rückwärtsgang}}
* {{l|de|rückwärtsgewandt}}
====相關詞彙====
{{col|de
|aufwärts
|abwärts
|auswärts
|einwärts
|südwärts
|nordwärts
|ostwärts
|westwärts
}}
====參見====
* {{l|de|auswärtig}}
* {{l|de|gegenwärtig}}
* {{l|de|seitwärtig}}
* {{l|de|landwärtig}}
* {{l|de|seewärtig}}
===延伸閱讀===
* {{R:de:Duden}}
* {{R:de:DWDS}}
7jd3dyh977ib5s157h7l4itp1z8dpam
衝撃
0
913099
9787476
7672411
2026-05-24T14:57:19Z
Fglffer
55252
9787476
wikitext
text/x-wiki
==日語==
{{ja-kanjitab|しょう|げき|y=o}}
===發音===
{{ja-pron|しょうげき|acc=0|acc_ref=DJR4,NHK16,SMK8}}
===名詞===
{{ja-noun|しょうげき}}
# [[衝擊]],[[撞擊]]
# {{lb|ja|figurative}} [[刺激]],[[打擊]]
#: {{ja-uxi|'''衝撃'''[[の#詞源2|の]][[真実]]|'''しょうげき''' の しんじつ|'''衝擊'''的事實}}
# [[脈衝]]
===動詞===
{{ja-verb-suru|しょうげき}}
# [[衝擊]],[[撞擊]]
# {{lb|ja|figurative}} [[刺激]],[[打擊]]
====活用====
{{ja-suru|しょうげき}}
===來源===
<references/>
* {{R:Kanjipedia Kotoba|0003448800}}
7h45m736d5gvdr4jtx26f3zknudl5ux
9788151
9787476
2026-05-25T00:14:01Z
Sayonzei
40728
/* 日語 */
9788151
wikitext
text/x-wiki
==日語==
{{ja-kanjitab|しょう|げき|y=o}}
===發音===
{{ja-pron|しょうげき|acc=0|acc_ref=DJR4,NHK16,SMK8}}
===名詞===
{{ja-noun|しょうげき}}
# [[衝擊]],[[撞擊]]
# {{lb|ja|figurative}} [[刺激]],[[打擊]]
#: {{ja-uxi|'''衝撃'''[[の#詞源2|の]][[真実]]|'''しょうげき''' の しんじつ|'''衝擊'''的事實}}
# [[脈衝]]
====衍生詞====
* {{ja-r|衝%撃%波|しょう%げき%は}}
* {{ja-r|衝撃的|しょうげきてき}}
===動詞===
{{ja-verb-suru|tr=trans|しょうげき}}
# [[衝擊]],[[撞擊]]
# {{lb|ja|figurative}} [[刺激]],[[打擊]]
====活用====
{{ja-suru|しょうげき}}
===來源===
<references/>
* {{R:Kanjipedia Kotoba|0003448800}}
5po878ayu0ib6ua937olumt12bnddiv
Spagna
0
978015
9787550
6138739
2026-05-24T17:45:27Z
TongcyDai
53191
9787550
wikitext
text/x-wiki
{{also|spagna}}
==科西嘉語==
{{wp|co:}}
===詞源===
{{inh+|co|la|Hispānia}}。
===發音===
* {{IPA|co|/ˈspaɲa/|/ˈspaɲɲa/|/ˈspaɲːa/}}
===專有名詞===
{{h|co|propn|g=f}}
# {{tcl|co|西班牙|id=Q29}}
====相關詞彙====
* {{l|co|spagnolu}}
==意大利語==
{{wp|it:}}
===其他形式===
* {{alt|it|Ispagna||過時|epenthetic}}
===詞源===
{{ety|it|:inh|la:Hispānia}}
{{inh+|it|la|Hispānia}}。
===發音===
{{it-pr|Spàgna<audio:LL-Q652 (ita)-Happypheasant-Spagna.wav>}}
===專有名詞===
{{it-proper noun|f|head=[[la]] Spagna}}
# {{tcl|it|西班牙|id=Q29}}
====相關詞彙====
* {{l|it|spagnolo}}
====派生語彙====
* {{desc|sq|Spanjë|bor=1}}
===參見===
{{list:countries in Europe/it}}
{{cln|it|外名}}
==羅曼什語==
{{wp|rm:}}
===其他形式===
* {{alt|rm|Spogna||Vallader}}
===詞源===
{{inh+|rm|la|Hispānia}},源自{{der|vec|phn|-}}或{{der|vec|xpu|-}}的詞根。
===發音===
* {{IPA|rm|/ˈʃpa.ɲa/|[ˈʃpäɲˑɐ]}}
* {{audio|rm|rm-sursilv-Spagna.flac|a=Survilvan}}
===專有名詞===
{{rm-proper noun|f|head=[[la]] Spagna}}
# {{lb|rm|Rumantsch Grischun|Sursilvan|Sutsilvan|Surmiran|Puter}} {{tcl|rm|西班牙|id=Q29}}
====相關詞彙====
* {{l|rm|spagnol}}
{{cln|rm|外名}}
==西西里語==
===詞源===
{{inh+|scn|la|Hispānia}},源自{{der|scn|phn|-}},源自{{der|scn|phn|-}}或{{der|scn|xpu|-}}的詞根。
===發音===
* {{IPA|scn|/ˈspaɲ.ɲa/|[ˈɕpäɲːä]}}
* {{rhymes|scn|aɲɲa}}
* {{hyphenation|scn|Spà|gna}}
===專有名詞===
{{head|scn|專有名詞|g=f|head=[[la]] Spagna}}
{{wp|scn:}}
# {{tcl|scn|西班牙|id=Q29}}
====相關詞彙====
* {{l|scn|spagnolu}}
{{cln|scn|外名}}
==威尼斯語==
===詞源===
{{inh+|vec|la|Hispānia}},源自{{der|vec|phn|-}}或{{der|vec|xpu|-}}的詞根。
===發音===
* {{IPA|vec|/ˈspa.ɲa/}}
* {{rhymes|vec|aɲa}}
* {{hyphenation|vec|Spà|gna}}
===專有名詞===
{{head|vec|專有名詞|g=f|head=[[ła]] Spagna}}
{{wp|vec:}}
# {{tcl|vec|西班牙|id=Q29}}
====相關詞彙====
* {{l|vec|spagnoło}}
{{cln|vec|外名}}
7fkeljf9wxjk7xo051xujwxouc3yeyt
udu
0
1013225
9788123
9718903
2026-05-24T20:08:39Z
TongcyDai
53191
9788123
wikitext
text/x-wiki
{{also|Appendix:"udu"的變體}}
==跨語言==
===符號===
{{mul-symbol}}
# {{ISO 639|3}}
===參見===
* {{langcat}}
==英語==
===詞源===
{{bor+|en|ig|udu||壺}}。
===名詞===
{{en-noun}}
# 源自[[伊博族]]的[[壺]]狀[[打擊樂器]]
{{c|en|打擊樂器}}
==東鄉語==
===詞源===
{{inh+|sce|xgn-pro|*edür}}。對照{{cog|mn|өдөр}}。
===發音===
{{sce-IPA}}
===名詞===
{{head|sce|名詞}}
# [[天]],[[日子]];[[白天]]
==愛沙尼亞語==
{{was fwotd|et|2026|5月|27日}}
{{wp|et:}}
{{multiple images|image1=Kakerdaja raba laudtee udus.jpg|image2=Hommikune udu Kakerdaja rabas.jpg|image3=Hommik Mukri rabas.jpg|footer=沼澤中的'''霧'''}}
===詞源===
{{inh+|et|urj-fin-pro|*utu}},進一步詞源參見該詞條。同源詞包括{{cog|fi|utu}}、{{cog|liv|u’d}}、{{cog|vot,izh|utu}} 等。
===發音===
* {{et-IPA}}
* {{audio|et|Et-udu.ogg}}
* {{rhymes|et|udu|s=2}}
* {{hyph|et|udu}}
===名詞===
{{et-noun|udu|udu}}
# [[霧]],[[薄霧]],[[霾]]
#: {{par|et|sumu|hägu}}
#: {{uxi|et|hommikune '''udu'''|晨'''霧'''}}
#: {{uxi|et|sügisene '''udu'''|秋'''霧'''}}
#: {{uxi|et|madal '''udu'''|低'''霧'''}}
#: {{uxi|et|'''Udu''' langes maha.|'''霧'''降下來了。}}
#: {{uxi|et|Järve poolt tõuseb '''udu'''.|湖面上起'''霧'''了。}}
#: {{uxi|et|Mere kohale on kerkinud '''udu'''.|海面上起'''霧'''了。}}
#: {{uxi|et|'''Udu''' tiheneb.|'''霧'''變濃了。}}
#: {{uxi|et|'''Udu''' hõreneb.|'''霧'''散了。}}
#: {{uxi|et|Väljas on tihe '''udu'''.|外面有濃'''霧'''。}}
#: {{uxi|et|Tuul ajas '''udu''' laiali.|風把'''霧'''吹散了。}}
#: {{uxi|et|'''Udu''' tõttu lükati lend edasi.|由於大'''霧''',航班延誤了。}}
#: {{uxi|et|Läbi '''udu''' ei näe midagi.|透過'''霧'''什麼也看不見。}}
#: {{uxi|et|Meri mattus '''uttu'''.|大海被'''霧'''籠罩。}}
#: {{uxi|et|Mägede tipud on '''uttu''' mähkunud.|山峰被'''薄霧'''籠罩。}}
#: {{uxi|et|Mäletan juhtunut nagu läbi '''udu'''.|我對發生過的事情的記憶就像隔著一層'''霧'''(很模糊)。}}
#: {{coi|et|[[uttu tõmbama|'''uttu''' tõmbama]]|[[走開]]|lit=拉進'''霧'''裡|q=口語}}
#: {{uxi|et|Mälestused on kadunud aegade '''uttu'''.|記憶已經消散在時間的'''迷霧'''中。}}
#: {{uxi|et|Ta hõljub kuulsuse roosas '''udus'''.|他/她沉浸在名聲的粉色'''迷霧'''中。}}
#: {{coi|et|[[udu ajama|'''udu''' ajama]]|胡說八道,含糊其辭,說謊|lit=驅趕'''霧'''}}
#* {{quote-book|et|1979|Mati Unt|authorlink=Mati Unt|title=Sügisball|location=Tallinn|publisher=Eesti Raamat|isbn=9789916537626|pages=73–74|text=Kogu maailm oli vahepeal kadunud. Neile avanes hall eimiski. Alles natukese aja pärast said nad aru, et linnale oli tulemaalase laulu ajal laskunud erakordselt tihe '''udu'''. Polnud näha ühtki tuld, ühtki maja, ühtki kontuuri, ühtki detaili. Vaatepilt oli ühtlane, see polnudki pilt, vaid raamitud tühjus.|t=與此同時,整個世界都消失了。一片灰色的虛無在他們面前展開。過了一會兒,他們才意識到,在他唱歌的時候,一場異常濃密的'''霧'''降臨了這座城市。沒有燈光,沒有房屋,沒有輪廓,看不到任何細節。視野是均勻的;它不是一幅畫,而是一個被框住的空洞。}}
## [[水氣]],[[蒸汽]]
# {{lb|et|天文學}} [[星雲]]
#: {{syn|et|udukogu}}
#: {{uxi|et|Andromeeda '''udu'''|仙女座'''星雲'''}}
# [[騙人]]的、有[[誤導]]性的[[廢話]]
#: {{syn|et|häma|hämu}}
# {{lb|et|口語|亦作形容詞}} [[心不在焉]]、[[健忘]]或[[遲鈍]]的人
====變格====
{{et-decl-elu|udu}}
====派生詞彙====
{{col|et|title=形容詞
|udune
|udujas
|udukas
}}
{{col|et|title=名詞
|sudu
}}
{{col|et|title=動詞
|udustama
|udutsema
|udutama
}}
{{col|et|title=短語
|udu ajama
|uttu tõmbama
}}
====複合詞====
{{col|et
|ajuudu
|hallaudu
|hommikuudu
|jõeudu
|jääudu
|külmaudu
|mereudu
|pakaseudu
|pilveudu
|planetaarudu
|põuaudu
|rõngasudu
|sooudu
|suitsuudu
|sõjaudu
|sügisudu
|umbudu
|vihmaudu
|õhtuudu
|ööudu
}}
{{col|et
|uduaur
|ududušš
|uduehmes
|uduhall
|uduhõlje
|uduhägune
|uduhämar
|uduhämu
|* uduhämune
|udujoom
|udujuga
|udujutt
|udukaar
|udukangas
|udukarv
|udukarva
|udukate
|udukell
|udukerge
|udukiht
|udukirme
|udukogu
|udukoonal
|udukord
|udulaam
|udulaik
|udulaine
|udulatern
|udulehtrik
|udulinik
|uduloor
|udumass
|udumeri
|udumets
|udumärg
|udumüür
|uduniiske
|* uduniiskus
|udupalakas
|udupank
|udupasun
|udupea
|udupeen
|udupehme
|udupihu
|udupiim
|udupiisk
|udupilt
|udupilv
|udupisar
|udupäev
|uduriba
|udurohke
|udurõske
|uduräbal
|udurüngas
|udurüü
|udusagar
|udusammas
|udusegune
|udusein
|udusignaal
|udusireen
|udusomp
|udusond
|udusulestik
|udusulg
|* udusulgne
|* udusuline
|* udusulis
|udutaoline
|udutekk
|udutomp
|udutort
|udutriip
|udutuli
|uduumbe
|uduumbes
|udu-uus
|uduvaip
|uduvalge
|uduvall
|uduvesi
|uduvihm
|* uduvihmane
|uduviir
|uduviirg
|uduvikerkaar
|uduvile
|uduvill
|uduvina
|uduvine
|* uduvinene
|* uduvinetis
|* uduvinetus
|uduvoog
|uduvöö
|uduvööt
|uduõhuke
|uduõrn
|uduähm
|* uduähmane
}}
====相關詞彙====
{{col|et
|ude
}}
===參考資料===
* {{R:Sõnaveeb}}
* {{R:et:EKSS}}
{{C|et|大氣現象}}
==波蘭語==
===發音===
{{pl-pr}}
===名詞===
{{head|pl|名詞變格形|g=n}}
# {{inflection of|pl|udo||dat|s}}
==西西里語==
===詞源===
{{inh+|scn|la|ūdus||濕的}}。和{{cog|rup|ud}}、{{cog|dlm|joit}}、{{cog|it|uggia}}、{{cog|ro|ud}}同源。
===發音===
* {{IPA|scn|/ˈu.du/|[ˈu.dʊ]}} {{qual|標準}}
* {{hyphenation|scn|ù|du}}
===名詞===
{{scn-noun|ud|m|u}}
# {{lb|scn|烹飪}} 沸騰時的[[烹調]][[用水]]
#: {{ux|scn|Sta' 'ttentu a l'acqua ca vuḍḍi ca putissi nèsciri u '''udu''' dâ pignata.|小心沸水,以免'''煮沸的水'''從鍋裡溢出來。}}
====相關詞彙====
{{col4
|scn|
|vùgghiri|acqua di cuttura|àmitu|vuḍḍuta|vugghiuta
}}
===參見===
{{col4
|scn
|ùmitu|muḍḍura|salamastru|salamarigghiu|pasta
}}
==斯洛文尼亞語==
===名詞===
{{head|sl|名詞變格形}}
# {{infl of|sl|ud||dat//loc|s}}
==蘇里南湯加語==
===詞源===
源自{{der|srn|en|wood}}。
===發音===
* {{IPA|srn|/ˈu.du/}}
===名詞===
{{head|srn|名詞}}
# [[木頭]];[[木材]]
#* {{quote-book
|srn
|year=1783
|title=Neger-Englisches Worterbuch
|trans-title=Negro English Dictionary
|author=C. L. Schumann
|url=http://www.suriname-languages.sil.org/Schumann/National/SchumannGerDict.html
|text=Kuljara va ju no habi bunne '''hudu''', da buba soso
|t=你的獨木舟沒有用合適的'''木材''',那只是一塊邊材。
|archiveurl=https://web.archive.org/web/20230208133127/http://suriname-languages.sil.org/Schumann/National/SchumannGerDict.html
|archivedate=8 February 2023
}}
===形容詞===
{{head|srn|形容詞}}
# [[木製]]的
====派生詞彙====
{{col|srn
|uduloso<t:白蟻>
}}
==蘇美爾語==
===羅馬化===
{{sux-rom}}
# {{romanization of|sux|𒇻|tr=udu}}
==土耳其語==
===名詞===
{{head|tr|名詞變格形}}
# {{inflection of|tr|ut||acc|s}}
# {{inflection of|tr|ut||3|s|poss}}
==西馬基安語==
===詞源===
Voorhoeve 將其與{{cog|tvo|iru|t=吹}} 相比較。
===發音===
* {{IPA|mqs|/ˈu.d̪u/}}
===動詞===
{{head|mqs|動詞}}
# {{lb|mqs|不及物}} [[吹]]
====變位====
{{mqs-conj|1}}
===名詞===
{{head|mqs|名詞}}
# [[風]]
====其他形式====
* {{alter|mqs|wudu}}
===參考資料===
* {{R:mqs:Collins:1982}}
* {{R:mqs:Voorhoeve:1982}}
{{mqs-conj|1}}
===名詞===
{{head|mqs|名詞}}
# [[風]]
====其他形式====
* {{alter|mqs|wudu}}
===參考資料===
* {{R:mqs:Collins:1982}}
* {{R:mqs:Voorhoeve:1982}}
et100wyhnhql9932zkt9f232g25peg5
𠃶
0
1031859
9788601
5628567
2026-05-25T08:54:05Z
TongcyDai
53191
9788601
wikitext
text/x-wiki
{{character info}}
==跨語言==
===漢字===
{{Han char|rn=5|rad=乙|as=8|sn=9|four=|canj=BEU|ids=⿰受乚}}
====參考資料====
* {{Han ref|kx=0084.241|dkj=00198|dj=|hdz=10056.050|uh=200F6}}
==漢語==
{{zh-see|亂|v}}
dhm059z8vogtbwlzastioody08maoe7
𤔔
0
1032038
9788576
5631432
2026-05-25T08:50:44Z
TongcyDai
53191
9788576
wikitext
text/x-wiki
{{also|亂}}
{{character info}}
==跨語言==
===其他形式===
* 《{{w|康熙字典}}》中上方的部件是{{l|mul|爪}}而非{{l|mul|爫}}。
===漢字===
{{Han char|rn=87|rad=爪|as=8|sn=12|four=|canj=BNIB|ids=⿳爫龴𱏻}}
====派生漢字====
<!-- Standard Unicode including Extension A -->
* {{lang|mul|sc=Hani|[[亂]] ([[乱]]), [[覶]], [[辭]] ([[辞]])}}
<!-- Non-standard Unicode after Extension A (some may not be supported by ordinary fonts) -->
{{col-top|1|其他漢字}}
* {{charlist|sc=Hani|𡡗𬯙𱚢}}<big><big>、</big></big>{{charlist|sc=Hani|𤔧𢿢𢿳𭯁𤳞𤔲𬋶𰴝𤕅𬋹𤕌𫬽𲀢}}
{{col-bottom}}
====相關漢字====
* {{l|mul|[[亂]]}} {{qual|規範字形}}
====參考資料====
{{Han ref|kx=0689.160|hdz=32036.010|uh=24514}}
==漢語==
===字源===
{{Han etym}}
{{Han compound|糸|冂|𠬪|t1=絲線|t2=打穀器、綜絲、梳子|t3=雙手|ls=ic}} — 兩個人用手借助工具解開一條線。在構成上和{{zh-m|*受}}相關。<!--https://xiaoxue.iis.sinica.edu.tw/yanbian?kaiOrder=34741-->
===詞源1===
{{zh-forms|alt=𠭟,𤔐,𤔒,𤔦,𤔬}} <!-- Refer http://dict.variants.moe.edu.tw/variants/rbt/word_attribute.rbt?quote_code=QzA2OTMz -->
====發音====
{{zh-pron
|m=luàn
|c=
|mc=y
|oc=y
|cat=v
}}
====釋義====
{{head|zh|漢字}}
# {{lb|zh|hist-dict}} [[治理]] <!-- 《說文解字》 𤔔:治也。幺子相亂,𠬪治之也。讀若亂,同。一曰:理也。-->
====參考資料====
* {{R:twedu|C06933}}
===詞源2===
====釋義====
{{zh-see|亂|v}}
====參考資料====
* {{R:twedu|A00045-017-7}}
q1yluaz9b673ffnv59sflxwwezkx6us
후추
0
1034553
9788482
8347860
2026-05-25T03:10:35Z
Sayonzei
40728
9788482
wikitext
text/x-wiki
==朝鮮語==
{{wp|ko:}}
===詞源===
{{ko-etym-nativised|호초|胡椒}}
===發音===
{{ko-IPA}}
===名詞===
{{ko-noun}}
# [[胡椒]]
{{C|ko|胡椒目植物|香料}}
repfy66t028ttsf41oiqu12bscfpcx2
蠼螋
0
1049089
9788498
6879765
2026-05-25T06:57:48Z
Fglffer
55252
9788498
wikitext
text/x-wiki
==漢語==
{{zh-forms|gloss=-}}
{{wp|zh:}}
===發音===
{{zh-pron
|m=蠼sōu
|c=keoi4 sau1
|mn=xm:kû-so͘
|cat=n
}}
===名詞===
{{head|zh|名詞}}
# [[革翅目]]({{taxfmt|Dermaptera|order}})[[昆蟲]]的[[通稱]]
====同義詞====
* {{zh-l|蠷螋}}
* {{zh-l|蛷螋}}
* {{zh-l|剪刀蟲}}
* {{zh-l|耳夾子蟲}}
{{zh-cat|Disyllabic}}
{{C|zh|昆蟲}}
==日語==
{{wp|ja:}}
{{ja-kanjitab|はさみ|むし|yomi=k}}
{{ja-see|鋏虫}}
qess6jyvq65a9ajw414bxn9nt4u0x95
9788499
9788498
2026-05-25T07:18:22Z
Sayonzei
40728
/* 日語 */
9788499
wikitext
text/x-wiki
==漢語==
{{zh-forms|gloss=-}}
{{wp|zh:}}
===發音===
{{zh-pron
|m=蠼sōu
|c=keoi4 sau1
|mn=xm:kû-so͘
|cat=n
}}
===名詞===
{{head|zh|名詞}}
# [[革翅目]]({{taxfmt|Dermaptera|order}})[[昆蟲]]的[[通稱]]
====同義詞====
* {{zh-l|蠷螋}}
* {{zh-l|蛷螋}}
* {{zh-l|剪刀蟲}}
* {{zh-l|耳夾子蟲}}
{{zh-cat|Disyllabic}}
{{C|zh|昆蟲}}
==日語==
{{wp|ja:}}
{{ja-kanjitab|はさみ|むし|yomi=irr}}
{{ja-see|鋏虫}}
71lbriuhhikxkahwhz4c2wtis0g1v9i
血戰
0
1092350
9788526
6922787
2026-05-25T08:23:58Z
Apisite
85347
/* 漢語 */ + 客家語
9788526
wikitext
text/x-wiki
==漢語==
{{zh-forms|s=血战}}
===讀音===
{{zh-pron
|m=血zhàn
|c=hyut3 zin3
|h=pfs=hiet-chan;hrs=h:hied zhanˇ
|mn=hiat-chiàn
|cat=n}}
===釋義===
# {{rfdef|zh}}
===翻譯===
{{翻译-顶}}
* 俄语:[[кровопролитное]] [[сражение]], [[кровавый]] [[бой]]
{{翻译-底}}
[[Category:待分類的漢語詞]]
[[Category:漢語|血00戈12]]
p3727h1ki32488o5q9vulpqwpbehbvo
戰局
0
1094050
9788512
9127097
2026-05-25T08:18:01Z
Apisite
85347
/* 漢語 */ + 潮州話
9788512
wikitext
text/x-wiki
==漢語==
{{zh-forms|s=战局}}
===發音===
{{zh-pron
|m=zhànjú
|c=zin3 guk6
|mn=chiàn-kio̍k
|mn-t=ziang3 gêg8
|cat=n
}}
===名詞===
{{head|zh|名詞}}
# [[戰爭]]、[[比賽]]等的[[局勢]]
==日語==
{{ja-kanjitab|せん|きょく|yomi=o}}
===名詞===
{{ja-noun|せんきょく}}
# {{ja-kyu sp|戦局}}
==朝鮮語==
{{ko-hanjatab}}
===名詞===
{{ko-noun|hangeul=전국}}
# {{hanja form of|전국}}
qlw2p6yq56p6k38hnyet9h1qe9wzqox
戰士
0
1094142
9788516
8546279
2026-05-25T08:18:57Z
Apisite
85347
9788516
wikitext
text/x-wiki
==漢語==
{{zh-forms|s=战士}}
{{zh-wp}}
===發音===
{{zh-pron
|m=zhànshì
|c=zin3 si6
|h=pfs=chan-sṳ;hrs=h:zhanˇ sii˖
|mn=qz:chiàn-sǐr/tw,xm,zz:chiàn-sū
|mn-t=ziang3 se6
|px=pt,xy:zeng4 *so5
|w=sh:5tsoe zy
|mc=y
|oc=2,1
|cat=n
}}
===名詞===
{{head|zh|名詞}}
# 從事[[戰鬥]]為業的人
## [[軍人]]
## [[武士]]
====同義詞====
* {{sense|軍人}}
{{syn-saurus|zh|軍人}}
* {{sense|武士}}
{{syn-saurus|zh|武士}}
====衍生詞====
{{col3|zh|自由戰士|白衣戰士|邊防戰士|鋼鐵戰士|國際主義戰士|狂戰士|武警戰士|陣亡戰士紀念日|社會正義戰士}}
====派生詞====
{{CJKV||s=戦%士|せん%し|전사|chiến sĩ}}
{{zh-cat|Elementary}}
{{C|zh|軍事|職業|人}}
==日語==
{{ja-kanjitab|せん|し|yomi=o}}
===名詞===
{{ja-noun|せんし}}
# {{ja-kyu sp|戦士}}
==朝鮮語==
{{ko-hanjatab}}
===名詞===
{{ko-noun|hangeul=전사|mr=chŏnsa|y=cēnsa}}
# {{hanja form of|전사}}
==越南語==
{{vi-hantutab}}
===名詞===
{{vi-noun|sc=Hani}}
# {{vi-Han form of|chiến sĩ|}}
ot6cibgd0p6x4l56hqosuojdcrrtp4e
戰戰兢兢
0
1094226
9788521
8533948
2026-05-25T08:21:13Z
Apisite
85347
9788521
wikitext
text/x-wiki
==漢語==
{{zh-forms|s=战战兢兢|note={{zh-etym-AABB|戰兢}}|type=22}}
===詞源===
出自《[[s:zh:詩經/小旻|詩經·小雅·小旻]]》:
{{zh-x|'''戰戰.兢兢''',如.臨.深淵,如.履.薄冰。|我們面對政局戒慎恐懼,就像面臨深水潭,就像踩在薄冰上。|ref=Shijing|collapsed=y}}
===發音===
{{zh-pron
|m=zhànzhànjīngjīng
|dg=җан3җан3-чин1чин1
|c=zin3 zin3 ging1 ging1
|mn-t=ziang3 ziang3# kêng1 kêng1
|mc=y
|oc=y
|cat=cy
}}
===成語===
{{head|zh|成語}}
# {{lb|zh|ideophonic}} 因[[畏懼]]而[[顫抖]],形容[[戒懼]][[謹慎]]的樣子
====派生詞====
{{CJKV|戰戰兢兢|s=戦%々%恐%々|せん%せん%きょう%きょう|전전긍긍}}
====參見====
* {{zh-l|戰兢兢}}
==朝鮮語==
{{ko-hanjatab}}
===名詞===
{{ko-noun|hangeul=전전긍긍}}
# {{hanja form of|전전긍긍}}
9w8n1vnx26vk27dg5v40uhlr9rnwmac
戰鬥
0
1094480
9788505
9389733
2026-05-25T08:16:46Z
Apisite
85347
/* 漢語 */ + 潮州話
9788505
wikitext
text/x-wiki
==漢語==
{{zh-forms|s=战斗|t2=戰鬪}}
===發音===
{{zh-pron
|m=zhàndòu
|ma=Zh-zhàndòu.ogg
|c=zin3 dau3
|h=pfs=chan-teu
|mn=xm,zz,tw:chiàn-tò͘/qz:chiàn-tiò/tw:chiàn-tàu
|mn-t=ziang3 dou3
|cat=n,v
}}
===名詞===
{{head|zh|名詞}}
# [[雙方]]以[[武力]]相[[爭鬥]]{{zh-mw|m:場}}
====相關詞====
* {{zh-l|戰役}}
===動詞===
{{zh-verb}}
# [[交鋒]],[[交戰]]
# [[採取]][[行動]]
===衍生詞===
{{col3|zh|戰鬥機|戰鬥艦|戰鬥力|戰鬥群|戰鬥員|裝甲戰鬥車輛}}
===派生詞===
{{cjkv||s=戦%闘|せん%とう|전투|chiến đấu|h=戰鬪}}
===相關詞===
* {{zh-l|鬥爭}}
* {{zh-l|戰爭}}
{{zh-cat|Elementary}}
{{C|zh|軍事|戰爭}}
==越南語==
{{vi-hantutab}}
===名詞===
{{vi-noun|sc=Hani}}
# {{vi-Han form of|chiến đấu}}
===動詞===
{{vi-verb|sc=Hani}}
# {{vi-Han form of|chiến đấu}}
lk6wzvk0c5xq1h9zh8ozjpfbxrey0oo
西班牙
0
1106791
9787519
9728745
2026-05-24T17:36:15Z
TongcyDai
53191
9787519
wikitext
text/x-wiki
==漢語==
{{zh-forms|gloss=-}}
{{zh-wp|zh|yue|wuu|lzh|gan|cdo:Să̤-băng-ngà|hak:Sî-pân-ngà|nan:Se-pan-gâ}}
[[File:Flag of Spain.svg|200px|thumb|西班牙國旗]]
===詞源===
源自歐洲語言代表西班牙的單詞;對照{{cog|en|Spain}}、{{cog|es|España}}、{{cog|de|Spanien}}。最後一個音節{{zh-l|牙}}的漢字選擇可能受到{{zh-l|葡萄牙}}影響或加強。
早在1835年《{{w|东西洋考每月统纪传}}》就有紀載。早期類似轉寫為{{zh-l|是班呀}},出自{{w|陳倫烱}}的著作《海國聞見錄》 {{defdate|1730年}}。
===發音===
{{zh-pron
|m=Xībānyá
|c=sai1 baan1 ngaa4
|c-t=lhai1 ban1 nga3
|h=pfs=Sî-pân-ngà;gd=xi1 ban1 nga2
|md=Să̤-băng-ngà
|mn=xm,qz,tw,ph:Se-pan-gâ/zz:Se-pan-gêe/pn:Si-pan-gêe
|mn-t=sai1 bang1 ghê5
|w=sh:1shi pe nga
|cat=pn
}}
===專有名詞===
{{zh-proper noun}}
# {{sid|zh|Q29}}{{place|zh|國家|cont/歐洲|capital=馬德里|official=西班牙王國}}
====同義詞====
* {{qual|棄用}} {{zh-l|是班牙}}、{{zh-l|士班雅}}、{{zh-l|大呂宋}}、{{zh-l|以西把尼亞}}、{{zh-l|日斯巴尼亞}}
====衍生詞====
{{col3|zh|西班牙凍湯|西班牙人|西班牙語|西班牙港|西班牙王國|西班牙流感|西班牙烏蠅|西班牙蒼蠅}}
====派生詞====
{{CJKV|||^서반아|Tây Ban Nha}}
====翻譯====
{{trans-top|id=Q29|歐洲國家}}
* 阿巴扎語:{{t|abq|Испания}}
* 阿布哈茲語:{{t|ab|Еспаниа}}
* 亞齊語:{{t|ace|Seupanyo}}
* 西切爾克斯語:{{t|ady|Испание}}
* 南非語:{{t+|af|Spanje}}
* 阿爾巴尼亞語:{{t|sq|Spanjë|f}}、{{t+|sq|Spanja|f}} {{qualifier|定指}}
* 阿姆哈拉語:{{t|am|ስጳንያ}}
* 安地列斯克里奧爾語:{{t|gcf|Èspagn|f}}、{{t|gcf|Èspangn|f}}
* 阿拉伯語:{{t+|ar|إِسْبَانِيَة|f}}、{{t+|ar|إِسْبَانِيَا|f}}、{{t|ar|أَسْبَانِيَا|f}}
*: 海灣阿拉伯語:{{t|afb|اسبانيا|tr=ʔəsbanyə}}
*: 漢志阿拉伯語:{{t|afb|إسبانيا|tr=isbānya}}、{{t|afb|إسپانيا|tr=ispānya}}
* 亞美尼亞語:{{t+|hy|Իսպանիա}}
* 阿羅馬尼亞語:{{t|rup|Ispania}}
* 阿薩姆語:{{t|as|স্পেইন}}
* 亞述新亞拉姆語:{{t|aii|ܐܸܣܦܵܢܝܼܵܐ|tr=ispaniya}}
* 阿斯圖里亞斯語:{{t+|ast|España|f}}
* 阿塞拜疆語:{{t+|az|İspaniya}}
* 巴什基爾語:{{t|ba|Испания}}
* 巴斯克語:{{t+|eu|Espainia}}
* 白俄羅斯語:{{t|be|Іспа́нія|f}}、{{t|be|Гішпа́нія|f}} {{qualifier|傳統正寫法}}
* 孟加拉語:{{t+|bn|স্পেন}}
* 布列塔尼語:{{t+|br|Spagn}}、{{t+|br|Bro-Spagn}}
* 保加利亞語:{{t+|bg|Испа́ния|f}}
* 緬甸語:{{t|my|စပိန်}}
* 布里亞特語:{{t|bua|Испани}}
* 伊比利吉普賽語:{{t|rmq|Sesé}}
* 加泰羅尼亞語:{{t+|ca|Espanya|f}}
* 車臣語:{{t|ce|Испани}}
* 切羅基語:{{t|chr|ᏍᏆᏂᏱ}}
* 楚瓦什語:{{t|cv|Испани}}
* 克里米亞韃靼語:{{t|crh|İspaniya}}
* 捷克語:{{t+|cs|Španělsko|n}}
* 丹麥語:{{t+|da|Spanien|n}}
* 迪維希語:{{t|dv|ސްޕެއިން}}
* 荷蘭語:{{t+|nl|Spanje|n}}
* 宗喀語:{{t|dz|སིཔཱེན}}
* 英語:{{t+|en|Spain}}
* 世界語:{{t+|eo|Hispanio}}、{{t+|eo|Hispanujo}}
* 愛沙尼亞語:{{t+|et|Hispaania}}
* 法拉法拉語:{{t|gur|Sɛpaŋɔ}}
* 法羅語:{{t|fo|Spania|n}}
* 芬蘭語:{{t+|fi|Espanja}}
* 法語:{{t+|fr|Espagne|f}}
* 弗留利語:{{t|fur|Spagne|f}}
* 加利西亞語:{{t+|gl|España|f}}
* 格魯吉亞語:{{t+|ka|ესპანეთი}}
*: 上古格魯吉亞語:{{t|oge|სპანიაჲ}}
* 德語:{{t+|de|Spanien|n}}
*: 阿勒曼尼語:{{t|gsw|Schpanië}}
* 希臘語:{{t+|el|Ισπανία|f}}
*: 古希臘語:{{t|grc|Ἱσπανία|f}}、{{t|grc|Σπανία|f}}
* 巴拉圭瓜拉尼語:{{t|gug|Epáña}}
* 圭亞那克里奧爾語:{{t|gcr|Èspangn|f}}
* 古吉拉特語:{{t|gu|સ્પેન}}
* 海地克里奧爾語:{{t|ht|Espay|f}}
* 豪薩語:{{t|ha|Sipen}}、{{t|ha|Sipaniya}}
* 夏威夷語:{{t|haw|Sepania}}
* 希伯來語:{{t+|he|סְפָרַד|f|tr=s'farád}}、{{t|he|אַסְפַּמְיָא|f|tr=aspámya}} {{qualifier|塔木德}}
* 印地語:{{t+|hi|स्पेन|m}}、{{t|hi|इस्पैन|m}}
* 匈牙利語:{{t+|hu|Spanyolország}}
* 漢斯立克語:{{t|hrx|Spanje|n}}
* 冰島語:{{t+|is|Spánn|m}}
* 伊多語:{{t+|io|Hispania}}
* 印尼語:{{t+|id|Spanyol}}
* 因特語:{{t+|ia|Espania}}
* 愛爾蘭語:{{t+|ga|Spáinn|f|alt=An Spáinn}}
* 意大利語:{{t+|it|Spagna|f}}
* 日語:{{t+|ja|スペイン|tr=Supein}}、{{t+|ja|西班牙|tr=Supein}} {{qualifier|棄用}}
* 東切爾克斯語:{{t|kbd|Испание}}
* 卡納達語:{{t+|kn|ಸ್ಪೇನ್}}
* 卡舒比語:{{t|csb|Szpańskô|n}}
* 哈薩克語:{{t+|kk|Испания}}
* 高棉語:{{t+|km|អេស្ប៉ាញ}}
* 彼爾姆科米語:{{t|koi|Эспання}}
* 朝鮮語:{{t+|ko|^스페인}}、{{t+|ko|^에스파냐}}、{{t+|ko|^에스빠냐}} {{qualifier|北韓}}
* 庫爾德語:
*: 中庫爾德語:{{t|ckb|ئیسپانیا}}
*: 北庫爾德語:{{t+|kmr|Spanya}}、{{t+|kmr|Sipanya}}
* 吉爾吉斯語:{{t+|ky|Испания}}
* 老撾語:{{t+|lo|ເອັສປາຍ}}、{{t|lo|ແອສະປາຍ}}、{{t|lo|ສະເປນ}}
* 拉丁語:{{t+|la|Hispania|f}}
* 拉脫維亞語:{{t+|lv|Spānija|f}}
* 立陶宛語:{{t+|lt|Ispanija|f}}
* 立窩尼亞語:{{t|liv|Spāņmō}}
* 盧森堡語:{{t+|lb|Spuenien|n}}
* 馬其頓語:{{t+|mk|Шпанија|f}}
* 馬來語:{{t+|ms|Sepanyol}}
* 馬拉雅拉姆語:{{t+|ml|സ്പെയിൻ}}
* 馬爾他語:{{t|mt|Spanja|f}}
* 毛利語:{{t|mi|Peina}}、{{t|mi|Peina}}
* 馬拉地語:{{t|mr|स्पेन}}
* 蒙古語:
*: 西里爾字母:{{t+|mn|Испани}}
*: 蒙古字母:{{t|mn|ᠢᠰᠫᠠᠨᠢ}}
* 納瓦特爾語:{{t|nah|Caxtillān}}
* 納瓦霍語:{{t|nv|Dibé diníí bikéyah}}
* 諾曼語:{{t|nrf|Espangne|f}}
* 北薩米語:{{t|se|Spánia}}
* 挪威語:
*: 書面挪威語:{{t+|nb|Spania|n}}
*: 新挪威語:{{t+|nn|Spania|n}}
* 奧克語:{{t+|oc|Espanha|f}}
* 奧利亞語:{{t|or|ସ୍ପେନ}}
* 教會斯拉夫語:
*: 西里爾字母:{{t|cu|Їспанїꙗ|f}}
* 古英語:{{t|ang|Ispania|f}}
* 古諾爾斯語:{{t|non|Ispanía}}、{{t|non|Ispaníaland|n}}、{{t|non|Spánn|m}}、{{t|non|Spánland|n}}、{{t|non|Spánaland|n}}、{{t|non|Spanía|n}}、{{t|non|Spaníaland|n}}
* 古奧克語:{{t|pro|Espagna}}
* 鄂圖曼土耳其語:{{t|ota|اسپانیا|tr=ispanya}}
* 普什圖語:{{t|ps|اسپانيا|f|tr=aspānyā}}
* 波斯語:{{t+|fa|اِسْپانِیا|tr=espâniyâ}}、{{t|fa|هسپانیه|tr=hespâniye}} {{qualifier|達利語}}
* 門諾低地德語:{{t+|pdt|Spanien|n}}
* 波蘭語:{{t+|pl|Hiszpania|f}}
* 葡萄牙語:{{t+|pt|Espanha|f}}
* 旁遮普語:{{t|pa|ਸਪੇਨ}}
* 克丘亞語:{{t|qu|Ispaña}}
* 羅姆語:
*: 芬蘭羅姆語:{{t|rmf|Espanes|m}}
*: 辛特羅姆語:{{t|rmo|španja|f}}、{{t|rmo|španatiko them}}
* 羅馬尼亞語:{{t+|ro|Spania|f}}
* 羅曼什語:{{t|rm|Spagna|f}}、{{t|rm|Spogna|f}}
* 俄語:{{t+|ru|Испа́ния|f}}、{{t+|ru|Гишпа́ния|f}} {{qualifier|古舊}}
* 盧森尼亞語:{{t|rue|Іспа́нія|f}}
* 撒丁語:{{t|sc|Ispagna|f}}
* 低地蘇格蘭語:{{t|sco|Spainie}}、{{t|sco|Spain}}
* 蘇格蘭蓋爾語:{{t|gd|Spàinn|f|alt=An Spàinn}}
* 塞爾維亞-克羅地亞語:
*: 西里爾字母:{{t|sh|Шпа̑нија|f}}、{{t|sh|Шпа̀њо̄лска̄|f}}
*: 拉丁字母:{{t+|sh|Špȃnija|f}}、{{t+|sh|Špànjōlskā|f}}
* 西西里語:{{t|scn|Spagna|f}}
* 西里西亞語:{{t|szl|Szpańijo|f}}
* 僧加羅語:{{t|si|ස්පාඤ්ඤය}}
* 斯洛伐克語:{{t+|sk|Španielsko|n}}
* 斯洛文尼亞語:{{t+|sl|Špánija|f}}
* 西班牙語:{{t+|es|España|f}}
* 斯瓦希里語:{{t+|sw|Hispania}}
* 瑞典語:{{t+|sv|Spanien|n}}
* 他加祿語:{{t+|tl|Espanya}}
* 塔吉克語:{{t+|tg|Испониё}}、{{t+|tg|Испания}}
* 泰米爾語:{{t|ta|ஸ்பெயின்}}、{{t|ta|எசுப்பானியா}}
* 韃靼語:{{t|tt|Испания}}
* 泰盧固語:{{t|te|స్పెయిన}}
* 德頓語:{{t|tet|Espanya}}
* 泰語:{{t+|th|สเปน}}
* 藏語:{{t|bo|ཞི་པན་ཡ}}
* 提格里尼亞語:{{t|ti|ስጳኛ}}
* 湯加語:{{t|to|Sepeni}}
* 土耳其語:{{t+|tr|İspanya}}
* 土庫曼語:{{t|tk|Ispaniýa}}
* 烏克蘭語:{{t+|uk|Іспа́нія|f}}
* 烏爾都語:{{t|ur|ہَسْپانِیَہ|m|tr=haspāniyā}}、{{t|ur|اسپین|m|tr=aspen}}、{{t|ur|سپین|m|tr=spen}}
* 維吾爾語:{{t|ug|ئىسپانىيە}}
* 烏茲別克語:{{t+|uz|Ispaniya}}
* 威尼斯語:{{t|vec|Spagna|f}}
* 越南語:{{t+|vi|Tây Ban Nha}} ({{t|vi|西班牙}})、{{t+|vi|Y Pha Nho}} ({{t|vi|伊坡伩}}) {{qualifier|古舊}}
* 沃拉普克語:{{t+|vo|Spanyän}}
* 威爾士語:{{t+|cy|Sbaen|f}}
* 西弗里斯蘭語:{{t+|fy|Spanje|n}}
* 意第緒語:{{t|yi|שפּאַניע|f}}
* 約魯巴語:{{t|yo|Sipani}}
* 壯語:{{t|za|Sihbanhyaz}}
{{trans-bottom}}
{{cln|zh|外名}}
==日語==
{{ja-kanjitab|yomi=irr|sort=すぺいん}}
===詞源===
{{obor|ja|zh|-}} {{zh-m|西班牙}}。{{bor+|ja|en|Spain|sort=すぺいん}}。
===專有名詞===
{{ja-pos|proper|スペイン}}
# {{obsolete spelling of|ja|スペイン|t={{place|ja|國家|cont/歐洲}}|sort=すぺいん}}
#* {{quote-journal|ja|date=1915 September 8|journal={{l|ja||旭新聞|tr=Asahi Shinbun}}|issue=3240|page=1|pageurl=https://hojishinbun.hoover.org/?a=d&d=ash19150908-01.1.1
|passage={{...}}坂田通商局長が和蘭若しくは'''西班牙'''の公使に、{{...}}
|translation=坂田通商局長成為荷蘭和西班牙公使}}
==朝鮮語==
{{ko-hanjatab}}
===專有名詞===
{{ko-proper noun|hangeul=서반아}}
# {{hanja form of|서반아|棄用詞彙}}
==越南語==
{{vi-hantutab}}
===專有名詞===
{{vi-proper noun|sc=Hani}}
# {{han tu form of|Tây Ban Nha}}
skl8d0q2ote7unxenczyuc8badg4r5p
9787564
9787519
2026-05-24T17:47:10Z
TongcyDai
53191
9787564
wikitext
text/x-wiki
==漢語==
{{zh-forms|gloss=-}}
{{zh-wp|zh|yue|wuu|lzh|gan|cdo:Să̤-băng-ngà|hak:Sî-pân-ngà|nan:Se-pan-gâ}}
[[File:Flag of Spain.svg|200px|thumb|西班牙國旗]]
===詞源===
源自歐洲語言代表西班牙的單詞;對照{{cog|en|Spain}}、{{cog|es|España}}、{{cog|de|Spanien}}。最後一個音節{{zh-l|牙}}的漢字選擇可能受到{{zh-l|葡萄牙}}影響或加強。
早在1835年《{{w|东西洋考每月统纪传}}》就有紀載。早期類似轉寫為{{zh-l|是班呀}},出自{{w|陳倫烱}}的著作《海國聞見錄》 {{defdate|1730年}}。
===發音===
{{zh-pron
|m=Xībānyá
|c=sai1 baan1 ngaa4
|c-t=lhai1 ban1 nga3
|h=pfs=Sî-pân-ngà;gd=xi1 ban1 nga2
|md=Să̤-băng-ngà
|mn=xm,qz,tw,ph:Se-pan-gâ/zz:Se-pan-gêe/pn:Si-pan-gêe
|mn-t=sai1 bang1 ghê5
|w=sh:1shi pe nga
|cat=pn
}}
===專有名詞===
{{zh-proper noun}}
# {{sid|zh|Q29}}{{place|zh|國家|r/南歐|其領土佔據了[[伊比利半島]]六分之五的面積|tcl=<<r/南歐>><<國家>>|capital=馬德里|official=西班牙王國}}
====同義詞====
* {{qual|棄用}} {{zh-l|是班牙}}、{{zh-l|士班雅}}、{{zh-l|大呂宋}}、{{zh-l|以西把尼亞}}、{{zh-l|日斯巴尼亞}}
====衍生詞====
{{col3|zh|西班牙凍湯|西班牙人|西班牙語|西班牙港|西班牙王國|西班牙流感|西班牙烏蠅|西班牙蒼蠅}}
====派生詞====
{{CJKV|||^서반아|Tây Ban Nha}}
====翻譯====
{{trans-top|id=Q29|歐洲國家}}
* 阿巴扎語:{{t|abq|Испания}}
* 阿布哈茲語:{{t|ab|Еспаниа}}
* 亞齊語:{{t|ace|Seupanyo}}
* 西切爾克斯語:{{t|ady|Испание}}
* 南非語:{{t+|af|Spanje}}
* 阿爾巴尼亞語:{{t|sq|Spanjë|f}}、{{t+|sq|Spanja|f}} {{qualifier|定指}}
* 阿姆哈拉語:{{t|am|ስጳንያ}}
* 安地列斯克里奧爾語:{{t|gcf|Èspagn|f}}、{{t|gcf|Èspangn|f}}
* 阿拉伯語:{{t+|ar|إِسْبَانِيَة|f}}、{{t+|ar|إِسْبَانِيَا|f}}、{{t|ar|أَسْبَانِيَا|f}}
*: 海灣阿拉伯語:{{t|afb|اسبانيا|tr=ʔəsbanyə}}
*: 漢志阿拉伯語:{{t|afb|إسبانيا|tr=isbānya}}、{{t|afb|إسپانيا|tr=ispānya}}
* 亞美尼亞語:{{t+|hy|Իսպանիա}}
* 阿羅馬尼亞語:{{t|rup|Ispania}}
* 阿薩姆語:{{t|as|স্পেইন}}
* 亞述新亞拉姆語:{{t|aii|ܐܸܣܦܵܢܝܼܵܐ|tr=ispaniya}}
* 阿斯圖里亞斯語:{{t+|ast|España|f}}
* 阿塞拜疆語:{{t+|az|İspaniya}}
* 巴什基爾語:{{t|ba|Испания}}
* 巴斯克語:{{t+|eu|Espainia}}
* 白俄羅斯語:{{t|be|Іспа́нія|f}}、{{t|be|Гішпа́нія|f}} {{qualifier|傳統正寫法}}
* 孟加拉語:{{t+|bn|স্পেন}}
* 布列塔尼語:{{t+|br|Spagn}}、{{t+|br|Bro-Spagn}}
* 保加利亞語:{{t+|bg|Испа́ния|f}}
* 緬甸語:{{t|my|စပိန်}}
* 布里亞特語:{{t|bua|Испани}}
* 伊比利吉普賽語:{{t|rmq|Sesé}}
* 加泰羅尼亞語:{{t+|ca|Espanya|f}}
* 車臣語:{{t|ce|Испани}}
* 切羅基語:{{t|chr|ᏍᏆᏂᏱ}}
* 楚瓦什語:{{t|cv|Испани}}
* 克里米亞韃靼語:{{t|crh|İspaniya}}
* 捷克語:{{t+|cs|Španělsko|n}}
* 丹麥語:{{t+|da|Spanien|n}}
* 迪維希語:{{t|dv|ސްޕެއިން}}
* 荷蘭語:{{t+|nl|Spanje|n}}
* 宗喀語:{{t|dz|སིཔཱེན}}
* 英語:{{t+|en|Spain}}
* 世界語:{{t+|eo|Hispanio}}、{{t+|eo|Hispanujo}}
* 愛沙尼亞語:{{t+|et|Hispaania}}
* 法拉法拉語:{{t|gur|Sɛpaŋɔ}}
* 法羅語:{{t|fo|Spania|n}}
* 芬蘭語:{{t+|fi|Espanja}}
* 法語:{{t+|fr|Espagne|f}}
* 弗留利語:{{t|fur|Spagne|f}}
* 加利西亞語:{{t+|gl|España|f}}
* 格魯吉亞語:{{t+|ka|ესპანეთი}}
*: 上古格魯吉亞語:{{t|oge|სპანიაჲ}}
* 德語:{{t+|de|Spanien|n}}
*: 阿勒曼尼語:{{t|gsw|Schpanië}}
* 希臘語:{{t+|el|Ισπανία|f}}
*: 古希臘語:{{t|grc|Ἱσπανία|f}}、{{t|grc|Σπανία|f}}
* 巴拉圭瓜拉尼語:{{t|gug|Epáña}}
* 圭亞那克里奧爾語:{{t|gcr|Èspangn|f}}
* 古吉拉特語:{{t|gu|સ્પેન}}
* 海地克里奧爾語:{{t|ht|Espay|f}}
* 豪薩語:{{t|ha|Sipen}}、{{t|ha|Sipaniya}}
* 夏威夷語:{{t|haw|Sepania}}
* 希伯來語:{{t+|he|סְפָרַד|f|tr=s'farád}}、{{t|he|אַסְפַּמְיָא|f|tr=aspámya}} {{qualifier|塔木德}}
* 印地語:{{t+|hi|स्पेन|m}}、{{t|hi|इस्पैन|m}}
* 匈牙利語:{{t+|hu|Spanyolország}}
* 漢斯立克語:{{t|hrx|Spanje|n}}
* 冰島語:{{t+|is|Spánn|m}}
* 伊多語:{{t+|io|Hispania}}
* 印尼語:{{t+|id|Spanyol}}
* 因特語:{{t+|ia|Espania}}
* 愛爾蘭語:{{t+|ga|Spáinn|f|alt=An Spáinn}}
* 意大利語:{{t+|it|Spagna|f}}
* 日語:{{t+|ja|スペイン|tr=Supein}}、{{t+|ja|西班牙|tr=Supein}} {{qualifier|棄用}}
* 東切爾克斯語:{{t|kbd|Испание}}
* 卡納達語:{{t+|kn|ಸ್ಪೇನ್}}
* 卡舒比語:{{t|csb|Szpańskô|n}}
* 哈薩克語:{{t+|kk|Испания}}
* 高棉語:{{t+|km|អេស្ប៉ាញ}}
* 彼爾姆科米語:{{t|koi|Эспання}}
* 朝鮮語:{{t+|ko|^스페인}}、{{t+|ko|^에스파냐}}、{{t+|ko|^에스빠냐}} {{qualifier|北韓}}
* 庫爾德語:
*: 中庫爾德語:{{t|ckb|ئیسپانیا}}
*: 北庫爾德語:{{t+|kmr|Spanya}}、{{t+|kmr|Sipanya}}
* 吉爾吉斯語:{{t+|ky|Испания}}
* 老撾語:{{t+|lo|ເອັສປາຍ}}、{{t|lo|ແອສະປາຍ}}、{{t|lo|ສະເປນ}}
* 拉丁語:{{t+|la|Hispania|f}}
* 拉脫維亞語:{{t+|lv|Spānija|f}}
* 立陶宛語:{{t+|lt|Ispanija|f}}
* 立窩尼亞語:{{t|liv|Spāņmō}}
* 盧森堡語:{{t+|lb|Spuenien|n}}
* 馬其頓語:{{t+|mk|Шпанија|f}}
* 馬來語:{{t+|ms|Sepanyol}}
* 馬拉雅拉姆語:{{t+|ml|സ്പെയിൻ}}
* 馬爾他語:{{t|mt|Spanja|f}}
* 毛利語:{{t|mi|Peina}}、{{t|mi|Peina}}
* 馬拉地語:{{t|mr|स्पेन}}
* 蒙古語:
*: 西里爾字母:{{t+|mn|Испани}}
*: 蒙古字母:{{t|mn|ᠢᠰᠫᠠᠨᠢ}}
* 納瓦特爾語:{{t|nah|Caxtillān}}
* 納瓦霍語:{{t|nv|Dibé diníí bikéyah}}
* 諾曼語:{{t|nrf|Espangne|f}}
* 北薩米語:{{t|se|Spánia}}
* 挪威語:
*: 書面挪威語:{{t+|nb|Spania|n}}
*: 新挪威語:{{t+|nn|Spania|n}}
* 奧克語:{{t+|oc|Espanha|f}}
* 奧利亞語:{{t|or|ସ୍ପେନ}}
* 教會斯拉夫語:
*: 西里爾字母:{{t|cu|Їспанїꙗ|f}}
* 古英語:{{t|ang|Ispania|f}}
* 古諾爾斯語:{{t|non|Ispanía}}、{{t|non|Ispaníaland|n}}、{{t|non|Spánn|m}}、{{t|non|Spánland|n}}、{{t|non|Spánaland|n}}、{{t|non|Spanía|n}}、{{t|non|Spaníaland|n}}
* 古奧克語:{{t|pro|Espagna}}
* 鄂圖曼土耳其語:{{t|ota|اسپانیا|tr=ispanya}}
* 普什圖語:{{t|ps|اسپانيا|f|tr=aspānyā}}
* 波斯語:{{t+|fa|اِسْپانِیا|tr=espâniyâ}}、{{t|fa|هسپانیه|tr=hespâniye}} {{qualifier|達利語}}
* 門諾低地德語:{{t+|pdt|Spanien|n}}
* 波蘭語:{{t+|pl|Hiszpania|f}}
* 葡萄牙語:{{t+|pt|Espanha|f}}
* 旁遮普語:{{t|pa|ਸਪੇਨ}}
* 克丘亞語:{{t|qu|Ispaña}}
* 羅姆語:
*: 芬蘭羅姆語:{{t|rmf|Espanes|m}}
*: 辛特羅姆語:{{t|rmo|španja|f}}、{{t|rmo|španatiko them}}
* 羅馬尼亞語:{{t+|ro|Spania|f}}
* 羅曼什語:{{t|rm|Spagna|f}}、{{t|rm|Spogna|f}}
* 俄語:{{t+|ru|Испа́ния|f}}、{{t+|ru|Гишпа́ния|f}} {{qualifier|古舊}}
* 盧森尼亞語:{{t|rue|Іспа́нія|f}}
* 撒丁語:{{t|sc|Ispagna|f}}
* 低地蘇格蘭語:{{t|sco|Spainie}}、{{t|sco|Spain}}
* 蘇格蘭蓋爾語:{{t|gd|Spàinn|f|alt=An Spàinn}}
* 塞爾維亞-克羅地亞語:
*: 西里爾字母:{{t|sh|Шпа̑нија|f}}、{{t|sh|Шпа̀њо̄лска̄|f}}
*: 拉丁字母:{{t+|sh|Špȃnija|f}}、{{t+|sh|Špànjōlskā|f}}
* 西西里語:{{t|scn|Spagna|f}}
* 西里西亞語:{{t|szl|Szpańijo|f}}
* 僧加羅語:{{t|si|ස්පාඤ්ඤය}}
* 斯洛伐克語:{{t+|sk|Španielsko|n}}
* 斯洛文尼亞語:{{t+|sl|Špánija|f}}
* 西班牙語:{{t+|es|España|f}}
* 斯瓦希里語:{{t+|sw|Hispania}}
* 瑞典語:{{t+|sv|Spanien|n}}
* 他加祿語:{{t+|tl|Espanya}}
* 塔吉克語:{{t+|tg|Испониё}}、{{t+|tg|Испания}}
* 泰米爾語:{{t|ta|ஸ்பெயின்}}、{{t|ta|எசுப்பானியா}}
* 韃靼語:{{t|tt|Испания}}
* 泰盧固語:{{t|te|స్పెయిన}}
* 德頓語:{{t|tet|Espanya}}
* 泰語:{{t+|th|สเปน}}
* 藏語:{{t|bo|ཞི་པན་ཡ}}
* 提格里尼亞語:{{t|ti|ስጳኛ}}
* 湯加語:{{t|to|Sepeni}}
* 土耳其語:{{t+|tr|İspanya}}
* 土庫曼語:{{t|tk|Ispaniýa}}
* 烏克蘭語:{{t+|uk|Іспа́нія|f}}
* 烏爾都語:{{t|ur|ہَسْپانِیَہ|m|tr=haspāniyā}}、{{t|ur|اسپین|m|tr=aspen}}、{{t|ur|سپین|m|tr=spen}}
* 維吾爾語:{{t|ug|ئىسپانىيە}}
* 烏茲別克語:{{t+|uz|Ispaniya}}
* 威尼斯語:{{t|vec|Spagna|f}}
* 越南語:{{t+|vi|Tây Ban Nha}} ({{t|vi|西班牙}})、{{t+|vi|Y Pha Nho}} ({{t|vi|伊坡伩}}) {{qualifier|古舊}}
* 沃拉普克語:{{t+|vo|Spanyän}}
* 威爾士語:{{t+|cy|Sbaen|f}}
* 西弗里斯蘭語:{{t+|fy|Spanje|n}}
* 意第緒語:{{t|yi|שפּאַניע|f}}
* 約魯巴語:{{t|yo|Sipani}}
* 壯語:{{t|za|Sihbanhyaz}}
{{trans-bottom}}
{{cln|zh|外名}}
==日語==
{{ja-kanjitab|yomi=irr|sort=すぺいん}}
===詞源===
{{obor|ja|zh|-}} {{zh-m|西班牙}}。{{bor+|ja|en|Spain|sort=すぺいん}}。
===專有名詞===
{{ja-pos|proper|スペイン}}
# {{obsolete spelling of|ja|スペイン|t={{place|ja|國家|cont/歐洲}}|sort=すぺいん}}
#* {{quote-journal|ja|date=1915 September 8|journal={{l|ja||旭新聞|tr=Asahi Shinbun}}|issue=3240|page=1|pageurl=https://hojishinbun.hoover.org/?a=d&d=ash19150908-01.1.1
|passage={{...}}坂田通商局長が和蘭若しくは'''西班牙'''の公使に、{{...}}
|translation=坂田通商局長成為荷蘭和西班牙公使}}
==朝鮮語==
{{ko-hanjatab}}
===專有名詞===
{{ko-proper noun|hangeul=서반아}}
# {{hanja form of|서반아|棄用詞彙}}
==越南語==
{{vi-hantutab}}
===專有名詞===
{{vi-proper noun|sc=Hani}}
# {{han tu form of|Tây Ban Nha}}
8s5xyhuohhz9nxuxi4tbbhkc28zewsj
自陳
0
1122306
9788623
8186620
2026-05-25T10:32:19Z
TongcyDai
53191
9788623
wikitext
text/x-wiki
==漢語==
{{zh-forms|s=自陈}}
===發音===
{{zh-pron
|m=zìchén
|cat=v
}}
===動詞===
{{zh-verb}}
# {{lb|zh|書面}} [[自述]],[[談論]][[自己]]的事
so9mt2racrqp7kr0y1ncdsa1u0qdj9k
9788624
9788623
2026-05-25T10:39:28Z
TongcyDai
53191
9788624
wikitext
text/x-wiki
==漢語==
{{zh-forms|s=自陈}}
===發音===
{{zh-pron
|m=zìchén
|c=zi6 can4
|mc=1,1
|oc=y
|cat=v
}}
===動詞===
{{zh-verb}}
# {{lb|zh|書面}} [[自己]][[訴說]]、[[陳述]]
#* {{zh-x|w:李斯\^李.^斯 使 人 遺 ^非 藥,使 自殺。w:韓非\^韓.^非 欲 自陳,不得 見。||CL|ref=西漢·{{w|司馬遷}}《[[s:史記/卷063|史記·老子韓非列傳]]》}}
#* {{zh-x|避席 跪 自陳,賤子 實 空虛。||TCP|ref=東漢·{{w|應瑒}}〈[[s:百一詩|百一詩]]〉}}
#* {{zh-x|即 疑 ^浮 相 譖,何不 詣闕 自陳。||CL|ref=東漢·{{w|朱浮}}〈[[s:為幽州牧與彭寵書|為幽州牧與彭寵書]]〉}}
#* {{zh-x|w:蘇威\威 自陳 奉事 二 朝 三十 餘 載,精誠 微淺 不能 上 感,咎釁 屢 彰,罪 當 萬死。||CL|ref=唐·{{w|魏徵}}等《[[s:隋書/卷41#蘇威|隋書·蘇威列傳]]》}}
#* {{zh-x|公田 派買 不均 之 敝,聽 民 自陳,隨宜 通變,以 安 田里 之 生。||CL|ref=元·{{w|脫脫}}等《[[s:宋史/卷424#趙景緯|宋史·趙景緯傳]]》}}
#* {{zh-x|壬辰,尚書 @^劉.^昌 自陳 年老,致仕。||CL|ref=民國·{{w|趙爾巽}}等《[[s:清史稿/卷4|清史稿·世祖本紀一]]》}}
c6apbsoa9obwqbrg6ayyqo6xv4f6j83
9788626
9788624
2026-05-25T10:41:58Z
TongcyDai
53191
9788626
wikitext
text/x-wiki
==漢語==
{{was wotd|2026|6月|21日}}
{{zh-forms|s=自陈}}
===發音===
{{zh-pron
|m=zìchén
|c=zi6 can4
|mc=1,1
|oc=1;1
|cat=v
}}
===動詞===
{{zh-verb}}
# {{lb|zh|書面}} [[自己]][[訴說]]、[[陳述]]
#* {{zh-x|w:李斯\^李.^斯 使 人 遺 ^非 藥,使 自殺。w:韓非\^韓.^非 欲 自陳,不得 見。||CL|ref=西漢·{{w|司馬遷}}《[[s:史記/卷063|史記·老子韓非列傳]]》}}
#* {{zh-x|避席 跪 自陳,賤子 實 空虛。||TCP|ref=東漢·{{w|應瑒}}〈[[s:百一詩|百一詩]]〉}}
#* {{zh-x|即 疑 ^浮 相 譖,何不 詣闕 自陳。||CL|ref=東漢·{{w|朱浮}}〈[[s:為幽州牧與彭寵書|為幽州牧與彭寵書]]〉}}
#* {{zh-x|w:蘇威\威 自陳 奉事 二 朝 三十 餘 載,精誠 微淺 不能 上 感,咎釁 屢 彰,罪 當 萬死。||CL|ref=唐·{{w|魏徵}}等《[[s:隋書/卷41#蘇威|隋書·蘇威列傳]]》}}
#* {{zh-x|公田 派買 不均 之 敝,聽 民 自陳,隨宜 通變,以 安 田里 之 生。||CL|ref=元·{{w|脫脫}}等《[[s:宋史/卷424#趙景緯|宋史·趙景緯傳]]》}}
#* {{zh-x|壬辰,尚書 @^劉.^昌 自陳 年老,致仕。||CL|ref=民國·{{w|趙爾巽}}等《[[s:清史稿/卷4|清史稿·世祖本紀一]]》}}
===參考資料===
* {{R:zh:cbgycdxdb|137868}}
* {{R:zh:HYDCD}}
flbm0urxh4817pg93m26tlnm3v6f46m
9788651
9788626
2026-05-25T11:31:04Z
Sayonzei
40728
/* 動詞 */
9788651
wikitext
text/x-wiki
==漢語==
{{was wotd|2026|6月|21日}}
{{zh-forms|s=自陈}}
===發音===
{{zh-pron
|m=zìchén
|c=zi6 can4
|mc=1,1
|oc=1;1
|cat=v
}}
===動詞===
{{zh-verb}}
# {{lb|zh|書面}} [[自己]][[訴說]]、[[陳述]]
#* {{zh-x|w:李斯\^李.^斯 使 人 遺{wèi} ^非 藥,使 自殺。w:韓非\^韓.^非 欲 自陳,不得 見。||CL|ref=西漢·{{w|司馬遷}}《[[s:史記/卷063|史記·老子韓非列傳]]》}}
#* {{zh-x|避席 跪 自陳,賤子 實 空虛。||TCP|ref=東漢·{{w|應瑒}}〈[[s:百一詩|百一詩]]〉}}
#* {{zh-x|即 疑 ^浮 相 譖,何不 詣闕 自陳。||CL|ref=東漢·{{w|朱浮}}〈[[s:為幽州牧與彭寵書|為幽州牧與彭寵書]]〉}}
#* {{zh-x|w:蘇威\威 自陳 奉事 二 朝 三十 餘 載,精誠 微淺 不能 上 感,咎釁 屢 彰,罪 當 萬死。||CL|ref=唐·{{w|魏徵}}等《[[s:隋書/卷41#蘇威|隋書·蘇威列傳]]》}}
#* {{zh-x|公田 派買 不均 之 敝,聽 民 自陳,隨宜 通變,以 安 田里 之 生。||CL|ref=元·{{w|脫脫}}等《[[s:宋史/卷424#趙景緯|宋史·趙景緯傳]]》}}
#* {{zh-x|壬辰,尚書 @^劉.^昌 自陳 年老,致仕。||CL|ref=民國·{{w|趙爾巽}}等《[[s:清史稿/卷4|清史稿·世祖本紀一]]》}}
===參考資料===
* {{R:zh:cbgycdxdb|137868}}
* {{R:zh:HYDCD}}
n02a82srp4pvwabh3awa3wn3yzvrrq0
후춧가루
0
1128995
9788481
8347719
2026-05-25T03:10:10Z
Sayonzei
40728
9788481
wikitext
text/x-wiki
==朝鮮語==
===詞源===
源自 {{af|ko|후추|-ㅅ-|가루|t1=胡椒|pos2=屬格中綴|t3=粉末}}。
===發音===
{{ko-IPA|nobc=2}}
{{ko-regional|후춧가루|후추가루}}
===名詞===
{{ko-noun}}
# [[胡椒粉]]
{{C|ko|香料和香草}}
av6xugargvvcmamdv8rsdg2p3j05sh8
乿
0
1130694
9788598
9664784
2026-05-25T08:53:48Z
TongcyDai
53191
9788598
wikitext
text/x-wiki
{{character info}}
==跨語言==
===漢字===
{{Han char|rn=5|rad=乙|as=10|sn=11|four=22910|canj=BFU|ids=⿰⿱爫糸乚}}
====參考資料====
* {{Han ref|kx=0084.280|dkj=00205|dj=0173.010|hdz=10057.040|uh=4E7F}}
==漢語==
===詞源1===
{{zh-see|治|a}}
===詞源2===
{{zh-see|亂|v}}
==日語==
===漢字===
{{ja-kanji|grade=|rs=乙10}}
# {{alternative form of|ja|治}}
====讀音====
{{ja-readings
|goon=じ<ぢ
|kanon=ち
|kun=おさ-める<をさ-める
|nanori=おさむ
}}
===參考資料===
* {{R:DKJ}}
o8k6atrz14c2thd4eyzdltz26ywtar0
不均
0
1132971
9788638
6957692
2026-05-25T10:50:28Z
TongcyDai
53191
9788638
wikitext
text/x-wiki
==漢語==
{{zh-forms}}
===發音===
{{zh-pron
|m=不jūn
|c=bat1 gwan1
|cat=a
}}
===形容詞===
{{head|zh|形容詞}}
# 不[[公平]],不[[平均]],有所[[偏頗]]
#: {{zh-x|社會.財富 分配 不均|}}
====派生詞彙====
{{col3|zh|貧富不均|不患寡而患不均}}
3nyuz3eorg4sge2123z2106es9w9xgi
𠃹
0
1172679
9788603
5639147
2026-05-25T08:54:16Z
TongcyDai
53191
9788603
wikitext
text/x-wiki
{{character info}}
==跨語言==
===漢字===
{{Han char|rn=5|rad=乙|as=09|sn=10|canj=BRU|ids=⿰⿱爫古乚}}
===延伸閱讀===
{{Han ref|kx=0084.241|hdz=10056.080|uh=200F9}}
==漢語==
{{zh-see|亂|a}}
lhy9iowq7ie8yvb3gszw9zc9psajhww
𠃿
0
1172690
9788606
5639182
2026-05-25T08:54:28Z
TongcyDai
53191
9788606
wikitext
text/x-wiki
{{character info}}
==跨語言==
===漢字===
{{Han char|rn=5|rad=乙|as=10|sn=11|canj=BIU|ids=⿰⿱爫守乚}}
===延伸閱讀===
{{Han ref|kx=0084.321|hdz=10057.030|uh=200FF}}
==漢語==
{{zh-see|亂|a}}
60gha2ehmw84npzgixut5wlgjggdytt
𠦸
0
1176606
9788557
5647322
2026-05-25T08:45:12Z
TongcyDai
53191
9788557
wikitext
text/x-wiki
{{character info}}
==跨語言==
===漢字===
{{Han char|rn=24|rad=十|as=11|sn=13|four=|canj=|ids=}}
====參考資料====
* {{Han ref|kx=0157.181|dkj=|dj=|hdz=10067.010|uh=209B8}}
==漢語==
{{zh-see|亂|v}}
62flkh4me4nqp3vmr955wqym98ig6wd
𠧎
0
1176647
9788555
5647390
2026-05-25T08:45:02Z
TongcyDai
53191
9788555
wikitext
text/x-wiki
{{character info}}
==跨語言==
===漢字===
{{Han char|rn=24|rad=十|as=17|sn=19|four=|canj=|ids=⿳爫⿲幺呂幺十}}
====參考資料====
* {{Han ref|kx=0157.210|dkj=|dj=|hdz=10067.110|uh=209CE}}
==漢語==
{{zh-see|亂|v}}
lhyxqiugrhundnngxi3xcfuqn846adv
𠧏
0
1176650
9788556
5647395
2026-05-25T08:45:07Z
TongcyDai
53191
9788556
wikitext
text/x-wiki
{{character info}}
==跨語言==
===漢字===
{{Han char|rn=24|rad=十|as=19|sn=21|four=|canj=|ids=⿳爫⿲吕幺吕十}}
====參考資料====
* {{Han ref|kx=0157.220|dkj=|dj=|hdz=10067.120|uh=209CF}}
==漢語==
{{zh-see|亂|v}}
p2gwnjjs0w7a49soegznfyum0vhqow2
𠮗
0
1177549
9788567
5648983
2026-05-25T08:46:39Z
TongcyDai
53191
9788567
wikitext
text/x-wiki
{{character info}}
==跨語言==
===漢字===
{{Han char|rn=29|rad=又|as=22|sn=24|canj=BVFE|ids=⿳爫⿲糹糹糸又}}
====參考資料====
{{Han ref|kx=0167.150|hdz=10403.050|uh=20B97}}
==漢語==
{{zh-see|亂|v}}
5oxqrz7qeafs2zdy8md0ph9lythz6x1
𡄹
0
1179720
9788586
6974744
2026-05-25T08:52:20Z
TongcyDai
53191
9788586
wikitext
text/x-wiki
{{character info}}
==跨語言==
===漢字===
{{Han char|rn=30|rad=口|as=18|sn=21|four=|canj=|ids=⿲吕⿳爫幺又吕}}
====參考資料====
* {{Han ref|kx=0215.030|dkj=|dj=|hdz=10706.070|uh=21139}}
==漢語==
{{zh-see|亂|v|[[言語]][[煩亂]]}}
o1akopdizkbrgo7dpi9d498hkr9ze97
𢮣
0
1190571
9788564
5640137
2026-05-25T08:46:23Z
TongcyDai
53191
9788564
wikitext
text/x-wiki
{{character info}}
==跨語言==
===漢字===
{{Han char|rn=64|rad=手|as=8|sn=11|four=|canj=|ids=⿳爪⿱一䒑手(T),⿱爫𥩝(G),⿳爫
𰀆手(J)}}
====參考資料====
* {{Han ref|kx=0440.170|dkj=|dj=|hdz=31911.010|uh=22BA3}}
==漢語==
{{zh-see|亂|v}}
s3nca92fsb192bcrya1v8mdcbyksd67
𢿢
0
1192371
9788590
6978757
2026-05-25T08:53:14Z
TongcyDai
53191
9788590
wikitext
text/x-wiki
{{character info}}
==跨語言==
===漢字===
{{Han char|rn=66|rad=攴|as=12|sn=16|four=|canj=|ids=⿰𤔔攴}}
====參考資料====
* {{Han ref|kx=0475.170|dkj=|dj=|hdz=21476.170|uh=22FE2|sbgy=403.41}}
==漢語==
{{zh-see|亂|v}}
k1vysdckuse2kg2naqpokj4f1gmoebq
𢿮
0
1192395
9788595
5642380
2026-05-25T08:53:36Z
TongcyDai
53191
9788595
wikitext
text/x-wiki
{{character info}}
==跨語言==
===漢字===
{{Han char|rn=66|rad=攴|as=12|sn=16|four=|canj=|ids=}}
====參考資料====
* {{Han ref|kx=0475.320|dkj=|dj=|hdz=21476.160|uh=22FEE}}
==漢語==
{{zh-see|亂|v}}
e13f71xynii8ra2hcu4lew41a0083v3
𢿳
0
1192405
9788589
5642392
2026-05-25T08:52:49Z
TongcyDai
53191
9788589
wikitext
text/x-wiki
{{character info}}
==跨語言==
===漢字===
{{Han char|rn=66|rad=攴|as=12|sn=16|four=|canj=|ids=⿰𤔔攵}}
====參考資料====
* {{Han ref|kx=0475.321|dkj=|dj=|hdz=|uh=22FF3}}
==漢語==
{{zh-see|𢿢|v}}
e6no03uwxvsmcov7wtuh6dsv50ax5ul
𤔐
0
1200444
9788568
5653884
2026-05-25T08:46:56Z
TongcyDai
53191
9788568
wikitext
text/x-wiki
{{character info}}
==跨語言==
===漢字===
{{Han char|rn=87|rad=爪|as=7|sn=11|four=|canj=|ids=⿳爫冖⿱幺又}}
====參考資料====
* {{Han ref|kx=0689.100|dkj=|dj=|hdz=32033.150|uh=24510}}
==漢語==
{{zh-see|亂|v}}
9d4k8j4nwpidh4lwva16nxyc1fim7wh
𤔒
0
1200447
9788573
5653887
2026-05-25T08:47:19Z
TongcyDai
53191
9788573
wikitext
text/x-wiki
{{character info}}
==跨語言==
===漢字===
{{Han char|rn=87|rad=爪|as=7|sn=11|four=|canj=|ids=⿳爫𠫔丰}}
====參考資料====
* {{Han ref|kx=0689.120|dkj=|dj=|hdz=32033.130|uh=24512}}
==漢語==
{{zh-see|亂|v}}
9hpzxv3rdr6i0l3zsmf276nyzku8clq
𤔦
0
1200482
9788583
5653918
2026-05-25T08:51:45Z
TongcyDai
53191
9788583
wikitext
text/x-wiki
{{character info}}
==跨語言==
===漢字===
{{Han char|rn=87|rad=爪|as=10|sn=14|four=|canj=|ids=⿳爫口冏}}
====參考資料====
* {{Han ref|kx=0689.221|dkj=|dj=|hdz=32036.080|uh=24526}}
==漢語==
{{zh-see|亂|v}}
7iu7a5j2pydbkte8ojc2t23q8akkkcd
𤔬
0
1200491
9788579
5653928
2026-05-25T08:51:05Z
TongcyDai
53191
9788579
wikitext
text/x-wiki
{{character info}}
==跨語言==
===漢字===
{{Han char|rn=87|rad=爪|as=11|sn=15|four=|canj=|ids=⿱爫⿵&CDP-8643;又}}
====參考資料====
* {{Han ref|kx=0689.261|dkj=|dj=|hdz=32036.190|uh=2452C}}
==漢語==
{{zh-see|𤔔|v}}
a2ue20lr4a36u1h4zco5aamsf40dgif
9788580
9788579
2026-05-25T08:51:21Z
TongcyDai
53191
9788580
wikitext
text/x-wiki
{{character info}}
==跨語言==
===漢字===
{{Han char|rn=87|rad=爪|as=11|sn=15|four=|canj=|ids=⿱爫⿵吊𪠲}}
====參考資料====
* {{Han ref|kx=0689.261|dkj=|dj=|hdz=32036.190|uh=2452C}}
==漢語==
{{zh-see|𤔔|v}}
mih42d3844xt9e3aqlxjhwn4vrbo1fu
𤕅
0
1200535
9788545
5653964
2026-05-25T08:43:28Z
TongcyDai
53191
9788545
wikitext
text/x-wiki
{{character info}}
==跨語言==
===漢字===
{{Han char|rn=87|rad=爪|as=16|sn=20|four=|canj=|ids=⿰𤔔匋}}
====參考資料====
* {{Han ref|kx=0689.341|dkj=|dj=|hdz=32038.020|uh=24545}}
==漢語==
{{zh-see|亂|v}}
22rjpfozzf9xaae5p9hdo02k1tarj9j
𤕆
0
1200538
9788544
5653965
2026-05-25T08:43:03Z
TongcyDai
53191
9788544
wikitext
text/x-wiki
{{character info}}
==跨語言==
===漢字===
{{Han char|rn=87|rad=爪|as=16|sn=20|four=|canj=|ids=⿰䍃邕}}
====參考資料====
* {{Han ref|kx=0689.341|dkj=|dj=|hdz=32037.130|uh=24546}}
==漢語==
{{zh-forms}}
===釋義===
{{head|zh|漢字}}
# {{def-uncertain|zh|nh=1}}
m5e4e4q5zu4n3t1u4irfha53snrw5f7
𤕉
0
1200546
9788543
5653968
2026-05-25T08:41:43Z
TongcyDai
53191
9788543
wikitext
text/x-wiki
{{character info}}
==跨語言==
===漢字===
{{Han char|rn=87|rad=爪|as=19|sn=23|four=|canj=|ids=⿺爪爂}}
====參考資料====
* {{Han ref|kx=0689.341|dkj=|dj=|hdz=32038.060|uh=24549}}
==漢語==
{{zh-see|𤬢|v}}
j1f767fop23qxv3ozupmoacekp226cs
𤕊
0
1200549
9788540
6981110
2026-05-25T08:41:13Z
TongcyDai
53191
9788540
wikitext
text/x-wiki
{{character info}}
==跨語言==
===漢字===
{{Han char|rn=87|rad=爪|as=19|sn=23|four=|canj=|ids=⿺爪舋}}
====參考資料====
* {{Han ref|kx=0689.341|dkj=|dj=|hdz=32038.070|uh=2454A}}
==漢語==
{{zh-see|神|v}}
1zi9vln3dtqszxr8i3sv3rni1t8y47n
𤕋
0
1200550
9788548
5653971
2026-05-25T08:43:48Z
TongcyDai
53191
9788548
wikitext
text/x-wiki
{{character info}}
==跨語言==
===漢字===
{{Han char|rn=87|rad=爪|as=20|sn=24|four=|canj=|ids=⿱⿺𠃊⿰⺌丿⿹⺄⿳爫⿱⿹𠃍工匞白}}
====參考資料====
{{Han ref|kx=0689.341|dkj=|dj=|hdz=32038.090|uh=2454B}}
==漢語==
{{zh-see|壽|v}}
mfxnz48qui59msz3ubi3odvco3dx138
𤕌
0
1200552
9788549
5653973
2026-05-25T08:44:04Z
TongcyDai
53191
9788549
wikitext
text/x-wiki
{{character info}}
==跨語言==
===漢字===
{{Han char|rn=87|rad=爪|as=21|sn=25|four=|canj=|ids=⿰𤔔⿱東田}}
====參考資料====
* {{Han ref|kx=0689.341|dkj=|dj=|hdz=80027.100|uh=2454C}}
==漢語==
===詞源1===
{{zh-see|緟|v}}
===詞源2===
{{zh-see|申|a}}
397qellu9jx5n3ghvk22wpe3kh55wxo
𤕍
0
1200554
9788552
5653976
2026-05-25T08:44:42Z
TongcyDai
53191
9788552
wikitext
text/x-wiki
{{character info}}
==跨語言==
===漢字===
{{Han char|rn=87|rad=爪|as=21|sn=25|four=|canj=|ids=⿳爫⿲糸呂糸十}}
====參考資料====
* {{Han ref|kx=0689.341|dkj=|dj=|hdz=32038.100|uh=2454D}}
==漢語==
{{zh-see|亂|v}}
npam9tb3j6odys75wem2394qez6q9tp
爆鳴
0
1280294
9787482
7001421
2026-05-24T15:04:40Z
Fglffer
55252
9787482
wikitext
text/x-wiki
==漢語==
{{zh-forms|s=爆鸣}}
===發音===
{{zh-pron
|m=bàomíng
|cat=v,n
}}
===動詞===
{{zh-verb}}
# [[爆炸]]而發出[[巨響]]
===名詞===
{{head|zh|名詞}}
# {{lb|zh|onomatopoeia}} [[氣體]][[爆發]]的聲音
==日語==
{{ja-kanjitab|ばく|めい|y=o}}
===發音===
{{ja-pron|ばくめい|acc=0|acc_ref=DJR}}
===名詞===
{{ja-noun|ばくめい}}
# [[爆炸]]而發出[[巨響]]
====派生詞====
{{col|ja
|{{ja-r|爆%鳴%気|ばく%めい%き}}
}}
===來源===
<references/>
==朝鮮語==
{{ko-hanjatab}}
===名詞===
{{ko-noun|hj|rv=|hangeul=폭명}}
# {{hanja form of|폭명}}
tnwkip7lx6vb8318579zu319ul06ny1
발표하다
0
1341247
9788484
5245707
2026-05-25T04:24:22Z
Sayonzei
40728
9788484
wikitext
text/x-wiki
==朝鮮語==
===詞源===
源自 {{af|ko|발표(發表)|-하다|t2=做|pos2=構成主動動詞的[[輕動詞]]}}。
===發音===
{{ko-IPA}}
===動詞===
{{ko-verb}}
# [[发表]],[[公布]]
====活用====
{{ko-conj/verb}}
t6g1pr47e5phh1mxar7txe7oirlvf84
amarine
0
1356583
9788179
6016897
2026-05-25T01:48:22Z
Sayonzei
40728
9788179
wikitext
text/x-wiki
{{also|amariné}}
==英語==
===名詞===
{{en-noun|-}}
# {{lb|en|organic compound}} 苦杏素
===參考資料===
* {{R:Webster 1913}}
===異序詞===
* {{anagrams|en|a=aaeimnr|Armenia|Mairena|RNAemia}}
==法語==
===發音===
* {{homophones|fr|amarinent|amarines}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|amariner||1//3|s|pres|ind//sub|;|2|s|imp}}
hi66sgabqrwbjm0akhqh9o7gcke4a99
légume
0
1359324
9788146
5965732
2026-05-24T20:24:07Z
TongcyDai
53191
9788146
wikitext
text/x-wiki
{{also|legume}}
==法語==
[[Image:Assamveggie.jpg|thumb|135px|légumes (1)]]
===詞源===
{{bor+|fr|la|legūmen}}(參見舊形式 {{m|fr|lesgum}});曾為陰性,到17世紀變為陽性。取代了同源的{{cog|fro|leun|leün}}。對照{{cog|it,pt|legume}}、{{cog|ca|llegum}}、{{cog|es|legumbre}}。
===發音===
* {{fr-IPA}}
* {{audio|fr|Fr-légume.ogg|text=un légume}}
* {{audio|fr|LL-Q150 (fra)-DSwissK-légume.wav|a=瓦萊}}
* {{audio|fr|LL-Q150 (fra)-GrandCelinien-légume.wav|a=巴黎}}
* {{audio|fr|LL-Q150 (fra)-LoquaxFR-légume.wav|a=孚日}}
* {{audio|fr|LL-Q150 (fra)-Mecanautes-légume.wav|a=France}}
* {{audio|fr|LL-Q150 (fra)-Poslovitch-légume.wav|a=孚日}}
* {{audio|fr|LL-Q150 (fra)-WikiLucas00-légume.wav|a=里昂}}
* {{audio|fr|LL-Q150 (fra)-X-Javier-légume.wav|a=馬西}}
* {{audio|fr|LL-Q150 (fra)-Jérémy-Günther-Heinz Jähnick-légume.wav|a=索曼}}
===名詞===
{{fr-noun|m}}
# {{lb|fr|烹飪}} [[蔬菜]]
#: {{syn|fr|épi|q1=卡津法語}}
#: {{ux|fr|Manger des '''légumes''' est très bon pour la santé.|吃'''蔬菜'''對身體很好。}}
# {{lb|fr|比喻|非正式|冒犯}} [[植物人]]{{gloss|處於[[植物人]][[狀態]]的人}}
#: {{ux|fr|Depuis qu'il a eu un accident de voiture, il ressemble à un vrai '''légume'''.|自從出了車禍,他就完全變成了'''植物人'''。}}
# {{lb|fr|植物學|過時}} [[豆果]];[[豆莢]]
#: {{syn|fr|gousse}}
#: {{ux|fr|Le fruit de la vesce est un '''légume''' au sens strict.|野豌豆的果實嚴格來說是'''豆果'''。}}
# {{lb|fr|比喻|非正式}} [[懶漢]],[[電視迷]],[[沙發馬鈴薯]]
====派生詞彙====
* {{l|fr|grosse légume}}
====派生語彙====
* {{desc|en|legume|bor=1}}
* {{desc|ht|legim}}
===延伸閱讀===
* {{R:fr:TLFi}}
===異序詞===
* {{l|fr|meugle}}、{{l|fr|meuglé}}
{{C|fr|食物|人}}
kpbfx0sbkenls9j4ogx40u5wwvf4wu4
打雞血
0
1373995
9788500
8508689
2026-05-25T07:26:55Z
Artoria2e5
31781
/* 動詞 */
9788500
wikitext
text/x-wiki
==漢語==
{{zh-forms|s=打鸡血|type=12|lit=注射雞血}}
===詞源===
源自中國[[文革]]時期的{{w|鸡血疗法|民間療法}}。
===發音===
{{zh-pron
|m=dǎ jī血
|c=daa2 gai1 hyut3
|cat=v
}}
===動詞===
{{zh-verb|type=vo}}
# {{lb|zh|idiomatic|figurative}} 使[[亢奮]]
# {{lb|zh|idiomatic|figurative}} 陷入[[亢奮]][[狀態]]
====衍生詞====
{{col3|zh|雞娃}}
mz777dv8jkvbyfn47vomnfdfpaaccu7
स्पेन
0
1382020
9787601
5577923
2026-05-24T18:00:04Z
TongcyDai
53191
9787601
wikitext
text/x-wiki
{{also|सोपान|सपना}}
==印地語==
{{wp|hi:}}
{{Wiktionary:圖片詞典/hi:map/Europe}}
===詞源===
{{bor+|hi|en|西班牙}}。
===發音===
* {{hi-IPA}}
===專有名詞===
{{hi-proper noun|m|ur=سپین}}
# {{tcl|hi|西班牙|id=Q29}}
====變格====
{{hi-ndecl|<M.sg>}}
2dq3fmqzw4v9r4wpc5wsv4umknrf0mp
Spánn
0
1383069
9787609
8977930
2026-05-24T18:02:09Z
TongcyDai
53191
9787609
wikitext
text/x-wiki
{{also|spann|Spann|spánn|spänn}}
==冰島語==
===詞源===
{{inh+|is|non|Spánn}}。{{etystub|is}}
對照{{cog|da|Spanien}}、{{cog|en|Spain}}。
===發音===
* {{IPA|is|/ˈspautn/}}
*: {{rhymes|is|autn|s=1}}
* {{audio|en|LL-Q294 (isl)-Andotier-Spánn (noun, Spain).wav}}
===專有名詞===
{{is-proper noun|@@}}
# {{tcl|is|西班牙|id=Q29}}
====變格====
{{is-ndecl|m,ar}}
====派生詞彙====
* {{l|is|spænskur}}
* {{l|is|Spánverji}}
* {{l|is|spánskur}} {{qualifier|過時}}
====相關詞彙====
* {{l|is|Spanjóli||Spaniard}} {{qualifier|過時}}
* {{l|is|spanjóla||beret}} {{qualifier|不常見}}
3lly9f0d9tyyei061r4e9b4wt9zzoc6
9787610
9787609
2026-05-24T18:02:25Z
TongcyDai
53191
9787610
wikitext
text/x-wiki
{{also|spann|Spann|spánn|spänn}}
==冰島語==
===詞源===
{{inh+|is|non|Spánn}}。{{etystub|is}}
對照{{cog|da|Spanien}}、{{cog|en|Spain}}。
===發音===
* {{IPA|is|/ˈspautn/}}
*: {{rhymes|is|autn|s=1}}
* {{audio|en|LL-Q294 (isl)-Andotier-Spánn (noun, Spain).wav}}
===專有名詞===
{{is-proper noun|@@}}
# {{tcl|is|西班牙|id=Q29}}
====變格====
{{is-ndecl|m,ar}}
====派生詞彙====
* {{l|is|spænskur}}
* {{l|is|Spánverji}}
* {{l|is|spánskur}} {{qualifier|過時}}
====相關詞彙====
* {{l|is|Spanjóli||西班牙人}} {{qualifier|過時}}
* {{l|is|spanjóla||貝雷帽}} {{qualifier|不常見}}
78398hna93qlfr4noyzar4n0c33ui3j
Španělsko
0
1383331
9787576
5580419
2026-05-24T17:51:32Z
TongcyDai
53191
9787576
wikitext
text/x-wiki
==捷克語==
{{wp|cs:}}
===其他形式===
* {{alt|cs|Špaňhelsko|Španielsko|Španihelsko||棄用}}
===詞源===
源自 {{suf|cs|Španěl|sko}}。
===發音===
* {{cs-IPA}}
* {{hyph|cs|Špa|něl|sko}}
===專有名詞===
{{cs-proper noun|n|adj=španělský|dem=Španěl|fdem=Španělka}}
# {{tcl|cs|西班牙|id=Q29|place_official=Španělské království}}
====變格====
{{cs-ndecl|n.sg}}
====相關詞彙====
{{col|cs|španělština|španělštinář}}
===參見===
{{col|cs|Španěly<g:p><ll:archaic>,Španie<ll:archaic>}}
{{list:countries in Europe/cs}}
===延伸閱讀===
* {{R:cs:PSJC}}
* {{R:cs:SSJC}}
* {{R:cs:IJP}}
ksdulgucv5t80gtfinbqwqglz6yb5v0
Spanjë
0
1383649
9787539
7816247
2026-05-24T17:42:11Z
TongcyDai
53191
9787539
wikitext
text/x-wiki
{{also|Spanje}}
==阿爾巴尼亞語==
===詞源===
{{ety|sq|:bor|it:Spagna}}
{{bor+|sq|it|Spagna}}。
===專有名詞===
{{sq-proper noun|f|Spanja}}
# {{tcl|sq|西班牙|id=Q29}}
====變格====
{{sq-noun-f-unc|Spanj}}
====相關詞彙====
{{col|sq|spanjoll|spanjisht}}
===延伸閱讀===
* {{pedia|Spanja|lang=sq}}
7a3s9ykf333yuu2k2buugbovrrs5rwt
Spanje
0
1383650
9787536
8460946
2026-05-24T17:41:52Z
TongcyDai
53191
9787536
wikitext
text/x-wiki
{{also|Spanjë}}
==南非語==
{{wp|af:}}
===詞源===
{{inh+|af|nl|Spanje}}。
===發音===
* {{IPA|af|/ˈspan.jə/}}
* {{audio|af|LL-Q14196 (afr)-Oesjaar-Spanje.wav}}
===專有名詞===
源自 {{af-proper noun}}
# {{tcl|af|西班牙|id=Q29|place_caplc=Madrid}}
====相關詞彙====
* {{l|af|Spaans}}
* {{l|af|Spanjaard}}
* {{l|af|Spanjool}}
==荷蘭語==
{{wp|nl:}}
===詞源===
最终源自{{der|nl|la|Hispānia}},可能源自{{der|nl|xpu}}。
===發音===
* {{IPA|nl|/ˈspɑn.jə/}}
* {{audio|nl|Nl-Spanje.ogg|a=Netherlands}}
* {{hyphenation|nl|Span|je}}
===專有名詞===
{{nl-proper noun|n|adj=Spaans|mdem=Spanjaard|fdem=Spaanse}}
# {{tcl|nl|西班牙|id=Q29}}
#: {{syn|nl|Hispanje}}
====相關詞彙====
{{col|nl
|Hispanje
|Spanjool
}}
====派生語彙====
* {{desc|af|inh=1|Spanje}}
{{cln|nl|外名}}
==漢斯立克語==
===詞源===
{{etymon|hrx|:bor|de:Spanien<id:西班牙>|text=++|id=西班牙}}<ref>{{R:hrx:Boll|153|1}}</ref>
===發音===
{{hrx-pr|+,Spá#nje<hyph:+>}}
===專有名詞===
{{hrx-proper noun|n}}
# {{tcl|hrx|西班牙|id=Q29}}
====相關詞彙====
{{col|hrx|Spanisch|spanisch}}
===參見===
{{list:countries in Europe/hrx}}
===參考資料===
<references />
==林堡語==
===專有名詞===
{{head|li|專有名詞}}
# {{tcl|li|西班牙|id=Q29}}
==西弗里斯蘭語==
{{wp|fy:}}
===專有名詞===
{{head|fy|專有名詞}}
# {{tcl|fy|西班牙|id=Q29}}
gubwynt8c4nxzwkrsoqxo2k450ihare
Espanja
0
1383663
9787520
8946625
2026-05-24T17:37:24Z
TongcyDai
53191
9787520
wikitext
text/x-wiki
{{also|espanja}}
==芬蘭語==
===詞源===
源自{{der|fi|es|España}}。
===發音===
{{fi-pronunciation}}
===專有名詞===
{{wp|fi:}}
{{fi-proper noun}}
# {{tcl|fi|西班牙|id=Q29}}
====變格====
{{fi-decl-kulkija|n=sg|Espanj|a}}
====派生詞彙====
{{col|fi
|espanja
|espanjalainen
|espanjatar
}}
{{col|fi|title=複合詞
|espanjanilves
|espanjankilpikonna
|espanjankuume
|espanjanmastiffi
|espanjanmyyrä
|espanjanpippuri
|espanjanpäästäinen
|espanjansiruetana
|espanjantauti
|espanjanvesikoira
|espanjanvihreä
}}
===參見===
{{list:countries in Europe/fi}}
===異序詞===
* {{anagrams|fi|a=aaejnps|Epsanja}}
aqy82yscbvz4kvql4vpqmvxtwxdc8pv
Template:Cite-web
10
1384301
9787439
9187059
2026-05-24T13:59:19Z
TongcyDai
53191
9787439
wikitext
text/x-wiki
<includeonly>{{#invoke:quote|cite_t
| alias =
chapter: title,webpage;
trans-chapter: trans-title,trans-webpage;
chapterurl: titleurl,webpageurl;
chapter_tlr: webpage_tlr;
chapter_series: webpage_series;
chapter_seriesvolume: webpage_seriesvolume;
chapter_number: webpage_number;
chapter_plain: title_plain,webpage_plain;
title: site,work;
trans-title: trans-site,trans-work;
| noroman = chapter
}}</includeonly><!--
--><noinclude>{{cite-web|en|author=Meg Downey|title=Marvel’s Comic Soul Stone could Explain the Jump from Infinity War’s Ending to Avengers 4: A Brief History of Crazy Multidimensional Power|url=https://www.polygon.com/2018/5/7/17328230/infinity-war-avengers-4-marvel-comics-soul-stone|archiveurl=https://web.archive.org/web/20180624110542/https://www.polygon.com/2018/5/7/17328230/infinity-war-avengers-4-marvel-comics-soul-stone|archivedate=24 June 2018|work=[[w:Polygon (website)|Polygon]]|date=7 May 2018|passage=There’s a very real chance that, rather than crumbling into the dust and floating off into the '''ether''', Thanos’s victims [in the film ''[[w:Avengers: Infinity War|Avengers: Infinity War]]''] were actually sucked up into the Soul Stone.}}<!--
-->{{documentation}}</noinclude>
4pbpke6czm6zkoc5m30ung4u71cbeee
Spanyol
0
1386903
9787612
5598770
2026-05-24T18:03:08Z
TongcyDai
53191
9787612
wikitext
text/x-wiki
{{also|spanyol}}
==印尼語==
{{wp|id:}}
===詞源===
{{inh+|id|ms|Sepanyol}},源自{{der|id|nl|spanjool|t=西班牙人}},源自{{der|id|es|español|t=西班牙的}},源自{{der|id|pro|espaignol}},源自{{der|id|la-vul|*Hispāniolus|t=西班牙的}},源自{{der|id|la|Hispānus}},源自 {{m|la|Hispānia}}。
===發音===
{{id-pr}}
===專有名詞===
{{id-proper noun}}
# {{tcl|id|西班牙|id=Q29}}
===名詞===
{{id-noun}}
# [[西班牙人]]
===形容詞===
{{id-adj}}
# [[西班牙]]的
====其他形式====
* {{alt|ms|Sepanyol}} {{qualifier|標準馬來語}}
===延伸閱讀===
* {{R:KBBI Daring}}
jcsin3w6mmkssvh6lee03gmqbtp4uzp
Spanyolország
0
1386907
9787600
7816248
2026-05-24T17:59:53Z
TongcyDai
53191
9787600
wikitext
text/x-wiki
==匈牙利語==
{{swp|hu:}}
===詞源===
{{af|hu|spanyol|ország|t1=西班牙人(的)|t2=國家|pos=專有名詞}}。
===發音===
* {{hu-IPA}}
* {{hyphenation|hu|Spa|nyol|or|szág}}
* {{rhymes|hu|aːɡ|s=4}}
===專有名詞===
{{head|hu|專有名詞}}
# {{tcl|hu|西班牙|id=Q29|place_official=hu:Spanyol Királyság}}
====變格====
{{hu-infl-nom|Spanyolországo|o|n=sg}}{{hu-pos-otok|Spanyolország||ai|n=sg}}
====派生詞彙====
{{col4|hu
|spanyolországi
}}
===參見===
{{list:countries in Europe/hu}}
r25c9q32js7p3qnsu3s4q81l95zvvhs
User:A2093064-bot/task/4/output/list
2
1393351
9788145
9765779
2026-05-24T20:22:15Z
A2093064-bot
60065
[[User:A2093064-bot/task/4|機器人4]]:產生未連結到維基數據項目的頁面列表
9788145
wikitext
text/x-wiki
* 本頁面以特殊條件篩選掉[[Special:UnconnectedPages]]中絕不可能連結的頁面。
* 產生時間:<onlyinclude>2026年5月24日 (日) 20:22 (UTC)</onlyinclude>
== Wiktionary ==
# [[:Wiktionary:外語每日一詞/2026年/5月28日]]
# [[:Wiktionary:外語每日一詞/2026年/5月27日]]
# [[:Wiktionary:外語每日一詞/2026年/5月26日]]
# [[:Wiktionary:外語每日一詞/2026年/5月25日]]
# [[:Wiktionary:每日一詞/2026年/5月30日]]
# [[:Wiktionary:每日一詞/2026年/5月29日]]
# [[:Wiktionary:每日一詞/2026年/5月28日]]
# [[:Wiktionary:每日一詞/2026年/5月26日]]
# [[:Wiktionary:每日一詞/2026年/5月27日]]
# [[:Wiktionary:每日一詞/2026年/5月25日]]
# [[:Wiktionary:每日一詞/2026年/5月24日]]
# [[:Wiktionary:每日一詞/2026年/6月24日]]
# [[:Wiktionary:每日一詞/2026年/7月25日]]
# [[:Wiktionary:每日一詞/2026年/5月23日]]
# [[:Wiktionary:外語每日一詞/2026年/5月24日]]
# [[:Wiktionary:外語每日一詞/2026年/5月23日]]
# [[:Wiktionary:外語每日一詞/2026年/5月22日]]
# [[:Wiktionary:外語每日一詞/2026年/5月21日]]
# [[:Wiktionary:外語每日一詞/2026年/5月20日]]
# [[:Wiktionary:每日一詞/2026年/5月22日]]
# [[:Wiktionary:每日一詞/2026年/6月15日]]
# [[:Wiktionary:每日一詞/2026年/5月21日]]
# [[:Wiktionary:每日一詞/2026年/5月20日]]
# [[:Wiktionary:每日一詞/2026年/5月19日]]
# [[:Wiktionary:詞頻列表/法文]]
# [[:Wiktionary:詞頻列表/捷克文/SYN2015前15,000個捷克文單詞]]
# [[:Wiktionary:詞頻列表/捷克文]]
# [[:Wiktionary:詞頻列表/英文/Wikipedia (2016)/30001-40000]]
# [[:Wiktionary:詞頻列表/英文/Wikipedia (2016)/20001-30000]]
# [[:Wiktionary:詞頻列表/英文/Wikipedia (2016)/10001-20000]]
# [[:Wiktionary:詞頻列表/英文]]
# [[:Wiktionary:詞頻列表]]
# [[:Wiktionary:外語每日一詞/2026年/5月19日]]
# [[:Wiktionary:外語每日一詞/2026年/5月18日]]
# [[:Wiktionary:每日一詞/2026年/5月17日]]
# [[:Wiktionary:外語每日一詞/2026年/5月16日]]
# [[:Wiktionary:外語每日一詞/2026年/5月17日]]
# [[:Wiktionary:每日一詞/2026年/5月16日]]
# [[:Wiktionary:每日一詞/2027年/1月15日]]
# [[:Wiktionary:每日一詞/2026年/5月15日]]
# [[:Wiktionary:每日一詞/2026年/5月14日]]
# [[:Wiktionary:每日一詞/2026年/5月13日]]
# [[:Wiktionary:每日一詞/2026年/5月12日]]
# [[:Wiktionary:外語每日一詞/2026年/5月15日]]
# [[:Wiktionary:外語每日一詞/2026年/5月14日]]
# [[:Wiktionary:外語每日一詞/2026年/5月13日]]
# [[:Wiktionary:外語每日一詞/2026年/5月12日]]
# [[:Wiktionary:外語每日一詞/2026年/5月11日]]
# [[:Wiktionary:外語每日一詞/2026年/5月10日]]
# [[:Wiktionary:外語每日一詞/2026年/5月9日]]
# [[:Wiktionary:外語每日一詞/2026年/5月8日]]
# [[:Wiktionary:每日一詞/2026年/5月11日]]
# [[:Wiktionary:每日一詞/2026年/5月10日]]
# [[:Wiktionary:每日一詞/2026年/5月9日]]
# [[:Wiktionary:每日一詞/2026年/5月8日]]
# [[:Wiktionary:每日一詞/2026年/5月7日]]
# [[:Wiktionary:圖片詞典/uk:Fingers]]
# [[:Wiktionary:外語每日一詞/2026年/5月6日]]
# [[:Wiktionary:外語每日一詞/2026年/5月7日]]
# [[:Wiktionary:外語每日一詞/2026年/5月5日]]
# [[:Wiktionary:外語每日一詞/2026年/5月4日]]
# [[:Wiktionary:每日一詞/2026年/5月6日]]
# [[:Wiktionary:每日一詞/2026年/5月4日]]
# [[:Wiktionary:每日一詞/2026年/9月28日]]
# [[:Wiktionary:每日一詞/2026年/9月15日]]
# [[:Wiktionary:每日一詞/2026年/5月3日]]
# [[:Wiktionary:每日一詞/2026年/5月2日]]
# [[:Wiktionary:外語每日一詞/2026年/5月1日]]
# [[:Wiktionary:外語每日一詞/2026年/5月3日]]
# [[:Wiktionary:外語每日一詞/2026年/5月2日]]
# [[:Wiktionary:外語每日一詞/2026年/4月30日]]
# [[:Wiktionary:外語每日一詞/2026年/4月29日]]
# [[:Wiktionary:外語每日一詞/2026年/4月28日]]
# [[:Wiktionary:每日一詞/2026年/5月1日]]
# [[:Wiktionary:每日一詞/2026年/4月30日]]
# [[:Wiktionary:每日一詞/2026年/4月28日]]
# [[:Wiktionary:每日一詞/2026年/4月29日]]
# [[:Wiktionary:外語每日一詞/2026年/4月27日]]
# [[:Wiktionary:每日一詞/2026年/4月27日]]
# [[:Wiktionary:外語每日一詞/2026年/4月26日]]
# [[:Wiktionary:外語每日一詞/2026年/4月25日]]
# [[:Wiktionary:外語每日一詞/2026年/4月24日]]
# [[:Wiktionary:外語每日一詞/2026年/4月23日]]
# [[:Wiktionary:每日一詞/2026年/4月26日]]
# [[:Wiktionary:每日一詞/2026年/11月28日]]
# [[:Wiktionary:每日一詞/2026年/4月25日]]
# [[:Wiktionary:每日一詞/2026年/4月24日]]
# [[:Wiktionary:每日一詞/2026年/4月23日]]
# [[:Wiktionary:每日一詞/2026年/5月18日]]
# [[:Wiktionary:每日一詞/2026年/4月22日]]
# [[:Wiktionary:每日一詞/2026年/4月21日]]
# [[:Wiktionary:每日一詞/2026年/4月20日]]
# [[:Wiktionary:每日一詞/2026年/4月19日]]
# [[:Wiktionary:外語每日一詞/2026年/4月21日]]
# [[:Wiktionary:外語每日一詞/2026年/4月20日]]
# [[:Wiktionary:外語每日一詞/2026年/4月19日]]
# [[:Wiktionary:外語每日一詞/2026年/4月18日]]
# [[:Wiktionary:外語每日一詞/2026年/4月17日]]
# [[:Wiktionary:每日一詞/2027年/2月12日]]
# [[:Wiktionary:圖片詞典/hy:Solar System]]
# [[:Wiktionary:每日一詞/2026年/4月18日]]
# [[:Wiktionary:外語每日一詞/2026年/4月16日]]
# [[:Wiktionary:外語每日一詞/2026年/4月15日]]
# [[:Wiktionary:外語每日一詞/2026年/4月13日]]
# [[:Wiktionary:外語每日一詞/2026年/4月12日]]
# [[:Wiktionary:每日一詞/2026年/4月16日]]
# [[:Wiktionary:每日一詞/2026年/4月14日]]
# [[:Wiktionary:每日一詞/2026年/4月12日]]
# [[:Wiktionary:每日一詞/2026年/4月15日]]
# [[:Wiktionary:每日一詞/2026年/4月13日]]
# [[:Wiktionary:每日一詞/2026年/4月11日]]
# [[:Wiktionary:每日一詞/2026年/8月1日]]
# [[:Wiktionary:外語每日一詞/2026年/4月14日]]
# [[:Wiktionary:每日一詞/2026年/4月10日]]
# [[:Wiktionary:每日一詞/2026年/4月9日]]
# [[:Wiktionary:外語每日一詞/2026年/4月11日]]
# [[:Wiktionary:外語每日一詞/2026年/4月10日]]
# [[:Wiktionary:外語每日一詞/2026年/4月9日]]
# [[:Wiktionary:外語每日一詞/2026年/4月8日]]
# [[:Wiktionary:外語每日一詞/2026年/4月7日]]
# [[:Wiktionary:外語每日一詞/2026年/4月6日]]
# [[:Wiktionary:外語每日一詞/2026年/4月5日]]
# [[:Wiktionary:每日一詞/2026年/11月17日]]
# [[:Wiktionary:每日一詞/2026年/4月7日]]
# [[:Wiktionary:每日一詞/2026年/4月8日]]
# [[:Wiktionary:每日一詞/2026年/4月6日]]
# [[:Wiktionary:每日一詞/2026年/4月4日]]
# [[:Wiktionary:外語每日一詞/2026年/4月4日]]
# [[:Wiktionary:外語每日一詞/2026年/4月3日]]
# [[:Wiktionary:外語每日一詞/2026年/4月2日]]
# [[:Wiktionary:外語每日一詞/2026年/4月1日]]
# [[:Wiktionary:每日一詞/2026年/4月3日]]
# [[:Wiktionary:每日一詞/2026年/9月4日]]
# [[:Wiktionary:每日一詞/2026年/4月1日]]
# [[:Wiktionary:外語每日一詞/2026年/3月31日]]
# [[:Wiktionary:外語每日一詞/2026年/3月30日]]
# [[:Wiktionary:每日一詞/2026年/3月31日]]
# [[:Wiktionary:每日一詞/2026年/3月30日]]
# [[:Wiktionary:外語每日一詞/2026年/3月29日]]
# [[:Wiktionary:每日一詞/2026年/3月29日]]
# [[:Wiktionary:每日一詞/2026年/3月28日]]
# [[:Wiktionary:每日一詞/2027年/2月4日]]
# [[:Wiktionary:每日一詞/2026年/3月27日]]
# [[:Wiktionary:外語每日一詞/2026年/3月28日]]
# [[:Wiktionary:外語每日一詞/2026年/3月27日]]
# [[:Wiktionary:外語每日一詞/2026年/3月26日]]
# [[:Wiktionary:每日一詞/2026年/3月26日]]
# [[:Wiktionary:每日一詞/2026年/3月24日]]
# [[:Wiktionary:每日一詞/2026年/3月25日]]
# [[:Wiktionary:每日一詞/2026年/3月23日]]
# [[:Wiktionary:外語每日一詞/2026年/3月25日]]
# [[:Wiktionary:外語每日一詞/2026年/3月24日]]
# [[:Wiktionary:外語每日一詞/2026年/3月23日]]
# [[:Wiktionary:外語每日一詞/2026年/3月22日]]
# [[:Wiktionary:外語每日一詞/2026年/3月21日]]
# [[:Wiktionary:外語每日一詞/2026年/3月20日]]
# [[:Wiktionary:外語每日一詞/2026年/3月19日]]
# [[:Wiktionary:外語每日一詞/2026年/3月18日]]
# [[:Wiktionary:每日一詞/2026年/4月5日]]
# [[:Wiktionary:每日一詞/2026年/3月22日]]
# [[:Wiktionary:每日一詞/2026年/10月17日]]
# [[:Wiktionary:每日一詞/2026年/4月17日]]
# [[:Wiktionary:每日一詞/2026年/4月2日]]
# [[:Wiktionary:每日一詞/2026年/3月18日]]
# [[:Wiktionary:每日一詞/2026年/3月17日]]
# [[:Wiktionary:每日一詞/2026年/3月16日]]
# [[:Wiktionary:每日一詞/2026年/3月15日]]
# [[:Wiktionary:外語每日一詞/2026年/3月17日]]
# [[:Wiktionary:外語每日一詞/2026年/3月16日]]
# [[:Wiktionary:外語每日一詞/2026年/3月15日]]
# [[:Wiktionary:外語每日一詞/2026年/3月14日]]
# [[:Wiktionary:外語每日一詞/2026年/3月13日]]
# [[:Wiktionary:外語每日一詞/2026年/3月12日]]
# [[:Wiktionary:外語每日一詞/2026年/3月10日]]
# [[:Wiktionary:外語每日一詞/2026年/3月11日]]
# [[:Wiktionary:外語每日一詞/2027年/3月8日]]
# [[:Wiktionary:每日一詞/2026年/3月14日]]
# [[:Wiktionary:每日一詞/2026年/3月13日]]
# [[:Wiktionary:每日一詞/2026年/3月9日]]
# [[:Wiktionary:每日一詞/2026年/9月14日]]
# [[:Wiktionary:每日一詞/2026年/3月8日]]
# [[:Wiktionary:每日一詞/2026年/3月7日]]
# [[:Wiktionary:每日一詞/2026年/3月6日]]
# [[:Wiktionary:每日一詞/2026年/3月19日]]
# [[:Wiktionary:每日一詞/2026年/3月5日]]
# [[:Wiktionary:每日一詞/2026年/3月21日]]
# [[:Wiktionary:每日一詞/2026年/3月11日]]
# [[:Wiktionary:每日一詞/2026年/3月4日]]
# [[:Wiktionary:每日一詞/2026年/3月10日]]
# [[:Wiktionary:每日一詞/2026年/3月3日]]
# [[:Wiktionary:每日一詞/2026年/9月2日]]
# [[:Wiktionary:每日一詞/2026年/3月2日]]
# [[:Wiktionary:每日一詞/2026年/2月28日]]
# [[:Wiktionary:每日一詞/2026年/2月27日]]
# [[:Wiktionary:每日一詞/2026年/2月26日]]
# [[:Wiktionary:每日一詞/2026年/2月25日]]
# [[:Wiktionary:每日一詞/2026年/2月24日]]
# [[:Wiktionary:每日一詞/2026年/2月21日]]
# [[:Wiktionary:每日一詞/2026年/2月20日]]
# [[:Wiktionary:每日一詞/2026年/2月22日]]
# [[:Wiktionary:每日一詞/2026年/2月23日]]
# [[:Wiktionary:每日一詞/2026年/2月18日]]
# [[:Wiktionary:每日一詞/2026年/2月19日]]
# [[:Wiktionary:每日一詞/2026年/2月17日]]
# [[:Wiktionary:每日一詞/2026年/2月16日]]
# [[:Wiktionary:每日一詞/2026年/2月15日]]
# [[:Wiktionary:每日一詞/2026年/2月13日]]
# [[:Wiktionary:每日一詞/2026年/2月12日]]
# [[:Wiktionary:每日一詞/2026年/2月11日]]
# [[:Wiktionary:每日一詞/2026年/2月10日]]
# [[:Wiktionary:每日一詞/2026年/2月9日]]
# [[:Wiktionary:每日一詞/2026年/2月8日]]
# [[:Wiktionary:每日一詞/2026年/2月7日]]
# [[:Wiktionary:每日一詞/2026年/2月6日]]
# [[:Wiktionary:每日一詞/2026年/2月14日]]
# [[:Wiktionary:每日一詞/2026年/2月5日]]
# [[:Wiktionary:每日一詞/2026年/2月3日]]
# [[:Wiktionary:每日一詞/2026年/2月2日]]
# [[:Wiktionary:每日一詞/2026年/2月1日]]
# [[:Wiktionary:每日一詞/2026年/1月31日]]
# [[:Wiktionary:每日一詞/2026年/5月5日]]
# [[:Wiktionary:每日一詞/2026年/1月30日]]
# [[:Wiktionary:每日一詞/2026年/1月29日]]
# [[:Wiktionary:每日一詞/2026年/1月28日]]
# [[:Wiktionary:每日一詞/2026年/1月27日]]
# [[:Wiktionary:每日一詞/2026年/1月26日]]
# [[:Wiktionary:每日一詞/2026年/1月25日]]
# [[:Wiktionary:每日一詞/2026年/7月24日]]
# [[:Wiktionary:每日一詞/2026年/1月24日]]
# [[:Wiktionary:每日一詞/2026年/1月23日]]
# [[:Wiktionary:每日一詞/2026年/1月22日]]
# [[:Wiktionary:每日一詞/2026年/1月21日]]
# [[:Wiktionary:每日一詞/2026年/1月20日]]
# [[:Wiktionary:每日一詞/2026年/1月19日]]
# [[:Wiktionary:每日一詞/2026年/1月18日]]
# [[:Wiktionary:每日一詞/2026年/1月17日]]
# [[:Wiktionary:每日一詞/2026年/1月16日]]
# [[:Wiktionary:每日一詞/2026年/1月14日]]
# [[:Wiktionary:每日一詞/2026年/1月15日]]
# [[:Wiktionary:每日一詞/2026年/1月13日]]
# [[:Wiktionary:每日一詞/2026年/1月12日]]
# [[:Wiktionary:每日一詞/2026年/1月11日]]
# [[:Wiktionary:每日一詞/2026年/1月10日]]
# [[:Wiktionary:每日一詞/2026年/1月8日]]
# [[:Wiktionary:每日一詞/2026年/1月9日]]
# [[:Wiktionary:每日一詞/2026年/1月6日]]
# [[:Wiktionary:每日一詞/2026年/1月7日]]
# [[:Wiktionary:每日一詞/2026年/1月5日]]
# [[:Wiktionary:每日一詞/2026年/1月4日]]
# [[:Wiktionary:每日一詞/2026年/1月3日]]
# [[:Wiktionary:每日一詞/2026年/1月2日]]
# [[:Wiktionary:外語每日一詞/2025年/12月28日]]
# [[:Wiktionary:外語每日一詞/2025年/12月27日]]
# [[:Wiktionary:外語每日一詞/2025年/12月30日]]
# [[:Wiktionary:外語每日一詞/2025年/12月25日]]
# [[:Wiktionary:外語每日一詞/2025年/12月26日]]
# [[:Wiktionary:外語每日一詞/2025年/12月24日]]
# [[:Wiktionary:外語每日一詞/2025年/12月23日]]
# [[:Wiktionary:外語每日一詞/2025年/12月21日]]
# [[:Wiktionary:外語每日一詞/2025年/12月20日]]
# [[:Wiktionary:外語每日一詞/2025年/12月19日]]
# [[:Wiktionary:每日一詞/2025年/12月28日]]
# [[:Wiktionary:每日一詞/2025年/12月30日]]
# [[:Wiktionary:每日一詞/2025年/12月27日]]
# [[:Wiktionary:每日一詞/2026年/3月1日]]
# [[:Wiktionary:每日一詞/2025年/12月26日]]
# [[:Wiktionary:每日一詞/2025年/12月25日]]
# [[:Wiktionary:每日一詞/2025年/12月24日]]
# [[:Wiktionary:每日一詞/2026年/2月4日]]
# [[:Wiktionary:每日一詞/2025年/12月22日]]
# [[:Wiktionary:每日一詞/2025年/12月21日]]
# [[:Wiktionary:每日一詞/2025年/12月20日]]
# [[:Wiktionary:每日一詞/2025年/12月19日]]
# [[:Wiktionary:每日一詞/2025年/12月18日]]
# [[:Wiktionary:每日一詞/2025年/12月17日]]
# [[:Wiktionary:每日一詞/2025年/12月15日]]
# [[:Wiktionary:每日一詞/2025年/12月13日]]
# [[:Wiktionary:每日一詞/2026年/9月25日]]
# [[:Wiktionary:每日一詞/2025年/12月14日]]
# [[:Wiktionary:外語每日一詞/2025年/12月18日]]
# [[:Wiktionary:每日一詞/2025年/12月12日]]
# [[:Wiktionary:每日一詞/2025年/12月11日]]
# [[:Wiktionary:每日一詞/2025年/12月10日]]
# [[:Wiktionary:每日一詞/2025年/12月29日]]
# [[:Wiktionary:每日一詞/2025年/12月23日]]
# [[:Wiktionary:每日一詞/2025年/12月16日]]
# [[:Wiktionary:每日一詞/2025年/12月9日]]
# [[:Wiktionary:每日一詞/2025年/12月8日]]
# [[:Wiktionary:每日一詞/2025年/12月7日]]
# [[:Wiktionary:每日一詞/2025年/12月6日]]
# [[:Wiktionary:外語每日一詞/2025年/12月17日]]
# [[:Wiktionary:每日一詞/2025年/12月3日]]
# [[:Wiktionary:外語每日一詞/2025年/12月13日]]
# [[:Wiktionary:外語每日一詞/2025年/12月16日]]
# [[:Wiktionary:外語每日一詞/2025年/12月12日]]
# [[:Wiktionary:外語每日一詞/2025年/12月10日]]
# [[:Wiktionary:外語每日一詞/2025年/12月29日]]
# [[:Wiktionary:每日一詞/2025年/11月30日]]
# [[:Wiktionary:每日一詞/2025年/12月4日]]
# [[:Wiktionary:每日一詞/2025年/11月28日]]
# [[:Wiktionary:每日一詞/2025年/11月29日]]
# [[:Wiktionary:每日一詞/2025年/11月27日]]
# [[:Wiktionary:每日一詞/2026年/3月12日]]
# [[:Wiktionary:每日一詞/2025年/11月23日]]
# [[:Wiktionary:每日一詞/2025年/11月26日]]
# [[:Wiktionary:每日一詞/2025年/11月25日]]
# [[:Wiktionary:每日一詞/2025年/12月5日]]
# [[:Wiktionary:每日一詞/2025年/11月24日]]
# [[:Wiktionary:外語每日一詞/2025年/12月9日]]
# [[:Wiktionary:外語每日一詞/2025年/12月11日]]
# [[:Wiktionary:外語每日一詞/2025年/12月22日]]
# [[:Wiktionary:外語每日一詞/2025年/12月14日]]
# [[:Wiktionary:外語每日一詞/2025年/12月31日]]
# [[:Wiktionary:外語每日一詞/2025年/12月7日]]
# [[:Wiktionary:外語每日一詞/2025年/12月6日]]
# [[:Wiktionary:外語每日一詞/2025年/12月5日]]
# [[:Wiktionary:外語每日一詞/2025年/12月4日]]
# [[:Wiktionary:外語每日一詞/2025年/12月3日]]
# [[:Wiktionary:外語每日一詞/2025年/12月2日]]
# [[:Wiktionary:外語每日一詞/2025年/11月29日]]
# [[:Wiktionary:外語每日一詞/2025年/11月28日]]
# [[:Wiktionary:外語每日一詞/2025年/11月27日]]
# [[:Wiktionary:每日一詞/2025年/11月22日]]
# [[:Wiktionary:每日一詞/2025年/11月21日]]
# [[:Wiktionary:外語每日一詞/2025年/11月25日]]
# [[:Wiktionary:外語每日一詞/2025年/11月30日]]
# [[:Wiktionary:外語每日一詞/2025年/11月26日]]
# [[:Wiktionary:外語每日一詞/2025年/12月15日]]
# [[:Wiktionary:外語每日一詞/2025年/12月8日]]
# [[:Wiktionary:外語每日一詞/2025年/11月23日]]
# [[:Wiktionary:外語每日一詞/2025年/11月22日]]
# [[:Wiktionary:外語每日一詞/2025年/11月21日]]
# [[:Wiktionary:外語每日一詞/2025年/11月20日]]
# [[:Wiktionary:外語每日一詞/2025年/11月19日]]
# [[:Wiktionary:外語每日一詞/2025年/11月18日]]
# [[:Wiktionary:每日一詞/2025年/11月20日]]
# [[:Wiktionary:每日一詞/2025年/11月19日]]
# [[:Wiktionary:外語每日一詞/2025年/11月16日]]
# [[:Wiktionary:每日一詞/2025年/11月18日]]
# [[:Wiktionary:每日一詞/2025年/11月17日]]
# [[:Wiktionary:每日一詞/2025年/11月16日]]
# [[:Wiktionary:外語每日一詞/2025年/11月15日]]
# [[:Wiktionary:外語每日一詞/2025年/11月14日]]
# [[:Wiktionary:外語每日一詞/2025年/11月13日]]
# [[:Wiktionary:每日一詞/2025年/11月15日]]
# [[:Wiktionary:每日一詞/2025年/11月13日]]
# [[:Wiktionary:每日一詞/2025年/11月10日]]
# [[:Wiktionary:每日一詞/2025年/11月12日]]
# [[:Wiktionary:每日一詞/2025年/11月11日]]
# [[:Wiktionary:每日一詞/2025年/12月1日]]
# [[:Wiktionary:每日一詞/2025年/11月9日]]
# [[:Wiktionary:每日一詞/2025年/11月7日]]
# [[:Wiktionary:每日一詞/2025年/11月8日]]
# [[:Wiktionary:每日一詞/2025年/11月6日]]
# [[:Wiktionary:每日一詞/2025年/11月5日]]
# [[:Wiktionary:每日一詞/2025年/11月14日]]
# [[:Wiktionary:每日一詞/2025年/11月4日]]
# [[:Wiktionary:每日一詞/2025年/11月3日]]
# [[:Wiktionary:每日一詞/2025年/11月2日]]
# [[:Wiktionary:每日一詞/2025年/12月2日]]
# [[:Wiktionary:每日一詞/2025年/11月1日]]
# [[:Wiktionary:每日一詞/2025年/10月31日]]
# [[:Wiktionary:每日一詞/2025年/10月30日]]
# [[:Wiktionary:每日一詞/2025年/10月28日]]
# [[:Wiktionary:外語每日一詞/2025年/12月1日]]
# [[:Wiktionary:每日一詞/2025年/10月27日]]
# [[:Wiktionary:外語每日一詞/2025年/11月12日]]
# [[:Wiktionary:外語每日一詞/2025年/11月11日]]
# [[:Wiktionary:外語每日一詞/2025年/11月8日]]
# [[:Wiktionary:外語每日一詞/2025年/11月7日]]
# [[:Wiktionary:外語每日一詞/2025年/11月6日]]
# [[:Wiktionary:外語每日一詞/2025年/11月5日]]
# [[:Wiktionary:外語每日一詞/2025年/11月4日]]
# [[:Wiktionary:外語每日一詞/2025年/11月24日]]
# [[:Wiktionary:外語每日一詞/2025年/11月3日]]
# [[:Wiktionary:外語每日一詞/2025年/11月1日]]
# [[:Wiktionary:外語每日一詞/2025年/10月31日]]
# [[:Wiktionary:外語每日一詞/2025年/10月30日]]
# [[:Wiktionary:外語每日一詞/2025年/10月29日]]
# [[:Wiktionary:外語每日一詞/2025年/10月28日]]
# [[:Wiktionary:外語每日一詞/2025年/10月27日]]
# [[:Wiktionary:每日一詞/2026年/1月1日]]
# [[:Wiktionary:每日一詞/2025年/10月25日]]
# [[:Wiktionary:外語每日一詞/2025年/11月17日]]
# [[:Wiktionary:外語每日一詞/2025年/11月10日]]
# [[:Wiktionary:外語每日一詞/2025年/10月25日]]
# [[:Wiktionary:每日一詞/2025年/10月23日]]
# [[:Wiktionary:每日一詞/2025年/10月24日]]
# [[:Wiktionary:每日一詞/2025年/10月22日]]
# [[:Wiktionary:每日一詞/2025年/10月20日]]
# [[:Wiktionary:外語每日一詞/2025年/10月24日]]
# [[:Wiktionary:外語每日一詞/2025年/10月23日]]
# [[:Wiktionary:外語每日一詞/2025年/10月21日]]
# [[:Wiktionary:外語每日一詞/2025年/10月20日]]
# [[:Wiktionary:外語每日一詞/2025年/11月2日]]
# [[:Wiktionary:每日一詞/2025年/10月21日]]
# [[:Wiktionary:每日一詞/2025年/10月26日]]
# [[:Wiktionary:每日一詞/2025年/10月19日]]
# [[:Wiktionary:外語每日一詞/2025年/10月26日]]
# [[:Wiktionary:外語每日一詞/2025年/10月19日]]
# [[:Wiktionary:每日一詞/2025年/10月17日]]
# [[:Wiktionary:每日一詞/2025年/12月31日]]
# [[:Wiktionary:外語每日一詞/2025年/10月18日]]
# [[:Wiktionary:外語每日一詞/2025年/10月17日]]
# [[:Wiktionary:外語每日一詞/2025年/10月16日]]
# [[:Wiktionary:外語每日一詞/2025年/10月15日]]
# [[:Wiktionary:外語每日一詞/2025年/10月14日]]
# [[:Wiktionary:外語每日一詞/2025年/10月13日]]
# [[:Wiktionary:每日一詞/2025年/10月18日]]
# [[:Wiktionary:每日一詞/2025年/10月16日]]
# [[:Wiktionary:外語每日一詞/2025年/10月22日]]
# [[:Wiktionary:外語每日一詞/2025年/10月12日]]
# [[:Wiktionary:外語每日一詞/2025年/10月11日]]
# [[:Wiktionary:外語每日一詞/2025年/10月10日]]
# [[:Wiktionary:外語每日一詞/2025年/10月8日]]
# [[:Wiktionary:外語每日一詞/2025年/10月7日]]
# [[:Wiktionary:每日一詞/2025年/10月14日]]
# [[:Wiktionary:每日一詞/2025年/10月15日]]
# [[:Wiktionary:每日一詞/2025年/10月13日]]
# [[:Wiktionary:每日一詞/2025年/10月12日]]
# [[:Wiktionary:每日一詞/2025年/10月11日]]
# [[:Wiktionary:每日一詞/2025年/10月10日]]
# [[:Wiktionary:每日一詞/2025年/10月8日]]
# [[:Wiktionary:每日一詞/2025年/10月9日]]
# [[:Wiktionary:每日一詞/2025年/10月6日]]
# [[:Wiktionary:每日一詞/2025年/10月1日]]
# [[:Wiktionary:外語每日一詞/2025年/10月6日]]
# [[:Wiktionary:每日一詞/2025年/10月5日]]
# [[:Wiktionary:每日一詞/2025年/10月4日]]
# [[:Wiktionary:每日一詞/2025年/10月3日]]
# [[:Wiktionary:每日一詞/2025年/9月29日]]
# [[:Wiktionary:每日一詞/2025年/10月2日]]
# [[:Wiktionary:每日一詞/2025年/10月7日]]
# [[:Wiktionary:每日一詞/2025年/9月28日]]
# [[:Wiktionary:外語每日一詞/2026年/4月22日]]
# [[:Wiktionary:外語每日一詞/2025年/10月5日]]
# [[:Wiktionary:外語每日一詞/2025年/10月4日]]
# [[:Wiktionary:每日一詞/2025年/9月27日]]
# [[:Wiktionary:外語每日一詞/2025年/11月9日]]
# [[:Wiktionary:外語每日一詞/2025年/9月30日]]
# [[:Wiktionary:外語每日一詞/2025年/9月29日]]
# [[:Wiktionary:外語每日一詞/2025年/9月28日]]
# [[:Wiktionary:外語每日一詞/2025年/9月27日]]
# [[:Wiktionary:外語每日一詞/2025年/9月26日]]
# [[:Wiktionary:外語每日一詞/2025年/10月9日]]
# [[:Wiktionary:外語每日一詞/preload]]
# [[:Wiktionary:外語每日一詞/2025年/10月3日]]
# [[:Wiktionary:外語每日一詞/2025年/10月2日]]
# [[:Wiktionary:外語每日一詞/2025年/9月25日]]
# [[:Wiktionary:每日一詞/2025年/9月30日]]
# [[:Wiktionary:每日一詞/2025年/9月26日]]
# [[:Wiktionary:每日一詞/2025年/9月25日]]
# [[:Wiktionary:每日一詞/2025年/9月24日]]
# [[:Wiktionary:每日一詞/2025年/9月23日]]
# [[:Wiktionary:每日一詞/2025年/9月22日]]
# [[:Wiktionary:外語每日一詞/2025年/9月24日]]
# [[:Wiktionary:外語每日一詞/2025年/9月23日]]
# [[:Wiktionary:外語每日一詞/2025年/9月20日]]
# [[:Wiktionary:外語每日一詞/2025年/9月19日]]
# [[:Wiktionary:外語每日一詞/2025年/9月18日]]
# [[:Wiktionary:外語每日一詞/2025年/9月21日]]
# [[:Wiktionary:外語每日一詞/2025年/9月17日]]
# [[:Wiktionary:外語每日一詞/2025年/9月16日]]
# [[:Wiktionary:每日一詞/2025年/9月21日]]
# [[:Wiktionary:每日一詞/2025年/9月20日]]
# [[:Wiktionary:每日一詞/2025年/9月19日]]
# [[:Wiktionary:每日一詞/2025年/9月18日]]
# [[:Wiktionary:每日一詞/2025年/9月17日]]
# [[:Wiktionary:每日一詞/2025年/9月16日]]
# [[:Wiktionary:每日一詞/2025年/9月15日]]
# [[:Wiktionary:外語每日一詞/2025年/9月14日]]
# [[:Wiktionary:每日一詞/2025年/9月14日]]
# [[:Wiktionary:外語每日一詞/2025年/9月13日]]
# [[:Wiktionary:每日一詞/2025年/9月13日]]
# [[:Wiktionary:每日一詞/2025年/9月12日]]
# [[:Wiktionary:每日一詞/2025年/9月11日]]
# [[:Wiktionary:外語每日一詞/2025年/9月12日]]
# [[:Wiktionary:外語每日一詞/2025年/9月11日]]
# [[:Wiktionary:每日一詞/2025年/9月10日]]
# [[:Wiktionary:每日一詞/2025年/9月8日]]
# [[:Wiktionary:外語每日一詞/2025年/9月10日]]
# [[:Wiktionary:外語每日一詞/2025年/9月9日]]
# [[:Wiktionary:外語每日一詞/2025年/9月22日]]
# [[:Wiktionary:圖片詞典/la:kinship]]
# [[:Wiktionary:外語每日一詞/2025年/10月1日]]
# [[:Wiktionary:外語每日一詞/2025年/9月15日]]
# [[:Wiktionary:外語每日一詞/2025年/9月8日]]
# [[:Wiktionary:每日一詞/2025年/9月7日]]
# [[:Wiktionary:每日一詞/2025年/9月9日]]
# [[:Wiktionary:每日一詞/2025年/9月6日]]
# [[:Wiktionary:外語每日一詞/2025年/9月7日]]
# [[:Wiktionary:外語每日一詞/2025年/9月6日]]
# [[:Wiktionary:外語每日一詞/2025年/9月5日]]
# [[:Wiktionary:外語每日一詞/2025年/9月3日]]
# [[:Wiktionary:外語每日一詞/2025年/9月2日]]
# [[:Wiktionary:外語每日一詞/2025年/9月4日]]
# [[:Wiktionary:每日一詞/2025年/9月5日]]
# [[:Wiktionary:每日一詞/2025年/9月4日]]
# [[:Wiktionary:外語每日一詞/2025年/8月31日]]
# [[:Wiktionary:外語每日一詞/2025年/8月30日]]
# [[:Wiktionary:每日一詞/2025年/8月31日]]
# [[:Wiktionary:每日一詞/2025年/9月3日]]
# [[:Wiktionary:每日一詞/2025年/9月2日]]
# [[:Wiktionary:每日一詞/2025年/8月30日]]
# [[:Wiktionary:每日一詞/2025年/8月29日]]
# [[:Wiktionary:每日一詞/2025年/8月28日]]
# [[:Wiktionary:每日一詞/2025年/8月27日]]
# [[:Wiktionary:外語每日一詞/2025年/8月29日]]
# [[:Wiktionary:外語每日一詞/2025年/8月28日]]
# [[:Wiktionary:外語每日一詞/2025年/8月26日]]
# [[:Wiktionary:外語每日一詞/2025年/8月25日]]
# [[:Wiktionary:外語每日一詞/2025年/8月27日]]
# [[:Wiktionary:外語每日一詞/2025年/8月24日]]
# [[:Wiktionary:外語每日一詞/2025年/8月23日]]
# [[:Wiktionary:外語每日一詞/2025年/8月22日]]
# [[:Wiktionary:外語每日一詞/2025年/8月21日]]
# [[:Wiktionary:每日一詞/2025年/8月26日]]
# [[:Wiktionary:每日一詞/2025年/8月22日]]
# [[:Wiktionary:每日一詞/2025年/8月24日]]
# [[:Wiktionary:每日一詞/2025年/8月23日]]
# [[:Wiktionary:每日一詞/2025年/8月21日]]
# [[:Wiktionary:每日一詞/2025年/9月1日]]
# [[:Wiktionary:外語每日一詞/2025年/8月20日]]
# [[:Wiktionary:每日一詞/2025年/8月20日]]
# [[:Wiktionary:外語每日一詞/2025年/8月19日]]
# [[:Wiktionary:外語每日一詞/2025年/8月18日]]
# [[:Wiktionary:每日一詞/2025年/8月19日]]
# [[:Wiktionary:每日一詞/2025年/8月18日]]
# [[:Wiktionary:每日一詞/2025年/8月17日]]
# [[:Wiktionary:外語每日一詞/2025年/8月16日]]
# [[:Wiktionary:外語每日一詞/2025年/8月15日]]
# [[:Wiktionary:每日一詞/2025年/8月16日]]
# [[:Wiktionary:每日一詞/2025年/8月15日]]
# [[:Wiktionary:外語每日一詞/2025年/8月14日]]
# [[:Wiktionary:外語每日一詞/2025年/8月13日]]
# [[:Wiktionary:外語每日一詞/2025年/8月12日]]
# [[:Wiktionary:每日一詞/2025年/8月14日]]
# [[:Wiktionary:每日一詞/2025年/8月13日]]
# [[:Wiktionary:每日一詞/2025年/8月11日]]
# [[:Wiktionary:每日一詞/2025年/8月12日]]
# [[:Wiktionary:外語每日一詞/2025年/8月11日]]
# [[:Wiktionary:外語每日一詞/2025年/8月10日]]
# [[:Wiktionary:每日一詞/2025年/8月9日]]
# [[:Wiktionary:外語每日一詞/2025年/9月1日]]
# [[:Wiktionary:外語每日一詞/2025年/8月9日]]
# [[:Wiktionary:外語每日一詞/2025年/8月8日]]
# [[:Wiktionary:每日一詞/2025年/8月6日]]
# [[:Wiktionary:每日一詞/2025年/8月7日]]
# [[:Wiktionary:每日一詞/2025年/8月8日]]
# [[:Wiktionary:每日一詞/2025年/8月5日]]
# [[:Wiktionary:每日一詞/2025年/8月4日]]
# [[:Wiktionary:每日一詞/2026年/3月20日]]
# [[:Wiktionary:外語每日一詞/2025年/8月7日]]
# [[:Wiktionary:外語每日一詞/2025年/8月4日]]
# [[:Wiktionary:外語每日一詞/2025年/8月6日]]
# [[:Wiktionary:外語每日一詞/2025年/8月5日]]
# [[:Wiktionary:外語每日一詞/2025年/8月3日]]
# [[:Wiktionary:外語每日一詞/2025年/8月2日]]
# [[:Wiktionary:外語每日一詞/2025年/8月1日]]
# [[:Wiktionary:外語每日一詞/2025年/7月31日]]
# [[:Wiktionary:外語每日一詞/2025年/7月30日]]
# [[:Wiktionary:外語每日一詞/2025年/7月29日]]
# [[:Wiktionary:外語每日一詞/2025年/7月28日]]
# [[:Wiktionary:每日一詞/2025年/8月3日]]
# [[:Wiktionary:每日一詞/2025年/8月2日]]
# [[:Wiktionary:每日一詞/2025年/7月31日]]
# [[:Wiktionary:每日一詞/2025年/7月30日]]
# [[:Wiktionary:每日一詞/2025年/7月29日]]
# [[:Wiktionary:每日一詞/2025年/7月28日]]
# [[:Wiktionary:每日一詞/2025年/8月1日]]
# [[:Wiktionary:每日一詞/2025年/7月26日]]
# [[:Wiktionary:每日一詞/2025年/7月27日]]
# [[:Wiktionary:外語每日一詞/2025年/7月25日]]
# [[:Wiktionary:外語每日一詞/2025年/7月24日]]
# [[:Wiktionary:外語每日一詞/2025年/7月23日]]
# [[:Wiktionary:外語每日一詞/2025年/7月22日]]
# [[:Wiktionary:每日一詞/2025年/7月24日]]
# [[:Wiktionary:每日一詞/2025年/7月25日]]
# [[:Wiktionary:每日一詞/2025年/7月23日]]
# [[:Wiktionary:每日一詞/2025年/7月22日]]
# [[:Wiktionary:外語每日一詞/2025年/7月21日]]
# [[:Wiktionary:每日一詞/2025年/7月21日]]
# [[:Wiktionary:外語每日一詞/2025年/7月27日]]
# [[:Wiktionary:外語每日一詞/2025年/7月20日]]
# [[:Wiktionary:外語每日一詞/2025年/7月19日]]
# [[:Wiktionary:外語每日一詞/2025年/7月18日]]
# [[:Wiktionary:每日一詞/2025年/7月20日]]
# [[:Wiktionary:每日一詞/2025年/8月25日]]
# [[:Wiktionary:每日一詞/2025年/7月18日]]
# [[:Wiktionary:外語每日一詞/2025年/7月17日]]
# [[:Wiktionary:外語每日一詞/2025年/7月16日]]
# [[:Wiktionary:每日一詞/2025年/7月16日]]
# [[:Wiktionary:每日一詞/2025年/7月14日]]
# [[:Wiktionary:每日一詞/2025年/7月19日]]
# [[:Wiktionary:每日一詞/2025年/7月17日]]
# [[:Wiktionary:每日一詞/2025年/7月15日]]
# [[:Wiktionary:每日一詞/2025年/7月12日]]
# [[:Wiktionary:每日一詞/2025年/10月29日]]
# [[:Wiktionary:每日一詞/2025年/7月13日]]
# [[:Wiktionary:每日一詞/2025年/7月11日]]
# [[:Wiktionary:每日一詞/2025年/7月9日]]
# [[:Wiktionary:外語每日一詞/2025年/7月15日]]
# [[:Wiktionary:每日一詞/2025年/7月5日]]
# [[:Wiktionary:每日一詞/2025年/7月10日]]
# [[:Wiktionary:外語每日一詞/2025年/7月14日]]
# [[:Wiktionary:外語每日一詞/2025年/7月11日]]
# [[:Wiktionary:外語每日一詞/2025年/7月10日]]
# [[:Wiktionary:外語每日一詞/2025年/7月9日]]
# [[:Wiktionary:外語每日一詞/2025年/7月8日]]
# [[:Wiktionary:外語每日一詞/2025年/7月7日]]
# [[:Wiktionary:外語每日一詞/2025年/7月12日]]
# [[:Wiktionary:外語每日一詞/2025年/7月5日]]
# [[:Wiktionary:外語每日一詞/2025年/7月6日]]
# [[:Wiktionary:外語每日一詞/2025年/7月13日]]
# [[:Wiktionary:外語每日一詞/2025年/7月3日]]
# [[:Wiktionary:外語每日一詞/2025年/7月4日]]
# [[:Wiktionary:每日一詞/2025年/7月7日]]
# [[:Wiktionary:每日一詞/2025年/7月8日]]
# [[:Wiktionary:每日一詞/2025年/7月6日]]
# [[:Wiktionary:每日一詞/2025年/7月4日]]
# [[:Wiktionary:每日一詞/2025年/7月3日]]
# [[:Wiktionary:每日一詞/2025年/7月2日]]
# [[:Wiktionary:外語每日一詞/2025年/7月2日]]
# [[:Wiktionary:外語每日一詞/2025年/6月30日]]
# [[:Wiktionary:外語每日一詞/2025年/6月28日]]
# [[:Wiktionary:外語每日一詞/2025年/6月27日]]
# [[:Wiktionary:每日一詞/2025年/6月30日]]
# [[:Wiktionary:每日一詞/2025年/6月28日]]
# [[:Wiktionary:每日一詞/2025年/6月26日]]
# [[:Wiktionary:外語每日一詞/2025年/8月17日]]
# [[:Wiktionary:外語每日一詞/2025年/6月26日]]
# [[:Wiktionary:外語每日一詞/2025年/6月25日]]
# [[:Wiktionary:外語每日一詞/2025年/7月1日]]
# [[:Wiktionary:外語每日一詞/2025年/6月24日]]
# [[:Wiktionary:每日一詞/2025年/7月1日]]
# [[:Wiktionary:外語每日一詞/2025年/7月26日]]
# [[:Wiktionary:每日一詞/2025年/6月29日]]
# [[:Wiktionary:每日一詞/2025年/6月27日]]
# [[:Wiktionary:每日一詞/2025年/6月24日]]
# [[:Wiktionary:每日一詞/2025年/6月25日]]
# [[:Wiktionary:每日一詞/2025年/6月22日]]
# [[:Wiktionary:每日一詞/2025年/6月23日]]
# [[:Wiktionary:每日一詞/2025年/6月21日]]
# [[:Wiktionary:外語每日一詞/2025年/6月29日]]
# [[:Wiktionary:每日一詞/2025年/6月20日]]
# [[:Wiktionary:每日一詞/2025年/6月19日]]
# [[:Wiktionary:外語每日一詞/2025年/6月23日]]
# [[:Wiktionary:每日一詞/2025年/6月17日]]
# [[:Wiktionary:每日一詞/2025年/6月18日]]
# [[:Wiktionary:外語每日一詞/2025年/6月22日]]
# [[:Wiktionary:外語每日一詞/2025年/6月21日]]
# [[:Wiktionary:外語每日一詞/2025年/6月19日]]
# [[:Wiktionary:外語每日一詞/2025年/6月18日]]
# [[:Wiktionary:外語每日一詞/2025年/6月17日]]
# [[:Wiktionary:外語每日一詞/2025年/6月16日]]
# [[:Wiktionary:每日一詞/2025年/6月16日]]
# [[:Wiktionary:外語每日一詞/2025年/6月20日]]
# [[:Wiktionary:外語每日一詞/2025年/6月14日]]
# [[:Wiktionary:外語每日一詞/2025年/6月13日]]
# [[:Wiktionary:外語每日一詞/2025年/6月15日]]
# [[:Wiktionary:外語每日一詞/2025年/6月12日]]
# [[:Wiktionary:每日一詞/2025年/6月15日]]
# [[:Wiktionary:每日一詞/2025年/6月14日]]
# [[:Wiktionary:每日一詞/2025年/6月13日]]
# [[:Wiktionary:每日一詞/2025年/6月12日]]
# [[:Wiktionary:每日一詞/2025年/6月11日]]
# [[:Wiktionary:外語每日一詞/2025年/6月11日]]
# [[:Wiktionary:外語每日一詞/2025年/6月10日]]
# [[:Wiktionary:每日一詞/2025年/6月10日]]
# [[:Wiktionary:每日一詞/2025年/6月9日]]
# [[:Wiktionary:每日一詞/2025年/6月8日]]
# [[:Wiktionary:外語每日一詞/2025年/6月8日]]
# [[:Wiktionary:外語每日一詞/2025年/6月7日]]
# [[:Wiktionary:外語每日一詞/2025年/6月6日]]
# [[:Wiktionary:外語每日一詞/2025年/6月5日]]
# [[:Wiktionary:每日一詞/2025年/6月7日]]
# [[:Wiktionary:外語每日一詞/2025年/6月4日]]
# [[:Wiktionary:外語每日一詞/2025年/6月3日]]
# [[:Wiktionary:每日一詞/2025年/6月4日]]
# [[:Wiktionary:每日一詞/2025年/6月6日]]
# [[:Wiktionary:外語每日一詞/2025年/6月9日]]
# [[:Wiktionary:外語每日一詞/2025年/6月2日]]
# [[:Wiktionary:每日一詞/2025年/6月5日]]
# [[:Wiktionary:每日一詞/2025年/6月3日]]
# [[:Wiktionary:每日一詞/2025年/6月2日]]
# [[:Wiktionary:外語每日一詞/2025年/6月1日]]
# [[:Wiktionary:外語每日一詞/2026年/6月19日]]
# [[:Wiktionary:每日一詞/2025年/6月1日]]
# [[:Wiktionary:外語每日一詞/2025年/5月30日]]
# [[:Wiktionary:重定向]]
# [[:Wiktionary:每日一詞/2025年/5月31日]]
# [[:Wiktionary:外語每日一詞/2025年/5月29日]]
# [[:Wiktionary:外語每日一詞/2025年/5月31日]]
# [[:Wiktionary:每日一詞/2025年/5月30日]]
# [[:Wiktionary:每日一詞/2025年/5月29日]]
# [[:Wiktionary:每日一詞/2025年/5月28日]]
# [[:Wiktionary:外語每日一詞/2025年/5月28日]]
# [[:Wiktionary:外語每日一詞/2025年/5月27日]]
# [[:Wiktionary:每日一詞/2025年/5月27日]]
# [[:Wiktionary:每日一詞/2025年/5月26日]]
# [[:Wiktionary:外語每日一詞/2025年/5月26日]]
# [[:Wiktionary:每日一詞/2025年/5月25日]]
# [[:Wiktionary:外語每日一詞/2025年/5月25日]]
# [[:Wiktionary:外語每日一詞/2025年/5月24日]]
# [[:Wiktionary:每日一詞/2025年/5月24日]]
# [[:Wiktionary:每日一詞/2025年/5月23日]]
# [[:Wiktionary:外語每日一詞/2025年/5月23日]]
# [[:Wiktionary:每日一詞/2025年/5月22日]]
# [[:Wiktionary:每日一詞/2025年/5月21日]]
# [[:Wiktionary:每日一詞/2025年/5月20日]]
# [[:Wiktionary:每日一詞/2025年/5月19日]]
# [[:Wiktionary:外語每日一詞/2025年/5月22日]]
# [[:Wiktionary:外語每日一詞/2025年/5月20日]]
# [[:Wiktionary:外語每日一詞/2025年/5月21日]]
# [[:Wiktionary:每日一詞/2025年/5月18日]]
# [[:Wiktionary:外語每日一詞/2025年/5月19日]]
# [[:Wiktionary:外語每日一詞/2025年/5月18日]]
# [[:Wiktionary:外語每日一詞/2025年/5月17日]]
# [[:Wiktionary:外語每日一詞/2025年/5月16日]]
# [[:Wiktionary:每日一詞/2025年/5月17日]]
# [[:Wiktionary:每日一詞/2025年/5月16日]]
# [[:Wiktionary:外語每日一詞/2025年/5月15日]]
# [[:Wiktionary:每日一詞/2025年/5月15日]]
# [[:Wiktionary:每日一詞/2025年/5月14日]]
# [[:Wiktionary:外語每日一詞/2025年/5月14日]]
# [[:Wiktionary:外語每日一詞/2025年/5月13日]]
# [[:Wiktionary:外語每日一詞/2025年/5月12日]]
# [[:Wiktionary:外語每日一詞/2025年/5月11日]]
# [[:Wiktionary:每日一詞/2025年/5月13日]]
# [[:Wiktionary:每日一詞/2025年/5月11日]]
# [[:Wiktionary:每日一詞/2025年/5月12日]]
# [[:Wiktionary:每日一詞/2025年/5月10日]]
# [[:Wiktionary:外語每日一詞/2025年/5月10日]]
# [[:Wiktionary:外語每日一詞/2025年/5月9日]]
# [[:Wiktionary:外語每日一詞/2025年/5月8日]]
# [[:Wiktionary:外語每日一詞/2025年/5月7日]]
# [[:Wiktionary:每日一詞/2025年/5月9日]]
# [[:Wiktionary:每日一詞/2025年/5月7日]]
# [[:Wiktionary:每日一詞/2025年/5月8日]]
# [[:Wiktionary:每日一詞/2025年/5月6日]]
# [[:Wiktionary:外語每日一詞/2025年/5月6日]]
# [[:Wiktionary:每日一詞/2025年/5月5日]]
# [[:Wiktionary:每日一詞/2025年/5月4日]]
# [[:Wiktionary:外語每日一詞/2025年/5月4日]]
# [[:Wiktionary:每日一詞/2025年/5月3日]]
# [[:Wiktionary:外語每日一詞/2025年/5月3日]]
# [[:Wiktionary:外語每日一詞/2025年/5月2日]]
# [[:Wiktionary:每日一詞/2025年/5月2日]]
# [[:Wiktionary:每日一詞/2025年/5月1日]]
# [[:Wiktionary:外語每日一詞/2025年/5月1日]]
# [[:Wiktionary:外語每日一詞/2025年/4月30日]]
# [[:Wiktionary:外語每日一詞/2025年/4月29日]]
# [[:Wiktionary:每日一詞/2025年/4月30日]]
# [[:Wiktionary:外語每日一詞/2025年/4月28日]]
# [[:Wiktionary:每日一詞/2025年/4月28日]]
# [[:Wiktionary:外語每日一詞/2025年/4月27日]]
# [[:Wiktionary:每日一詞/2025年/4月29日]]
# [[:Wiktionary:每日一詞/2025年/4月27日]]
# [[:Wiktionary:外語每日一詞/2025年/4月26日]]
# [[:Wiktionary:外語每日一詞/2025年/4月25日]]
# [[:Wiktionary:每日一詞/2025年/4月25日]]
# [[:Wiktionary:外語每日一詞/2025年/4月24日]]
# [[:Wiktionary:每日一詞/2025年/4月24日]]
# [[:Wiktionary:每日一詞/2025年/4月23日]]
# [[:Wiktionary:外語每日一詞/2025年/4月22日]]
# [[:Wiktionary:外語每日一詞/2025年/4月23日]]
# [[:Wiktionary:外語每日一詞/2025年/4月21日]]
# [[:Wiktionary:每日一詞/2025年/4月21日]]
# [[:Wiktionary:每日一詞/2025年/4月22日]]
# [[:Wiktionary:外語每日一詞/2025年/4月20日]]
# [[:Wiktionary:外語每日一詞/2025年/4月19日]]
# [[:Wiktionary:每日一詞/2025年/4月20日]]
# [[:Wiktionary:每日一詞/2025年/4月19日]]
# [[:Wiktionary:朝鮮語]]
# [[:Wiktionary:外語每日一詞/2025年/4月18日]]
# [[:Wiktionary:每日一詞/2025年/4月17日]]
# [[:Wiktionary:每日一詞/2025年/4月18日]]
# [[:Wiktionary:每日一詞/2025年/4月16日]]
# [[:Wiktionary:外語每日一詞/2025年/4月17日]]
# [[:Wiktionary:外語每日一詞/2025年/4月16日]]
# [[:Wiktionary:外語每日一詞/2025年/4月15日]]
# [[:Wiktionary:外語每日一詞/2025年/4月14日]]
# [[:Wiktionary:每日一詞/2025年/4月26日]]
# [[:Wiktionary:外語每日一詞/2025年/4月12日]]
# [[:Wiktionary:每日一詞/2025年/4月15日]]
# [[:Wiktionary:每日一詞/2025年/4月14日]]
# [[:Wiktionary:每日一詞/2025年/4月13日]]
# [[:Wiktionary:外語每日一詞/2025年/4月13日]]
# [[:Wiktionary:外語每日一詞/2025年/4月11日]]
# [[:Wiktionary:每日一詞/2025年/4月12日]]
# [[:Wiktionary:每日一詞/2025年/4月11日]]
# [[:Wiktionary:每日一詞/2025年/4月10日]]
# [[:Wiktionary:外語每日一詞/2025年/4月10日]]
# [[:Wiktionary:外語每日一詞/2025年/4月9日]]
# [[:Wiktionary:外語每日一詞/2025年/4月8日]]
# [[:Wiktionary:外語每日一詞/2025年/4月7日]]
# [[:Wiktionary:外語每日一詞/2025年/4月6日]]
# [[:Wiktionary:外語每日一詞/2025年/4月5日]]
# [[:Wiktionary:外語每日一詞/2025年/4月4日]]
# [[:Wiktionary:每日一詞/2025年/4月9日]]
# [[:Wiktionary:每日一詞/2025年/4月7日]]
# [[:Wiktionary:每日一詞/2025年/4月8日]]
# [[:Wiktionary:每日一詞/2025年/4月6日]]
# [[:Wiktionary:每日一詞/2025年/4月5日]]
# [[:Wiktionary:每日一詞/2025年/4月4日]]
# [[:Wiktionary:外語每日一詞/2025年/4月3日]]
# [[:Wiktionary:每日一詞/2025年/4月3日]]
# [[:Wiktionary:外語每日一詞/2025年/4月2日]]
# [[:Wiktionary:每日一詞/2025年/4月2日]]
# [[:Wiktionary:外語每日一詞/2025年/4月1日]]
# [[:Wiktionary:外語每日一詞/2025年/3月31日]]
# [[:Wiktionary:每日一詞/2025年/3月31日]]
# [[:Wiktionary:外語每日一詞/2025年/3月30日]]
# [[:Wiktionary:外語每日一詞/2025年/3月29日]]
# [[:Wiktionary:外語每日一詞/2025年/3月28日]]
# [[:Wiktionary:外語每日一詞/2025年/3月27日]]
# [[:Wiktionary:外語每日一詞/2025年/3月26日]]
# [[:Wiktionary:每日一詞/2025年/3月29日]]
# [[:Wiktionary:每日一詞/2025年/3月30日]]
# [[:Wiktionary:每日一詞/2025年/3月28日]]
# [[:Wiktionary:每日一詞/2025年/4月1日]]
# [[:Wiktionary:外語每日一詞/2025年/3月25日]]
# [[:Wiktionary:外語每日一詞/2025年/3月24日]]
# [[:Wiktionary:外語每日一詞/2025年/3月23日]]
# [[:Wiktionary:每日一詞/2025年/3月27日]]
# [[:Wiktionary:每日一詞/2025年/3月26日]]
# [[:Wiktionary:每日一詞/2025年/3月24日]]
# [[:Wiktionary:每日一詞/2025年/3月25日]]
# [[:Wiktionary:每日一詞/2025年/3月22日]]
# [[:Wiktionary:每日一詞/2025年/3月23日]]
# [[:Wiktionary:外語每日一詞/2025年/3月22日]]
# [[:Wiktionary:外語每日一詞/2025年/3月21日]]
# [[:Wiktionary:每日一詞/2025年/3月21日]]
# [[:Wiktionary:每日一詞/2025年/3月20日]]
# [[:Wiktionary:每日一詞/2025年/3月19日]]
# [[:Wiktionary:外語每日一詞/2025年/3月20日]]
# [[:Wiktionary:外語每日一詞/2025年/3月19日]]
# [[:Wiktionary:外語每日一詞/2025年/3月18日]]
# [[:Wiktionary:外語每日一詞/2025年/3月17日]]
# [[:Wiktionary:每日一詞/2025年/3月18日]]
# [[:Wiktionary:每日一詞/2025年/3月17日]]
# [[:Wiktionary:外語每日一詞/2025年/3月16日]]
# [[:Wiktionary:每日一詞/2025年/3月16日]]
# [[:Wiktionary:外語每日一詞/2025年/3月15日]]
# [[:Wiktionary:外語每日一詞/2025年/3月13日]]
# [[:Wiktionary:外語每日一詞/2025年/3月12日]]
# [[:Wiktionary:外語每日一詞/2025年/3月11日]]
# [[:Wiktionary:外語每日一詞/2025年/3月14日]]
# [[:Wiktionary:外語每日一詞/2025年/3月10日]]
# [[:Wiktionary:外語每日一詞/2025年/3月9日]]
# [[:Wiktionary:每日一詞/2025年/3月8日]]
# [[:Wiktionary:每日一詞/2025年/3月15日]]
# [[:Wiktionary:外語每日一詞/2025年/3月8日]]
# [[:Wiktionary:外語每日一詞/2025年/3月7日]]
# [[:Wiktionary:外語每日一詞/2025年/3月6日]]
# [[:Wiktionary:外語每日一詞/2025年/3月5日]]
# [[:Wiktionary:外語每日一詞/2025年/3月4日]]
# [[:Wiktionary:外語每日一詞/2025年/3月3日]]
# [[:Wiktionary:外語每日一詞/2025年/3月2日]]
# [[:Wiktionary:每日一詞/2025年/3月14日]]
# [[:Wiktionary:每日一詞/2025年/3月13日]]
# [[:Wiktionary:每日一詞/2025年/3月12日]]
# [[:Wiktionary:每日一詞/2025年/3月11日]]
# [[:Wiktionary:每日一詞/2025年/3月9日]]
# [[:Wiktionary:每日一詞/2025年/3月10日]]
# [[:Wiktionary:每日一詞/2025年/3月7日]]
# [[:Wiktionary:每日一詞/2025年/3月6日]]
# [[:Wiktionary:外語每日一詞/2025年/3月1日]]
# [[:Wiktionary:外語每日一詞/2025年/2月28日]]
# [[:Wiktionary:外語每日一詞/2025年/2月27日]]
# [[:Wiktionary:每日一詞/2025年/3月4日]]
# [[:Wiktionary:每日一詞/2025年/3月2日]]
# [[:Wiktionary:每日一詞/2025年/3月5日]]
# [[:Wiktionary:每日一詞/2025年/3月3日]]
# [[:Wiktionary:每日一詞/2025年/3月1日]]
# [[:Wiktionary:每日一詞/2025年/2月27日]]
# [[:Wiktionary:外語每日一詞/2025年/2月26日]]
# [[:Wiktionary:外語每日一詞/2025年/2月25日]]
# [[:Wiktionary:外語每日一詞/2025年/2月24日]]
# [[:Wiktionary:外語每日一詞/2025年/2月23日]]
# [[:Wiktionary:外語每日一詞/2025年/2月22日]]
# [[:Wiktionary:每日一詞/2025年/2月28日]]
# [[:Wiktionary:每日一詞/2025年/2月26日]]
# [[:Wiktionary:每日一詞/2025年/2月22日]]
# [[:Wiktionary:每日一詞/2025年/2月24日]]
# [[:Wiktionary:每日一詞/2025年/2月20日]]
# [[:Wiktionary:每日一詞/2025年/2月25日]]
# [[:Wiktionary:外語每日一詞/2025年/2月21日]]
# [[:Wiktionary:外語每日一詞/2025年/2月20日]]
# [[:Wiktionary:外語每日一詞/2025年/2月19日]]
# [[:Wiktionary:外語每日一詞/2025年/2月18日]]
# [[:Wiktionary:每日一詞/2025年/2月23日]]
# [[:Wiktionary:每日一詞/2025年/2月21日]]
# [[:Wiktionary:外語每日一詞/2025年/2月17日]]
# [[:Wiktionary:外語每日一詞/2025年/2月16日]]
# [[:Wiktionary:每日一詞/2025年/2月19日]]
# [[:Wiktionary:每日一詞/2025年/2月18日]]
# [[:Wiktionary:每日一詞/2025年/2月17日]]
# [[:Wiktionary:外語每日一詞/2025年/2月14日]]
# [[:Wiktionary:外語每日一詞/2025年/2月15日]]
# [[:Wiktionary:外語每日一詞/2025年/2月13日]]
# [[:Wiktionary:每日一詞/2025年/2月16日]]
# [[:Wiktionary:每日一詞/2025年/2月14日]]
# [[:Wiktionary:每日一詞/2025年/2月15日]]
# [[:Wiktionary:外語每日一詞/2025年/5月5日]]
# [[:Wiktionary:外語每日一詞/2025年/2月11日]]
# [[:Wiktionary:外語每日一詞/2025年/2月10日]]
# [[:Wiktionary:外語每日一詞/2025年/2月9日]]
# [[:Wiktionary:外語每日一詞/2025年/2月8日]]
# [[:Wiktionary:每日一詞/2025年/2月12日]]
# [[:Wiktionary:外語每日一詞/2025年/2月7日]]
# [[:Wiktionary:每日一詞/2025年/2月13日]]
# [[:Wiktionary:每日一詞/2025年/2月11日]]
# [[:Wiktionary:每日一詞/2025年/2月9日]]
# [[:Wiktionary:每日一詞/2025年/2月10日]]
# [[:Wiktionary:每日一詞/2025年/2月6日]]
# [[:Wiktionary:每日一詞/2025年/2月8日]]
# [[:Wiktionary:每日一詞/2025年/8月10日]]
# [[:Wiktionary:外語每日一詞/2025年/2月6日]]
# [[:Wiktionary:外語每日一詞/2025年/2月12日]]
# [[:Wiktionary:每日一詞/2025年/2月7日]]
# [[:Wiktionary:每日一詞/2025年/2月5日]]
# [[:Wiktionary:每日一詞/2025年/2月4日]]
# [[:Wiktionary:外語每日一詞/2025年/2月5日]]
# [[:Wiktionary:外語每日一詞/2025年/2月3日]]
# [[:Wiktionary:外語每日一詞/2025年/2月2日]]
# [[:Wiktionary:外語每日一詞/2025年/1月30日]]
# [[:Wiktionary:外語每日一詞/2025年/2月1日]]
# [[:Wiktionary:外語每日一詞/2025年/1月31日]]
# [[:Wiktionary:外語每日一詞/2025年/1月29日]]
# [[:Wiktionary:外語每日一詞/2025年/1月26日]]
# [[:Wiktionary:外語每日一詞/2025年/1月25日]]
# [[:Wiktionary:外語每日一詞/2025年/1月24日]]
# [[:Wiktionary:外語每日一詞/2025年/1月23日]]
# [[:Wiktionary:外語每日一詞/2025年/1月27日]]
# [[:Wiktionary:每日一詞/2025年/2月3日]]
# [[:Wiktionary:外語每日一詞/2025年/2月4日]]
# [[:Wiktionary:外語每日一詞/2025年/1月28日]]
# [[:Wiktionary:外語每日一詞/2025年/1月22日]]
# [[:Wiktionary:每日一詞/2025年/2月2日]]
# [[:Wiktionary:每日一詞/2025年/2月1日]]
# [[:Wiktionary:每日一詞/2025年/1月31日]]
# [[:Wiktionary:每日一詞/2025年/1月30日]]
# [[:Wiktionary:每日一詞/2025年/1月27日]]
# [[:Wiktionary:每日一詞/2025年/1月28日]]
# [[:Wiktionary:每日一詞/2025年/1月25日]]
# [[:Wiktionary:每日一詞/2025年/1月26日]]
# [[:Wiktionary:每日一詞/2025年/1月24日]]
# [[:Wiktionary:每日一詞/2025年/1月22日]]
# [[:Wiktionary:每日一詞/2025年/1月23日]]
# [[:Wiktionary:每日一詞/2025年/1月21日]]
# [[:Wiktionary:每日一詞/2025年/1月19日]]
# [[:Wiktionary:外語每日一詞/2025年/1月21日]]
# [[:Wiktionary:外語每日一詞/2025年/1月20日]]
# [[:Wiktionary:每日一詞/2025年/1月20日]]
# [[:Wiktionary:外語每日一詞/2025年/1月19日]]
# [[:Wiktionary:外語每日一詞/2025年/1月18日]]
# [[:Wiktionary:外語每日一詞/2025年/1月16日]]
# [[:Wiktionary:每日一詞/2025年/1月18日]]
# [[:Wiktionary:每日一詞/2025年/1月17日]]
# [[:Wiktionary:每日一詞/2025年/1月16日]]
# [[:Wiktionary:外語每日一詞/2025年/1月14日]]
# [[:Wiktionary:外語每日一詞/2025年/1月15日]]
# [[:Wiktionary:每日一詞/2025年/1月15日]]
# [[:Wiktionary:每日一詞/2025年/1月13日]]
# [[:Wiktionary:外語每日一詞/2025年/1月13日]]
# [[:Wiktionary:外語每日一詞/2025年/1月12日]]
# [[:Wiktionary:外語每日一詞/2025年/1月11日]]
# [[:Wiktionary:外語每日一詞/2025年/1月9日]]
# [[:Wiktionary:每日一詞/2025年/1月14日]]
# [[:Wiktionary:每日一詞/2025年/1月12日]]
# [[:Wiktionary:每日一詞/2025年/1月9日]]
# [[:Wiktionary:外語每日一詞/2025年/1月8日]]
# [[:Wiktionary:外語每日一詞/2025年/1月7日]]
# [[:Wiktionary:每日一詞/2025年/1月8日]]
# [[:Wiktionary:每日一詞/2025年/1月10日]]
# [[:Wiktionary:每日一詞/2025年/1月7日]]
# [[:Wiktionary:每日一詞/2025年/1月6日]]
# [[:Wiktionary:每日一詞/2025年/1月5日]]
# [[:Wiktionary:每日一詞/2025年/1月11日]]
# [[:Wiktionary:每日一詞/2025年/1月4日]]
# [[:Wiktionary:外語每日一詞/2025年/1月5日]]
# [[:Wiktionary:外語每日一詞/2025年/1月4日]]
# [[:Wiktionary:每日一詞/2025年/1月3日]]
# [[:Wiktionary:外語每日一詞/2025年/1月3日]]
# [[:Wiktionary:外語每日一詞/2025年/1月17日]]
# [[:Wiktionary:每日一詞/2025年/1月29日]]
# [[:Wiktionary:每日一詞/2025年/1月1日]]
# [[:Wiktionary:外語每日一詞/2025年/1月2日]]
# [[:Wiktionary:外語每日一詞/2025年/1月1日]]
# [[:Wiktionary:每日一詞/2025年/1月2日]]
# [[:Wiktionary:每日一詞/2024年/12月31日]]
# [[:Wiktionary:外語每日一詞/2024年/12月29日]]
# [[:Wiktionary:外語每日一詞/2024年/12月28日]]
# [[:Wiktionary:外語每日一詞/2024年/12月31日]]
# [[:Wiktionary:每日一詞/2024年/12月30日]]
# [[:Wiktionary:外語每日一詞/2025年/1月10日]]
# [[:Wiktionary:外語每日一詞/2024年/12月27日]]
# [[:Wiktionary:外語每日一詞/2025年/1月6日]]
# [[:Wiktionary:每日一詞/2024年/12月28日]]
# [[:Wiktionary:每日一詞/2024年/12月29日]]
# [[:Wiktionary:每日一詞/2024年/12月27日]]
# [[:Wiktionary:每日一詞/2024年/12月25日]]
# [[:Wiktionary:每日一詞/2024年/12月24日]]
# [[:Wiktionary:每日一詞/2024年/12月23日]]
# [[:Wiktionary:外語每日一詞/2024年/12月25日]]
# [[:Wiktionary:外語每日一詞/2024年/12月26日]]
# [[:Wiktionary:外語每日一詞/2024年/12月24日]]
# [[:Wiktionary:外語每日一詞/2024年/12月23日]]
# [[:Wiktionary:外語每日一詞/2024年/12月21日]]
# [[:Wiktionary:每日一詞/2024年/12月22日]]
# [[:Wiktionary:外語每日一詞/2024年/12月20日]]
# [[:Wiktionary:外語每日一詞/2024年/12月19日]]
# [[:Wiktionary:外語每日一詞/2024年/12月18日]]
# [[:Wiktionary:外語每日一詞/2024年/12月22日]]
# [[:Wiktionary:每日一詞/2024年/12月21日]]
# [[:Wiktionary:每日一詞/2024年/12月20日]]
# [[:Wiktionary:每日一詞/2024年/12月19日]]
# [[:Wiktionary:每日一詞/2024年/12月18日]]
# [[:Wiktionary:外語每日一詞/2024年/12月16日]]
# [[:Wiktionary:外語每日一詞/2024年/12月15日]]
# [[:Wiktionary:外語每日一詞/2024年/12月14日]]
# [[:Wiktionary:外語每日一詞/2024年/12月13日]]
# [[:Wiktionary:外語每日一詞/2024年/12月12日]]
# [[:Wiktionary:外語每日一詞/2024年/12月11日]]
# [[:Wiktionary:外語每日一詞/2024年/12月10日]]
# [[:Wiktionary:每日一詞/2024年/12月17日]]
# [[:Wiktionary:每日一詞/2024年/12月16日]]
# [[:Wiktionary:外語每日一詞/2024年/12月9日]]
# [[:Wiktionary:每日一詞/2024年/12月15日]]
# [[:Wiktionary:每日一詞/2024年/12月14日]]
# [[:Wiktionary:外語每日一詞/2024年/12月7日]]
# [[:Wiktionary:外語每日一詞/2024年/12月6日]]
# [[:Wiktionary:外語每日一詞/2024年/12月4日]]
# [[:Wiktionary:外語每日一詞/2024年/12月3日]]
# [[:Wiktionary:外語每日一詞/2024年/12月17日]]
# [[:Wiktionary:外語每日一詞/2024年/12月2日]]
# [[:Wiktionary:每日一詞/2024年/12月13日]]
# [[:Wiktionary:每日一詞/2024年/12月12日]]
# [[:Wiktionary:每日一詞/2024年/12月10日]]
# [[:Wiktionary:每日一詞/2024年/12月8日]]
# [[:Wiktionary:每日一詞/2024年/12月11日]]
# [[:Wiktionary:每日一詞/2024年/12月6日]]
# [[:Wiktionary:每日一詞/2024年/12月9日]]
# [[:Wiktionary:每日一詞/2024年/12月4日]]
# [[:Wiktionary:外語每日一詞/2024年/12月8日]]
# [[:Wiktionary:外語每日一詞/2024年/12月1日]]
# [[:Wiktionary:外語每日一詞/2024年/12月5日]]
# [[:Wiktionary:外語每日一詞/2024年/11月30日]]
# [[:Wiktionary:外語每日一詞/2024年/11月29日]]
# [[:Wiktionary:每日一詞/2024年/12月7日]]
# [[:Wiktionary:每日一詞/2024年/12月2日]]
# [[:Wiktionary:每日一詞/2024年/11月29日]]
# [[:Wiktionary:每日一詞/2024年/12月5日]]
# [[:Wiktionary:外語每日一詞/2024年/11月28日]]
# [[:Wiktionary:每日一詞/2024年/12月3日]]
# [[:Wiktionary:每日一詞/2024年/12月1日]]
# [[:Wiktionary:每日一詞/2024年/11月30日]]
# [[:Wiktionary:每日一詞/2024年/11月28日]]
# [[:Wiktionary:外語每日一詞/2024年/11月27日]]
# [[:Wiktionary:外語每日一詞/2024年/11月26日]]
# [[:Wiktionary:每日一詞/2024年/11月26日]]
# [[:Wiktionary:每日一詞/2024年/11月25日]]
# [[:Wiktionary:外語每日一詞/2024年/11月25日]]
# [[:Wiktionary:外語每日一詞/2024年/11月24日]]
# [[:Wiktionary:每日一詞/2024年/11月24日]]
# [[:Wiktionary:每日一詞/2024年/11月23日]]
# [[:Wiktionary:外語每日一詞/2024年/11月23日]]
# [[:Wiktionary:每日一詞/2024年/11月22日]]
# [[:Wiktionary:每日一詞/2024年/11月21日]]
# [[:Wiktionary:每日一詞/2024年/11月27日]]
# [[:Wiktionary:每日一詞/2024年/11月20日]]
# [[:Wiktionary:外語每日一詞/2024年/11月22日]]
# [[:Wiktionary:每日一詞/2024年/11月19日]]
# [[:Wiktionary:外語每日一詞/2024年/11月21日]]
# [[:Wiktionary:外語每日一詞/2024年/11月20日]]
# [[:Wiktionary:外語每日一詞/2024年/11月19日]]
# [[:Wiktionary:每日一詞/2024年/11月18日]]
# [[:Wiktionary:每日一詞/2024年/11月17日]]
# [[:Wiktionary:外語每日一詞/2024年/11月18日]]
# [[:Wiktionary:外語每日一詞/2024年/11月17日]]
# [[:Wiktionary:每日一詞/2024年/11月14日]]
# [[:Wiktionary:每日一詞/2024年/11月15日]]
# [[:Wiktionary:外語每日一詞/2024年/11月16日]]
# [[:Wiktionary:外語每日一詞/2024年/11月14日]]
# [[:Wiktionary:外語每日一詞/2024年/11月13日]]
# [[:Wiktionary:外語每日一詞/2024年/11月12日]]
# [[:Wiktionary:外語每日一詞/2024年/11月15日]]
# [[:Wiktionary:每日一詞/2024年/11月13日]]
# [[:Wiktionary:外語每日一詞/2024年/11月8日]]
# [[:Wiktionary:外語每日一詞/2024年/11月11日]]
# [[:Wiktionary:每日一詞/2024年/11月11日]]
# [[:Wiktionary:每日一詞/2024年/11月12日]]
# [[:Wiktionary:每日一詞/2024年/11月16日]]
# [[:Wiktionary:每日一詞/2024年/11月9日]]
# [[:Wiktionary:每日一詞/2024年/11月10日]]
# [[:Wiktionary:每日一詞/2024年/11月8日]]
# [[:Wiktionary:外語每日一詞/2024年/11月9日]]
# [[:Wiktionary:外語每日一詞/2024年/11月7日]]
# [[:Wiktionary:外語每日一詞/2024年/11月4日]]
# [[:Wiktionary:外語每日一詞/2024年/11月6日]]
# [[:Wiktionary:每日一詞/2024年/11月7日]]
# [[:Wiktionary:外語每日一詞/2024年/11月3日]]
# [[:Wiktionary:每日一詞/2024年/11月4日]]
# [[:Wiktionary:每日一詞/2024年/11月5日]]
# [[:Wiktionary:每日一詞/2024年/11月2日]]
# [[:Wiktionary:每日一詞/2024年/11月3日]]
# [[:Wiktionary:每日一詞/2024年/10月31日]]
# [[:Wiktionary:每日一詞/2024年/11月1日]]
# [[:Wiktionary:外語每日一詞/2024年/11月1日]]
# [[:Wiktionary:外語每日一詞/2024年/11月10日]]
# [[:Wiktionary:外語每日一詞/2024年/10月31日]]
# [[:Wiktionary:外語每日一詞/2024年/10月30日]]
# [[:Wiktionary:外語每日一詞/2024年/10月29日]]
# [[:Wiktionary:每日一詞/2024年/10月30日]]
# [[:Wiktionary:每日一詞/2024年/10月29日]]
# [[:Wiktionary:每日一詞/2024年/10月28日]]
# [[:Wiktionary:外語每日一詞/2024年/11月5日]]
# [[:Wiktionary:外語每日一詞/2024年/10月28日]]
# [[:Wiktionary:每日一詞/2024年/11月6日]]
# [[:Wiktionary:每日一詞/2024年/10月27日]]
# [[:Wiktionary:每日一詞/2024年/10月26日]]
# [[:Wiktionary:每日一詞/2024年/10月25日]]
# [[:Wiktionary:外語每日一詞/2024年/10月27日]]
# [[:Wiktionary:每日一詞/2024年/10月24日]]
# [[:Wiktionary:外語每日一詞/2024年/10月26日]]
# [[:Wiktionary:外語每日一詞/2024年/11月2日]]
# [[:Wiktionary:每日一詞/2024年/10月23日]]
# [[:Wiktionary:每日一詞/2024年/10月22日]]
# [[:Wiktionary:每日一詞/2024年/10月21日]]
# [[:Wiktionary:每日一詞/2024年/10月20日]]
# [[:Wiktionary:每日一詞/2024年/10月19日]]
# [[:Wiktionary:外語每日一詞/2024年/10月23日]]
# [[:Wiktionary:外語每日一詞/2024年/10月22日]]
# [[:Wiktionary:外語每日一詞/2024年/10月25日]]
# [[:Wiktionary:每日一詞/2024年/10月18日]]
# [[:Wiktionary:每日一詞/2024年/10月17日]]
# [[:Wiktionary:每日一詞/2024年/10月16日]]
# [[:Wiktionary:每日一詞/2024年/10月15日]]
# [[:Wiktionary:每日一詞/2024年/10月14日]]
# [[:Wiktionary:每日一詞/2024年/10月13日]]
# [[:Wiktionary:每日一詞/2024年/10月12日]]
# [[:Wiktionary:每日一詞/2024年/10月11日]]
# [[:Wiktionary:外語每日一詞/2024年/10月21日]]
# [[:Wiktionary:每日一詞/2024年/10月10日]]
# [[:Wiktionary:每日一詞/2024年/10月9日]]
# [[:Wiktionary:每日一詞/2024年/10月8日]]
# [[:Wiktionary:每日一詞/2024年/10月7日]]
# [[:Wiktionary:每日一詞/2024年/10月6日]]
# [[:Wiktionary:外語每日一詞/2024年/10月24日]]
# [[:Wiktionary:外語每日一詞/2024年/10月20日]]
# [[:Wiktionary:外語每日一詞/2024年/10月18日]]
# [[:Wiktionary:外語每日一詞/2024年/10月16日]]
# [[:Wiktionary:外語每日一詞/2024年/10月15日]]
# [[:Wiktionary:外語每日一詞/2024年/10月1日]]
# [[:Wiktionary:每日一詞/2024年/9月30日]]
# [[:Wiktionary:每日一詞/2024年/10月1日]]
# [[:Wiktionary:每日一詞/2024年/9月29日]]
# [[:Wiktionary:外語每日一詞/2024年/10月14日]]
# [[:Wiktionary:每日一詞/2024年/9月28日]]
# [[:Wiktionary:每日一詞/2024年/9月27日]]
# [[:Wiktionary:外語每日一詞/2024年/10月19日]]
# [[:Wiktionary:外語每日一詞/2024年/10月17日]]
# [[:Wiktionary:外語每日一詞/2024年/10月13日]]
# [[:Wiktionary:外語每日一詞/2024年/10月12日]]
# [[:Wiktionary:外語每日一詞/2024年/10月11日]]
# [[:Wiktionary:外語每日一詞/2024年/10月10日]]
# [[:Wiktionary:每日一詞/2024年/12月26日]]
# [[:Wiktionary:外語每日一詞/2024年/12月30日]]
# [[:Wiktionary:外語每日一詞/2024年/10月8日]]
# [[:Wiktionary:每日一詞/2024年/10月5日]]
# [[:Wiktionary:外語每日一詞/2024年/10月7日]]
# [[:Wiktionary:每日一詞/2024年/10月4日]]
# [[:Wiktionary:外語每日一詞/2024年/10月6日]]
# [[:Wiktionary:每日一詞/2024年/10月2日]]
# [[:Wiktionary:外語每日一詞/2024年/10月5日]]
# [[:Wiktionary:外語每日一詞/2024年/10月4日]]
# [[:Wiktionary:外語每日一詞/2024年/9月30日]]
# [[:Wiktionary:外語每日一詞/2024年/10月9日]]
# [[:Wiktionary:外語每日一詞/2024年/9月29日]]
# [[:Wiktionary:外語每日一詞/2024年/9月28日]]
# [[:Wiktionary:外語每日一詞/2024年/9月26日]]
# [[:Wiktionary:外語每日一詞/2024年/10月3日]]
# [[:Wiktionary:外語每日一詞/2024年/9月25日]]
# [[:Wiktionary:外語每日一詞/2024年/9月24日]]
# [[:Wiktionary:每日一詞/2024年/9月26日]]
# [[:Wiktionary:外語每日一詞/2024年/9月23日]]
# [[:Wiktionary:每日一詞/2024年/9月25日]]
# [[:Wiktionary:每日一詞/2024年/9月24日]]
# [[:Wiktionary:外語每日一詞/2024年/9月22日]]
# [[:Wiktionary:每日一詞/2024年/10月3日]]
# [[:Wiktionary:外語每日一詞/2024年/9月21日]]
# [[:Wiktionary:外語每日一詞/2024年/10月2日]]
# [[:Wiktionary:外語每日一詞/2024年/9月20日]]
# [[:Wiktionary:外語每日一詞/2024年/9月27日]]
# [[:Wiktionary:外語每日一詞/2024年/9月19日]]
# [[:Wiktionary:外語每日一詞/2024年/9月18日]]
# [[:Wiktionary:外語每日一詞/2024年/9月17日]]
# [[:Wiktionary:每日一詞/2024年/9月23日]]
# [[:Wiktionary:外語每日一詞/2024年/9月16日]]
# [[:Wiktionary:外語每日一詞/2024年/9月15日]]
# [[:Wiktionary:每日一詞/2024年/9月22日]]
# [[:Wiktionary:每日一詞/2024年/9月21日]]
# [[:Wiktionary:每日一詞/2024年/9月20日]]
# [[:Wiktionary:外語每日一詞/2024年/9月14日]]
# [[:Wiktionary:每日一詞/2024年/9月19日]]
# [[:Wiktionary:外語每日一詞/2024年/9月13日]]
# [[:Wiktionary:外語每日一詞/2024年/9月12日]]
# [[:Wiktionary:每日一詞/2024年/9月18日]]
# [[:Wiktionary:每日一詞/2024年/9月17日]]
# [[:Wiktionary:每日一詞/2024年/9月16日]]
# [[:Wiktionary:外語每日一詞/2024年/9月11日]]
# [[:Wiktionary:外語每日一詞/2024年/9月10日]]
# [[:Wiktionary:每日一詞/2024年/9月15日]]
# [[:Wiktionary:每日一詞/2024年/9月14日]]
# [[:Wiktionary:外語每日一詞/2024年/9月9日]]
# [[:Wiktionary:外語每日一詞/2024年/9月8日]]
# [[:Wiktionary:外語每日一詞/2024年/8月16日]]
# [[:Wiktionary:每日一詞/2024年/9月13日]]
# [[:Wiktionary:每日一詞/2024年/9月12日]]
# [[:Wiktionary:外語每日一詞/2024年/9月7日]]
# [[:Wiktionary:外語每日一詞/2024年/9月6日]]
# [[:Wiktionary:每日一詞/2024年/9月11日]]
# [[:Wiktionary:每日一詞/2024年/9月10日]]
# [[:Wiktionary:每日一詞/2024年/9月9日]]
# [[:Wiktionary:外語每日一詞/2024年/9月5日]]
# [[:Wiktionary:外語每日一詞/2024年/9月4日]]
# [[:Wiktionary:外語每日一詞/2024年/9月1日]]
# [[:Wiktionary:外語每日一詞/2024年/9月3日]]
# [[:Wiktionary:外語每日一詞/2024年/8月14日]]
# [[:Wiktionary:外語每日一詞/2024年/8月13日]]
# [[:Wiktionary:每日一詞/2024年/9月8日]]
# [[:Wiktionary:每日一詞/2024年/9月7日]]
# [[:Wiktionary:每日一詞/2024年/9月6日]]
# [[:Wiktionary:每日一詞/2024年/9月5日]]
# [[:Wiktionary:每日一詞/2024年/9月4日]]
# [[:Wiktionary:每日一詞/2024年/9月3日]]
# [[:Wiktionary:外語每日一詞/2024年/8月12日]]
# [[:Wiktionary:外語每日一詞/2024年/8月11日]]
# [[:Wiktionary:外語每日一詞/2024年/8月15日]]
# [[:Wiktionary:每日一詞/2024年/9月2日]]
# [[:Wiktionary:外語每日一詞/2024年/8月10日]]
# [[:Wiktionary:每日一詞/2024年/8月7日]]
# [[:Wiktionary:每日一詞/2024年/9月1日]]
# [[:Wiktionary:每日一詞/2024年/8月5日]]
# [[:Wiktionary:外語每日一詞/2024年/8月9日]]
# [[:Wiktionary:外語每日一詞/2024年/8月8日]]
# [[:Wiktionary:外語每日一詞/2024年/8月7日]]
# [[:Wiktionary:外語每日一詞/2024年/8月6日]]
# [[:Wiktionary:外語每日一詞/2024年/8月5日]]
# [[:Wiktionary:外語每日一詞/2024年/8月4日]]
# [[:Wiktionary:外語每日一詞/2024年/8月3日]]
# [[:Wiktionary:每日一詞/2024年/8月6日]]
# [[:Wiktionary:每日一詞/2024年/8月4日]]
# [[:Wiktionary:每日一詞/2024年/8月3日]]
# [[:Wiktionary:每日一詞/2024年/8月2日]]
# [[:Wiktionary:外語每日一詞/2024年/8月2日]]
# [[:Wiktionary:每日一詞/2024年/8月1日]]
# [[:Wiktionary:外語每日一詞/2024年/8月1日]]
# [[:Wiktionary:每日一詞/2024年/8月31日]]
# [[:Wiktionary:外語每日一詞/2024年/8月31日]]
# [[:Wiktionary:每日一詞/2024年/8月30日]]
# [[:Wiktionary:每日一詞/2024年/8月29日]]
# [[:Wiktionary:外語每日一詞/2024年/8月30日]]
# [[:Wiktionary:外語每日一詞/2024年/8月29日]]
# [[:Wiktionary:外語每日一詞/2024年/8月28日]]
# [[:Wiktionary:外語每日一詞/2024年/8月27日]]
# [[:Wiktionary:外語每日一詞/2024年/8月26日]]
# [[:Wiktionary:每日一詞/2024年/8月28日]]
# [[:Wiktionary:外語每日一詞/2024年/8月25日]]
# [[:Wiktionary:每日一詞/2024年/8月27日]]
# [[:Wiktionary:每日一詞/2024年/8月26日]]
# [[:Wiktionary:每日一詞/2024年/8月25日]]
# [[:Wiktionary:每日一詞/2024年/8月24日]]
# [[:Wiktionary:每日一詞/2024年/8月23日]]
# [[:Wiktionary:外語每日一詞/2024年/8月24日]]
# [[:Wiktionary:每日一詞/2024年/8月22日]]
# [[:Wiktionary:每日一詞/2024年/8月21日]]
# [[:Wiktionary:每日一詞/2024年/8月20日]]
# [[:Wiktionary:外語每日一詞/2024年/8月23日]]
# [[:Wiktionary:外語每日一詞/2024年/8月22日]]
# [[:Wiktionary:每日一詞/2024年/8月19日]]
# [[:Wiktionary:外語每日一詞/2024年/8月21日]]
# [[:Wiktionary:外語每日一詞/2024年/8月20日]]
# [[:Wiktionary:外語每日一詞/2024年/8月19日]]
# [[:Wiktionary:每日一詞/2024年/8月18日]]
# [[:Wiktionary:每日一詞/2024年/8月17日]]
# [[:Wiktionary:外語每日一詞/2024年/8月18日]]
# [[:Wiktionary:首頁/分類]]
# [[:Wiktionary:外語每日一詞/2024年/8月17日]]
# [[:Wiktionary:外語每日一詞/2024年/9月2日]]
# [[:Wiktionary:外語每日一詞/預設]]
# [[:Wiktionary:每日一詞/2024年/8月16日]]
# [[:Wiktionary:每日一詞/2024年/8月15日]]
# [[:Wiktionary:每日一詞/2024年/8月14日]]
# [[:Wiktionary:每日一詞/2024年/8月13日]]
# [[:Wiktionary:每日一詞/2024年/8月12日]]
# [[:Wiktionary:每日一詞/2024年/8月11日]]
# [[:Wiktionary:每日一詞/2024年/8月10日]]
# [[:Wiktionary:每日一詞/2024年/8月9日]]
# [[:Wiktionary:每日一詞/預設]]
# [[:Wiktionary:每日一詞/2024年/8月8日]]
# [[:Wiktionary:首頁/語言入口]]
# [[:Wiktionary:首頁/段落]]
# [[:Wiktionary:首頁/首頁統計]]
# [[:Wiktionary:Picture dictionary/th:prep-place]]
# [[:Wiktionary:Picture dictionary/th:head]]
# [[:Wiktionary:亞美尼亞語轉寫]]
# [[:Wiktionary:蒙古語轉寫]]
# [[:Wiktionary:布里亞特語轉寫]]
# [[:Wiktionary:科普特語轉寫]]
# [[:Wiktionary:藏語轉寫]]
# [[:Wiktionary:日語轉寫]]
# [[:Wiktionary:馬其頓語轉寫]]
# [[:Wiktionary:維吾爾語轉寫]]
# [[:Wiktionary:統計/熱詞]]
# [[:Wiktionary:坏笑话和删除的胡话/Gates]]
# [[:Wiktionary:坏笑话和删除的胡话/Piyush Karia]]
# [[:Wiktionary:坏笑话和删除的胡话/甘肃省委组织部]]
# [[:Wiktionary:坏笑话和删除的胡话/女性的胸部]]
# [[:Wiktionary:坏笑话和删除的胡话/李晓明]]
# [[:Wiktionary:坏笑话和删除的胡话/因小失大的出处]]
# [[:Wiktionary:坏笑话和删除的胡话/template]]
# [[:Wiktionary:新词推荐]]
# [[:Wiktionary:佈局解釋/漢語]]
# [[:Wiktionary:佈局解釋/日語]]
# [[:Wiktionary:创建页面]]
# [[:Wiktionary:样式指南]]
# [[:Wiktionary:维基词典语言列表]]
# [[:Wiktionary:注音索引/ㄓ]]
# [[:Wiktionary:WikiProject汉语]]
# [[:Wiktionary:茶室/header]]
# [[:Wiktionary:注音索引/ㄕ]]
# [[:Wiktionary:漢語詞族/于]]
# [[:Wiktionary:漢語詞族]]
# [[:Wiktionary:漢語詞族/丩]]
# [[:Wiktionary:中式英語]]
# [[:Wiktionary:洋泾浜英语]]
# [[:Wiktionary:维基百科版首页]]
# [[:Wiktionary:漢語辭彙索引/冷]]
# [[:Wiktionary:德语不规则动词]]
# [[:Wiktionary:德语动词]]
# [[:Wiktionary:中文数字]]
# [[:Wiktionary:漢語辭彙索引/一]]
# [[:Wiktionary:漢語辭彙索引/了]]
# [[:Wiktionary:现代标准汉语]]
# [[:Wiktionary:漢語辭彙索引/就]]
# [[:Wiktionary:漢語辭彙索引/欲]]
# [[:Wiktionary:漢語辭彙索引/埃]]
# [[:Wiktionary:漢語辭彙索引/哀]]
# [[:Wiktionary:化學專有名詞 C]]
# [[:Wiktionary:化學專有名詞 B]]
# [[:Wiktionary:化學專有名詞 A]]
# [[:Wiktionary:術語專有名詞]]
# [[:Wiktionary:漢字專題/invite]]
# [[:Wiktionary:漢字專題/漢字相關資訊參考]]
# [[:Wiktionary:漢字專題/編輯參考]]
# [[:Wiktionary:漢語發音表記]]
# [[:Wiktionary:朝鲜语發音表記]]
# [[:Wiktionary:WikiProject 漢字/樣例]]
# [[:Wiktionary:Chaguan]]
# [[:Wiktionary:諺文索引/ㅎ]]
# [[:Wiktionary:諺文索引/ㅍ]]
# [[:Wiktionary:諺文索引/ㅌ]]
# [[:Wiktionary:諺文索引/ㅋ]]
# [[:Wiktionary:諺文索引/ㅊ]]
# [[:Wiktionary:諺文索引/ㅈ]]
# [[:Wiktionary:諺文索引/ㅇ]]
# [[:Wiktionary:諺文索引/ㅅ]]
# [[:Wiktionary:諺文索引/ㅂ]]
# [[:Wiktionary:諺文索引/ㅁ]]
# [[:Wiktionary:諺文索引/ㄹ]]
# [[:Wiktionary:諺文索引/ㄷ]]
# [[:Wiktionary:諺文索引/ㄴ]]
# [[:Wiktionary:諺文索引/ㄱ]]
# [[:Wiktionary:粤語常用字]]
# [[:Wiktionary:快捷方式]]
# [[:Wiktionary:漢語辭彙索引/阿]]
# [[:Wiktionary:WikiProject概念分類]]
# [[:Wiktionary:快速索引]]
# [[:Wiktionary:日语词汇索引]]
# [[:Wiktionary:共享资源图像巡视/header]]
# [[:Wiktionary:常见问题解答/读者]]
# [[:Wiktionary:常见问题解答/项目]]
# [[:Wiktionary:antivandaltool.js]]
# [[:Wiktionary:其他语言]]
# [[:Wiktionary:姊妹项目]]
# [[:Wiktionary:动词]]
# [[:Wiktionary:形容词]]
# [[:Wiktionary:名词]]
# [[:Wiktionary:格式]]
# [[:Wiktionary:葡萄牙语]]
# [[:Wiktionary:英语]]
# [[:Wiktionary:意大利语]]
# [[:Wiktionary:注音]]
# [[:Wiktionary:解释]]
# [[:Wiktionary:汉字统一部首表]]
# [[:Wiktionary:第二次汉字简化方案(草案)]]
# [[:Wiktionary:普通话异读词审音表]]
# [[:Wiktionary:越南语基本条目]]
# [[:Wiktionary:乌尔都语基本条目]]
# [[:Wiktionary:匈牙利语基本条目]]
# [[:Wiktionary:芬兰语基本条目]]
# [[:Wiktionary:弗里西语基本条目]]
# [[:Wiktionary:法罗语基本条目]]
# [[:Wiktionary:葡萄牙语基本条目]]
# [[:Wiktionary:荷兰语基本条目]]
# [[:Wiktionary:波兰语基本条目]]
# [[:Wiktionary:斐济语基本条目]]
# [[:Wiktionary:所有模板列表/语言]]
# [[:Wiktionary:所有模板列表]]
# [[:Wiktionary:马尔他语基本条目]]
# [[:Wiktionary:希伯来语基本条目]]
# [[:Wiktionary:阿拉伯语基本条目]]
# [[:Wiktionary:阿姆哈拉语基本条目]]
# [[:Wiktionary:斯洛文尼亚语基本条目]]
# [[:Wiktionary:斯洛伐克语基本条目]]
# [[:Wiktionary:僧伽罗语基本条目]]
# [[:Wiktionary:萨丁尼亚语基本条目]]
# [[:Wiktionary:梵语基本条目]]
# [[:Wiktionary:普什图语基本条目]]
# [[:Wiktionary:旁遮普语基本条目]]
# [[:Wiktionary:奥塞梯语基本条目]]
# [[:Wiktionary:尼泊尔语基本条目]]
# [[:Wiktionary:低地德语基本条目]]
# [[:Wiktionary:卢森堡语基本条目]]
# [[:Wiktionary:康瓦尔语基本条目]]
# [[:Wiktionary:印地语基本条目]]
# [[:Wiktionary:马恩语基本条目]]
# [[:Wiktionary:盖尔语基本条目]]
# [[:Wiktionary:爱尔兰语基本条目]]
# [[:Wiktionary:法语基本条目]]
# [[:Wiktionary:波斯语基本条目]]
# [[:Wiktionary:威尔士语基本条目]]
# [[:Wiktionary:布列塔尼语基本条目]]
# [[:Wiktionary:孟加拉语基本条目]]
# [[:Wiktionary:阿萨姆语基本条目]]
# [[:Wiktionary:世界语基本条目]]
# [[:Wiktionary:伊多语基本条目]]
# [[:Wiktionary:道本语基本条目]]
# [[:Wiktionary:乌克兰语基本条目]]
# [[:Wiktionary:瑞典语基本条目]]
# [[:Wiktionary:塞尔维亚语基本条目]]
# [[:Wiktionary:西西里语基本条目]]
# [[:Wiktionary:俄语基本条目]]
# [[:Wiktionary:罗马尼亚语基本条目]]
# [[:Wiktionary:挪威语基本条目]]
# [[:Wiktionary:新挪威语基本条目]]
# [[:Wiktionary:拉脱维亚语基本条目]]
# [[:Wiktionary:立陶宛语基本条目]]
# [[:Wiktionary:拉丁语基本条目]]
# [[:Wiktionary:意大利语基本条目]]
# [[:Wiktionary:克罗地亚语基本条目]]
# [[:Wiktionary:爱沙尼亚语基本条目]]
# [[:Wiktionary:西班牙语基本条目]]
# [[:Wiktionary:英语基本条目]]
# [[:Wiktionary:德语基本条目]]
# [[:Wiktionary:丹麦语基本条目]]
# [[:Wiktionary:捷克语基本条目]]
# [[:Wiktionary:科西嘉语基本条目]]
# [[:Wiktionary:加泰兰语基本条目]]
# [[:Wiktionary:保加利亚语基本条目]]
# [[:Wiktionary:南非语基本条目]]
# [[:Wiktionary:冰岛语基本条目]]
# [[:Wiktionary:GNU自由文档许可证文本/非正式翻译]]
# [[:Wiktionary:专题/歇后语]]
# [[:Wiktionary:专题/成语]]
# [[:Wiktionary:度量衡]]
# [[:Wiktionary:Block log]]
# [[:Wiktionary:藏语词汇索引/བ་]]
# [[:Wiktionary:藏语词汇索引]]
# [[:Wiktionary:印地语汇索引]]
# [[:Wiktionary:法语规则动词变位表]]
# [[:Wiktionary:法语]]
# [[:Wiktionary:汉语]]
# [[:Wiktionary:消息定制]]
# [[:Wiktionary:MediaWiki索引]]
# [[:Wiktionary:Protection log]]
# [[:Wiktionary:删除纪录]]
# [[:Wiktionary:图像标记]]
# [[:Wiktionary:工具]]
# [[:Wiktionary:漢字專題]]
# [[:Wiktionary:WikiProject/模板]]
# [[:Wiktionary:词典术语]]
# [[:Wiktionary:新词新语]]
# [[:Wiktionary:上载纪录]]
== Template ==
# [[:Template:R:lt:VŽ]]
# [[:Template:Wortschatz Leipzig frequency list header]]
# [[:Template:Search box]]
# [[:Template:Flatlist]]
# [[:Template:U:ru:aspectual stress variant]]
# [[:Template:R:sva:Saghliani:2016]]
# [[:Template:List:countries in Asia/uz]]
# [[:Template:List:countries in North America/de]]
# [[:Template:List:countries in South America/de]]
# [[:Template:R:ssb:Akamine:2003]]
# [[:Template:R:nun:Sun:2005]]
# [[:Template:Demo2c]]
# [[:Template:R:liv:LDW]]
# [[:Template:R:ssf:Niida:2018]]
# [[:Template:Table:relative dates/it]]
# [[:Template:Table:days of the week/enm]]
# [[:Template:List:Cereals/en]]
# [[:Template:R:sl:Imena]]
# [[:Template:Dialect map]]
# [[:Template:R:sij:Bradshaw:2025]]
# [[:Template:R:suc:Bulalang:2024]]
# [[:Template:List:constituent countries of the United Kingdom/vi]]
# [[:Template:List:countries in South America/ko]]
# [[:Template:R:bkz:Andersen:2014]]
# [[:Template:R:nmb:Fox:1979]]
# [[:Template:R:lzl:Crowley:2006]]
# [[:Template:Wal-prop]]
# [[:Template:List:continents/wal]]
# [[:Template:List:countries in Europe/wal]]
# [[:Template:R:Key & Key 1953]]
# [[:Template:Mong-decl]]
# [[:Template:Xng-pron]]
# [[:Template:RQ:Shakespeare Henry 4-1]]
# [[:Template:Etystub]]
# [[:Template:RQ:Webster Malfi]]
# [[:Template:RQ:Shakespeare As You Like It]]
# [[:Template:Also/urt]]
# [[:Template:Hnn-adv]]
# [[:Template:Hil-adv]]
# [[:Template:Eggcorn of]]
# [[:Template:R:tai:PPT]]
# [[:Template:RQ:cather Song of the Lark]]
# [[:Template:Trans-top-see]]
# [[:Template:Piecewise doublet]]
# [[:Template:Lt-noun-m-us-2]]
# [[:Template:Interproject-box]]
# [[:Template:Fro-conj-frire]]
# [[:Template:Jpx-hcj-kanjitab]]
# [[:Template:Auto cat/test]]
# [[:Template:RQ:amf:Haalin Mallano]]
# [[:Template:Fo-decl-noun-n4]]
# [[:Template:Fo-decl-noun-m15-p]]
# [[:Template:Sh-part form]]
# [[:Template:Mn-decl-noun1]]
# [[:Template:Xal-verb]]
# [[:Template:Mn-verb-form]]
# [[:Template:Mn-vh]]
# [[:Template:Mn-suffix]]
# [[:Template:Izh-decl/kärpäin]]
# [[:Template:Ht-ety-z]]
# [[:Template:Ba-prondecl-base]]
# [[:Template:Mt-conj/I-ae-oo]]
# [[:Template:Kzg-kanji]]
# [[:Template:Okn-head]]
# [[:Template:Orv-decl-noun-u]]
# [[:Template:Ofs-conj-wk2]]
# [[:Template:Paper-A]]
# [[:Template:Paper sizes]]
# [[:Template:ISO 216]]
# [[:Template:Fa-l]]
# [[:Template:List:seasons/zh]]
# [[:Template:List:seasons/vo]]
# [[:Template:List:seasons/ug]]
# [[:Template:List:leptons/es]]
# [[:Template:List:continents/tr]]
# [[:Template:List:continents/tl/Tglg]]
# [[:Template:List:continents/tl/Latn]]
# [[:Template:List:continents/sv]]
# [[:Template:List:continents/scn]]
# [[:Template:List:continents/rsk]]
# [[:Template:List:continents/ro]]
# [[:Template:List:continents/pt]]
# [[:Template:List:continents/pl]]
# [[:Template:List:continents/or]]
# [[:Template:List:continents/nn]]
# [[:Template:List:continents/nb]]
# [[:Template:List:continents/my]]
# [[:Template:List:continents/mt]]
# [[:Template:List:continents/ms/Arab]]
# [[:Template:List:continents/ms]]
# [[:Template:List:continents/ml]]
# [[:Template:List:continents/mhr]]
# [[:Template:List:continents/lt]]
# [[:Template:List:continents/kw]]
# [[:Template:List:continents/ja/landmasses]]
# [[:Template:List:continents/ja/continents]]
# [[:Template:List:continents/it]]
# [[:Template:List:continents/is]]
# [[:Template:List:continents/io]]
# [[:Template:List:continents/id]]
# [[:Template:List:continents/hu]]
# [[:Template:List:continents/hrx]]
# [[:Template:List:continents/hi]]
# [[:Template:List:continents/fur]]
# [[:Template:List:continents/fr]]
# [[:Template:List:continents/en]]
# [[:Template:List:continents/de]]
# [[:Template:List:continents/cy]]
# [[:Template:List:continents/cs]]
# [[:Template:List:continents/bg]]
# [[:Template:List:continents/az/Latn]]
# [[:Template:List:continents/an]]
# [[:Template:R:te:TVK]]
# [[:Template:List:Bengali script letters/bn]]
# [[:Template:List:Gregorian calendar months/lb]]
# [[:Template:List:Gregorian calendar months/hu]]
# [[:Template:List:Gregorian calendar months/de]]
# [[:Template:List:terms for fingers/yrl]]
# [[:Template:R:ine:IEL]]
# [[:Template:R:et:ETY]]
# [[:Template:Gem-prefix]]
# [[:Template:La-suffix-verb]]
# [[:Template:R:eu:EDB]]
# [[:Template:Latin script letter names/ko]]
# [[:Template:RQ:X]]
# [[:Template:Mns-nor-conj-table-reg]]
# [[:Template:R:svm:Pangloss]]
# [[:Template:R:wied 1841]]
# [[:Template:R:say 1823]]
# [[:Template:Pejorative of]]
# [[:Template:Is-rhymelink]]
# [[:Template:Is-rhymesee]]
# [[:Template:Osx-decl-noun]]
# [[:Template:Ja-non-lexical-pitch]]
# [[:Template:Sla-conj]]
# [[:Template:R:pl:Siarkowski:1891]]
# [[:Template:Rap-personal pronouns]]
# [[:Template:R:pl:Kolberg:1877]]
# [[:Template:Tg-numeral]]
# [[:Template:Tr-IPA]]
# [[:Template:R:tg:Vozhaju]]
# [[:Template:R:en:Ying-Han Da Cidian 2]]
# [[:Template:Fa-xlit]]
# [[:Template:R:ja:Xinshiji Ri-Han Shuangjie Da Cidian]]
# [[:Template:R:th:Tai Han Cidian 1990]]
# [[:Template:R:egy:TLA]]
# [[:Template:R:fa:Bosiyu Hanyu Cidian 1981]]
# [[:Template:Nd-adj]]
# [[:Template:Nr-adj]]
# [[:Template:R:loa:van Baarda:1904]]
# [[:Template:List:provinces of Algeria/en]]
# [[:Template:Also/aao]]
# [[:Template:R:ii:LiMa1981]]
# [[:Template:R:vi:TỪ ĐIỄN TỪ HÁN VIỆT]]
# [[:Template:Tt-conj-c]]
# [[:Template:Tt-conj-v]]
# [[:Template:Tt-conj-head]]
# [[:Template:R:NHK2016]]
# [[:Template:List:elementary particles/es]]
# [[:Template:Sw-variant]]
# [[:Template:Sga-suffix]]
# [[:Template:Mt-suffix]]
# [[:Template:Tsg-pr]]
# [[:Template:Fr-conj-copier-coller]]
# [[:Template:R:ar:Alaboyu Hanyu Cidian 2008]]
# [[:Template:R:te:G. N. Reddy 1979]]
# [[:Template:Pbg-conj]]
# [[:Template:Quote-qualifier]]
# [[:Template:R:fa:Bosiyu Hanyu Cidian 1997]]
# [[:Template:R:ru:Xinshidai E-Han Xiangjie Da Cidian]]
# [[:Template:R:ru:Xinshidai Da E-Han Cidian]]
# [[:Template:R:uk:Xinbian Wukelanyu Hanyu Cidian]]
# [[:Template:Bbl-IPA]]
# [[:Template:Mhr-num]]
# [[:Template:R:pl:Sławski]]
# [[:Template:R:cdo:Feng 1998]]
# [[:Template:RQ:Kim Dung AHXD]]
# [[:Template:Okn-kanji]]
# [[:Template:Tkn-kanji]]
# [[:Template:Picdic/vi/Gesicht]]
# [[:Template:La-gerund]]
# [[:Template:List:provinces of Laos/lo]]
# [[:Template:R:cs:Slovník univerbizátu]]
# [[:Template:R:zlw-osk:Rocchi]]
# [[:Template:Box]]
# [[:Template:Zh-Religion-syn]]
# [[:Template:Zle-ono-decl-noun-o-n]]
# [[:Template:Tcy-noun]]
# [[:Template:R:scn:Traina]]
# [[:Template:Bn-formal personal pronoun un]]
# [[:Template:R:si:Carter]]
# [[:Template:R:cs:Naše přijmení:2019]]
# [[:Template:User sl-3]]
# [[:Template:R:pl:SgOWiM]]
# [[:Template:Uk-1928 superseded spelling of]]
# [[:Template:R:ml:Warrier]]
# [[:Template:Kn-personal pronouns]]
# [[:Template:Ml-personal pronouns]]
# [[:Template:R:sq:Svane:1992]]
# [[:Template:Hrx-adj]]
# [[:Template:Fro-decl-adj-f]]
# [[:Template:Eu-personal pronouns/table]]
# [[:Template:Fi-decl-kuollut-risti]]
# [[:Template:Oc-conj-èsser]]
# [[:Template:Oc-conj-viure]]
# [[:Template:R:zh:Xiandai Hanyu Fangyan Da Cidian]]
# [[:Template:R:zh:Hanyu Fangyan Da Cidian]]
# [[:Template:Ryu-pron]]
# [[:Template:Wp sup]]
# [[:Template:Also/abq]]
# [[:Template:Filter-avoidance spelling of]]
# [[:Template:Sw-conj/table-intrans]]
# [[:Template:Hnn-pr]]
# [[:Template:Hnn-head]]
# [[:Template:U:de:unadapted]]
# [[:Template:R:sq:Ylli]]
# [[:Template:Yi-def-art]]
# [[:Template:R:cs:Neomat]]
# [[:Template:R:cs:Hugo:2020]]
# [[:Template:R:ja:YHS]]
# [[:Template:R:Gogen Yurai Jiten]]
# [[:Template:Ka-decl-adj-auto]]
# [[:Template:R:zh:CiYuan3]]
# [[:Template:RQ:RFC]]
# [[:Template:Mdh-pr]]
# [[:Template:U:ca:deprecated use of diacritic]]
# [[:Template:Ja-number-counter:つ]]
# [[:Template:Mwr-adv]]
# [[:Template:Link/sl-tonal]]
# [[:Template:Also/કતર]]
# [[:Template:R:eo:ReVo]]
# [[:Template:R:eo:PIV 2020]]
# [[:Template:Troponyms]]
# [[:Template:Yue-etym-clip-en]]
# [[:Template:Ja-number-counter:分]]
# [[:Template:Tl-letter-def]]
# [[:Template:Yur-verb]]
# [[:Template:Zlw-opl-adj]]
# [[:Template:R:cs:Machek:1954]]
# [[:Template:Protected page text/template]]
# [[:Template:Mhr-adj]]
# [[:Template:R:tr:MBTS]]
# [[:Template:R:av:Saidov:1967]]
# [[:Template:Nb-former-context]]
# [[:Template:Vep-decl-kuva]]
# [[:Template:Vep-decl-kivi]]
# [[:Template:Vep-decl-vezi]]
# [[:Template:Izh-decl/kevät]]
# [[:Template:Hrx-ndecl-n]]
# [[:Template:Hrx-ndecl-f]]
# [[:Template:Hrx-decl-cell]]
# [[:Template:Hrx-ndecl-blank-full]]
# [[:Template:Hrx-ndecl-m]]
# [[:Template:Table:USA/lo]]
# [[:Template:De-decl-dieser]]
# [[:Template:Pi-sc-core]]
# [[:Template:Mch-variant]]
# [[:Template:Izh-conj/ampua]]
# [[:Template:Klj-dial]]
# [[:Template:Ur-conj-y]]
# [[:Template:Ur-conj-c]]
# [[:Template:Ur-conj-head]]
# [[:Template:Ur-conj-simp]]
# [[:Template:Ur-conj-no-aspect]]
# [[:Template:Fi-stats-given-name/num]]
# [[:Template:He-ot-lo-sofit]]
# [[:Template:He-dagesh-khazak]]
# [[:Template:Niqud]]
# [[:Template:He-dagesh-kal]]
# [[:Template:He-dotless-shin]]
# [[:Template:He-conj-pi'el/ע״י]]
# [[:Template:Fo-decl-noun-f30]]
# [[:Template:Is-decl-noun-dóttir]]
# [[:Template:Fi-conj-katketa]]
# [[:Template:Fi-conj-juosta]]
# [[:Template:Ojp-pron-verb-2-2]]
# [[:Template:外語每日一詞]]
# [[:Template:每日一詞]]
# [[:Template:U:hu:preferred-verbal-prefix]]
# [[:Template:Ja-from-kaminidan-ext]]
# [[:Template:Ja-from-kaminidan]]
# [[:Template:Also/atsi]]
# [[:Template:Nv-theme-header]]
# [[:Template:Nv-theme-row]]
# [[:Template:R:mww:Heimbach]]
# [[:Template:Nv-positional-verbs]]
# [[:Template:Nv-classificatory-verbs]]
# [[:Template:Nv-pos-vowel]]
# [[:Template:R:lo:Kerr]]
# [[:Template:RQ:Gosenshu]]
# [[:Template:Mdash]]
# [[:Template:List:Cuneiform letters/peo]]
# [[:Template:Nv-possessive pronouns]]
# [[:Template:Table:suits/gl]]
# [[:Template:R:JC03]]
# [[:Template:R:sq:Jungg:1895]]
# [[:Template:R:ABC]]
# [[:Template:R:zh:Hanyu Wailaici Cidian]]
# [[:Template:R:Yoji Jukugo o Shiru Jiten]]
# [[:Template:R:Jitsu]]
# [[:Template:Mdh-adj]]
# [[:Template:R:Daijirin4]]
# [[:Template:Table:chess pieces/aii]]
# [[:Template:R:be:Skarnik]]
# [[:Template:Ga-mut-cons]]
# [[:Template:Table:tastes/ja]]
# [[:Template:List:senses/ja]]
# [[:Template:R:nan-hbl:TLKKS]]
# [[:Template:Ko-etym-jamo]]
# [[:Template:Glink/ja]]
# [[:Template:R:iir:ID]]
# [[:Template:Tyz]]
# [[:Template:List:states of Brazil/pt]]
# [[:Template:Fro-conj-corre]]
# [[:Template:Label language-specific data documentation]]
# [[:Template:Xug-kanjitab]]
# [[:Template:Yoi-kanjitab]]
# [[:Template:Tkn-kanjitab]]
# [[:Template:Gl-pr]]
# [[:Template:Fax-past participle]]
# [[:Template:Jam-pron]]
# [[:Template:Bar-adverb]]
# [[:Template:Mt-hija]]
# [[:Template:Mt-infl-personal pronoun]]
# [[:Template:Dum-decl-ppron]]
# [[:Template:Mt-pronoun]]
# [[:Template:Nmy-IPA]]
# [[:Template:Ofs-decl-ppron]]
# [[:Template:Osx-prep]]
# [[:Template:Osx-adv]]
# [[:Template:Fo-decl-noun-f17]]
# [[:Template:Fo-decl-noun-f18]]
# [[:Template:Fo-decl-noun-f14]]
# [[:Template:Is-decl-noun-nátt]]
# [[:Template:Non-decl-f-c]]
# [[:Template:Fo-decl-interrog-pron]]
# [[:Template:Aii-infl-noun-f-mascpl]]
# [[:Template:Aii-conj-verb/G-3i]]
# [[:Template:Aii-infl-noun-f-ircnstr-irmascpl]]
# [[:Template:R:Agham]]
# [[:Template:Pra-pron]]
# [[:Template:Nv-verbtable-ext]]
# [[:Template:Category]]
# [[:Template:List:en:here-there-where]]
# [[:Template:Fr-card-noun]]
# [[:Template:List:compass points/jv]]
# [[:Template:Gu-g]]
# [[:Template:RQ:Guardian]]
# [[:Template:U:ko:Dongguk Jeong'un]]
# [[:Template:R:jpx:ONCOJ]]
# [[:Template:Topic cat data submodule documentation]]
# [[:Template:Nv-verbtable-full]]
# [[:Template:Nv-stem-set-row]]
# [[:Template:Nv-stem-set-footer]]
# [[:Template:R:DiCanio 2014]]
# [[:Template:R:cau:Klimov:1994]]
# [[:Template:R:ccs:Klimov:1988]]
# [[:Template:Vi-suffix]]
# [[:Template:R:pl:WSWO]]
# [[:Template:Nv-postpositions-lowtone]]
# [[:Template:Santali-digits]]
# [[:Template:Nv-personal pronouns]]
# [[:Template:U:en:Forebears 2014]]
# [[:Template:U:en:2010 US Census]]
# [[:Template:Nv-pos-lowtone-secondary]]
# [[:Template:Mdh-IPA]]
# [[:Template:Pam-proper noun]]
# [[:Template:War-noun]]
# [[:Template:Acw-conj/I-a-u]]
# [[:Template:La-suffix-adj]]
# [[:Template:Aii-infl-noun-f-ircnstr-q]]
# [[:Template:Yrk-numeral]]
# [[:Template:Aii-infl-noun-f-vowel]]
# [[:Template:Ro-conj-a-iez]]
# [[:Template:Ro-conj-a-i]]
# [[:Template:Ro-conj-a-hez]]
# [[:Template:AutoStat]]
# [[:Template:Se-table-ppron]]
# [[:Template:Pl-pre-1936]]
# [[:Template:List:Chinese calendar months/za]]
# [[:Template:R:SWO]]
# [[:Template:Pl-conj-ap-impersonal]]
# [[:Template:Pl-conj-ai-nąć]]
# [[:Template:Nv-pos-hightone]]
# [[:Template:Nv-stem-set-header]]
# [[:Template:R:cs:Nase rec]]
# [[:Template:Grk-mar-adverb]]
# [[:Template:Grk-mar-preposition]]
# [[:Template:Nv-verbtable]]
# [[:Template:Sux-possessive pronouns]]
# [[:Template:Ko-new]]
# [[:Template:List:continents/te]]
# [[:Template:El-nM-ης-2a]]
# [[:Template:El-nM-ος-3c]]
# [[:Template:R:sjd:Antonova:2021]]
# [[:Template:My-verb-set]]
# [[:Template:Nod-adj]]
# [[:Template:Ky-adv]]
# [[:Template:Table:days of the week/dng]]
# [[:Template:Lij-conj]]
# [[:Template:R:myv:Serebrennikov:1993]]
# [[:Template:Jv-krama of]]
# [[:Template:Jv-krama inggil of]]
# [[:Template:Non-decl-f-in]]
# [[:Template:Hcol3]]
# [[:Template:Kn-decl-a-epi]]
# [[:Template:Vep-decl-homen]]
# [[:Template:聯綿詞]]
# [[:Template:R:es:DAMER]]
# [[:Template:Sw-cl]]
# [[:Template:Sw-conj/table-trans]]
# [[:Template:Ltg-part]]
# [[:Template:Hanja form of-lite]]
# [[:Template:Xug-kanji]]
# [[:Template:Mvi-kanji]]
# [[:Template:Mvi-head]]
# [[:Template:Vi-l-lite]]
# [[:Template:Han tu form of-lite]]
# [[:Template:Rys-readings]]
# [[:Template:Rys-kanji]]
# [[:Template:Rys-head]]
# [[:Template:Yoi-kanji]]
# [[:Template:Pl-conj-ai-VII]]
# [[:Template:R:jam:majstro.com]]
# [[:Template:Fi-adv-dir]]
# [[:Template:Sla-decl-pron-hard-dual]]
# [[:Template:Sa-suffix]]
# [[:Template:Ha-pos]]
# [[:Template:R:hy:Orengo:2019]]
# [[:Template:Hy-decl-աստված]]
# [[:Template:Aii-infl-noun-irp-irs]]
# [[:Template:Aii-infl-noun-m-ircnstr]]
# [[:Template:Aii-infl-noun-f-vowel-irs]]
# [[:Template:Syc-decl-noun-f-vowel-stem]]
# [[:Template:Aii-infl-noun-f-vowel-irp-irs]]
# [[:Template:Aii-infl-noun-constr-pl]]
# [[:Template:R:nan:MacGowan]]
# [[:Template:R:Useinov 2007]]
# [[:Template:Ja-from-shimonidan-ext]]
# [[:Template:Mvi-readings]]
# [[:Template:Yoi-readings]]
# [[:Template:Xug-head]]
# [[:Template:Xug-readings]]
# [[:Template:Yrk-noun]]
# [[:Template:R:pl:SXVI]]
# [[:Template:Aii-infl-noun-m-irfempl]]
# [[:Template:List:continents/uk]]
# [[:Template:Aii-infl-noun-m-irs]]
# [[:Template:Mk-decl-noun-m-сиромав]]
# [[:Template:Aii-infl-noun-m-irp]]
# [[:Template:Aii-infl-noun-m-ircnstr-irs]]
# [[:Template:Hy-noun-ոջ-ներ]]
# [[:Template:Tru personal pronouns]]
# [[:Template:Aii-infl-noun-f-yod]]
# [[:Template:Aii-infl-noun-f]]
# [[:Template:Aii-infl-noun-m]]
# [[:Template:Aii-infl-noun-m-irv1-irs3-irp]]
# [[:Template:Syc-decl-noun]]
# [[:Template:L-vertical]]
# [[:Template:Aii-infl-noun]]
# [[:Template:Xcl-noun-ա]]
# [[:Template:R:zle-ono:Zaliznyak:2004]]
# [[:Template:Ps-decl-adj-ablaut-addition]]
# [[:Template:Informal form of]]
# [[:Template:Ko-Chinese toponyms]]
# [[:Template:Table:國際象棋棋子/yi]]
# [[:Template:Table:國際象棋棋子/fi]]
# [[:Template:Table:國際象棋棋子/th]]
# [[:Template:Table:國際象棋棋子/gl]]
# [[:Template:Table:國際象棋棋子/pt]]
# [[:Template:Table:國際象棋棋子/la]]
# [[:Template:Table:國際象棋棋子/lv]]
# [[:Template:Table:國際象棋棋子/he]]
# [[:Template:Table:國際象棋棋子/is]]
# [[:Template:Table:國際象棋棋子/fo]]
# [[:Template:Table:國際象棋棋子/syc]]
# [[:Template:Table:國際象棋棋子/ug]]
# [[:Template:Table:國際象棋棋子/gd]]
# [[:Template:Table:國際象棋棋子/ga]]
# [[:Template:Table:國際象棋棋子/ka]]
# [[:Template:Table:國際象棋棋子/hy]]
# [[:Template:Table:國際象棋棋子/cy]]
# [[:Template:Mqs-numeral]]
# [[:Template:Table:gregorian calendar/ta]]
# [[:Template:Ja-number-counter:月(つき)]]
# [[:Template:Table:gregorian calendar/ml]]
# [[:Template:Grk-mar-IPA]]
# [[:Template:Xcl-noun-?]]
# [[:Template:Vep-decl-ilo]]
# [[:Template:Fo-decl-noun-n4-s]]
# [[:Template:Non-decl-m-nd]]
# [[:Template:Osx-decl-noun-nd]]
# [[:Template:Ro-conj-duce]]
# [[:Template:Osx-decl-noun-z-n]]
# [[:Template:Goh-decl-noun]]
# [[:Template:Fo-decl-noun-n13]]
# [[:Template:Ru-IPA-manual]]
# [[:Template:Tyv-adj]]
# [[:Template:R:ca:DCVB]]
# [[:Template:R:ca:DNV]]
# [[:Template:R:ca:GDLC]]
# [[:Template:Fax-noun]]
# [[:Template:Fro-conj-moudre]]
# [[:Template:Izh-dir-see]]
# [[:Template:Syc-adj]]
# [[:Template:Vep-decl-sana]]
# [[:Template:Gem-decl-noun-i-mf]]
# [[:Template:Ge'ez Script numerals]]
# [[:Template:Klj-v3]]
# [[:Template:Klj-v2]]
# [[:Template:Klj-v1]]
# [[:Template:Klj-infl-noun-table]]
# [[:Template:Klj-infl-noun]]
# [[:Template:Klj-variant]]
# [[:Template:Language extradata documentation]]
# [[:Template:Gez-personal pronouns]]
# [[:Template:Osx-decl-noun-a-n1]]
# [[:Template:Ryu-r/args]]
# [[:Template:Ryu-r/multi]]
# [[:Template:Ary-conj-fiʕʕal-yfiʕʕal]]
# [[:Template:Krl-proper noun]]
# [[:Template:Vep-decl-ma]]
# [[:Template:Szl-IPA]]
# [[:Template:Fi-infl-compound-numeral-partitive]]
# [[:Template:Fi-infl-compound-numeral]]
# [[:Template:Az-initialism/v]]
# [[:Template:Az-initialism]]
# [[:Template:R:CEDHL]]
# [[:Template:Ms-IPA]]
# [[:Template:Et-IPA/old]]
# [[:Template:Ur-adj-1]]
# [[:Template:Is-decl-einn]]
# [[:Template:Ps-decl-adj-2]]
# [[:Template:Ps-decl-adj-m-consonant]]
# [[:Template:Table:chess pieces/oc]]
# [[:Template:Zh-new/der]]
# [[:Template:RQ:Bacon Sylva Sylvarum]]
# [[:Template:Hu-conj-izzik]]
# [[:Template:Fa-poss-egân]]
# [[:Template:Table:chess pieces/nl]]
# [[:Template:Table:chess pieces/mr]]
# [[:Template:Table:chess pieces/ast]]
# [[:Template:Table:chess pieces/fa]]
# [[:Template:Fa-predicative]]
# [[:Template:Fa-pred-c]]
# [[:Template:Fa-possessive-unc]]
# [[:Template:Fa-poss-c-unc]]
# [[:Template:Fa-basic-unc]]
# [[:Template:Fa-basic-c-unc]]
# [[:Template:Fa-decl-c-unc]]
# [[:Template:Ro-conj-scrie]]
# [[:Template:Fi-infinitive of]]
# [[:Template:IPA link]]
# [[:Template:R:ine:CIEL]]
# [[:Template:Sd-adj]]
# [[:Template:RQ:Ibn al-ʿawwām]]
# [[:Template:Var]]
# [[:Template:Table:hijri calendar/zh]]
# [[:Template:Es-conj-ír]]
# [[:Template:Ne-verb set]]
# [[:Template:R:gl:DDGM]]
# [[:Template:Table:suits/sh]]
# [[:Template:Highlight]]
# [[:Template:Quoted term]]
# [[:Template:Harakat-fa]]
# [[:Template:Fo-decl-noun-m6-s]]
# [[:Template:Ary-personal pronouns]]
# [[:Template:Table:chess pieces/eo]]
# [[:Template:Cu-decl-num5]]
# [[:Template:Orv-decl-adj-hard]]
# [[:Template:Orv-decl-adj]]
# [[:Template:Cu-cardinals]]
# [[:Template:El-nF-ες-2b]]
# [[:Template:R:LOGEION]]
# [[:Template:Ug-noun-c]]
# [[:Template:Acw-rootbox]]
# [[:Template:Ur-decl-pronoun]]
# [[:Template:Pa-decl-adj]]
# [[:Template:Ur-decl-adj-2]]
# [[:Template:Ne-z]]
# [[:Template:Ne-decl-adj]]
# [[:Template:Gu-decl-adj]]
# [[:Template:Gu-adj-c]]
# [[:Template:Earthly branch]]
# [[:Template:List:earthly branches/vi]]
# [[:Template:List:camelids/ja]]
# [[:Template:List:camelids/en]]
# [[:Template:Heavenly stem]]
# [[:Template:Fj-personal pronouns]]
# [[:Template:Punjabi-digits]]
# [[:Template:Gu-noun-m-c]]
# [[:Template:Ps-noun-f-ai]]
# [[:Template:Nb-verb-comireg]]
# [[:Template:Vot-decl-pron/miä]]
# [[:Template:Lb-decl-dësen]]
# [[:Template:List:basic character strokes/zh]]
# [[:Template:Fi-personal pronouns]]
# [[:Template:Sjd-adj]]
# [[:Template:Cs-decl-noun/čedič]]
# [[:Template:Cs-decl-noun/zámek]]
# [[:Template:Cs-decl-noun/Václav]]
# [[:Template:Cs-decl-noun/vlk]]
# [[:Template:Cs-decl-noun/učitel]]
# [[:Template:Cs-decl-noun/tuleň]]
# [[:Template:Cs-decl-noun/tanec]]
# [[:Template:Cs-decl-noun/stroj]]
# [[:Template:Cs-decl-noun/starosta]]
# [[:Template:Cs-decl-noun/soudce]]
# [[:Template:Cs-decl-noun/Robátko]]
# [[:Template:Cs-decl-noun/pán]]
# [[:Template:Cs-decl-noun/občan]]
# [[:Template:Cs-decl-noun/muž]]
# [[:Template:Cs-decl-noun/král]]
# [[:Template:Cs-decl-noun/kabel]]
# [[:Template:Cs-decl-noun/hrad]]
# [[:Template:Cs-decl-noun/hodnostář]]
# [[:Template:Cs-decl-noun/hnůj]]
# [[:Template:Cs-decl-noun/datel]]
# [[:Template:Cs-decl-noun/cizinec]]
# [[:Template:Cs-decl-noun/Bulhar]]
# [[:Template:Cs-decl-noun/bratr]]
# [[:Template:Cs-decl-noun/admirál]]
# [[:Template:Cs-decl-noun/tuk]]
# [[:Template:Ro-ord]]
# [[:Template:It-card-inv]]
# [[:Template:List:hundreds/gl]]
# [[:Template:Ml-verb set]]
# [[:Template:Table:chess pieces/ajp]]
# [[:Template:Te-verbtable]]
# [[:Template:Telugu 3rd person pronouns]]
# [[:Template:Ta-conj-auto]]
# [[:Template:Ta-decl]]
# [[:Template:Tamil-digits]]
# [[:Template:Kannada-digits]]
# [[:Template:Kn-decl-e-i-ai]]
# [[:Template:Malayalam-digits]]
# [[:Template:Table:chess pieces/ml]]
# [[:Template:Table:gregorian calendar/ar]]
# [[:Template:List:Gregorian calendar months/fa/dari]]
# [[:Template:Ps-noun-f-o]]
# [[:Template:Pnb-noun-m-c]]
# [[:Template:Sl-decl-noun-otrok]]
# [[:Template:Mai-IPA]]
# [[:Template:Mai-noun]]
# [[:Template:Hu-conj-alkuszik]]
# [[:Template:List:Chinese sexagenary cycle terms/ja]]
# [[:Template:U:tr:homograph pronunciation]]
# [[:Template:Sexagenary cycle]]
# [[:Template:Hu-conj-metsz]]
# [[:Template:Table:chess pieces/fy]]
# [[:Template:Li-decl-adj]]
# [[:Template:Fo-decl-noun-f33-s]]
# [[:Template:Nn-verb-comireg]]
# [[:Template:El-nM-ας-2a]]
# [[:Template:R:grc:NA28]]
# [[:Template:Mt-interjection]]
# [[:Template:Buc reading of]]
# [[:Template:Km-letter]]
# [[:Template:Ky-verb]]
# [[:Template:Pi-decl-adj]]
# [[:Template:Ur-x]]
# [[:Template:Kls-personal pronouns]]
# [[:Template:Kls-pronoun]]
# [[:Template:Uk-ndecl-manual-pl]]
# [[:Template:Ru-acronym of]]
# [[:Template:Sgs-noun]]
# [[:Template:Ps-noun-m-animate]]
# [[:Template:La-praenominal abbreviation of]]
# [[:Template:Az-comp/v]]
# [[:Template:Az-comp/q]]
# [[:Template:Az-comp/k]]
# [[:Template:Az-comp/cc]]
# [[:Template:Az-comp/c]]
# [[:Template:Katharevousa]]
# [[:Template:Nominalization of]]
# [[:Template:Table:聲調/zh]]
# [[:Template:+plural]]
# [[:Template:Ko-root of]]
# [[:Template:Table:days of the week/sla-pro]]
# [[:Template:Osx-decl-noun-n-n]]
# [[:Template:Goh-decl-noun-o-f]]
# [[:Template:He-verb-conjugation]]
# [[:Template:He-conj-table]]
# [[:Template:He-adj form of]]
# [[:Template:He-adj form]]
# [[:Template:Sui personal pronouns]]
# [[:Template:List:brain lobes/ja]]
# [[:Template:Sl-decl-adj-table-single]]
# [[:Template:Sl-decl-num-dva]]
# [[:Template:El-prefix]]
# [[:Template:Ko-l/args]]
# [[:Template:Ko-l/multi]]
# [[:Template:He-excessive spelling of]]
# [[:Template:U:ru:numeral]]
# [[:Template:He-prep-inflection]]
# [[:Template:List:earthly branches/zh]]
# [[:Template:List:Hebrew calendar months/he]]
# [[:Template:Xcl-noun-ի-?]]
# [[:Template:Hy-noun-ու-իկ]]
# [[:Template:Xcl-noun-ի-ա-pl]]
# [[:Template:Xcl-noun-հայր]]
# [[:Template:Hy-noun-որ-եր]]
# [[:Template:Xcl-noun-ն]]
# [[:Template:Xcl-noun-ն-3-pl]]
# [[:Template:Xcl-noun-ու-pl]]
# [[:Template:Xcl-noun-ն-2]]
# [[:Template:Xcl-noun-կին]]
# [[:Template:Xcl-decl-noun-pl]]
# [[:Template:Xcl-noun-ո-ա-unc]]
# [[:Template:Xcl-noun-ի]]
# [[:Template:Ko-adj-form]]
# [[:Template:R:slr:Lianyun]]
# [[:Template:Izh-decl/lähe]]
# [[:Template:Ba-noun-c-pl]]
# [[:Template:Roa-gal-noun]]
# [[:Template:List:Gregorian calendar months/sh/Cyrl]]
# [[:Template:Mn-adverb]]
# [[:Template:Uk-ndecl-manual-sg]]
# [[:Template:SeeSynonyms]]
# [[:Template:Neuter singular past participle of]]
# [[:Template:Passive participle of]]
# [[:Template:Ps-noun-m-ay-finalstress]]
# [[:Template:Nn-decl-adj-table]]
# [[:Template:Nn-decl-adj]]
# [[:Template:Cu-decl-of-тъ]]
# [[:Template:Pl-decl-numeral]]
# [[:Template:Pl-decl-numeral-coll]]
# [[:Template:Pl-decl-numeral2]]
# [[:Template:Xcl-noun-ի-ա-unc]]
# [[:Template:RQ:Cantigas de Santa Maria]]
# [[:Template:Xcl-noun-ի-unc]]
# [[:Template:Xcl-noun-ա-unc]]
# [[:Template:Nog-noun]]
# [[:Template:Ky-adj]]
# [[:Template:Trk-cmn-decl-noun]]
# [[:Template:Az-arabic-noun-decl-v]]
# [[:Template:Cv-personal pronouns]]
# [[:Template:Cv-decl-pron]]
# [[:Template:Tdd-noun]]
# [[:Template:Kpv-decl-ppron]]
# [[:Template:R:cel:Zair:2012]]
# [[:Template:Collapse2]]
# [[:Template:Kpv-personal pronouns]]
# [[:Template:Is-conj-preterite]]
# [[:Template:Pl-conj-ai-X]]
# [[:Template:Ltg-IPA]]
# [[:Template:Table:mines/trk-pro]]
# [[:Template:Xcl-noun-ո]]
# [[:Template:Xcl-noun-ու]]
# [[:Template:Bulgarian demonstrative pronouns]]
# [[:Template:Tby-noun]]
# [[:Template:Kpv-demonstratives]]
# [[:Template:Xal-personal pronouns]]
# [[:Template:Bua-personal pronouns]]
# [[:Template:Table:minerals/sah]]
# [[:Template:List:countries in Europe/be]]
# [[:Template:Te-noun-decl]]
# [[:Template:Table:days of the week/ml]]
# [[:Template:Tyz-Nom form of]]
# [[:Template:Ky-letter]]
# [[:Template:Deliberate misspelling of]]
# [[:Template:Pl-conj-ai-impersonal]]
# [[:Template:Hi-adecl]]
# [[:Template:RQ:Stevenson Osbourne Wrecker]]
# [[:Template:RQ:Reade Simpleton]]
# [[:Template:R:sla:Zhivlov:2016]]
# [[:Template:R:mdf:Bereczki:1986]]
# [[:Template:Got-rom-categoryTOC]]
# [[:Template:El-nM-ων-ονες-2b]]
# [[:Template:Ja-kanji forms-IVS/關於IVS]]
# [[:Template:Mn-see]]
# [[:Template:Mn-IPA-see]]
# [[:Template:Numrad]]
# [[:Template:R:AJaszo 2007]]
# [[:Template:R:Aikio 2018]]
# [[:Template:R:Eory 2007]]
# [[:Template:Uz-stem-specify]]
# [[:Template:Uz-verb-stem]]
# [[:Template:R:cs:XJHCD]]
# [[:Template:Fro-conj-vivre]]
# [[:Template:Vec-conj-auto]]
# [[:Template:Sga-adj]]
# [[:Template:Ast-verb-er]]
# [[:Template:M/sl-tonal]]
# [[:Template:Izh-conj/kyntää]]
# [[:Template:Fi-conj-soutaa]]
# [[:Template:Fro-conj-pondre]]
# [[:Template:R:inc:IAIL]]
# [[:Template:R:gju:Rahi:2015]]
# [[:Template:Qfliteral]]
# [[:Template:Ndash]]
# [[:Template:Fro-conj-salir]]
# [[:Template:Map-bms-rom]]
# [[:Template:Yi-decl]]
# [[:Template:Table-of-niqqud]]
# [[:Template:He-table-of-niqqud]]
# [[:Template:He-numeral form]]
# [[:Template:He-noun form]]
# [[:Template:Yi-possessive pronouns]]
# [[:Template:Yi-decl-poss]]
# [[:Template:Yi-unpointed form of]]
# [[:Template:Lb-conj-irregular]]
# [[:Template:Yi-personal pronouns]]
# [[:Template:Judeo-Arabic spelling of]]
# [[:Template:El-nN-ο-α-3c]]
# [[:Template:Is-verb-ri]]
# [[:Template:He-personal pronouns]]
# [[:Template:He-interj]]
# [[:Template:R:ru:AN1891]]
# [[:Template:Izh-decl/vahti]]
# [[:Template:Phonetic alphabet]]
# [[:Template:Nup-pos]]
# [[:Template:Nup-noun]]
# [[:Template:Ro-noun-m-defective]]
# [[:Template:Fro-conj-metre]]
# [[:Template:Odt-decl-noun-n-m]]
# [[:Template:漢語家世]]
# [[:Template:Uk-decl-pron]]
# [[:Template:Uk-pro-sam]]
# [[:Template:Be-decl-pron]]
# [[:Template:Be-pro-sam]]
# [[:Template:CategoryTOC/ru]]
# [[:Template:Tt-personal pronouns]]
# [[:Template:Ro-noun-n-uri-Cyrl]]
# [[:Template:Meod-ref]]
# [[:Template:My-suffix]]
# [[:Template:My-particle]]
# [[:Template:My-adj]]
# [[:Template:Nl-pronadv of]]
# [[:Template:List:continents/bn]]
# [[:Template:1]]
# [[:Template:Ja-usex/example]]
# [[:Template:Xcl-noun-ո-ա]]
# [[:Template:Fro-decl-adj-mf]]
# [[:Template:Gmq-osw-conj-st]]
# [[:Template:Used in phrasal verbs]]
# [[:Template:Related terms]]
# [[:Template:Frr-f-cardinals]]
# [[:Template:Fro-conj-rover]]
# [[:Template:Nl-noun-adj]]
# [[:Template:West Frisian personal pronouns]]
# [[:Template:Ro-pp-s]]
# [[:Template:Koi-IPA]]
# [[:Template:Koi-noun]]
# [[:Template:Fro-conj-aidier]]
# [[:Template:Non-decl-blank-sing]]
# [[:Template:R:ZH-PSWT]]
# [[:Template:Non-decl-adj-comp]]
# [[:Template:Gmq-osw-decl-cell]]
# [[:Template:Gmq-osw-decl-noun-a-m]]
# [[:Template:Fro-conj-traire]]
# [[:Template:Nrf-conj-traire]]
# [[:Template:U:fr:may take être]]
# [[:Template:Non-decl-f-o]]
# [[:Template:R:pcc:BYHCD]]
# [[:Template:Kpv-decl-noun]]
# [[:Template:Kjh-decl-noun-man]]
# [[:Template:Se-infl-adj-even]]
# [[:Template:Izh-conj/oppia]]
# [[:Template:Se-infl-noun-odd]]
# [[:Template:Se-infl-noun-odd-ng]]
# [[:Template:Se-infl-noun-contr]]
# [[:Template:Se-infl-noun-even-ng]]
# [[:Template:Smn-decl-noun-even-u-oin]]
# [[:Template:Gmq-osw-conj-table]]
# [[:Template:Gmq-osw-conj-wk1-long]]
# [[:Template:Non-conj-table-impers]]
# [[:Template:Nl-conj-wk-cht]]
# [[:Template:Fo-decl-noun-n5-s]]
# [[:Template:Nn-decl-cell]]
# [[:Template:Nn-decl-blank-full2]]
# [[:Template:Nn-decl-m-an]]
# [[:Template:Mkh-mvi-pron]]
# [[:Template:Co-conj/à]]
# [[:Template:Mkh-mvi-noun]]
# [[:Template:Nl-decl-past-ptc]]
# [[:Template:R:za:GFCY1]]
# [[:Template:R:za:GFCY2]]
# [[:Template:R:za:GFCY5]]
# [[:Template:R:za:GFCY4]]
# [[:Template:Picdic/de/Gesicht]]
# [[:Template:Kw-mut-cons]]
# [[:Template:Fa-conjunction]]
# [[:Template:Lisu-def]]
# [[:Template:Ug-conj]]
# [[:Template:Mdf-noun-def-gen]]
# [[:Template:Mdf-noun-gen]]
# [[:Template:Mdf-noun-def-manual]]
# [[:Template:Mdf-noun-manual]]
# [[:Template:Udm-pers-pron]]
# [[:Template:Tr-verb form of]]
# [[:Template:Bg-reflexive-си]]
# [[:Template:Tibetan-digits]]
# [[:Template:Trk-pro-decl-noun]]
# [[:Template:Mfe-verb]]
# [[:Template:R:Robert]]
# [[:Template:R:Larousse]]
# [[:Template:Ru-mult-adverbs]]
# [[:Template:Is-conj-w1]]
# [[:Template:R:Pons]]
# [[:Template:Goh-decl-noun-n-m]]
# [[:Template:Fro-conj-faire]]
# [[:Template:Perfective form of]]
# [[:Template:R:ar:Oxford]]
# [[:Template:R:ar:Langenscheidt]]
# [[:Template:Ru-phrase]]
# [[:Template:Evn-verb]]
# [[:Template:Xal-numeral]]
# [[:Template:Pl-conj-ap-X]]
# [[:Template:Pl-decl-pronoun]]
# [[:Template:Pl-decl-generic]]
# [[:Template:Mt-noun-pl]]
# [[:Template:R:ine:Mallory 2006]]
# [[:Template:Pl-conj-ap-XI]]
# [[:Template:Pl-conj-ap-eć]]
# [[:Template:Pl-conj-ap-eję]]
# [[:Template:Pl-conj-ap-IX]]
# [[:Template:Rhyme cat]]
# [[:Template:Pl-conj-defective]]
# [[:Template:Pl-verb-defective]]
# [[:Template:Pl-conj-ai-IX]]
# [[:Template:List:Western astrology signs/en]]
# [[:Template:Pl-conj-ap-yć]]
# [[:Template:Pl-conj-see]]
# [[:Template:Pl-conj-ai-ić]]
# [[:Template:Pl-conj-ap-nąć]]
# [[:Template:Grk-mar-noun]]
# [[:Template:Grk-mar-personal pronouns]]
# [[:Template:Nrf-conj-craithe]]
# [[:Template:Te-categoryTOC]]
# [[:Template:Palindrome appendix]]
# [[:Template:Mul-proper noun]]
# [[:Template:ISO 3166]]
# [[:Template:R:xcl:Godel]]
# [[:Template:Zh-pronunciation spelling of]]
# [[:Template:R:olo:Zarinova:2012]]
# [[:Template:Ja-name-to]]
# [[:Template:R:Sihler 1995]]
# [[:Template:Rhymes row]]
# [[:Template:R:Browne 1927]]
# [[:Template:Table:zodiac/zh]]
# [[:Template:R:bsl:Matasović:2013]]
# [[:Template:Cu-conj-нести]]
# [[:Template:Ko-lenis form of]]
# [[:Template:Ko-yin form of]]
# [[:Template:U:ru:large numeral]]
# [[:Template:List:shi'er-lü/ja]]
# [[:Template:List:shi'er-lü/ko]]
# [[:Template:Quote-meta/paramdoc]]
# [[:Template:Charles Dickens quotation templates]]
# [[:Template:RQ:Dickens David Copperfield]]
# [[:Template:William Shakespeare quotation templates]]
# [[:Template:RQ:Shakespeare Henry 5]]
# [[:Template:之過去被動分詞]]
# [[:Template:R:rue:Kercha:2012]]
# [[:Template:Character info/A]]
# [[:Template:Character info/A]]
# [[:Template:Double image aside]]
# [[:Template:Non-noun form]]
# [[:Template:Sh-decl-noun-m]]
# [[:Template:Da-letter]]
# [[:Template:It-letter]]
# [[:Template:Ga-letter]]
# [[:Template:Ia-letter]]
# [[:Template:Id-letter]]
# [[:Template:Nv-letter]]
# [[:Template:La-letter]]
# [[:Template:Tg-adv]]
# [[:Template:Rom-verb]]
# [[:Template:Diagonal split header]]
# [[:Template:Tlw]]
# [[:Template:Zh-list]]
# [[:Template:La-suffix-noun]]
# [[:Template:Syndiff]]
# [[:Template:So-letter]]
# [[:Template:Nup-letter]]
# [[:Template:Ryu-kyujitai spelling of]]
# [[:Template:Scots personal pronouns]]
# [[:Template:Ro-letter]]
# [[:Template:Q-lite]]
# [[:Template:Nn-pronu-note]]
# [[:Template:Vi-letter]]
# [[:Template:Headtempdocboiler]]
# [[:Template:Headtempdocboiler:letter]]
# [[:Template:Tl-letter]]
# [[:Template:Cite]]
# [[:Template:Yo-personal pronouns]]
# [[:Template:IPAchar-lite]]
# [[:Template:IPA-lite]]
# [[:Template:Latn-def-lite]]
# [[:Template:G-lite/node]]
# [[:Template:G-lite]]
# [[:Template:Bg-PRO]]
# [[:Template:Bg-reflexive]]
# [[:Template:Zu-combining stem of]]
# [[:Template:Xh-combining stem of]]
# [[:Template:Ny-pronoun]]
# [[:Template:It-adj-sup]]
# [[:Template:Fo-decl-noun-f1-s]]
# [[:Template:Izh-decl/patsas]]
# [[:Template:RQ:izh:Oppikirja-1:1936]]
# [[:Template:Non-decl-m-i2]]
# [[:Template:U:egy:suffix pronoun]]
# [[:Template:Nci-proper noun]]
# [[:Template:SI-unit-abb2]]
# [[:Template:R:LBG]]
# [[:Template:RQ:DTC DTD CPN]]
# [[:Template:Ko-ref]]
# [[:Template:Bn-decl-noun-c]]
# [[:Template:Bn-noun-ô-anim]]
# [[:Template:It-adj-form]]
# [[:Template:Non-decl-f-i]]
# [[:Template:Hu-months-abbr]]
# [[:Template:Mul-numberchart/86]]
# [[:Template:Mul-numberchart/88]]
# [[:Template:Mul-numberchart/89]]
# [[:Template:Mul-numberchart/91]]
# [[:Template:Mul-numberchart/92]]
# [[:Template:Mul-numberchart/93]]
# [[:Template:Mul-numberchart/94]]
# [[:Template:Mul-numberchart/95]]
# [[:Template:Mul-numberchart/96]]
# [[:Template:Mul-numberchart/97]]
# [[:Template:Mul-numberchart/98]]
# [[:Template:Mul-numberchart/99]]
# [[:Template:Mul-numberchart/85]]
# [[:Template:Mul-numberchart/84]]
# [[:Template:Mul-numberchart/83]]
# [[:Template:Mul-numberchart/82]]
# [[:Template:Mul-numberchart/81]]
# [[:Template:Mul-numberchart/100]]
# [[:Template:Mul-numberchart/10]]
# [[:Template:Mul-numberchart/90]]
# [[:Template:Mul-numberchart/80]]
# [[:Template:Mul-numberchart/20]]
# [[:Template:Mul-numberchart/30]]
# [[:Template:Mul-numberchart/40]]
# [[:Template:Mul-numberchart/50]]
# [[:Template:Mul-numberchart/60]]
# [[:Template:Mul-numberchart/70]]
# [[:Template:Sort]]
# [[:Template:Is-decl-noun-base/sgindef]]
# [[:Template:Pronunciation variant of]]
# [[:Template:R:cdy:Wang 2010]]
# [[:Template:R:MYYJ]]
# [[:Template:Ny-new]]
# [[:Template:Uk-ordinals]]
# [[:Template:Rue-decl-noun]]
# [[:Template:U:uk:у-в]]
# [[:Template:R:zhx-teo:Diopou 2010]]
# [[:Template:RQ:Tran Trong Kim VNSL]]
# [[:Template:Rm-verb]]
# [[:Template:Uk-adecl-manual]]
# [[:Template:Sdc-adj]]
# [[:Template:R:egx-dem:DG]]
# [[:Template:RQ:Milton Paradise Lost]]
# [[:Template:R:Bader2007]]
# [[:Template:R:egy:Gardiner]]
# [[:Template:R:egy:Calligraphy]]
# [[:Template:R:egy:Loprieno]]
# [[:Template:Charlotte Bronte quotation templates]]
# [[:Template:RQ:Charlotte Bronte Shirley]]
# [[:Template:Hy-conj-ալ]]
# [[:Template:Sdc-noun]]
# [[:Template:Th-cls]]
# [[:Template:Sh-coll-link]]
# [[:Template:Transterm]]
# [[:Template:RQ:Shakespeare Othello]]
# [[:Template:Kpv-decl/unc]]
# [[:Template:Kpv-decl-hard/unc]]
# [[:Template:Bulgarian cardinal numerals]]
# [[:Template:Emojipic]]
# [[:Template:Aii-decl-noun]]
# [[:Template:Th-morse letter]]
# [[:Template:El-pron-form]]
# [[:Template:El-art-def]]
# [[:Template:Swadesh list 207 trans pronunciation]]
# [[:Template:Nn-noun-f2/2012]]
# [[:Template:Uz-adv]]
# [[:Template:Ja-toyo-depre]]
# [[:Template:Tg-predicative]]
# [[:Template:Tg-pred-c]]
# [[:Template:Bulgarian possessive pronouns]]
# [[:Template:El-nN-ο-3ab]]
# [[:Template:Hu-conj-choose-long-or-short]]
# [[:Template:Hu-conj-suf]]
# [[:Template:Perfectives]]
# [[:Template:Lld-adj/l/pl]]
# [[:Template:Lld-adj/l/fpl]]
# [[:Template:Lld-adj/l/f]]
# [[:Template:Sah-personal pronouns]]
# [[:Template:Orv-verb]]
# [[:Template:Ba-беҙ]]
# [[:Template:Sga-decl-a-fem]]
# [[:Template:Table:days of the week/et]]
# [[:Template:Csb-decl-noun/table]]
# [[:Template:Sk-môj]]
# [[:Template:Sk-tvoj]]
# [[:Template:Hsb-decl-poss-pron]]
# [[:Template:Hsb-decl-pron-60]]
# [[:Template:Dsb-decl-pron-60]]
# [[:Template:Sk-svoj]]
# [[:Template:Sh-adj-indef]]
# [[:Template:Hsb-decl-adj1]]
# [[:Template:Lt-form-part]]
# [[:Template:Pl-conj-ai-yć]]
# [[:Template:Sl-decl-noun-table-unc2]]
# [[:Template:Sl-decl-num]]
# [[:Template:Fr-dualh]]
# [[:Template:Tg-adj]]
# [[:Template:Rebracketing]]
# [[:Template:Mdf-verb-manual-table]]
# [[:Template:Mdf-verb-manual]]
# [[:Template:Xcl-decl-noun]]
# [[:Template:Xcl-noun-ի-ա]]
# [[:Template:Ru-ordinals]]
# [[:Template:参考书籍]]
# [[:Template:Is-decl-noun-base/pl]]
# [[:Template:RQ:Douglass Bondage]]
# [[:Template:RQ:Pyle Robin Hood]]
# [[:Template:RQ:Thackeray Vanity Fair]]
# [[:Template:Sq-case]]
# [[:Template:Sl-infl-dati]]
# [[:Template:Imperfective form of]]
# [[:Template:Zh-hypo]]
# [[:Template:Zh-hyper]]
# [[:Template:Morse links]]
# [[:Template:Mn-noun-form]]
# [[:Template:Ru-initialism of]]
# [[:Template:Az-noun-cyrl-v]]
# [[:Template:PIE numerals]]
# [[:Template:Mdf-noun-pos-table]]
# [[:Template:Mdf-noun-pos]]
# [[:Template:Ko-numeral usage note]]
# [[:Template:R:ga:Finck]]
# [[:Template:RQ:I Am a Cat]]
# [[:Template:List:Western astrology signs/th]]
# [[:Template:Ch-personal pronouns]]
# [[:Template:Kpv-decl/prop]]
# [[:Template:Kpv-decl-hard/prop]]
# [[:Template:Sl-decl-noun-m-ov]]
# [[:Template:Kpv-decl-soft]]
# [[:Template:RQ:Bibbja]]
# [[:Template:Orv-table entry]]
# [[:Template:Ru-decl-noun-irreg-unc]]
# [[:Template:Gl-conj-table]]
# [[:Template:Fo-decl-noun-n3-s]]
# [[:Template:Upright]]
# [[:Template:Is-decl-noun-base/sg]]
# [[:Template:Is-decl-noun-base/sgpl]]
# [[:Template:Section link-lite]]
# [[:Template:Ro-conj-veni]]
# [[:Template:Relational adjective of]]
# [[:Template:Foreign name]]
# [[:Template:Ny-proper noun]]
# [[:Template:Uncommon form of]]
# [[:Template:Tyv-v2-v4]]
# [[:Template:Tyv-v4]]
# [[:Template:Tyv-v2]]
# [[:Template:Ru-decl-adj-irreg]]
# [[:Template:Ru-abbrev of]]
# [[:Template:Ru-Zodiac]]
# [[:Template:Hy-noun-ու-ներ-inf]]
# [[:Template:Hy-conj]]
# [[:Template:Hy-conj-ել]]
# [[:Template:Xcl-decl-noun-unc]]
# [[:Template:Xcl-noun-ո-unc]]
# [[:Template:Hy-decl-verb]]
# [[:Template:Xcl-verb-form]]
# [[:Template:Non-decl-adj-weak]]
# [[:Template:Non-decl-m-an]]
# [[:Template:Okm-noun]]
# [[:Template:Kpv-decl-vowel]]
# [[:Template:Kpv-decl-hard]]
# [[:Template:Kpv-decl-adj]]
# [[:Template:Sux-signs]]
# [[:Template:Vo-conj]]
# [[:Template:Sumerogram of]]
# [[:Template:R:sux:ePSD2]]
# [[:Template:R:sux:DGS]]
# [[:Template:Sux-alts]]
# [[:Template:Xgn-comparison-Cyrl]]
# [[:Template:Ko-div]]
# [[:Template:Uk-decl-num3]]
# [[:Template:R:Aguilar et al. 2017]]
# [[:Template:Rue-cardinals]]
# [[:Template:越南语猪商行话数词]]
# [[:Template:Sga-decl-o-masc]]
# [[:Template:Uk-conj-buty]]
# [[:Template:Uk-categoryTOC]]
# [[:Template:Ru-pre-reform]]
# [[:Template:Sla-alt-pal2]]
# [[:Template:Sla-alt-pal1]]
# [[:Template:Sla-decl-adj-table]]
# [[:Template:Sla-decl-adj-hard]]
# [[:Template:Sla-adj]]
# [[:Template:Mk-decl-adj-table-full]]
# [[:Template:R:OpenThesaurus]]
# [[:Template:Az-question]]
# [[:Template:El-nN-μα-ματα-3b1]]
# [[:Template:Pitjantjatjara bound pronoun]]
# [[:Template:Non-conj-blank-active]]
# [[:Template:Pitjantjatjara pronouns]]
# [[:Template:Japanese first-person pronouns]]
# [[:Template:Tts-pronoun]]
# [[:Template:Pi-pronoun]]
# [[:Template:El-nN-α-2a]]
# [[:Template:Izh-decl/kolmas]]
# [[:Template:Nl-decl-pres-ptc]]
# [[:Template:El-nM-ης-εις-2a]]
# [[:Template:Zu-phrase]]
# [[:Template:El-nN-εν-εντα-2b]]
# [[:Template:El-nF-η-εις-3b2]]
# [[:Template:Ar-quran-def]]
# [[:Template:Vi-prep]]
# [[:Template:Zh-alt-lb]]
# [[:Template:Ko-suffix]]
# [[:Template:Mak-verb form]]
# [[:Template:R:Courthiade]]
# [[:Template:R:rom:Boretzky-Igla]]
# [[:Template:R:Basrim 2008]]
# [[:Template:Grc-conj]]
# [[:Template:Tft-conj]]
# [[:Template:El-nN-η-3b]]
# [[:Template:Omr-noun]]
# [[:Template:Ro-noun-f-Cyrl]]
# [[:Template:Ko-etym-nativised]]
# [[:Template:Table:days of the week/uz]]
# [[:Template:Ancient Greek personal pronouns 2]]
# [[:Template:El-nN-αν-αντα-2b]]
# [[:Template:El-nN-ος-οτα-1]]
# [[:Template:El-army-ranks]]
# [[:Template:As-proper noun]]
# [[:Template:Bengali-digits]]
# [[:Template:Ja-adj-ku]]
# [[:Template:El-nN-α-3b]]
# [[:Template:El-nF-α-ες-3c]]
# [[:Template:List:prefectures of Japan/ja]]
# [[:Template:List:prefectures of Japan/en]]
# [[:Template:El-nN-ι-ια-2a1]]
# [[:Template:Fi-alt-personal]]
# [[:Template:Ko-interj]]
# [[:Template:El-nM-ας-ες-2d]]
# [[:Template:El-nM-ους-ουδες-1]]
# [[:Template:El-nN-αν-αντα-0]]
# [[:Template:El-nN-ι-ια-3a1]]
# [[:Template:El-nN-υ-εα-1]]
# [[:Template:El-nM-ιας-ιες-2b]]
# [[:Template:El-n-genP]]
# [[:Template:Tl-personal pronouns]]
# [[:Template:El-nI-υς-ύες-1]]
# [[:Template:El-nM-ης-ηδες-3b]]
# [[:Template:Grc-categoryTOC]]
# [[:Template:Tl-infl-table2]]
# [[:Template:Tl-infl-in]]
# [[:Template:Nap-pronouns]]
# [[:Template:Zlw-slv-decl-noun]]
# [[:Template:Ancient Greek personal pronouns 1]]
# [[:Template:El-nM-ιας-ηδες-3a]]
# [[:Template:El-nN-ια-2a2]]
# [[:Template:El-nF-αδες-1]]
# [[:Template:El-nN-ως-2]]
# [[:Template:Is-conj-w2]]
# [[:Template:He-root-link]]
# [[:Template:Fi-conj-vanheta]]
# [[:Template:Km-prep]]
# [[:Template:Fi-conj-valita]]
# [[:Template:Km-suffix]]
# [[:Template:Ug-uly of]]
# [[:Template:Ug-latin]]
# [[:Template:Sa-sc/label]]
# [[:Template:Sa-sc]]
# [[:Template:Km-con]]
# [[:Template:Pl-conj-ai-XI]]
# [[:Template:Pl-conj-ap-uję]]
# [[:Template:Pl-conj-ap-ić]]
# [[:Template:Ary-pron-inflection]]
# [[:Template:Km-prefix]]
# [[:Template:Cab-pronouns]]
# [[:Template:Km-pronoun]]
# [[:Template:El-nM-ωρ-ορες-2b]]
# [[:Template:El-nN-ι-2b]]
# [[:Template:Fr-conjunction]]
# [[:Template:Fi-conj-sallia]]
# [[:Template:El-nN-μο-ματα-3b]]
# [[:Template:Pl-decl-adj-owy]]
# [[:Template:Uses TemplateStyles]]
# [[:Template:Tlm]]
# [[:Template:Grc-lak]]
# [[:Template:Grc-dor]]
# [[:Template:Grc-koi]]
# [[:Template:Grc-att]]
# [[:Template:El-nM-ης-ηδες-1]]
# [[:Template:He-wv]]
# [[:Template:He-pausal]]
# [[:Template:He-noun form of]]
# [[:Template:El-nN-μα-3b]]
# [[:Template:副詞性賓格]]
# [[:Template:El-nN-ον-οντα-2b]]
# [[:Template:Zh-CD/link]]
# [[:Template:R:Rollov]]
# [[:Template:El-nM-ες-εδες-1]]
# [[:Template:Des-bottom]]
# [[:Template:Ko-verb set]]
# [[:Template:Ko-etym-verbal-suffix]]
# [[:Template:R:la:Francese]]
# [[:Template:El-nM-ας-ες-3c]]
# [[:Template:French possessive pronouns]]
# [[:Template:French possessive adjectives]]
# [[:Template:La-decl-ppron]]
# [[:Template:Zh-hg/s]]
# [[:Template:RQ:Kokinshū]]
# [[:Template:El-n-gen-ff]]
# [[:Template:El-nF-η-εις-2a]]
# [[:Template:El-nN-ος-η-3b]]
# [[:Template:Named-after/list]]
# [[:Template:Ps-noun-f-a]]
# [[:Template:Portuguese possessive adjectives]]
# [[:Template:Gl-pron-possess]]
# [[:Template:La-det]]
# [[:Template:Lif-adv]]
# [[:Template:Lif-adj]]
# [[:Template:El-nF-η-ες-3b1]]
# [[:Template:El-punctuation]]
# [[:Template:El-nM-ης-3a]]
# [[:Template:Th-ant-list]]
# [[:Template:Nod-noun]]
# [[:Template:Shn-adj]]
# [[:Template:Vi-conj]]
# [[:Template:El-decl-1st-person]]
# [[:Template:El-decl-2nd-person]]
# [[:Template:El-decl-εγώ]]
# [[:Template:El-nF-ος-οι-1]]
# [[:Template:El-thirteen]]
# [[:Template:El-fourteen]]
# [[:Template:G2]]
# [[:Template:El-nF-α-αδες-1]]
# [[:Template:El-nM-ος-οι-2b]]
# [[:Template:El-nM-ων-ωνες-2b]]
# [[:Template:El-nF-α-ες-1a]]
# [[:Template:Yoi-romanization of]]
# [[:Template:Yoi-romaji]]
# [[:Template:Wuh-personal pronouns]]
# [[:Template:El-nN-ες-η-1]]
# [[:Template:El-nN-υ-ια-2b]]
# [[:Template:R:aou:HYC2008]]
# [[:Template:El-taxonomy]]
# [[:Template:El-nM-εας-εις-1]]
# [[:Template:El-nM-ας-αδες-1]]
# [[:Template:Goh-decl-noun-a-n]]
# [[:Template:Goh-decl-noun-i-f]]
# [[:Template:R:swi:WXE2020]]
# [[:Template:El-decl-3rd-person]]
# [[:Template:Cv-decl]]
# [[:Template:Pi-conj-special]]
# [[:Template:Pi-verb]]
# [[:Template:Crx-letter-def]]
# [[:Template:Tg-infl-noun/link]]
# [[:Template:Tg-infl-noun]]
# [[:Template:Mn-numeral-form]]
# [[:Template:Lld-adj/-/pl]]
# [[:Template:Lld-adj/-/fpl]]
# [[:Template:Lld-adj/-/f]]
# [[:Template:El-nF-ου-ουδες-1]]
# [[:Template:Lb-decl-personal pronouns]]
# [[:Template:R:swi:PYX2014]]
# [[:Template:El-nN-ας-ατα-2b]]
# [[:Template:Xsy-categoryTOC]]
# [[:Template:Picdiclabel/label]]
# [[:Template:澳門]]
# [[:Template:El-n-gen]]
# [[:Template:El-nM-εας-εις-1b]]
# [[:Template:El-nN-ο-3a]]
# [[:Template:File other]]
# [[:Template:PD-Layout]]
# [[:Template:El-nF-η-3b1]]
# [[:Template:El-nN-μα-ματα-2b]]
# [[:Template:Th-rel]]
# [[:Template:Th-syn-see]]
# [[:Template:Ping2]]
# [[:Template:Tru-numeral]]
# [[:Template:Gmq-rom]]
# [[:Template:Holonym]]
# [[:Template:Eo-quantities of bytes]]
# [[:Template:El-nF-ος-οι-3b1]]
# [[:Template:R:ru:Dahl]]
# [[:Template:El-nM-ιας-ιες-2c]]
# [[:Template:List:compass points/de]]
# [[:Template:El-nM-ης-ες-1]]
# [[:Template:El-nM-ος-οι-3d]]
# [[:Template:El-nN-ι-ια-2b]]
# [[:Template:El-nF-η-εις-3b]]
# [[:Template:El-nN-ι-ια-1]]
# [[:Template:El-nN-ος-η-2c]]
# [[:Template:El-nF-η-ες-2a]]
# [[:Template:El-nF-α-1]]
# [[:Template:El-nM-ης-ηδες-2a]]
# [[:Template:El-nN-ο-α-3ab]]
# [[:Template:El-nM-ας-ες-2a]]
# [[:Template:El-nM-ας-ες-2b]]
# [[:Template:El-nN-ο-α-3a]]
# [[:Template:El-nF-α-ες-1]]
# [[:Template:El-nM-ος-3a]]
# [[:Template:El-nF-α-ες-3a1]]
# [[:Template:El-nF-ος-οι-2a]]
# [[:Template:El-nN-ο-α-1]]
# [[:Template:El-nN-ος-η-2b]]
# [[:Template:Osp-noun]]
# [[:Template:El-nF-η-ες-2b]]
# [[:Template:Osx-decl-noun-a-m]]
# [[:Template:El-nF-α-ες-2d]]
# [[:Template:El-nN-ι-ια-2a2]]
# [[:Template:El-nN-μα-ματα-3b]]
# [[:Template:El-nN-ια-2a1]]
# [[:Template:El-nM-ας-ες-3b]]
# [[:Template:Ha-adj]]
# [[:Template:La-interj]]
# [[:Template:El-nF-α-ες-2c]]
# [[:Template:El-nF-η-ες-2b1]]
# [[:Template:El-nM-ας-3b]]
# [[:Template:El-n-genS]]
# [[:Template:El-nN-ο-1]]
# [[:Template:El-nM-ος-οι-3a]]
# [[:Template:El-nM-ος-3b]]
# [[:Template:El-nF-α-ες-3b1]]
# [[:Template:El-nM-ος-οι-3c]]
# [[:Template:El-nF-ος-2a]]
# [[:Template:El-nF-η-3b]]
# [[:Template:El-nF-α-ες-3b2]]
# [[:Template:El-nM-ας-1]]
# [[:Template:El-nN-ο-2a]]
# [[:Template:El-nM-ος-1]]
# [[:Template:El-nF-η-1]]
# [[:Template:De-conj-old]]
# [[:Template:RQ:Rəsulzadə]]
# [[:Template:世界語詞條模板]]
# [[:Template:世界語詞條分類]]
# [[:Template:Zu-infl-verb]]
# [[:Template:Scn-article]]
# [[:Template:Az-noun-form]]
# [[:Template:Gn-personal pronouns]]
# [[:Template:Az-decl-comp/k]]
# [[:Template:Az-decl-comp/cc]]
# [[:Template:Az-decl-comp/c]]
# [[:Template:Az-decl-comp/q]]
# [[:Template:Az-decl-comp/v]]
# [[:Template:R:Oxford English Dictionary]]
# [[:Template:RQ:Scott Ivanhoe]]
# [[:Template:Az-letter]]
# [[:Template:Eu-letter]]
# [[:Template:Pt-letter]]
# [[:Template:Yue-jyut]]
# [[:Template:List:states of India/bn]]
# [[:Template:R:ira:ESIJa]]
# [[:Template:Fa-preposition]]
# [[:Template:Sco-past of]]
# [[:Template:Frm-past participle]]
# [[:Template:Is-patronymics]]
# [[:Template:Ro-conj-aux]]
# [[:Template:It-pron-adj]]
# [[:Template:Odt-decl-table]]
# [[:Template:Kaw-noun]]
# [[:Template:Jv-rom]]
# [[:Template:R:King James Version]]
# [[:Template:Pcd-adj]]
# [[:Template:Frm-present participle]]
# [[:Template:R:ine:LIN]]
# [[:Template:R:ine:EIEC]]
# [[:Template:R:ine:Cheung2007]]
# [[:Template:R:ine:IELC]]
# [[:Template:R:ine:LIV]]
# [[:Template:R:sla:ESSJa]]
# [[:Template:Non-decl-n-an]]
# [[:Template:R:ms:BSJ1950]]
# [[:Template:Mul-kangxi radical-def/def]]
# [[:Template:Ja-r/args]]
# [[:Template:Ja-r/multi]]
# [[:Template:Japanese number]]
# [[:Template:Mul-kangxi radical-def/switch]]
# [[:Template:Gv-adj]]
# [[:Template:Lt-numeral]]
# [[:Template:Pt-cardinal]]
# [[:Template:Non-decl-n-a]]
# [[:Template:Et-decl-puri]]
# [[:Template:Fo-conj-56s]]
# [[:Template:Scn-adj-iu]]
# [[:Template:Pi-adj]]
# [[:Template:Non-decl-f-on]]
# [[:Template:Khb-verb]]
# [[:Template:Lt-decl-pers-pron]]
# [[:Template:Lt-3rd-person-m]]
# [[:Template:Sq-personal pronouns]]
# [[:Template:Ro-decl-adj-2]]
# [[:Template:Gd-adj]]
# [[:Template:Ro-name]]
# [[:Template:Ro-conj-e-ut]]
# [[:Template:Izh-personal pronouns]]
# [[:Template:Izh-decl/maa]]
# [[:Template:Izh-decl-ppron]]
# [[:Template:T-simple]]
# [[:Template:缅甸文]]
# [[:Template:R:Okinawa Goten]]
# [[:Template:Mk-decl-noun-око]]
# [[:Template:Sga-decl-noun-table]]
# [[:Template:Zh-no-solo]]
# [[:Template:Kw mut cons]]
# [[:Template:Sv-cardinal]]
# [[:Template:Sa-decl-noun-ās-m]]
# [[:Template:Sa-decl-noun-ās-f]]
# [[:Template:Sa-decl-noun-n-n]]
# [[:Template:Sa-decl-noun-i-m]]
# [[:Template:Sa-decl-noun-as-n]]
# [[:Template:Mk-decl-num]]
# [[:Template:Mk-decl-num-два]]
# [[:Template:Mk-decl-adj-е]]
# [[:Template:R:mk:Pravopis]]
# [[:Template:R:mk:DRMJ]]
# [[:Template:Mk-conj-table-impersonal]]
# [[:Template:Mk-conj-сум]]
# [[:Template:Mk-conj-и-е]]
# [[:Template:Mk-conj-и-impersonal]]
# [[:Template:Mk-conj-и-3]]
# [[:Template:Mk-conj-и-2]]
# [[:Template:Mk-conj-е-а-impersonal]]
# [[:Template:Mk-conj-е-4]]
# [[:Template:Mk-conj-е-2]]
# [[:Template:Mk-conj-2-е-о]]
# [[:Template:Mk-conj-и-а]]
# [[:Template:Mk-conj-и-1]]
# [[:Template:Mk-conj-е-0]]
# [[:Template:Mk-conj-е-е]]
# [[:Template:Mk-conj-е-о]]
# [[:Template:Mk-conj-е-а]]
# [[:Template:Mk-conj-е-1]]
# [[:Template:Desc/sl-tonal]]
# [[:Template:Bho-verb]]
# [[:Template:Tr-decl-pronoun]]
# [[:Template:Legend]]
# [[:Template:Lo-adj]]
# [[:Template:Te-verb form]]
# [[:Template:R:ami:Jiang2012]]
# [[:Template:Hit-decl-an]]
# [[:Template:Hit-decl-adj]]
# [[:Template:Hit-decl-adj-aš]]
# [[:Template:Et-decl-nõder]]
# [[:Template:R:az:Huseynov]]
# [[:Template:R:EKSS]]
# [[:Template:R:ii:600]]
# [[:Template:Gs]]
# [[:Template:R:lis:LHCD]]
# [[:Template:臺灣原住民族人名說明]]
# [[:Template:Fix]]
# [[:Template:Ml]]
# [[:Template:Latin script letter names/ja]]
# [[:Template:Ja-hentaigana-dakuten2]]
# [[:Template:Ja-hentaigana-dakuten]]
# [[:Template:Li-adj]]
# [[:Template:Projectlink/wikipedia]]
# [[:Template:Date.day+n]]
# [[:Template:Rounddown]]
# [[:Template:MilestonePrediction]]
# [[:Template:Milestone]]
# [[:Template:NS1]]
# [[:Template:Milestoneitem]]
# [[:Template:Ja-hentaigana-def]]
# [[:Template:Ja-etym hentaigana]]
# [[:Template:Ja-hentaigana]]
# [[:Template:古日語假名]]
# [[:Template:Span-tt/tooltip]]
# [[:Template:Span-tt]]
# [[:Template:變體假名字體]]
# [[:Template:Cquote]]
# [[:Template:List:上標數字/mul]]
# [[:Template:R:hi:Chaturvedi]]
# [[:Template:List helper-3]]
# [[:Template:Lv-decl-AdjN-def-1]]
# [[:Template:List:continents/lv]]
# [[:Template:Lv-pronoun]]
# [[:Template:Lv-categoryTOC]]
# [[:Template:User gender]]
# [[:Template:Az-c2]]
# [[:Template:Az-c1]]
# [[:Template:Az-verb-stem-last]]
# [[:Template:Az-verb-stem]]
# [[:Template:Lv-decl-AdjN-def-2]]
# [[:Template:Lv-reflexive of]]
# [[:Template:Lv-decl-AdjN-def-4]]
# [[:Template:Lv-decl-AdjN]]
# [[:Template:Eu-adv]]
# [[:Template:Ms-categoryTOC]]
# [[:Template:List:coffees/ms/Arab]]
# [[:Template:List:coffees/ms/Latn]]
# [[:Template:Ms-prefix]]
# [[:Template:Lv-conj-3]]
# [[:Template:Lv-conj-2]]
# [[:Template:En-prep phrase]]
# [[:Template:Ms-der]]
# [[:Template:Ms-prep]]
# [[:Template:Nb-verb-4]]
# [[:Template:Lt-categoryTOC]]
# [[:Template:Lt-conj-1-circum]]
# [[:Template:Brai-script/extensions/boiler]]
# [[:Template:List:antileptons/lt]]
# [[:Template:Ro-adv]]
# [[:Template:Pt-obsolete-hellenism]]
# [[:Template:Inc-opa-adj]]
# [[:Template:Ja-kana-mannyogana-etym]]
# [[:Template:Kmr-verb]]
# [[:Template:RQ:Sanchez Pell freda]]
# [[:Template:RQ:Leizarraga]]
# [[:Template:Kok-pos]]
# [[:Template:R:gl:CX]]
# [[:Template:Egy-glyph]]
# [[:Template:R:Poerwadarminta 1939]]
# [[:Template:User:QFQ/formatnoun]]
# [[:Template:Table:國際象棋棋子/sw]]
# [[:Template:User:QFQ/formatipa]]
# [[:Template:R:szy:語法概論]]
# [[:Template:Table:紙牌/sw]]
# [[:Template:List:continents/sw]]
# [[:Template:幽]]
# [[:Template:達悟語時間詞]]
# [[:Template:Indonesian informal you]]
# [[:Template:User:QFQ/formatformof]]
# [[:Template:Realtemplate]]
# [[:Template:User:QFQ/faketemplate]]
# [[:Template:List:states of India/hi]]
# [[:Template:Table:suits/hi]]
# [[:Template:R:Cantalausa]]
# [[:Template:Spanish conjugation type]]
# [[:Template:Langhd/cat]]
# [[:Template:Languages by country]]
# [[:Template:Table:紙牌/cs]]
# [[:Template:Table:季節/cs]]
# [[:Template:Fmbox/warning ruler]]
# [[:Template:Editnotices/Page/User:CrowleyBot]]
# [[:Template:Oldid]]
# [[:Template:幽默存檔]]
# [[:Template:坏笑话和删除的胡话]]
# [[:Template:語後綴]]
# [[:Template:瓦鄉]]
# [[:Template:R:ABVD]]
# [[:Template:潮州]]
# [[:Template:Zodiac]]
# [[:Template:De-pronoun]]
# [[:Template:R:kac:JXL]]
# [[:Template:晉]]
# [[:Template:Lic-categoryTOC]]
# [[:Template:R:族語學習手冊/code]]
# [[:Template:Verb form of]]
# [[:Template:R:族語學習手冊]]
# [[:Template:黎語人稱代詞]]
# [[:Template:R:ycr:真田信治 2015]]
# [[:Template:R:ycr:真田信治 簡月真 2012]]
# [[:Template:R:ycr:簡月真 2018a]]
# [[:Template:R:ycr:簡月真 真田信治 2011]]
# [[:Template:R:ycr:黃美金 2010]]
# [[:Template:哥特聖經]]
# [[:Template:Ami-syn/table]]
# [[:Template:Trv-syn/table]]
# [[:Template:Trv-syn]]
# [[:Template:User th-4]]
# [[:Template:User th-1]]
# [[:Template:User nan-taiwan]]
# [[:Template:User nan]]
# [[:Template:Ami-syn]]
# [[:Template:秀姑巒阿美]]
# [[:Template:恆春阿美]]
# [[:Template:海岸阿美]]
# [[:Template:馬蘭阿美]]
# [[:Template:南勢阿美]]
# [[:Template:R:族語學習詞表]]
# [[:Template:R:部落核定彙整表]]
# [[:Template:Num2rad]]
# [[:Template:Han character variant]]
# [[:Template:滇]]
# [[:Template:家名]]
# [[:Template:氏族名]]
# [[:Template:Ja-vb-1-s-う]]
# [[:Template:Mn-adjective]]
# [[:Template:R:族語新詞/103]]
# [[:Template:R:族語新詞]]
# [[:Template:R:臺灣原住民族語言分布參考表]]
# [[:Template:湘]]
# [[:Template:Zh-syn-list]]
# [[:Template:Col2]]
# [[:Template:Poj reading of]]
# [[:Template:Kaifang]]
# [[:Template:IPA letters/getstressed]]
# [[:Template:Inflection]]
# [[:Template:R:lmy:verdizade19b]]
# [[:Template:De-verb-irregular]]
# [[:Template:De-adnj]]
# [[:Template:Yi]]
# [[:Template:Mi]]
# [[:Template:Km]]
# [[:Template:Nds-de]]
# [[:Template:R:Xin Shidai Ri-han Cidian]]
# [[:Template:Mnw]]
# [[:Template:R:hy:Trq]]
# [[:Template:Mt-rootbox]]
# [[:Template:HSK]]
# [[:Template:Rhyme list end]]
# [[:Template:Rhyme list begin]]
# [[:Template:Table:德國紙牌/sh]]
# [[:Template:政]]
# [[:Template:CategoryTOC/sh]]
# [[:Template:Table:西班牙牌/sh]]
# [[:Template:Table:紙牌/sh]]
# [[:Template:PL:1911]]
# [[:Template:Ky]]
# [[:Template:Kaifang-EO]]
# [[:Template:List:continents/ru]]
# [[:Template:振假名/表示]]
# [[:Template:De-interjection]]
# [[:Template:Nb]]
# [[:Template:韻書列表]]
# [[:Template:Mg]]
# [[:Template:Nv]]
# [[:Template:Examples-right]]
# [[:Template:Bg-noun-m-i]]
# [[:Template:Bg-noun-f-a1]]
# [[:Template:Ba-decl-noun]]
# [[:Template:Hi-decl-adj]]
# [[:Template:Table:Zodiac/ja]]
# [[:Template:Table:Zodiac/ko]]
# [[:Template:Table:Zodiac/en]]
# [[:Template:Table:Zodiac/zh]]
# [[:Template:Table:Zodiac]]
# [[:Template:Table:Chinese Zodiac/en]]
# [[:Template:Table:Chinese Zodiac/zh]]
# [[:Template:Table:Chinese Zodiac]]
# [[:Template:Table:Solar System/zh]]
# [[:Template:Table:Solar system]]
# [[:Template:Table:days of the week/zh]]
# [[:Template:Table:days of the week]]
# [[:Template:漳州]]
# [[:Template:閩東]]
# [[:Template:閩北]]
# [[:Template:Uk-adj-и́й]]
# [[:Template:Uk-decl-noun]]
# [[:Template:化 ja]]
# [[:Template:化 en]]
# [[:Template:Bg-noun-f-ya1]]
# [[:Template:Uk-decl-noun-unc]]
# [[:Template:Uk-adj-table]]
# [[:Template:Uk-adj-ий]]
# [[:Template:Uk-decl-adj]]
# [[:Template:Redirect4]]
# [[:Template:Jbovlaste]]
# [[:Template:Mul]]
# [[:Template:Or]]
# [[:Template:Midashi]]
# [[:Template:Ja-conj]]
# [[:Template:Ja-v]]
# [[:Template:Ja-n]]
# [[:Template:Inline tag]]
# [[:Template:Yomi/ap]]
# [[:Template:Yomi]]
# [[:Template:Rmjsup]]
# [[:Template:Pah]]
# [[:Template:Pahl]]
# [[:Template:香港]]
# [[:Template:矿]]
# [[:Template:平水韻]]
# [[:Template:Messagebox]]
# [[:Template:Experimental]]
# [[:Template:List:fractions/mul]]
# [[:Template:Kk]]
# [[:Template:客家]]
# [[:Template:釋名]]
# [[:Template:Mns]]
# [[:Template:Cdo]]
# [[:Template:Wikipedia multiplearticle]]
# [[:Template:-ba-]]
# [[:Template:Ojp-conj/verbconj]]
# [[:Template:Ojp-conj]]
# [[:Template:Ojp-verbconj]]
# [[:Template:Inf-ojp]]
# [[:Template:Inf-ja-aux2]]
# [[:Template:In category]]
# [[:Template:Protection Templates]]
# [[:Template:Lua]]
# [[:Template:管理員名單]]
# [[:Template:日正字]]
# [[:Template:日俗字]]
# [[:Template:汉语读音/lua]]
# [[:Template:Py]]
# [[:Template:Hanindex]]
# [[:Template:-pn-]]
# [[:Template:De-decl-noun-sg]]
# [[:Template:De-vb-2/Sandbox]]
# [[:Template:De-vb-tb/Sandbox]]
# [[:Template:Da-nm]]
# [[:Template:粵語人稱代詞]]
# [[:Template:Zh-pronoun]]
# [[:Template:Mandarin TOC]]
# [[:Template:Cantonese TOC]]
# [[:Template:Yale reading of]]
# [[:Template:It-nm]]
# [[:Template:Main Page Talk Header]]
# [[:Template:Lb-nm]]
# [[:Template:Is-nm]]
# [[:Template:Fo-prnc]]
# [[:Template:Fo-nm]]
# [[:Template:Ca-aj]]
# [[:Template:Rm-nm]]
# [[:Template:Ca-nm]]
# [[:Template:满文及转写/手动]]
# [[:Template:Yi-vb]]
# [[:Template:Vo-nm]]
# [[:Template:Yi-nm]]
# [[:Template:Ja-vb-1-う]]
# [[:Template:De-nm-prefix]]
# [[:Template:De-vb-prefix]]
# [[:Template:Ja-vb-1-む]]
# [[:Template:Fr-vb-ger]]
# [[:Template:Fr-vb-ir]]
# [[:Template:ManchuUnicode]]
# [[:Template:满文及转写]]
# [[:Template:閩南參/han]]
# [[:Template:閩南參/seng]]
# [[:Template:閩南參/khi]]
# [[:Template:閩南參/loan]]
# [[:Template:閩南參/cha]]
# [[:Template:閩南參/thai]]
# [[:Template:閩南參/ko]]
# [[:Template:閩南參/hong]]
# [[:Template:閩南參/ho]]
# [[:Template:閩南參/bo]]
# [[:Template:閩南參]]
# [[:Template:相似白話字]]
# [[:Template:Ja-vb-1-つ]]
# [[:Template:Ja-vb-2]]
# [[:Template:Ja-vb]]
# [[:Template:Blocksnotice]]
# [[:Template:Chem/initialA]]
# [[:Template:Dummy ref]]
# [[:Template:Documentation subpage]]
# [[:Template:错字重定向]]
# [[:Template:-n p-]]
# [[:Template:汉语词汇專題]]
# [[:Template:Ms-cat]]
# [[:Template:Es-aj]]
# [[:Template:Nl-cat]]
# [[:Template:Es-cat]]
# [[:Template:Es-nm]]
# [[:Template:Ja-cat]]
# [[:Template:粵台]]
# [[:Template:粵台/轉]]
# [[:Template:He-aj]]
# [[:Template:Fr-vb-er]]
# [[:Template:Fr-vb-tb]]
# [[:Template:Fr-vb]]
# [[:Template:台華雙語辭典]]
# [[:Template:Ja-aj-い]]
# [[:Template:Ja-aj-tb]]
# [[:Template:Ar-nm-tb]]
# [[:Template:Ja-vb-1-く]]
# [[:Template:Ko-conj-adj-darata]]
# [[:Template:Quotation]]
# [[:Template:Ja-vb-1-す]]
# [[:Template:No documentation]]
# [[:Template:論述列表]]
# [[:Template:方針列表]]
# [[:Template:User JS-0]]
# [[:Template:User coder-0]]
# [[:Template:Babel field 1]]
# [[:Template:Babel field]]
# [[:Template:Babel field 0]]
# [[:Template:Ja-vb-1-る]]
# [[:Template:Ja-vb-tb]]
# [[:Template:Forcevariant]]
# [[:Template:Novariant]]
# [[:Template:Citation/core]]
# [[:Template:Ton]]
# [[:Template:粵新]]
# [[:Template:藏轉/表]]
# [[:Template:藏轉/濾]]
# [[:Template:藏轉/碼]]
# [[:Template:藏轉/音節]]
# [[:Template:藏轉]]
# [[:Template:El-l]]
# [[:Template:Link/en]]
# [[:Template:Fa-gen-c]]
# [[:Template:Phli]]
# [[:Template:中國大陸]]
# [[:Template:日字見]]
# [[:Template:土庫曼語]]
# [[:Template:越漢詞]]
# [[:Template:朝漢詞]]
# [[:Template:粵音/ø]]
# [[:Template:漢詞新]]
# [[:Template:國際音標/判]]
# [[:Template:Ar-root-entry]]
# [[:Template:阿塞拜疆语]]
# [[:Template:例注]]
# [[:Template:奧斯曼土耳其語]]
# [[:Template:LR]]
# [[:Template:圖2]]
# [[:Template:여씨-존]]
# [[:Template:閩南]]
# [[:Template:첩해신어(원간본)]]
rwnx1n0exqxz7wtzgybkv4uarv7yu5d
Module:Quote
828
1394668
9787412
9694911
2026-05-24T12:38:49Z
TongcyDai
53191
9787412
Scribunto
text/plain
--[=[
This module contains functions to implement quote-* templates.
Author: Benwing2; conversion into Lua of {{quote-meta/source}} template,
written by Sgconlaw with some help from Erutuon and Benwing2.
The main interface is quote_t(). Note that the source display is handled by source(), which reads both the
arguments passed to it *and* the arguments passed to the parent template, with the former overriding the latter.
]=]
local export = {}
--[=[
FIXME:
1. Dates like `1 march 2025` with the day of the month being 1 and the month lowercased are treated as month-year-only.
The relevant code checks for a capitalized word; it should probably instead check for the actual month names or
abbrevs.
]=]
-- Named constants for all modules used, to make it easier to swap out sandbox versions.
local check_isxn_module = "Module:check isxn"
local debug_track_module = "Module:debug/track"
local en_utilities_module = "Module:en-utilities"
local italics_module = "Module:italics"
local labels_module = "Module:labels"
local languages_module = "Module:languages"
local languages_error_module = "Module:languages/error"
local links_module = "Module:links"
local number_utilities_module = "Module:number utilities"
local parameters_module = "Module:parameters"
local parse_utilities_module = "Module:parse utilities"
local qualifier_module = "Module:qualifier"
local roman_numerals_module = "Module:roman numerals"
local scribunto_module = "Module:Scribunto"
local script_utilities_module = "Module:script utilities"
local scripts_module = "Module:scripts"
local string_pattern_escape_module = "Module:string/patternEscape"
local string_replacement_escape_module = "Module:string/replacementEscape"
local string_utilities_module = "Module:string utilities"
local table_module = "Module:table"
local template_parser_module = "Module:template parser"
local usex_module = "Module:usex"
local usex_templates_module = "Module:usex/templates"
local utilities_module = "Module:utilities"
local yesno_module = "Module:yesno"
local concat = table.concat
local insert = table.insert
local new_title = mw.title.new
local remove = table.remove
local require = require
local sort = table.sort
local u = mw.ustring.char
local ugsub = mw.ustring.gsub
local umatch = mw.ustring.match
local unpack = unpack or table.unpack -- Lua 5.2 compatibility
-- Use HTML entities here to avoid parsing issues (esp. with brackets)
local SEMICOLON_SPACE = "; "
local SPACE_LBRAC = " ["
local RBRAC = "]"
local TEMP_LT = u(0xFFF1)
local TEMP_GT = u(0xFFF2)
local TEMP_LBRAC = u(0xFFF3)
local TEMP_RBRAC = u(0xFFF4)
local TEMP_SEMICOLON = u(0xFFF5)
-- ============================================================
-- l10n: Chinese localization infrastructure (zhwikt fork).
--
-- output_mode is detected once per export.source() invocation by
-- scanning every args value for CJK characters. If any value
-- contains CJK script, the module switches to "zh" mode and
-- substitutes Chinese framing at every print site; otherwise it
-- stays in "en" mode and behaves byte-for-byte identically to
-- enwikt. This avoids awkward half-translated output like
-- "第second版" when an editor copies an English template verbatim.
--
-- All localization touchpoints below this block are marked with
-- "-- l10n:" comments. To audit, grep for "l10n:". Simple word
-- substitutions go through L(); word-order shifts go through
-- build_* helper functions.
-- ============================================================
-- l10n: output mode, set per-invocation by detect_output_mode().
local output_mode = "en"
-- l10n: full-width punctuation constants for zh mode.
local ZH_COMMA = ","
local ZH_SEMICOLON = ";"
local ZH_COLON = ":"
local ZH_LPAREN = "("
local ZH_RPAREN = ")"
local ZH_LQUOTE = "「"
local ZH_RQUOTE = "」"
-- l10n: CJK script ranges used by has_cjk(). Covers Han ideographs,
-- kana and Hangul but deliberately excludes fullwidth punctuation
-- so a stray "," in an otherwise-English value doesn't trip zh mode.
local CJK_PATTERN = "[" ..
u(0x3400) .. "-" .. u(0x4DBF) .. -- CJK Unified Ideographs Extension A
u(0x4E00) .. "-" .. u(0x9FFF) .. -- CJK Unified Ideographs
u(0x3040) .. "-" .. u(0x309F) .. -- Hiragana
u(0x30A0) .. "-" .. u(0x30FF) .. -- Katakana
u(0xAC00) .. "-" .. u(0xD7AF) .. -- Hangul Syllables
"]"
local function has_cjk(s)
return type(s) == "string" and umatch(s, CJK_PATTERN) ~= nil
end
-- l10n: scan all args values (including list-typed params) for CJK.
local function detect_output_mode(args)
for _, v in pairs(args) do
if type(v) == "string" then
if has_cjk(v) then return "zh" end
elseif type(v) == "table" then
for _, vv in pairs(v) do
if type(vv) == "string" and has_cjk(vv) then return "zh" end
end
end
end
return "en"
end
-- l10n: bilingual lookup table. Keys are the exact English literals
-- used at enwikt print sites. L() returns the key unchanged in en
-- mode; in zh mode it returns the value, falling back to the key on
-- a miss so the module stays functional under unexpected inputs.
local STRINGS = {
-- newversion verbs
["republished"] = "再版",
["republished as"] = "再版為",
-- author-like roles, prefix form (used when other authors precede)
["translated by "] = "由 ",
["edited by "] = "由 ",
["compiled by "] = "由 ",
["directed by "] = "由 ",
["performed by "] = "由 ",
["spoken by "] = "由 ",
["quoting "] = "引用 ",
-- author-like roles, suffix form (used when role-bearer comes first)
[", transl."] = "(譯)",
[", editor"] = "(編)",
[", editors"] = "(編)",
[", compiler"] = "(編纂)",
[", compilers"] = "(編纂)",
[", director"] = "(導演)",
[", directors"] = "(導演)",
[", quotee"] = "(被引用者)",
[", quotees"] = "(被引用者)",
-- bare-noun anonymous suffixes (used when role-bearer is anonymous)
[" translator"] = "譯者",
[" lyricist"] = "作詞者",
[" lyrics translator"] = "譯詞者",
[" composer"] = "作曲者",
-- music role suffixes
[" (lyrics)"] = "(作詞)",
[" (translation)"] = "(譯詞)",
[" (music)"] = "(作曲)",
-- chapter → containing title connector ("Chapter X, in Book Title")
["in "] = "收錄於 ",
-- quoting / sourcing
["sourced from "] = "來源 ",
["quoted in "] = "引述自 ",
-- archive
[", archived from "] = ",原始內容存檔自 ",
["the original"] = "原始內容",
[" on "] = ",存檔時間 ", -- between [URL label] and the archive date
-- video game / misc
[", scene: "] = ",幕:",
[", level/area: "] = ",關卡/區域:",
[" (last accessed)"] = "(最後存取)",
-- generics
["anonymous"] = "佚名",
["actor"] = "演員",
["actors"] = "演員",
["original"] = "原文",
["translation"] = "翻譯",
["unnumbered"] = "未編號",
-- numeric-field suffixes (used by format_numeric_param / format_chapterlike)
["page"] = "頁",
["pages"] = "頁",
["column"] = "-{zh-hans:列;zh-hant:欄}-",
["columns"] = "-{zh-hans:列;zh-hant:欄}-",
["line"] = "行",
["lines"] = "行",
["volume"] = "卷",
["volumes"] = "卷",
["issue"] = "期",
["issues"] = "期",
["number"] = "號",
["numbers"] = "號",
["chapter"] = "章",
["section"] = "節",
["entry"] = "條",
["edition"] = "版",
-- maintenance lines
["Please provide the book title or journal name"] =
"請提供書名或期刊名",
["Please specify the language of the quote using |1="] =
"請以 |1= 指明引文語言",
["Can we [[:Category:Requests for date|date]] this quote?"] =
"能否為此引文加上[[:Category:Requests for date|日期]]?",
["Please provide a date or year"] =
"請提供日期或年份",
}
-- l10n: simple bilingual lookup. Returns the en key unchanged in en mode.
local function L(s)
if output_mode == "en" then return s end
return STRINGS[s] or s
end
-- l10n: mode-aware separators. Read these instead of writing literal
-- ", " / "; " at print sites that need to round-trip both modes.
local function sep_comma()
return output_mode == "zh" and ZH_COMMA or ", "
end
local function sep_semicolon()
return output_mode == "zh" and ZH_SEMICOLON or SEMICOLON_SPACE
end
-- l10n: classify a numeric-field value so the zh formatter can decide
-- between "第N章" (numeric prefix) and "<val>章" / "「<val>」" (textual).
-- CHINESE_NUMERALS covers vernacular (一二...), formal (壹貳...), and
-- shorthand (兩, 廿, 卅, 〇).
local CHINESE_NUMERALS =
"零〇一二三四五六七八九十百千萬億兩两廿卅壹貳贰參叁肆伍陸陆柒捌玖拾佰仟"
local function classify_numeric_value(val)
if not val or val == "" then return "empty" end
local clean = mw.text.trim((val:gsub("<[^>]*>", "")))
if clean == "" then return "empty" end
if umatch(clean, "^[%d%s,%-–—/%.]+$") then return "arabic" end
if clean:match("^[mdclxviMDCLXVI]+$") then return "roman" end
if umatch(clean, "^[" .. CHINESE_NUMERALS .. "%s,/%-–—]+$") then
return "chinese"
end
return "text"
end
local function is_numeric_class(cls)
return cls == "arabic" or cls == "roman" or cls == "chinese"
end
-- l10n: zh-mode rendering for page/column/line/volume/issue/section/etc.
-- Numeric values (Arabic/Roman/Chinese) → "第N<suffix>";
-- textual values → "<val><suffix>" (no leading 第).
local function build_zh_numeric(val, suffix_key)
local cls = classify_numeric_value(val)
local suffix = L(suffix_key)
if is_numeric_class(cls) then
return "第" .. val .. suffix
end
return val .. suffix
end
-- l10n: zh-mode rendering for chapter/section/entry text. Numeric →
-- "第N章"; textual → "「<val>」" (drops the 第N章 wrapper because the
-- value is a chapter NAME, mirroring enwikt's textual_prefix/suffix
-- branch).
local function build_zh_chapterlike(val, suffix_key)
local cls = classify_numeric_value(val)
if is_numeric_class(cls) then
return "第" .. val .. L(suffix_key)
end
return ZH_LQUOTE .. val .. ZH_RQUOTE
end
-- l10n: "translation of X by Y" → "X(Y 譯)".
-- Variants: no by → "X 之翻譯"; no original → "原文翻譯(Y 譯)".
local function build_translation_phrase(origtype, original, by)
if output_mode == "en" then
return origtype .. " of " .. (original or "original")
.. (by and " by " .. by or "")
end
local zh_type = L(origtype)
if original and by then
return original .. ZH_LPAREN .. by .. " " .. zh_type .. ZH_RPAREN
elseif original then
return original .. " 之" .. zh_type
elseif by then
-- l10n: same shape as the main "X(Y 譯)" pattern with X = "原文"
return L("original") .. ZH_LPAREN .. by .. " " .. zh_type .. ZH_RPAREN
end
return L("original") .. zh_type
end
-- l10n: " (in French)" / " (quotation in X; overall work in Y)".
local function build_annotations_paren(annotations)
if output_mode == "en" then
return " (" .. concat(annotations, SEMICOLON_SPACE) .. ")"
end
return ZH_LPAREN .. concat(annotations, ZH_SEMICOLON) .. ZH_RPAREN
end
-- l10n: language-of-work annotation snippets used inside the paren block.
local function build_lang_annotation(kind, lang_name)
if output_mode == "en" then
if kind == "in" then return "in " .. lang_name end
if kind == "quotation_in" then return "quotation in " .. lang_name end
if kind == "overall_work_in" then return "overall work in " .. lang_name end
else
if kind == "in" then return "以 " .. lang_name .. " 寫成" end
if kind == "quotation_in" then return "引文以 " .. lang_name .. " 寫成" end
if kind == "overall_work_in" then return "整體作品以 " .. lang_name .. " 寫成" end
end
end
-- l10n: actor / role phrases.
local function build_actor_as_role(actor)
if output_mode == "en" then return actor .. " as " end
return actor .. " 飾演 "
end
local function build_actor_paren(actor, is_plural)
local label = is_plural and L("actors") or L("actor")
if output_mode == "en" then
return actor .. " (" .. label .. ")"
end
return actor .. ZH_LPAREN .. label .. ZH_RPAREN
end
-- l10n: "published <date> via <platform>" / "published <date>" / "via <platform>".
local function build_published(date, platform)
if output_mode == "en" then
return "published " .. date .. (platform and " via " .. platform or "")
end
if platform then
return date .. " 於 " .. platform .. " 出版"
end
return date .. " 出版"
end
local function build_via(platform)
if output_mode == "en" then return "via " .. platform end
return "透過 " .. platform
end
-- l10n: ", retrieved <date>" → ",於 <date> 擷取" (verb-final shift).
local function build_retrieved(date_str)
if output_mode == "en" then return ", retrieved " .. date_str end
return ZH_COMMA .. "於 " .. date_str .. " 擷取"
end
-- l10n: derive an anonymous-role suffix. enwikt strips leading
-- punctuation/parens out of suffix_without_preceding_authors to get
-- e.g. "transl." → " translator"; we mirror that by recognising our
-- own zh suffix shapes and mapping them to bare role nouns.
local ZH_ANONYMOUS_ROLE_FROM_PAREN = {
["譯"] = "譯者",
["編"] = "編者",
["編纂"] = "編纂者",
["導演"] = "導演者",
["被引用者"] = "被引用者",
["作詞"] = "作詞者",
["譯詞"] = "譯詞者",
["作曲"] = "作曲者",
}
local function derive_anonymous_suffix_zh(zh_suffix)
local inside = umatch(zh_suffix, "^%s*((.-))%s*$")
if inside then
return ZH_ANONYMOUS_ROLE_FROM_PAREN[inside] or inside
end
return mw.text.trim(zh_suffix)
end
-- l10n: zh-mode formatter for the top-level format_date() helper used
-- by archivedate / accessdate / wayback dates. Falls back to the raw
-- timestamp on parse error.
local _zh_lang
local function zh_lang()
if not _zh_lang then _zh_lang = mw.language.new("zh") end
return _zh_lang
end
local function format_zh_date(text)
local lang = zh_lang()
local ok, date = pcall(lang.formatDate, lang, "Y年n月j日", text)
if ok then return date end
return text
end
-- l10n: zh serial join — "A、B 和 C" / "A、B 或 C" (no Oxford comma).
-- Used in place of Module:table.serialCommaJoin when output_mode == "zh".
local function zh_serial_join(parts, conj)
local n = #parts
if n == 0 then return "" end
if n == 1 then return parts[1] end
local conj_word = (conj == "or") and "或" or "和"
if n == 2 then
return parts[1] .. " " .. conj_word .. " " .. parts[2]
end
return table.concat(parts, "、", 1, n - 1) .. " " .. conj_word .. " " .. parts[n]
end
-- ============================================================
-- l10n: end of localization infrastructure block.
-- ============================================================
local function apply_subst(...)
apply_subst = require(usex_module).apply_subst
return apply_subst(...)
end
local function check_isbn(...)
check_isbn = require(check_isxn_module).check_isbn
return check_isbn(...)
end
local function check_issn(...)
check_issn = require(check_isxn_module).check_issn
return check_issn(...)
end
local function debug_track(...)
debug_track = require(debug_track_module)
return debug_track(...)
end
local function decode_entities(...)
decode_entities = require(string_utilities_module).decode_entities
return decode_entities(...)
end
local function embedded_language_links(...)
embedded_language_links = require(links_module).embedded_language_links
return embedded_language_links(...)
end
local function escape_wikicode(...)
escape_wikicode = require(parse_utilities_module).escape_wikicode
return escape_wikicode(...)
end
local function find_best_script_without_lang(...)
find_best_script_without_lang = require(scripts_module).findBestScriptWithoutLang
return find_best_script_without_lang(...)
end
local function find_parameters(...)
find_parameters = require(template_parser_module).find_parameters
return find_parameters(...)
end
local function format_categories(...)
format_categories = require(utilities_module).format_categories
return format_categories(...)
end
local function format_processed_labels(...)
format_processed_labels = require(labels_module).format_processed_labels
return format_processed_labels(...)
end
local function format_qualifier(...)
format_qualifier = require(qualifier_module).format_qualifier
return format_qualifier(...)
end
local function format_usex(...)
format_usex = require(usex_module).format_usex
return format_usex(...)
end
local function get_lang(...)
get_lang = require(languages_module).getByCode
return get_lang(...)
end
local function get_number(...)
get_number = require(number_utilities_module).get_number
return get_number(...)
end
local function get_script(...)
get_script = require(scripts_module).getByCode
return get_script(...)
end
local function gsplit(...)
gsplit = require(string_utilities_module).gsplit
return gsplit(...)
end
local function page_should_be_ignored(...)
page_should_be_ignored = require(usex_templates_module).page_should_be_ignored
return page_should_be_ignored(...)
end
local function parse_inline_modifiers(...)
parse_inline_modifiers = require(parse_utilities_module).parse_inline_modifiers
return parse_inline_modifiers(...)
end
local function parse_inline_modifiers_from_segments(...)
parse_inline_modifiers_from_segments = require(parse_utilities_module).parse_inline_modifiers_from_segments
return parse_inline_modifiers_from_segments(...)
end
local function parse_multi_delimiter_balanced_segment_run(...)
parse_multi_delimiter_balanced_segment_run = require(parse_utilities_module).parse_multi_delimiter_balanced_segment_run
return parse_multi_delimiter_balanced_segment_run(...)
end
local function parse_term_with_lang(...)
parse_term_with_lang = require(parse_utilities_module).parse_term_with_lang
return parse_term_with_lang(...)
end
local function pattern_escape(...)
pattern_escape = require(string_pattern_escape_module)
return pattern_escape(...)
end
local function pluralize(...)
pluralize = require(en_utilities_module).pluralize
return pluralize(...)
end
local function process_params(...)
process_params = require(parameters_module).process
return process_params(...)
end
local function remove_links(...)
remove_links = require(links_module).remove_links
return remove_links(...)
end
local function roman_to_arabic(...)
roman_to_arabic = require(roman_numerals_module).roman_to_arabic
return roman_to_arabic(...)
end
local function replacement_escape(...)
replacement_escape = require(string_replacement_escape_module)
return replacement_escape(...)
end
local function scribunto_parameter_key(...)
scribunto_parameter_key = require(scribunto_module).scribunto_parameter_key
return scribunto_parameter_key(...)
end
local function serial_comma_join(...)
serial_comma_join = require(table_module).serialCommaJoin
return serial_comma_join(...)
end
local function shallow_copy(...)
shallow_copy = require(table_module).shallowCopy
return shallow_copy(...)
end
local function split(...)
split = require(string_utilities_module).split
return split(...)
end
local function split_alternating_runs(...)
split_alternating_runs = require(parse_utilities_module).split_alternating_runs
return split_alternating_runs(...)
end
local function split_and_process_raw_labels(...)
split_and_process_raw_labels = require(labels_module).split_and_process_raw_labels
return split_and_process_raw_labels(...)
end
local function split_on_comma(...)
split_on_comma = require(parse_utilities_module).split_on_comma
return split_on_comma(...)
end
local function tag_text(...)
tag_text = require(script_utilities_module).tag_text
return tag_text(...)
end
local function tag_transcription(...)
tag_transcription = require(script_utilities_module).tag_transcription
return tag_transcription(...)
end
local function tag_translit(...)
tag_translit = require(script_utilities_module).tag_translit
return tag_translit(...)
end
local function ulen(...)
ulen = require(string_utilities_module).len
return ulen(...)
end
local function unitalicize_brackets(...)
unitalicize_brackets = require(italics_module).unitalicize_brackets
return unitalicize_brackets(...)
end
local function upper(...)
upper = require(string_utilities_module).upper
return upper(...)
end
local function usub(...)
usub = require(string_utilities_module).sub
return usub(...)
end
local function yesno(...)
yesno = require(yesno_module)
return yesno(...)
end
local function track(page)
debug_track("quote/" .. page)
end
local function maintenance_line(text)
return '<span class="maintenance-line">(' .. text .. ")</span>"
end
local function isbn(text)
return "[[Special:BookSources/"
.. text
.. "|→ISBN]]"
.. check_isbn(
text,
' <span class="error" style="font-size:88%">Invalid ISBN</span>[[Category:Pages with ISBN errors]]'
)
end
local function issn(text)
return "[https://www.worldcat.org/issn/"
.. text
.. " →ISSN]"
.. check_issn(
text,
' <span class="error" style="font-size:88%">Invalid ISSN</span>[[Category:Pages with ISSN errors]]'
)
end
local function lccn(text)
text = text:gsub(" ", "")
if text:find("-") then
-- old-style LCCN; reformat per request by [[User:The Editor's Apprentice]]
local prefix, part1, part2 = text:match("^(.-)(%d+)%-(%d+)$")
if prefix then
if ulen(part2) < 6 then
part2 = ("0"):rep(6 - ulen(part2)) .. part2
end
text = prefix .. part1 .. part2
end
end
return "[https://lccn.loc.gov/" .. mw.uri.encode(text) .. " →LCCN]"
end
local function format_date(text)
-- l10n: zh mode → "Y年n月j日"; en mode → enwikt #formatdate dmy.
if output_mode == "zh" then
return format_zh_date(text)
end
return mw.getCurrentFrame():callParserFunction("#formatdate", text, "dmy")
end
-- Parse a raw lb= param (or nil) to individual label info objects and then concatenate them appropriately into a
-- qualifier input, respecting flags like `omit_preComma` and `omit_postSpace` in the label specs.
local function parse_and_format_labels(raw_lb, lang)
if not raw_lb then
return nil
end
local labels = split_and_process_raw_labels{labels = raw_lb, lang = lang, nocat = true}
labels = format_processed_labels{labels = labels, lang = lang, no_ib_content = true}
if labels ~= "" then -- not sure labels can be an empty string but it seems possible in some circumstances
return {labels}
end
end
-- Convert a comma-separated list of language codes to a comma-separated list of language names. `fullname` is the
-- name of the parameter from which the list of language codes was fetched.
local function format_langs(langs)
local names = {}
for i, lang in ipairs(langs) do
names[i] = lang:getCanonicalName()
end
if #names == 1 then
return names[1]
end
-- l10n: language list joiner — zh uses 、 + 和 (no Oxford comma).
if output_mode == "zh" then
return zh_serial_join(names, "and")
end
return serial_comma_join(names)
end
local function get_first_lang(langs)
return langs[1] or get_lang("und")
end
--[=[
Normally we parse off inline modifiers and language code prefixes in various places, e.g. he:מרים<tr:Miryem>. But we
exclude HTML entries with <span ...>, <i ...>, <br/> or similar in it, caused by wrapping an argument in {{l|...}},
{{lang|...}} or similar. Basically, all tags of the sort we parse here should consist of a less-than sign, plus letters,
plus a colon, e.g. <tr:...>, so if we see a tag on the outer level that isn't in this format, we don't try to parse it.
The restriction to the outer level is to allow generated HTML inside of e.g. qualifier modifiers, such as
foo<q:similar to {{m|fr|bar}}> (if we end up supporting such modifiers).
Also exclude things that look like URL's from being parsed as having language code prefixes.
]=]
local function val_should_not_be_parsed_for_annotations(val)
return val:find("^[^<]*<%l*[^%l:]") or val:find("^%l+://")
end
local param_mods = {
t = {
-- <t:...> and <gloss:...> are aliases.
item_dest = "gloss",
},
gloss = {},
alt = {},
tr = {},
ts = {},
subst = {},
sc = {type = "script"},
f = {
convert = function(arg, parse_err)
local prefix, val = arg:match("^(.-):([^ ].*)$")
if not prefix then
prefix = ""
val = arg
end
local tags, sc_code, sc = prefix:match("^(.*)/(.-)$")
if sc_code then
sc = get_script(sc_code) or
require(languages_error_module)(sc_code, parse_err, "script code", nil, "not real lang")
else
tags = prefix
end
local quals
if tags ~= "" then
quals = split_on_comma(tags)
for i, qual in ipairs(quals) do
local obj = get_lang(qual, nil, "allow etym") or get_script(qual)
quals[i] = obj or qual
end
end
return {
quals = quals,
sc = sc,
val = val,
}
end,
store = "insert",
},
q = {},
qq = {},
}
local function generate_obj_annotated_text(text, parse_err, paramname)
local obj = {}
if text:find(":[^ ]") or text:find("%[%[") then
local display, is_wikipedia_wikisource
obj.text, obj.lang, obj.link, display, is_wikipedia_wikisource =
parse_term_with_lang {
term = text,
parse_err = parse_err,
paramname = paramname
}
-- HACK: If object is a Wikipedia or Wikisource link, we need to convert it to a two-part link
-- to avoid the w: or s: prefix showing. We should probably avoid this by calling
-- language_link() (in [[Module:links]]) in format_annotated_text() instead of the hacky stuff
-- that we currently do; but we need to test that carefully to make sure it doesn't do things like
-- munge % signs.
if is_wikipedia_wikisource and not obj.text:find("%[%[") and not obj.text:find("%]%]") then
-- Don't directly set .alt, because then if the user specifies <alt:...>, it will cause an error in
-- parse_inline_modifiers().
obj.display = display
end
else
obj.text = text
obj.link = text
end
return obj
end
--[=[
Parse a textual property that may be in a foreign language or script and may be annotated with a language prefix and/or
inline modifiers. `val` is the value of the parameter and `fullname` is the name of the parameter from which the value
was retrieved. `explicit_gloss`, if specified and non-nil, overrides any gloss specified using the <t:...> or
<gloss:...> inline modifier.
If `val` is nil, the return value of this function is nil. Otherwise it is parsed for a language prefix (e.g.
'ar:مُؤَلِّف') and inline modifiers (e.g. 'ar:مُؤَلِّف<t:Author>'), and the return value is an object with the following
fields:
`lang`: The language object corresponding to the language prefix, if specified, or nil if no language prefix is
given.
`text`: The text after stripping off any language prefix and inline modifiers.
`link`: The link part of the text if it consists of a two-part link; otherwise, same as `text`.
`alt`: Display text specified using the <alt:...> modifier, if given; otherwise, nil.
`subst`: Substitutions used to generate the transliteration, in the same format as the subst= parameter.
`sc`: The script object corresponding to the <sc:...> modifier, if given; otherwise nil.
`tr`: The transliteration corresponding to the <tr:...> modifier, if given; otherwise nil.
`ts`: The transcription corresponding to the <ts:...> modifier, if given; otherwise nil.
`gloss`: The gloss/translation corresponding to the `explicit_gloss` parameter (if given and non-nil), otherwise
the <t:...> or <gloss:...> modifiers if given, otherwise nil.
`f`: Foreign versions of the text.
`q`: Left qualifiers.
`qq`: Right qualifiers.
Note that as a special case, if `val` contains HTML tags at the top level (e.g. '<span class="Arab">...</span>', as
might be generated by specifying {{lang|ar|مُؤَلِّف}}), no language prefix or inline modifiers are parsed, and the return
value has the `noscript` field set to true, which tells format_annotated_text() not to try to identify the script of
the text and CSS-tag the text accordingly, but to leave the text untagged.
This object can be passed to format_annotated_text() to format a string displaying the text (appropriately
script-tagged, unless `noscript` is set, as described above) and modifiers.
]=]
local function parse_annotated_text(val, fullname, explicit_gloss)
if not val then
return nil
end
-- When checking for inline modifiers, exclude HTML entry with <span ...>, <i ...>, <br/> or similar in it, caused
-- by wrapping an argument in {{l|...}}, {{lang|...}} or similar. Also exclude URL's from being parsed as having
-- language code prefixes. See val_should_not_be_parsed_for_annotations() for more information. If we find a
-- parameter value with top-level HTML in it, add 'noscript = true' to indicate that we should not try to do script
-- inference and tagging. (Otherwise, e.g. if you specify {{lang|ar|مُؤَلِّف}} as the author, you'll get an extra big
-- font coming from the fact that {{lang|...}} wraps the Arabic text in CSS that increases the size from the
-- default, and then we do script detection and again wrap the text in the same CSS, which increases the size even
-- more.)
if val_should_not_be_parsed_for_annotations(val) then
return {text = val, link = val, noscript = true, gloss = explicit_gloss}
end
local obj
if val:find("<") then
-- Check for inline modifier.
obj = parse_inline_modifiers(val, {
paramname = fullname,
param_mods = param_mods,
generate_obj = generate_obj_annotated_text,
})
else
obj = generate_obj_annotated_text(val, nil, fullname)
end
if explicit_gloss then
obj.gloss = explicit_gloss
end
return obj
end
local html_entity_char_to_replacement = {
["<"] = TEMP_LT,
[">"] = TEMP_GT,
["["] = TEMP_LBRAC,
["]"] = TEMP_RBRAC,
}
local function html_entity_replacement(entity, code_without_semicolon, hash, xcode, x, code)
-- Try to decode the entity. If successful, Replace certain special HTML entities (those that are bracket-like)
-- with single Unicode characters; otherwise, replace the semicolon with a special character so it won't get
-- interpreted as a delimiter.
local ch = decode_entities(entity)
if ch ~= entity then
return html_entity_char_to_replacement[ch] or code_without_semicolon .. TEMP_SEMICOLON
end
-- If the entity doesn't decode, escape it anyway iff it follows a valid format.
if hash == "" then
-- Any nonstandard MediaWiki-only entities have now been filtered off, so treat any non-ASCII characters as
-- invalid.
return xcode:match("^[^\128-\255]+$") and code_without_semicolon .. TEMP_SEMICOLON or entity
elseif x == "" then
return xcode:match("^%d+$") and code_without_semicolon .. TEMP_SEMICOLON or entity
end
return code:match("^%x+$") and code_without_semicolon .. TEMP_SEMICOLON or entity
end
local html_entity_replacement_to_char = {
[TEMP_LT] = "<",
[TEMP_GT] = ">",
[TEMP_LBRAC] = "[",
[TEMP_RBRAC] = "]",
[TEMP_SEMICOLON] = ";",
}
local function undo_html_entity_replacement(txt)
-- Pattern covers everything in html_entity_replacement_to_char.
return (txt:gsub("\239\191[\177-\181]", html_entity_replacement_to_char))
end
-- NOTE: We try hard to optimize this function for the common cases and avoid loading [[Module:parse utilities]]
-- in such cases. The cases we can handle without loading [[Module:parse utilities]] are single values (no
-- semicolons present) without inline modifiers or language prefixes, and multi-entity values (semicolons present)
-- without (a) brackets of any kind (including parens, braces and angle brackets; angle brackets typically indicate
-- inline modifiers and other brackets may protect a semicolon from being interpreted as a delimiter);
-- (b) ampersands (which may indicate HTML entities, which protect a semicolon from being interpreted as a
-- delimiter); and (c) colons not followed by a space (which may indicate a language prefix).
local function generate_obj_multivalued_annotated_text(text, parse_err, paramname, no_undo_html_entity_replacement)
local obj = generate_obj_annotated_text(text, parse_err, paramname)
if not no_undo_html_entity_replacement then
obj.text = undo_html_entity_replacement(obj.text)
obj.link = undo_html_entity_replacement(obj.link)
end
return obj
end
--[=[
Similar to parse_annotated_text() but the parameter value may contain multiple semicolon-separated entities, each with
their own inline modifiers. Some examples:
* mainauthor=Paula Pattengale; Terea Sonsthagen
* author=Katie Brick; J. Cody Nielsen; Greg Jao; Eric Paul Rogers; John A. Monson
* author=Suzanne Brockmann; Patrick G. Lawlor (Patrick Girard); Melanie Ewbank
* author=G Ristori; et al.
* author=Jason Scott; zh:王晰宁<t:Wang Xining>
* editors=zh:包文俊; zh:金心雯
* quotee=zh:張福運<t:Chang Fu-yun>; zh:張景文<t:Chang Ching-wen>
There may be embedded semicolons within brackets, braces or parens that should not be treated as delimiters, e.g.:
* author=Oliver Optic [pseudonym; {{w|William Taylor Adams}}]
* author=author=Shannon Drake (pen name; {{w|Heather Graham Pozzessere}})
* author=James (the Elder;) Humphrys
There may also be HTML entities with semicolons in them:
* author=[{{w|Gilbert Clerke}}]
* 2ndauthor=Martin Biddle & Sally Badham
* author=Peter Christen Asbjørnsen
There may be both embedded semicolons and HTML entities with semicolons in them:
* author=[{{w|Voltaire}} [pseudonym; François-Marie Arouet]]
In general we want to treat [ like an opening bracket and ] like a closing bracket. Beware that they may be
mismatched:
* author=Anonymous [{{w|Karl Maria Kertbeny}}]
Here, `val` is the value of the parameter and `fullname` is the name of the parameter from which the value was
retrieved. `explicit_gloss`, if specified and non-nil, overrides any gloss specified using the <t:...> or <gloss:...>
inline modifier, and `explicit_gloss_fullname` is the name of the parameter from which this value was retrieved. (If
`explicit_gloss` is specified and multiple values were seen, an error results.)
Return value is a list of objects of the same sort as returned by parse_annotated_text().
]=]
local function parse_multivalued_annotated_text(val, fullname, explicit_gloss, explicit_gloss_fullname)
if not val then
return nil
end
-- NOTE: In the code that follows, we use `entity` most of the time to refer to one of the semicolon-separated
-- values in the multivalued param. Entities are most commonly people (typically authors, editors, translators or
-- the like), but may be the names of publishers, locations, or other entities. "Entity" can also refer to HTML
-- entities; in the places where this occurs, the variable name contains 'html' in it.
local splitchar, english_delim
if val:find("^,") then
splitchar = ","
english_delim = "comma"
val = val:gsub("^,", "")
else
splitchar = ";"
english_delim = "semicolon"
end
-- Optimization #1: No semicolons/commas or angle brackets (indicating inline modifiers).
if not val:find("[<" .. splitchar .. "]") then
if val_should_not_be_parsed_for_annotations(val) then
return {{text = val, link = val, noscript = true}}
else
return {generate_obj_multivalued_annotated_text(val, nil, fullname, "no undo html entity replacement")}
end
end
-- Optimization #2: Semicolons/commas but no angle brackets (indicating inline modifiers), braces, brackets, or
-- parens (any of which would protect the semicolon/comma from interpretation as a delimiter), and no ampersand
-- (which might indicate an HTML entity with a terminating semicolon, which should not be interpreted as a
-- delimiter).
if not val:find("[<>%[%](){}&]") then
local entity_objs = {}
for entity in gsplit(val, "%s*" .. splitchar .. "%s*") do
if val_should_not_be_parsed_for_annotations(entity) then
insert(entity_objs, {
text = entity,
link = entity,
noscript = true
})
else
insert(entity_objs, generate_obj_multivalued_annotated_text(entity, nil, fullname, "no undo html entity replacement"))
end
end
return entity_objs
end
-- Escape HTML entities, and get rid of directionality markers.
local amp = val:find("&", nil, true)
if amp then
-- The pattern is more permissive than the usual entity pattern, as MediaWiki has some nonstandard entities
-- that have non-ASCII characters in their codes.
val = val:gsub("((&(#?)(([xX]?)([%w\128-\255]+)));)", html_entity_replacement)
end
-- Pattern covers left-to-right (U+200E) and right-to-left (U+200F).
val = val:gsub("\226\128[\142\143]", "")
-- Parse balanced segment runs, treating HTML entities for left and right bracket and left and right angle bracket
-- as matching literal versions of the same characters.
local entity_runs = parse_multi_delimiter_balanced_segment_run(
val,
{{"[" .. TEMP_LBRAC, "]" .. TEMP_RBRAC}, {"(", ")"}, {"{", "}"}, {"<" .. TEMP_LT, ">" .. TEMP_GT}},
true
)
if type(entity_runs) == "string" then
local undo_val = undo_html_entity_replacement(val)
-- Parse error due to unbalanced delimiters. Don't throw an error here; instead, don't attempt to parse off
-- any annotations, but return the value directly, maybe allowing script tagging (not allowing it if it appears
-- the text is already script-tagged).
return {{text = undo_val, link = undo_val, noscript = not not val_should_not_be_parsed_for_annotations(val)}}
end
-- Split on semicolon (or comma), possibly surrounded by whitespace.
local separated_groups = split_alternating_runs(entity_runs, "%s*" .. splitchar .. "%s*")
-- Process each value.
local entity_objs = {}
for _, entity_group in ipairs(separated_groups) do
-- Rejoin runs that don't involve <...>.
local j = 2
while j <= #entity_group do
if not entity_group[j]:find("^<.*>$") then
entity_group[j - 1] = entity_group[j - 1] .. entity_group[j] .. entity_group[j + 1]
remove(entity_group, j)
remove(entity_group, j)
else
j = j + 2
end
end
local oneval = undo_html_entity_replacement(concat(entity_group))
-- When checking for inline modifiers, exclude HTML entry with <span ...>, <i ...>, <br/> or similar in it,
-- caused by wrapping an argument in {{l|...}}, {{lang|...}} or similar. Also exclude URL's from being parsed
-- as having language code prefixes. This works analogously to parse_annotated_text(); see there for more.
if val_should_not_be_parsed_for_annotations(oneval) then
insert(entity_objs, {
text = oneval,
link = oneval,
noscript = true
})
else
local obj
if #entity_group > 1 then
-- Check for inline modifier.
obj = parse_inline_modifiers_from_segments({
group = entity_group,
arg = oneval,
props = {
paramname = fullname,
param_mods = param_mods,
generate_obj = generate_obj_multivalued_annotated_text,
},
})
else
obj = generate_obj_multivalued_annotated_text(entity_group[1], nil, fullname)
end
insert(entity_objs, obj)
end
end
if explicit_gloss then
if #entity_objs > 1 then
error(
(
"Can't specify |%s= along with multiple %s-separated entities in |%s=; use the <t:...> "
.. "inline modifier attached to the individual entities"
):format(explicit_gloss_fullname, english_delim, fullname)
)
end
entity_objs[1].gloss = explicit_gloss
end
return entity_objs
end
--[=[
Format a text property that may be in a foreign language or script, along with annotations. This is conceptually
similar to the full_link() function in [[Module:links]], but displays the annotations in a different format that is
more appropriate for bibliographic entries. The output looks like this:
TEXT [TRANSLIT /TRANSCRIPTION/, GLOSS]
`textobj` is as returned by parse_annotated_text(). `tag_text_func`, if supplied, is a function of one argument to further
wrap the text after it has been processed and CSS-tagged appropriately, directly before insertion. `tag_gloss_func` is a
similar function for the gloss.
]=]
local function format_annotated_text(textobj, tag_text_func, tag_gloss_func)
if not textobj then
return nil
end
local text, link = textobj.text, textobj.link
local subst, tr, ts, f, gloss = textobj.subst, textobj.tr, textobj.ts, textobj.f, textobj.gloss
-- Retrieve the display text, either specified by the user (.alt) or by parse_annotated_text() (.display) when a
-- Wikipedia link is given.
local alt = textobj.alt or textobj.display
if alt then
if link:find("%[%[") or link:find("%]%]") then
local errmsg = ("Can't currently handle embedded links in '%s', with <alt:...> text '%s'"):format(link, alt)
error(escape_wikicode(errmsg))
end
text = ("[[%s|%s]]"):format(link, alt)
end
-- See above for `noscript`, meaning HTML was found in the text value, probably generated using {{lang|...}}.
-- {{lang}} already script-tags the text and processes embedded language links, so we don't want to do it again (in
-- fact, the code below within the if-clause is similar to what {{lang}} does). In such a case, an explicit language
-- won't be available and find_best_script_without_lang() may not be accurate, so we can't do automatic transliteration.
if not textobj.noscript then
local lang = textobj.lang
-- As an optimization, don't do script detection on an argument that contains only ASCII.
local sc = textobj.sc
or lang and lang:findBestScript(text)
or not text:find("^[ -~]$") and find_best_script_without_lang(text)
or nil
-- As an optimization, don't do any of the following if there's no language, script, translit or transcription,
-- as will be the case with simple ASCII values.
if lang or sc or tr or ts then
if not lang then
lang = get_lang("und")
end
if tr == "-" then
tr = nil
elseif not tr and sc and not sc:getCode():find("Lat") then -- Latn, Latf, Latg, pjt-Latn
-- might return nil
local text_for_tr = text
if subst then
text_for_tr = apply_subst(text_for_tr, subst)
else
text_for_tr = remove_links(text)
end
tr = (lang:transliterate(text_for_tr, sc))
end
if text:find("%[%[") then
-- FIXME: embedded_language_links() replaces % signs with their URL-encoded equivalents,
-- which messes up URL's that may be present (e.g. if chapterurl= is given). IMO this
-- should not happen, and embedded_language_links() should do nothing if no embedded links
-- are present. To work around this, only call embedded_language_links() when there are
-- embedded links present.
text = embedded_language_links({
term = text,
lang = lang,
sc = sc,
})
end
if lang:getCode() ~= "und" or sc:getCode() ~= "Latn" then
text = tag_text(text, lang, sc)
end
if tr then
-- Should we link to the transliteration of languages with lang:link_tr()? Probably not because `text` is not
-- likely to be a term that has an entry.
tr = tag_translit(tr, lang, "usex")
end
if ts then
ts = tag_transcription(ts, lang, "usex")
end
end
end
text = unitalicize_brackets(text)
if tag_text_func then
text = tag_text_func(text)
end
local parts = {}
if textobj.q then
insert(parts, format_qualifier(textobj.q) .. " ")
end
insert(parts, text)
if tr or ts or f or gloss then
insert(parts, SPACE_LBRAC)
local subparts = {}
if tr or ts then
local tr_ts
if ts then
ts = "/" .. ts .. "/"
end
if tr and ts then
tr_ts = tr .. " " .. ts
else
tr_ts = tr or ts
end
insert(subparts, tr_ts)
end
if f then
for _, ff in ipairs(f) do
local sc = ff.sc
local lang
if not sc and ff.quals then
local qual = ff.quals[1]
if type(qual) == "string" then
-- do nothing; we'll do script detection farther down
elseif qual:hasType("script") then
sc = qual
else -- language
sc = qual:findBestScript(ff.val)
lang = qual
end
end
if not lang then
lang = get_lang("und")
end
sc = sc or find_best_script_without_lang(ff.val)
local val = embedded_language_links({
term = ff.val,
lang = lang,
sc = sc,
})
if lang:getCode() ~= "und" or sc:getCode() ~= "Latn" then
val = tag_text(val, lang, sc)
end
local qual_prefix
if ff.quals then
for i, qual in ipairs(ff.quals) do
if type(qual) ~= "string" and (qual:hasType("script") or qual:hasType("language")) then
ff.quals[i] = qual:getCanonicalName()
end
end
qual_prefix = concat(ff.quals, "/") .. ": "
else
qual_prefix = ""
end
insert(subparts, qual_prefix .. val)
end
end
if gloss then
gloss = '<span class="e-translation">' .. gloss .. "</span>"
gloss = unitalicize_brackets(gloss)
if tag_gloss_func then
gloss = tag_gloss_func(gloss)
end
insert(subparts, gloss)
end
insert(parts, concat(subparts, ", "))
insert(parts, RBRAC)
end
if textobj.qq then
insert(parts, " " .. format_qualifier(textobj.qq))
end
return concat(parts)
end
--[=[
Format a multivalued text property that may be in a foreign language or script, along with annotations. This is the
multivalued analog to format_annotated_text(), and formats each individual entity using format_annotated_text(),
joining the results with `delimiter`, which defaults to ", ". It `delimiter` is "and" or "or", join the results using
serial_comma_join() with the specified conjunction.
`textobjs` is as returned by parse_multivalued_annotated_text(). `tag_text_func` and `tag_gloss_func` are as in
format_annotated_text().
]=]
local function format_multivalued_annotated_text(textobjs, delimiter, tag_text_func, tag_gloss_func)
if not textobjs then
return nil
end
if #textobjs == 1 then
return format_annotated_text(textobjs[1], tag_text_func, tag_gloss_func)
end
local parts = {}
for _, textobj in ipairs(textobjs) do
insert(parts, format_annotated_text(textobj, tag_text_func, tag_gloss_func))
end
-- Change delimiter to semicolon if the items themselves contain commas (e.g., in ", Jr.")
local use_semicolon = false
for _, obj in ipairs(textobjs) do
-- Use remove_links to ignore commas in links
if obj.text and remove_links(obj.text):find(", ") then
use_semicolon = true
break
end
end
local n = #parts
if n > 0 and parts[n]:match("^'*et al[.']*$") then
-- Special handling for 'et al.' (Latin abbreviation, kept verbatim in zh too)
parts[n] = "''et al.''"
if n == 2 then
-- author et al.
return concat(parts, " ")
else
-- l10n: enumeration separator switches to fullwidth in zh mode.
if output_mode == "zh" then
return concat(parts, use_semicolon and ZH_SEMICOLON or "、")
end
-- author 1, author 2, et al.
return concat(parts, (use_semicolon and "; ") or ", ")
end
if delimiter == "and" or delimiter == "or" then
delimiter = ", "
end
return concat(parts, delimiter)
end
if delimiter == "and" or delimiter == "or" then
-- l10n: zh uses 、 + 和/或 (no Oxford comma) instead of serialCommaJoin.
if output_mode == "zh" then
return zh_serial_join(parts, delimiter)
end
return serial_comma_join(parts, {conj = delimiter})
end
if output_mode == "zh" then
-- l10n: zh-mode delimiter substitution (no trailing space on fullwidth marks).
if delimiter == "; " then return concat(parts, ZH_SEMICOLON) end
if delimiter == ", " or delimiter == nil then return concat(parts, ZH_COMMA) end
end
return concat(parts, delimiter or ((use_semicolon and "; ") or ", "))
end
-- Fancy version of ine() (if-not-empty). Converts empty string to nil, but also strips leading/trailing space.
local function ine(arg)
if not arg then
return nil
elseif type(arg) ~= "string" then
return arg
end
arg = mw.text.trim(arg)
if arg == "" then
return nil
end
return arg
end
local abbrs = {
["a."] = {anchor = "a.", full = "ante"},
["c."] = {anchor = "c.", full = "circa"},
["p."] = {anchor = "p.", full = "post"},
}
-- Process prefixes 'a.' (ante), 'c.' (circa) and 'p.' (post) at the beginning of an arbitrary date or year spec.
-- Returns two values, the formatted version of the prefix and the date spec minus the prefix. If no prefix is found,
-- returns an empty string and the full date.
local function process_ante_circa_post(date)
local prefix = usub(date, 1, 2)
local abbr = abbrs[prefix]
local abbr_prefix = ""
if abbr then
abbr_prefix = "''[[Appendix:Glossary#"
.. abbr.anchor
.. '|<abbr title="'
.. abbr.full
.. '">'
.. abbr.anchor
.. "</abbr>]]'' "
-- Remove lowercase letter, period, and space from beginning of date parameter.
date = ugsub(date, "^%l%.%s*", "")
end
return abbr_prefix, date
end
-- Format the arguments that specify the date of the quotation. These include the following:
-- |date=: The date. If |start_date= is given, this is the end date.
-- |year=, |month=: Year and month of quotation date or end of range, if |date= isn't given.
-- |start_date=: The start date, to specify a range.
-- |start_year=, |start_month=: Year and month of start of range, if |start_date= isn't given.
-- |accessdate=: Date a website was accessed; processed if no other date was given.
-- |nodate=: Indicate that no date is present; otherwise a maintenance line will be displayed if there is no date.
--
-- If `parampref` and/or `paramsuf` are given, this modifies all the date arguments accordingly. For example, if
-- `parampref` == "orig" and `paramsuf` is omitted, the date is specified using |origdate= or |origyear=/|origmonth=,
-- and the start of the range is |origstart_date=, etc. Similarly, if `parampref` is omitted and `paramsuf` is
-- "_published", the date is specified using |date_published= or |year_published=/|month_published=, and the start of
-- the range is |start_date_published=, etc.
--
-- `a` and `get_full_paramname` are functions with the same interpretation as the local functions of the same name in
-- source(). These are used to fetch parameters and get their full names. Note that this may cause all arguments to
-- have an index added to them (|date2=, |year2=, |month2=, etc.).
--
-- `alias_map` is as in source() and is used to map canonical arguments to their aliases when aliases were used.
--
-- If `bold_year` is given, displayed years are boldfaced unless boldface is present in the parameter value.
--
-- If `maintenance_line_no_date` is specified, it should be a string that will be returned if no date is found (i.e.
-- neither |date= nor |year=, or their appropriate equivalents per `parampref` and `paramsuf`, are specified, and
-- neither |nodate= is given to indicate that there is no date, or |accessdate= is given).
--
-- Returns two values: the formatted date and a boolean indicating whether to add a maintenance category
-- [[:Category:Requests for date in LANG entries]]. The first return value will be nil if nothing is to be added
-- (in which case the scond return value will always be nil).
local function format_date_args(
a,
get_full_paramname,
alias_map,
parampref,
paramsuf,
bold_year,
maintenance_line_no_date,
year_last
)
local output = {}
parampref = parampref or ""
paramsuf = paramsuf or ""
local function getp(param)
return a(parampref .. param .. paramsuf)
end
local function pname(param)
local fullname = get_full_paramname(parampref .. param .. paramsuf)
return alias_map[fullname] or fullname
end
-- Format `timestamp` (a timestamp referencing a date) according to the spec in `code`. `param` is the base name of
-- the parameter from which the timestamp was fetched, for error messages.
local function format_date_with_code(code, timestamp, param)
-- l10n: force the locale to match output_mode rather than the wiki's
-- content language, so behaviour is deterministic regardless of
-- where the module is deployed (enwikt vs zhwikt sandbox vs test).
local language = output_mode == "zh" and zh_lang() or mw.language.new("en")
local ok, date = pcall(language.formatDate, language, code, timestamp)
if ok then
return date
else
-- All the formats used in format_date_args() are fine, so the timestamp must be at fault.
error(
(
"Timestamp |%s=%s (possibly canonicalized from its original format) could not be parsed; see the "
.. "[[mw:Help:Extension:ParserFunctions##time|documentation for the #time parser function]]"
):format(pname(param), tostring(timestamp))
)
end
end
-- Try to figure out if the given timestamp has the day of the month explicitly given. We use the following
-- algorithm:
-- 1. Format as year-month-day; if the day is not 1, the day was explicitly given, since if only the year/month are
-- given, the day shows up as 1.
-- 2. If the day shows up as 1 and there isn't a 1 or 01 in the timestamp, the day wasn't explicitly given.
-- 3. Otherwise, if there are three separate numbers (e.g. 2022-07-01), or two separate numbers plus a capitalized
-- letter (taken as an English month, e.g. 2022 July 1), the day was explicitly given, otherwise not.
--
-- `param` is the base name of the parameter from which the timestamp was fetched.
local function date_has_day_specified(timestamp, param)
local day = format_date_with_code("j", timestamp, param)
if day ~= "1" then
return true
end
local english_month = timestamp:find("%u")
local canon_timestamp = mw.text.trim((timestamp:gsub("%D+", " ")))
local seen_nums = split(canon_timestamp, " ", true)
local saw_one = false
for _, num in ipairs(seen_nums) do
if num == "1" or num == "01" then
saw_one = true
break
end
end
if not saw_one then
return false
end
return #seen_nums >= 3 or english_month and #seen_nums >= 2
end
-- Format a date with boldfaced year, as e.g. '''2023''' August 3. `explicit_day_given` indicates whether to include
-- the day; if false, the return value will be e.g. '''2023''' August. `date_param` is the base name of the param
-- from which the date was fetched, for error messages.
local function format_bold_date(date, explicit_day_given, date_param)
-- l10n: zh mode → always year-first, native "Y年n月j日" (or short
-- forms when day/month missing). year_last is ignored because
-- Chinese conventionally writes the year first regardless of
-- citation style.
if output_mode == "zh" then
local zh_code
if bold_year then
zh_code = explicit_day_given and "'''Y年''' n月j日" or "'''Y年''' n月"
else
zh_code = explicit_day_given and "Y年n月j日" or "Y年n月"
end
return format_date_with_code(zh_code, date, date_param)
end
local day_month_code = explicit_day_given and "j F" or "F"
local month_day_code = explicit_day_given and "F j" or "F"
if year_last then
if bold_year then
-- This formats like "3 August '''2023'''" (or "August '''2023'''" if day not explicitly given).
return format_date_with_code(day_month_code .. " '''Y'''", date, date_param)
else
-- This formats like "3 August 2023" (or "August 2023" if day not explicitly given).
return format_date_with_code(day_month_code .. " Y", date, date_param)
end
else
if bold_year then
-- This formats like "'''2023''' August 3" (or "'''2023''' August" if day not explicitly given).
return format_date_with_code("'''Y''' " .. month_day_code, date, date_param)
else
-- This formats like "2023 August 3" (or "2023 August" if day not explicitly given).
return format_date_with_code("Y " .. month_day_code, date, date_param)
end
end
end
-- The formatDate method of the mw.language object behaves like the {{#time:}} parser function, which doesn't
-- accept the formats "monthday monthname, year" or "year monthname monthday", but outputs garbage when it receives
-- them, behavior inherited from PHP. {{#formatdate:}} magic word is more forgiving. Fix dates so that, for
-- instance, the |date= parameter of {{quote-journal}} (which uses this code) and the |accessdate= parameter (which
-- uses {{#formatdate:}}) accept similar date formats. See:
-- * [[mw:Extension:Scribunto/Lua_reference_manual#mw.language:formatDate]]
-- * [[mw:Help:Extension:ParserFunctions##time]]
-- * [[mw:Help:Magic_words#Formatting]]
-- `date` is the date spec from the user, which is assumed to come from a parameter whose base name ends in "date";
-- `parampref` is the prefix added to "date" to get the parameter name.
local function fix_date(date, param_pref)
if tonumber(date) ~= nil then
error(
("|%s= should contain a full date (year, month, day of month); use |%s= for year"):format(
pname(param_pref .. "date"),
pname(param_pref .. "year")
)
)
elseif date and date:find("%s*%a+,%s*%d+%s*$") then
error(
("|%s= should contain a full date (year, month, day of month); use |%s=, |%s= for month and year"):format(
pname(param_pref .. "date"),
pname(param_pref .. "month"),
pname(param_pref .. "year")
)
)
end
if date then
-- Commas are replaced with spaces to prevent parsing issues
local fixed_date = ugsub(date, ", *", " ")
return (ugsub(ugsub(fixed_date or date, "(%d+ %a+),", "%1"), "^(%d%d%d%d) (%a+ %d%d?)$", "%2 %1"))
end
end
local start_date, date = fix_date(getp("start_date"), "start_"), fix_date(getp("date"), "")
local year = getp("year")
local month = getp("month")
local start_year = getp("start_year")
local start_month = getp("start_month")
if date and year then
error(("Only one of |%s= or |%s= should be specified"):format(pname("date"), pname("year")))
end
if date and month then
error(
("|%s= should only be specified in conjunction with |%s=, not with |%s="):format(
pname("month"),
pname("year"),
pname("date")
)
)
end
if start_date and start_year then
error(("Only one of |%s= or |%s= should be specified"):format(pname("start_date"), pname("start_year")))
end
if start_date and start_month then
error(
("|%s= should only be specified in conjunction with |%s=, not with |%s="):format(
pname("start_month"),
pname("start_year"),
pname("start_date")
)
)
end
if (start_date or start_year) and not (date or year) then
error(
("|%s= or |%s=/|%s= cannot be specified without specifying |%s= or |%s=/|%s="):format(
pname("start_date"),
pname("start_year"),
pname("start_month"),
pname("date"),
pname("year"),
pname("month")
)
)
end
local dash = " – "
local day_explicitly_given = date and date_has_day_specified(date, "date")
local start_day_explicitly_given = start_date and date_has_day_specified(start_date, "start_date")
-- Format a date with boldfaced year, as e.g. '''2023''' August 3 (if `explicit_day_given` specified) or
-- '''2023''' August (if `explicit_day_given` not specified). If no date specified, fall back to formatting based
-- on the year and (optionally) month params given in `yearobj` and `monthobj`, boldfacing the year if not already.
-- `date_param` is the base name of the param from which the date was fetched, for error messages.
local function format_date_or_year_month(date, yearobj, monthobj, explicit_day_given, date_param)
if date then
return format_bold_date(date, explicit_day_given, date_param)
else
-- Boldface a year spec if it's not already boldface.
if bold_year and not yearobj.text:find("'''") then
-- Clone the year object before modifying it because we may use it later to check against the current
-- year (if we're dealing with start_year).
yearobj = shallow_copy(yearobj)
yearobj.text = "'''" .. yearobj.text .. "'''"
if yearobj.alt then
yearobj.alt = "'''" .. yearobj.alt .. "'''"
end
end
if year_last then
return (monthobj and format_annotated_text(monthobj) .. " " or "") .. format_annotated_text(yearobj)
else
return format_annotated_text(yearobj) .. (monthobj and " " .. format_annotated_text(monthobj) or "")
end
end
end
local yearobj = parse_annotated_text(year, pname("year"))
local monthobj = parse_annotated_text(month, pname("month"))
local start_yearobj = parse_annotated_text(start_year, pname("start_year"))
local start_monthobj = parse_annotated_text(start_month, pname("start_month"))
if start_yearobj then
local abbr_prefix
abbr_prefix, start_yearobj.text = process_ante_circa_post(start_yearobj.text)
start_yearobj.link = select(2, process_ante_circa_post(start_yearobj.link))
insert(output, abbr_prefix)
elseif yearobj then
local abbr_prefix
abbr_prefix, yearobj.text = process_ante_circa_post(yearobj.text)
yearobj.link = select(2, process_ante_circa_post(yearobj.link))
insert(output, abbr_prefix)
end
if start_date or start_year then
-- l10n: zh mode short-circuit — render both endpoints fully ("Y年n月j日")
-- and join with a dash. We deliberately skip enwikt's elide-common-parts
-- optimization because "2026年5月24日 – 2026年5月26日" reads fine in zh
-- and avoids reconstructing partial Chinese date fragments by hand.
if output_mode == "zh" then
insert(output, format_date_or_year_month(
start_date, start_yearobj, start_monthobj,
start_day_explicitly_given, "start_date"
))
insert(output, dash)
insert(output, format_date_or_year_month(
date, yearobj, monthobj, day_explicitly_given, "date"
))
else
local cur_year = yearobj and yearobj.text or format_date_with_code("Y", date, "date")
local cur_month = monthobj and monthobj.text or date and format_date_with_code("F", date, "date") or nil
local cur_day = date and day_explicitly_given and format_date_with_code("j", date, "date") or nil
local beg_year = start_yearobj and start_yearobj.text or format_date_with_code("Y", start_date, "start_date")
local beg_month = start_monthobj and start_monthobj.text
or start_date and format_date_with_code("F", start_date, "start_date")
or nil
local beg_day = start_date
and start_day_explicitly_given
and format_date_with_code("j", start_date, "start_date")
or nil
if year_last then
if beg_day then
insert(output, beg_day .. " " .. beg_month)
else
insert(output, beg_month)
end
if beg_year ~= cur_year then
insert(output, " " .. beg_year)
end
else
insert(output, format_date_or_year_month(
start_date,
start_yearobj,
start_monthobj,
start_day_explicitly_given,
"start_date"
))
end
if cur_year ~= beg_year then
-- Different years; insert current date in full.
if beg_month or cur_month then
insert(output, dash)
else
insert(output, "–")
end
insert(output, format_date_or_year_month(date, yearobj, monthobj, day_explicitly_given, "date"))
elseif cur_month and cur_month ~= beg_month then
local month_ins = monthobj and format_annotated_text(monthobj) or cur_month
-- Same year but different months; insert current month and (if available) current day.
if cur_day then
insert(output, dash)
if year_last then
insert(output, cur_day .. " " .. month_ins)
else
insert(output, month_ins .. " " .. cur_day)
end
else
if beg_day then
insert(output, dash)
else
insert(output, "–")
end
insert(output, month_ins)
end
elseif cur_day and cur_day ~= beg_day then
-- Same year and month but different days; insert current day.
insert(output, "–")
insert(output, cur_day)
else
-- Same year, month and day; or same year and month, and day not available; or same year, and month and
-- day not available. Do nothing. FIXME: Should we throw an error?
end
if year_last and beg_year == cur_year then
if cur_month then
insert(output, " " .. cur_year)
else
insert(output, " " .. cur_year)
end
end
end -- l10n: end of en-mode range branch (matches the if output_mode=="zh" above)
elseif date or yearobj then
insert(output, format_date_or_year_month(date, yearobj, monthobj, day_explicitly_given, "date"))
elseif not maintenance_line_no_date then
-- Not main quote date. Return nil, caller will handle.
return nil, nil
elseif not getp("nodate") then
local accessdate = getp("accessdate")
if accessdate then
local explicit_day_given = date_has_day_specified(accessdate, "accessdate")
insert(output, format_bold_date(accessdate, explicit_day_given, "accessdate") .. L(" (last accessed)"))
else
if mw.title.getCurrentTitle().namespace ~= 10 then
return maintenance_line(maintenance_line_no_date), true
end
return nil, nil
end
end
return ine(concat(output)), nil
end
local function tag_with_cite(txt)
return "<cite>" .. txt .. "</cite>"
end
-- Display the source line of the quote, above the actual quote text. This contains the majority of the logic of this
-- module (formerly contained in {{quote-meta/source}}).
function export.source(args, alias_map, format_as_cite, other_controls)
-- l10n: detect output mode at the entry of every source() invocation.
-- Mode is a module-level upvalue read by L(), format_date(), and the
-- build_* helpers; we reset it each call so two transclusions on the
-- same page can independently land in en vs zh mode.
output_mode = detect_output_mode(args)
local tracking_categories = {}
local argslang = args[1] or args.lang
if not argslang then
-- For the moment, only trigger an error on mainspace pages and
-- other pages that are not user pages or pages containing discussions.
-- These are the same pages that appear in the appropriate tracking
-- categories. User and discussion pages have not generally been
-- fixed up to include a language code and so it's more helpful
-- to use a maintenance line than signal an error.
local current_title = mw.title.getCurrentTitle()
if not (current_title.namespace == 10 or page_should_be_ignored(current_title.fullText)) then
require(languages_error_module)(nil, 1)
end
end
-- Given a canonical param, convert it to the original parameter specified by the user (which may have been an
-- alias).
local function alias(param)
return alias_map[param] or param
end
local output, sep = {}
local overrides = other_controls and other_controls.overrides or {}
-- Add text to the output. The text goes into a list, and we concatenate all the list components together at the
-- end. To make it easier to handle comma-separated items, we keep track (in `sep`) of the separator (if any) that
-- needs to be inserted before the next item added. For example, if we're in the "newversion" code (ind ~= ""), and
-- there's no title and no URL, then the first time we add anything after the title, we don't want to add a
-- separating comma because the preceding text will say "republished " or "republished as " or "translated as " or
-- similar. In all- other cases, we do want to add a separating comma. The bare add() function reset the separator
-- to be nothing, while the add_with_sep() function resets the separator to be the value of `next_sep` (defaulting
-- to ", "), so the next time around we do add a comma to separate `text` from the preceding piece of text.
local function add(text)
if sep then
insert(output, sep)
end
insert(output, text)
sep = nil
end
local function add_with_sep(text, next_sep)
add(text)
-- l10n: default separator follows output_mode (zh → ",", en → ", ")
sep = next_sep or sep_comma()
end
-- FIXME: This is all very over-engineered, which makes it slow and memory-inefficient.
-- Return a function that generates the actual parameter name associated with a base param (e.g. "author", "last").
-- The actual parameter name may have an index added (an empty string for the first set of params, e.g. author=,
-- last=, or a numeric index for further sets of params, e.g. author2=, last2=, etc.).
local function make_get_full_paramname(ind)
return function(param)
return param .. ind
end
end
-- Function to fetch the actual parameter name associated with a base param (see make_get_full_paramname() above).
-- Assigned at various times below by calling make_get_full_paramname(). We do it this way so that we can have
-- wrapper functions that access params and define them only once.
local get_full_paramname
-- Return two values: the value of a parameter given the base param name (which may have a numeric index added),
-- and the parameter name from which the value was fetched (which may be an alias, i.e. you can't necessarily fetch
-- the parameter value from args[] given this name). The base parameter can be a list of such base params, which
-- are checked in turn, or nil, in which case nil is returned.
local function a_with_name(param)
if not param then
return nil
elseif type(param) ~= "table" then
local fullname = get_full_paramname(param)
return args[fullname], alias(fullname)
end
for _, par in ipairs(param) do
local val, fullname = a_with_name(par)
if val then
return val, alias(fullname)
end
end
return nil
end
-- Fetch the value of a parameter given the base param name (which may have a numeric index added). The base
-- parameter can be a list of such base params, which are checked in turn, or nil, in which case nil is returned.
local function a(param)
return (a_with_name(param))
end
-- Identical to a_with_name(param) except that it verifies that no space is present. Should be used for URL's.
local function aurl_with_name(param)
local value, fullname = a_with_name(param)
if value and value:find(" ") and not value:find("%[") then
error(("URL not allowed to contain a space, but saw |%s=%s"):format(fullname, value))
end
return value, fullname
end
-- Identical to a(param) except that it verifies that no space is present. Should be used for URL's.
local function aurl(param)
return (aurl_with_name(param))
end
-- Convenience function to fetch a parameter that may be in a foreign language or text (and may consequently have
-- a language prefix and/or inline modifiers), parse the annotations and convert the result into a formatted string.
-- This is the same as parse_and_format_annotated_text() below but also returns the full param name as the second
-- return value.
local function parse_and_format_annotated_text_with_name(param, tag_text_func, tag_gloss_func)
local val, fullname = a_with_name(param)
local obj = parse_annotated_text(val, fullname)
return format_annotated_text(obj, tag_text_func, tag_gloss_func), fullname
end
-- Convenience function to fetch a parameter that may be in a foreign language or text (and may consequently have
-- a language prefix and/or inline modifiers), parse the modifiers and convert the result into a formatted string.
-- This is a wrapper around parse_annotated_text() and format_annotated_text(). `param` is the base parameter name (see
-- a_with_name()), `tag_text_func` is an optional function to tag the parameter text after all other processing (e.g.
-- wrap in <cite>...</cite> tags), and `tag_gloss_func` is a similar function for the parameter translation/gloss.
local function parse_and_format_annotated_text(param, tag_text_func, tag_gloss_func)
return (parse_and_format_annotated_text_with_name(param, tag_text_func, tag_gloss_func))
end
-- Convenience function to fetch a multivalued parameter that may be in a foreign language or text (and may
-- consequently have a language prefix and/or inline modifiers), parse the modifiers and convert the result into a
-- formatted string. This is the multivalued analog to parse_and_format_annotated_text_with_name() and returns two
-- values, the formatted string and the full name of the parameter fetched. `delimiter` is as in
-- format_multivalued_annotated_text().
local function parse_and_format_multivalued_annotated_text_with_name(param, delimiter, tag_text_func, tag_gloss_func)
local val, fullname = a_with_name(param)
local objs = parse_multivalued_annotated_text(val, fullname)
local num_objs = objs and #objs or 0
return format_multivalued_annotated_text(objs, delimiter, tag_text_func, tag_gloss_func), fullname, num_objs
end
-- Convenience function to fetch a multivalued parameter that may be in a foreign language or text (and may
-- consequently have a language prefix and/or inline modifiers), parse the modifiers and convert the result into a
-- formatted string. This is the multivalued analog to parse_and_format_annotated_text(). `delimiter` is as in
-- format_multivalued_annotated_text().
local function parse_and_format_multivalued_annotated_text(param, delimiter, tag_text_func, tag_gloss_func)
return (parse_and_format_multivalued_annotated_text_with_name(param, delimiter, tag_text_func, tag_gloss_func))
end
-- This determines whether to display "Mary Bloggs, transl." (if there's no author preceding) or "translated by
-- Mary Bloggs" (if there's an author preceding).
local author_outputted = false
-- When formatting as a citation, the priority is to display a name and a date before the book/chapter title
-- this tracks whether or not the author/date has been displayed
local date_outputted, formatted_date, formatted_origdate = false
local function add_date(no_paren)
if not date_outputted then
if no_paren then
sep = sep_comma()
else
sep = " "
end
if formatted_date then
if no_paren then
add(formatted_date)
elseif output_mode == "zh" then
-- l10n: fullwidth parens around the date
add(ZH_LPAREN .. formatted_date .. ZH_RPAREN)
else
add("(" .. formatted_date .. ")")
end
end
if formatted_origdate then
add(SPACE_LBRAC .. formatted_origdate .. RBRAC)
end
sep = sep_comma()
date_outputted = true
end
end
local function is_anonymous(val)
return val:match("^[Aa]nonymous$") or val:match("^[Aa]non%.?$")
end
-- Add a formatted author (whose values may be specified using `author` or, for compatibility purposes, split
-- among various parameters):
-- * `author` is the value of the author param (e.g. "author", "author2" or "2ndauthor"), and `author_fullname` is
-- the full parameter name holding that value;
-- * `trans_author` is the optional value of the param holding the gloss/translation of the author, and
-- `trans_author_fullname` is the full parameter name holding that value (or nil for no such parameter);
-- * `authorlink` is the value of the authorlink param, which holds the Wikipedia link of the author(s) in `author`,
-- and `authorlink_fullname` is the full parameter name holding that value;
-- * `trans_authorlink` is the optional value of the param holding the Wikipedia link of the gloss/translation of
-- the author, and `trans_authorlink_fullname` is the full parameter name holding that value (or nil for no such
-- parameter);
-- * `first` is the value of the parameter holding the first name of the author, and `first_fullname` is the full
-- parameter name holding that value;
-- * `trans_first` is the value of the corresponding parameter holding the gloss/translation of the first name
-- (e.g. "trans-first"), and `trans_first_fullname` is the full parameter name holding that value (or nil for
-- no such parameter);
-- * `last` is the value of the parameter holding the last name of the author, and `last_fullname` is the full
-- parameter name holding that value;
-- * `trans_last` is the value of the corresponding parameter holding the gloss/translation of the last name
-- (e.g. "trans-last"), and `trans_last_fullname` is the full parameter name holding that value (or nil for
-- no such parameter).
-- * `last_first` if set, when parameters `first` and `last` are used, display the author name as "last, first"
local function add_author(
author,
author_fullname,
trans_author,
trans_author_fullname,
authorlink,
authorlink_fullname,
trans_authorlink,
trans_authorlink_fullname,
first,
first_fullname,
trans_first,
trans_first_fullname,
last,
last_fullname,
trans_last,
trans_last_fullname,
last_first
)
local function make_author_with_url(txt, txtparam, authorlink, authorlink_param)
if authorlink then
if authorlink:find("%[%[") then
error(("Can't specify links in |%s=%s"):format(authorlink_param, authorlink))
end
if txt:find("%[%[") then
error(("Can't specify links in %s=%s"):format(txtparam, txt))
end
return "[[w:" .. authorlink .. "|" .. txt .. "]]"
else
return txt
end
end
local num_authorobjs
if author then
local authorobjs =
parse_multivalued_annotated_text(author, author_fullname, trans_author, trans_author_fullname)
num_authorobjs = #authorobjs
if num_authorobjs == 1 then
if is_anonymous(authorobjs[1].text) then
authorobjs[1].text = "anonymous author"
authorobjs[1].link = "anonymous author"
end
if authorlink then
authorobjs[1].text = make_author_with_url(
authorobjs[1].text,
"|" .. author_fullname,
authorlink,
"|" .. authorlink_fullname
)
authorobjs[1].link = make_author_with_url(
authorobjs[1].link,
"|" .. author_fullname,
authorlink,
"|" .. authorlink_fullname
)
end
if authorobjs[1].gloss and trans_authorlink then
authorobjs[1].gloss = make_author_with_url(
authorobjs[1].gloss,
("<t:...> in |%s"):format(author_fullname),
trans_authorlink,
"|" .. trans_author_fullname
)
end
add(format_multivalued_annotated_text(authorobjs))
elseif trans_authorlink then
error(
(
"Can't specify |%s= along with multiple semicolon-separated entities in |%s=; use the "
.. "<t:...> inline modifier attached to the individual entities and put the link directly "
.. "in the value of the inline modifier"
):format(trans_authorlink_fullname, author_fullname)
)
else
-- Allow an authorlink with multiple authors, e.g. for use with |author=Max Mills; Harvey Mills
-- with |authorlink=Max and Harvey. For this we have to generate the entire text and link it
-- all.
local formatted_text = format_multivalued_annotated_text(authorobjs)
if authorlink then
formatted_text = make_author_with_url(
formatted_text,
"|" .. author_fullname,
authorlink,
"|" .. authorlink_fullname
)
end
add(formatted_text)
end
else
num_authorobjs = 1
-- Author separated into first name + last name. We don't currently support non-Latin-script
-- authors separated this way and probably never will.
if first then
if last_first then
author = last .. ", " .. first
else
author = first .. " " .. last
end
else
author = last
end
if authorlink then
local authorparam = first and ("|%s |%s"):format(first_fullname, last_fullname) or "|" .. last_fullname
author = make_author_with_url(author, authorparam, authorlink, authorlink_fullname)
end
local trans_author
if trans_last then
if trans_first then
trans_author = trans_first .. " " .. trans_last
else
trans_author = trans_last
end
if trans_authorlink then
local trans_authorparam = trans_first
and ("|%s |%s"):format(trans_first_fullname, trans_last_fullname)
or "|" .. trans_last_fullname
trans_author = make_author_with_url(
trans_author,
trans_authorparam,
trans_authorlink,
trans_authorlink_fullname
)
end
end
add(author)
if trans_author then
add(SPACE_LBRAC)
add(trans_author)
add(RBRAC)
end
end
author_outputted = true
return num_authorobjs
end
local function add_authorlike(
param,
prefix_with_preceding_authors,
suffix_without_preceding_authors,
suffix_if_multiple,
anonymous_suffix
)
local delimiter = author_outputted and "and" or ", "
local entities, _, num_entities = parse_and_format_multivalued_annotated_text_with_name(param, delimiter)
if not entities then
return
end
if is_anonymous(entities) then
-- If tlr=anonymous or similar given, display as "anonymous translator" or similar. If a specific
-- anonymous suffix not given, try to derive the anonymous suffix from the non-preceding-author suffix.
if not anonymous_suffix then
if output_mode == "zh" then
-- l10n: zh suffix shape is "(X)"; derive_anonymous_suffix_zh
-- maps it to a bare role noun like "譯者" / "編者" so we get
-- "佚名譯者" instead of "佚名(譯)".
anonymous_suffix = derive_anonymous_suffix_zh(suffix_without_preceding_authors)
else
local cleaned_suffix = suffix_without_preceding_authors
:gsub(" ", " ")
:gsub(" ", " ")
:gsub(" ", " ")
:gsub("[", "[")
:gsub("]", "]")
cleaned_suffix = mw.text.trim(cleaned_suffix)
if not anonymous_suffix then
anonymous_suffix = " " .. cleaned_suffix:match("^, (.*)$")
end
if not anonymous_suffix then
anonymous_suffix = " " .. cleaned_suffix:match("^%((.*)%)$")
end
if not anonymous_suffix then
anonymous_suffix = " " .. cleaned_suffix:match("^%[(.*)%]$")
end
if not anonymous_suffix then
anonymous_suffix = suffix_without_preceding_authors
end
end -- l10n: end of en branch
end
add_with_sep(L("anonymous") .. anonymous_suffix)
elseif prefix_with_preceding_authors and (author_outputted or not suffix_without_preceding_authors) then
add_with_sep(prefix_with_preceding_authors .. entities)
elseif suffix_if_multiple and num_entities > 1 then
add_with_sep(entities .. suffix_if_multiple)
else
add_with_sep(entities .. suffix_without_preceding_authors)
end
author_outputted = true
end
local function add_authorlabel()
local default_authorlabel = a("default-authorlabel")
if default_authorlabel and yesno(a("authorlabel"), true) then
sep = nil
add_with_sep(" " .. default_authorlabel)
end
end
local function has_new_title_or_author()
return args["2ndauthor"]
or args["2ndlast"]
or args.chapter2
or args.title2
or args.tlr2
or args.mainauthor2
or args.editor2
or args.editors2
or args.compiler2
or args.compilers2
or args.director2
or args.directors2
end
local function has_newversion()
return args.newversion or args.location2 or has_new_title_or_author()
end
-- Handle chapter=, section=, etc. `param` is the base name of the parameter in question, e.g. "chapter" or
-- "section". If numeric (either Arabic or Roman), add `numeric_prefix`; otherwise, parse as textual (allowing for
-- language prefixes, inline modifiers, etc.), prefix with `textual_prefix` (if given) and suffix with
-- `textual_suffix` (if given). Also checks for and handles the following (assuming param == "chapter"):
-- * chapterurl=: URL of the chapter.
-- * trans-chapter=: Chapter translation (can be given using an inline modifier <t:...>).
-- * chapter_number=: Chapter number, when chapter= is also given (otherwise put the chapter number in chapter=).
-- * chapter_plain=: Plain version of the chapter number; the "chapter " prefix isn't added.
-- * chapter_series=: Series that the chapter is within (used e.g. for journal articles part of a series).
-- * chapter_seriesvolume=: Volume of the series (compare seriesvolume=).
--
-- Returns nil if no value specified for the main parameter, otherwise the formatted value.
local function format_chapterlike(param, numeric_prefix, textual_prefix, textual_suffix)
local chap, chap_fullname = a_with_name(param)
local chap_num, chap_num_fullname = a_with_name(param .. "_number")
local chap_plain, chap_plain_fullname = parse_and_format_annotated_text_with_name(param .. "_plain")
if chap_num and chap_plain then
error(("Specify only one of |%s= or %s="):format(chap_num_fullname, chap_plain_fullname))
end
local chap_series, chap_series_fullname =
parse_and_format_annotated_text_with_name(param .. "_series", tag_with_cite, tag_with_cite)
local chap_seriesvolume, chap_seriesvolume_fullname =
parse_and_format_annotated_text_with_name(param .. "_seriesvolume")
if chap_series then
-- l10n: zh uses fullwidth ","
chap_series = sep_comma() .. chap_series
end
if chap_seriesvolume then
if not chap_series then
error(("Cannot specify |%s= without %s="):format(chap_series_fullname, chap_seriesvolume_fullname))
end
if output_mode == "zh" then
chap_series = chap_series .. ZH_LPAREN .. chap_seriesvolume .. ZH_RPAREN
else
chap_series = chap_series .. " (" .. chap_seriesvolume .. ")"
end
end
local chapterurl
local function make_chapter_with_url(chap)
if chapterurl then
return "[" .. chapterurl .. " " .. chap .. "]"
else
return chap
end
end
if not chap then
if chap_num then
error(
("Cannot specify |%s= without |%s=; put the numeric value in |%s= directly"):format(
chap_num_fullname,
chap_fullname,
chap_fullname
)
)
end
if chap_plain then
chapterurl = aurl(param .. "url")
return make_chapter_with_url(chap_plain .. (chap_series or ""))
end
return nil
end
local cleaned_chap = chap:gsub("<sup>[^<>]*</sup>", ""):gsub("[*+#]", "")
chapterurl = aurl(param .. "url")
-- l10n: zh wraps numeric-class chap as "第N章" (suffix is L(param));
-- textual chap as "「title」" (CJK corner brackets in place of "...").
local function emit_numeric(chap_with_url)
if output_mode == "zh" then
return "第" .. chap_with_url .. L(param)
end
return numeric_prefix .. chap_with_url
end
local formatted
if numeric_prefix and get_number(cleaned_chap) then
-- Arabic chapter number
formatted = emit_numeric(make_chapter_with_url(chap))
elseif
numeric_prefix
and cleaned_chap:match("^[mdclxviMDCLXVI]+$")
and roman_to_arabic(cleaned_chap, true)
and (not overrides[param] or not overrides[param].noroman)
then
-- Roman chapter number
formatted = emit_numeric(make_chapter_with_url(upper(chap)))
elseif numeric_prefix and output_mode == "zh"
and classify_numeric_value(cleaned_chap) == "chinese"
then
-- l10n: Chinese-numeral chapter number (e.g. "五"), also wraps as 第五章.
formatted = emit_numeric(make_chapter_with_url(chap))
else
-- strip leading ! (used to force text-mode for titles that look like Roman numerals like "mil" and "dill")
if chap:find("^!") then
chap = chap:gsub("^!", "")
end
-- Must be a chapter name
local chapterobj = parse_annotated_text(chap, chap_fullname, a("trans-" .. param))
chapterobj.text = make_chapter_with_url(chapterobj.text)
chapterobj.link = make_chapter_with_url(chapterobj.link)
if output_mode == "zh" then
-- l10n: textual chap name uses CJK corner brackets「」 (not "..." quotes).
formatted = ZH_LQUOTE .. format_annotated_text(chapterobj) .. ZH_RQUOTE
else
formatted = (textual_prefix or "") .. format_annotated_text(chapterobj) .. (textual_suffix or "")
end
end
if chap_num or chap_plain then
-- NOTE: Up above we throw an error if both chap_num and chap_plain are specified.
if output_mode == "zh" then
-- l10n: zh parenthesized number, e.g. 「題目」(第5章)
formatted = formatted .. ZH_LPAREN
.. (chap_plain or "第" .. chap_num .. L(param))
.. ZH_RPAREN
else
formatted = formatted .. " (" .. (chap_plain or numeric_prefix .. chap_num) .. ")"
end
end
if chap_series then
formatted = formatted .. chap_series
end
return formatted
end
-- This handles everything after displaying the author, starting with the chapter and ending with page, column,
-- line and then other=. It is currently called twice: Once to handle the main portion of the citation, and once to
-- handle a "newversion" citation. `ind` is either "" for the main portion or a number (currently only 2) for a
-- "newversion" citation. In a few places we conditionalize on `ind` to take actions depending on its value.
local function postauthor(ind, num_authors, format_as_cite)
get_full_paramname = make_get_full_paramname(ind)
if author_outputted then
add_authorlabel()
end
local coauthors = parse_and_format_multivalued_annotated_text("coauthors", "and")
if coauthors then
local with_prefix = ""
if author_outputted then
with_prefix = "with "
if num_authors == 1 then
sep = " "
end
end
add_with_sep(with_prefix .. coauthors)
author_outputted = true
end
add_authorlike("quotee", L("quoting "), L(", quotee"), L(", quotees"))
if format_as_cite and author_outputted and not date_outputted then
add_date()
sep = sep_comma()
end
add_authorlike("chapter_tlr", L("translated by "), L(", transl."), nil, L(" translator"))
local function add_sg_and_pl_authorlike(noun, verbed)
local sgparam = noun
local plparam = noun .. "s"
local sgval, sgval_fullname = a_with_name(sgparam)
local plval, plval_fullname = a_with_name(plparam)
if sgval and plval then
error(("Can't specify both |%s= and |%s="):format(sgval_fullname, plval_fullname))
end
if sgval or plval then
-- l10n: route each constructed phrase through L() so zh mode picks up
-- "由 " / "(編)" / "(編纂)" etc. from STRINGS.
local verbed_by = L(verbed .. " by ")
local comma_sgnoun = L(", " .. noun)
local comma_plnoun = L(", " .. noun .. "s")
add_authorlike(sgparam, verbed_by, comma_sgnoun, comma_plnoun)
add_authorlike(plparam, verbed_by, comma_plnoun)
end
end
local formatted_entry = format_chapterlike("entry", nil, "“", "”")
local formatted_chapter = format_chapterlike("chapter", "chapter ", "“", "”")
local function add_entry()
if formatted_entry then
add_with_sep(formatted_entry)
if not a("notitle") then
add(L("in "))
author_outputted = false
else
author_outputted = true
end
formatted_entry = nil
end
end
local function add_chapter()
add_entry()
if formatted_chapter then
add_with_sep(formatted_chapter)
if not a("notitle") then
add(L("in "))
author_outputted = false
end
formatted_chapter = nil
end
end
local function add_actor_role(format_as_cite)
local role = parse_and_format_multivalued_annotated_text("role", "and")
local actor_val, actor_fullname = a_with_name("actor")
local actor_objs = parse_multivalued_annotated_text(actor_val, actor_fullname)
local actor = format_multivalued_annotated_text(actor_objs, "and")
if format_as_cite then
if role then
if actor then
-- l10n: "John as " / "John 飾演 "
add_with_sep(build_actor_as_role(actor))
end
sep = nil
add_with_sep(role)
elseif actor then
add_with_sep(build_actor_paren(actor, #actor_objs > 1))
end
else
if role then
add_with_sep(L("spoken by ") .. role)
if actor then
sep = nil
-- l10n: parenthesized actor next to a role
if output_mode == "zh" then
add_with_sep(ZH_LPAREN .. actor .. ZH_RPAREN)
else
add_with_sep(" (" .. actor .. ")")
end
end
elseif actor then
add_with_sep(build_actor_paren(actor, #actor_objs > 1))
end
end
end
if format_as_cite then
if date_outputted then
add_chapter()
end
local output_len = #output
local mainauthor = parse_and_format_multivalued_annotated_text("mainauthor")
if mainauthor then
add_with_sep(mainauthor)
end
-- quote-* templates display "jobbed by name" after the author, controlled by the author_outputted flag
author_outputted = false
add_authorlike("tlr", L("translated by "), L(", transl."), nil, L(" translator"))
author_outputted = false
add_sg_and_pl_authorlike("editor", "edited")
add_sg_and_pl_authorlike("compiler", "compiled")
add_sg_and_pl_authorlike("director", "directed")
add_authorlike("lyricist", nil, L(" (lyrics)"), nil, L(" lyricist"))
add_authorlike("lyrics-translator", nil, L(" (translation)"), nil, L(" lyrics translator"))
add_authorlike("composer", nil, L(" (music)"), nil, L(" composer"))
add_actor_role("format_as_cite")
-- if the output length has changed, a credit name has been printed
-- and we can print the date
if output_len ~= #output then
author_outputted = true
add_date()
end
add_chapter()
else
add_chapter()
local mainauthor = parse_and_format_multivalued_annotated_text("mainauthor")
if mainauthor then
add_with_sep(mainauthor)
author_outputted = true
end
add_authorlike("tlr", L("translated by "), L(", transl."), nil, L(" translator"))
add_sg_and_pl_authorlike("editor", "edited")
add_sg_and_pl_authorlike("compiler", "compiled")
add_sg_and_pl_authorlike("director", "directed")
add_authorlike("lyricist", nil, L(" (lyrics)"), nil, L(" lyricist"))
add_authorlike("lyrics-translator", nil, L(" (translation)"), nil, L(" lyrics translator"))
add_authorlike("composer", nil, L(" (music)"), nil, L(" composer"))
end
local title, title_fullname = a_with_name("title")
local need_comma = false
if title then
local titleobj = parse_annotated_text(title, title_fullname, a("trans-title"))
add(format_annotated_text(titleobj, tag_with_cite, tag_with_cite))
local series = parse_and_format_annotated_text("series")
if series then
-- l10n: fullwidth parens around series (no leading space in zh).
add((output_mode == "zh" and ZH_LPAREN or " (") .. series)
local seriesvolume = parse_and_format_annotated_text("seriesvolume")
if seriesvolume then
add(sep_semicolon() .. seriesvolume)
end
add(output_mode == "zh" and ZH_RPAREN or ")")
end
need_comma = true
elseif ind == "" then
if not a("notitle") then
add(maintenance_line(L("Please provide the book title or journal name")))
need_comma = true
end
end
local archiveurl, archiveurl_fullname = aurl_with_name("archiveurl")
local url, url_fullname = aurl_with_name("url")
local urls, urls_fullname = aurl_with_name("urls")
if url and urls then
error(("Supply only one of |%s= and |%s="):format(url_fullname, urls_fullname))
end
local function verify_title_supplied(url_name)
-- There are too many cases of this to throw an error at this time.
-- if not title then
-- error(("If |%s= is given, |%s= must also be supplied"):format(url_name, title_fullname))
-- end
end
if archiveurl or url then
verify_title_supplied(archiveurl and archiveurl_fullname or url_fullname)
sep = nil
add("‎<sup>[" .. (archiveurl or url) .. "]</sup>")
elseif urls then
verify_title_supplied(urls_fullname)
sep = nil
add("‎<sup>" .. urls .. "</sup>")
end
-- display (in Language) if language is provided and is not English and not overriden by termlang or worklang
if format_as_cite and ind == "" and not (args.termlang or args.worklang) and (args[1] or args.lang) then
local lang = get_first_lang(args[1] or args.lang)
if lang then
local langcode = lang:getCode()
if not (langcode == "und" or langcode == "en") then
local langs = format_langs(args[1] or args.lang)
if langs then
-- l10n: cite-mode language annotation appended to the title.
add(build_annotations_paren({build_lang_annotation("in", langs)}))
end
end
end
end
if need_comma then
sep = sep_comma()
end
local edition, edition_fullname = parse_and_format_annotated_text_with_name("edition")
local edition_plain, edition_plain_fullname = parse_and_format_annotated_text_with_name("edition_plain")
if edition and edition_plain then
error(("Supply only one of |%s= and |%s="):format(edition_fullname, edition_plain_fullname))
end
if edition then
-- l10n: numeric edition → "第N版"; textual edition → "<val>版"
if output_mode == "zh" then
add_with_sep(build_zh_numeric(edition, "edition"))
else
add_with_sep(edition .. " edition")
end
end
if edition_plain then
add_with_sep(edition_plain)
end
-- Display a numeric param such as page=, volume=, column=. For each `paramname`, four params are actually
-- recognized, e.g. for paramname == "page", the params page=, pages=, page_plain= and pageurl= are recognized
-- and checked (or the same with an index, e.g. page2=, pages2=, page_plain2= and pageurl2= respectively if
-- ind == "2"). Only one of the first three can be specified; an error results if more than one are given.
-- If none are given, the return value is nil; otherwise it is a string. The numeric spec is taken directly
-- from e.g. page_plain= if given; otherwise if e.g. pages= is given, or if page= is given and looks like a
-- combination of numbers (i.e. it has a hyphen or dash in it, a comma, or the word " and "), it is prefixed
-- by `singular_desc` + "s" (e.g. "pages "), otherwise it is prefixed by just `singular_desc` (e.g. "page ").
-- (As a special case, if either e.g. page=unnumbered or pages=unnumbered is given, the numeric spec is
-- "unnumbered page".) The resulting spec is returned directly unless e.g. pageurl= is given, in which case
-- it is linked to the specified URL. Note that any of the specs can be foreign text, e.g. foreign numbers
-- (including with optional inline modifiers), and such text is handled appropriately.
local function format_numeric_param(paramname, singular_desc)
local sgval = a_with_name(paramname)
local sgobj = parse_annotated_text(sgval, paramname)
local plparamname = paramname .. "s"
local plval = a_with_name(plparamname)
local plobj = parse_annotated_text(plval, plparamname)
local plainval, plain_fullname = parse_and_format_annotated_text_with_name(paramname .. "_plain")
local numspec
if not sgval and not plval and not plainval then
return
elseif plainval and (sgval or plval) then
error(("Can't specify " .. plain_fullname .. " with " .. paramname .. " or " .. plparamname))
elseif sgval and plval then
-- if both singular and plural, display "page 1 of 1-10"
if output_mode == "zh" then
-- l10n: zh sg-of-pl range, e.g. "第1頁/共1-10頁"
numspec = "第" .. sgval .. L(paramname) .. "/共" .. plval .. L(paramname)
else
numspec = singular_desc .. " " .. sgval .. " of " .. plval
end
else
-- Merge page= and pages= and treat alike because people often mix them up in both directions.
if plainval then
numspec = plainval
else
local val = sgobj and sgobj.text or plobj.text
if val == "unnumbered" then
if output_mode == "zh" then
-- l10n: e.g. "未編號頁"
numspec = L("unnumbered") .. L(paramname)
else
numspec = "unnumbered " .. singular_desc
end
else
local desc
if val:find("^!") then
val = val:gsub("^!", "")
desc = sgval and singular_desc or pluralize(singular_desc)
else
local check_val = val
if check_val:find("%[") then
check_val = remove_links(check_val)
-- convert URL's of the form [URL DISPLAY] to the displayed value
check_val = check_val:gsub("%[[^ %[%]]* ([^%[%]]*)%]", "%1")
end
-- in case of negative page numbers (do they exist?), don't treat as multiple pages
check_val = check_val:gsub("^%-", "")
-- replace HTML entity en-dashes and em-dashes with their literal codes
check_val = check_val:gsub("–", "–")
check_val = check_val:gsub("–", "–")
check_val = check_val:gsub("—", "—")
check_val = check_val:gsub("—", "—")
-- Check for en-dash or em-dash, or two numbers (possibly with stuff after like 12a-15b)
-- separated by a hyphen or by comma a followed by a space (to avoid firing on thousands separators).
if
umatch(check_val, "[–—]")
or check_val:find(" and ")
or check_val:match("%d+[^ ]* *%- *%d+")
or check_val:match("%d+[^ ]* *, +%d+")
then
desc = pluralize(singular_desc)
else
desc = singular_desc
end
end
local obj = sgobj or plobj
obj.text = val
if obj.link:find("^!") then
obj.link = obj.link:gsub("^!", "")
end
val = format_annotated_text(obj)
if output_mode == "zh" then
-- l10n: numeric class → "第N<suffix>"; textual → "<val><suffix>"
numspec = build_zh_numeric(val, paramname)
else
numspec = desc .. " " .. val
end
end
end
end
local url = a(paramname .. "url")
if url then
return "[" .. url .. " " .. numspec .. "]"
else
return numspec
end
end
local volume = format_numeric_param("volume", a("volume_prefix") or "volume")
if volume then
add_with_sep(volume)
end
local issue = format_numeric_param("issue", a("issue_prefix") or "number")
if issue then
add_with_sep(issue)
end
-- number= is an alias for issue= (except in {{quote-av}}, where it is the episode number)
local number = format_numeric_param("number", a("number_prefix") or "number")
if number then
add_with_sep(number)
end
local annotations = {}
local genre = a("genre")
if genre then
insert(annotations, genre)
end
local format = a("format")
if format then
insert(annotations, format)
end
local medium = a("medium")
if medium then
insert(annotations, medium)
end
-- Now handle the display of language annotations like "(in French)" or
-- "(quotation in Nauruan; overall work in German)".
local quotelang = args[1] or args.lang
if not quotelang then
if ind == "" then
-- This can only happen for certain non-mainspace pages, e.g. Talk pages; otherwise an error is thrown
-- above.
insert(annotations, maintenance_line(L("Please specify the language of the quote using |1=")))
else
-- do nothing in newversion= portion
end
elseif ind == "" then
local worklang = a("worklang")
local termlang = a("termlang")
worklang = worklang or quotelang
termlang = termlang or quotelang
if worklang == quotelang then
if worklang == termlang then
-- do nothing
else
insert(annotations, build_lang_annotation("in", format_langs(quotelang)))
end
else
if quotelang ~= termlang then
insert(annotations, build_lang_annotation("quotation_in", format_langs(quotelang)))
end
insert(annotations, build_lang_annotation("overall_work_in", format_langs(worklang)))
end
else
local lang2 = a("lang2")
if lang2 then
insert(annotations, build_lang_annotation("in", format_langs(lang2)))
end
end
if #annotations > 0 then
sep = nil
add_with_sep(build_annotations_paren(annotations))
end
local artist = parse_and_format_multivalued_annotated_text("artist", "and")
if artist then
add_with_sep(L("performed by ") .. artist)
end
local feat = parse_and_format_multivalued_annotated_text("feat", "and")
if feat then
sep = " "
-- l10n: "ft." is universal in modern music citation and not translated.
add_with_sep("ft. " .. feat)
end
if not format_as_cite then
add_actor_role()
end
local others = parse_and_format_annotated_text("others")
if others then
add_with_sep(others)
end
local quoted_in = parse_and_format_annotated_text("quoted_in", tag_with_cite, tag_with_cite)
if quoted_in then
add_with_sep(L("quoted in ") .. quoted_in)
insert(tracking_categories, "Quotations using quoted-in parameter")
end
local location = parse_and_format_multivalued_annotated_text("location", "; ")
local publisher = parse_and_format_multivalued_annotated_text("publisher", "; ")
if publisher then
if location then
add_with_sep(location) -- colon
-- l10n: separator between location and publisher (colon)
sep = output_mode == "zh" and ZH_COLON or ": "
end
add_with_sep(publisher)
elseif location then
add_with_sep(location)
end
if not date_outputted then
add_date("no_paren")
end
local source = parse_and_format_multivalued_annotated_text("source", "and")
if source then
add_with_sep(L("sourced from ") .. source)
end
local original = parse_and_format_annotated_text("original", tag_with_cite, tag_with_cite)
local by = parse_and_format_multivalued_annotated_text("by", "and")
local origtype = a("deriv") or "translation"
if original or by then
-- l10n: "translation of X by Y" → "X,Y 譯" (word order shift, see build_translation_phrase)
add_with_sep(build_translation_phrase(origtype, original, by))
end
-- Handle origlang=, origworklang=. How we handle them depends on whether the original title or author are explicitly
-- given.
local origlang = a("origlang")
local origworklang = a("origworklang")
local origlangtext, origworklangtext
if origlang then
origlangtext = build_lang_annotation("in", format_langs(origlang))
end
if origworklang then
origworklangtext = build_lang_annotation("overall_work_in", format_langs(origworklang))
end
if origlang or origworklang then
if original or by then
local orig_annotations = {}
if origlangtext then
insert(orig_annotations, origlangtext)
end
if origworklangtext then
insert(orig_annotations, origworklangtext)
end
sep = nil
add_with_sep(build_annotations_paren(orig_annotations))
else
-- l10n: "translation of original (in French)" → "原文翻譯(以法語寫成)"
add_with_sep(build_translation_phrase(origtype, nil, nil)
.. (origlangtext and " " .. origlangtext or ""))
if origworklangtext then
sep = nil
add_with_sep(build_annotations_paren({origworklangtext}))
end
end
end
if ind ~= "" and has_newversion() then
local formatted_new_date = format_date_args(a, get_full_paramname, alias_map, "", "", nil, L("Please provide a date or year"), true)
if formatted_new_date then
add_with_sep(formatted_new_date)
end
end
-- Fetch date_published=/year_published=/month_published= and format appropriately.
local formatted_date_published = format_date_args(a, get_full_paramname, alias_map, "", "_published", nil, nil, true)
local platform = parse_and_format_multivalued_annotated_text("platform", "and")
if formatted_date_published then
-- l10n: "published <date> via <platform>" → "<date> 於 <platform> 出版"
add_with_sep(build_published(formatted_date_published, platform))
elseif platform then
add_with_sep(build_via(platform))
end
-- From here on out, there should always be a preceding item, so we
-- can dispense with add_with_sep() and always insert the comma.
sep = nil
local function small(txt)
-- l10n: leading comma is a separator; HTML <small> tags are untranslated.
add(sep_comma() .. "<small>")
add(txt)
add("</small>")
end
-- Add an identifier to a book or article database such as DOI, ISBN, JSTOR, etc. `param_or_params`
-- is a string identifying the base param, or a list of such strings to check in turn. If found, the value
-- of the parameter is processed using `process` (a function of one argument, defaulting to mw.uri.encode()),
-- and then the actual URL to insert is generated by preceding with `pretext`, following with `posttext`,
-- and running the resulting string through small(), which first adds a comma and then the URL in small font.
local function add_identifier(param_or_params, pretext, posttext, process)
local val = a(param_or_params)
if val then
val = (process or mw.uri.encode)(val)
small(pretext .. val .. posttext)
end
end
add_identifier("bibcode", "[https://adsabs.harvard.edu/abs/", " →Bibcode]")
add_identifier("doi", '<span class="neverexpand">[https://doi.org/', " →DOI]</span>")
add_identifier("isbn", "", "", isbn)
add_identifier("issn", "", "", issn)
add_identifier("jstor", "[https://www.jstor.org/stable/", " →JSTOR]")
add_identifier("lccn", "", "", lccn)
add_identifier("oclc", "[https://search.worldcat.org/title/", " →OCLC]")
add_identifier("ol", "[https://openlibrary.org/works/OL", "/ →OL]")
add_identifier("pmid", "[https://www.ncbi.nlm.nih.gov/pubmed/", " →PMID]")
add_identifier("pmcid", "[https://www.ncbi.nlm.nih.gov/pmc/articles/", "/ →PMCID]")
add_identifier("ssrn", "[https://ssrn.com/abstract=", " →SSRN]")
-- add_identifier("urn", "", "", urn)
local id = a("id")
if id then
small(id)
end
archiveurl, archiveurl_fullname = aurl_with_name("archiveurl")
if archiveurl then
add(L(", archived from "))
local url, url_fullname = aurl_with_name("url")
if not url then
-- attempt to infer original URL from archive URL; this works at
-- least for Wayback Machine (web.archive.org) URL's
url = archiveurl:match("/(https?:.*)$")
if not url then
error(
("When |%s= is specified, |%s= must also be included"):format(archiveurl_fullname, url_fullname)
)
end
end
add("[" .. url .. " " .. L("the original") .. "]" .. L(" on "))
local archivedate, archivedate_fullname = a_with_name("archivedate")
if archivedate then
add(format_date(archivedate))
elseif string.sub(archiveurl, 1, 28) == "https://web.archive.org/web/" then
-- If the archive is from the Wayback Machine, then it already contains the date
-- Get the date and format it
local wayback_date = string.sub(archiveurl, 29, 29 + 7)
wayback_date = string.sub(wayback_date, 1, 4)
.. "-"
.. string.sub(wayback_date, 5, 6)
.. "-"
.. string.sub(wayback_date, 7, 8)
add(format_date(wayback_date))
else
error(
("When |%s= is specified, |%s= must also be included"):format(
archiveurl_fullname,
archivedate_fullname
)
)
end
end
if a("accessdate") then
--Otherwise do not display here, as already used as a fallback for missing date= or year= earlier.
if (a("date") or a("nodate") or a("year")) and not a("archivedate") then
-- l10n: ", retrieved <date>" → ",於 <date> 擷取" (verb-final)
add(build_retrieved(format_date(a("accessdate"))))
end
end
local formatted_section = format_chapterlike("section", "section ")
if formatted_section then
add(sep_comma())
add(formatted_section)
end
-- video game stuff
local system = parse_and_format_annotated_text("system")
if system then
add(sep_comma() .. system)
end
local scene = parse_and_format_annotated_text("scene")
if scene then
add(L(", scene: ") .. scene)
end
local level = parse_and_format_annotated_text("level")
if level then
add(L(", level/area: ") .. level)
end
local note = parse_and_format_annotated_text("note")
if note then
add(sep_comma() .. note)
end
local note_plain = parse_and_format_annotated_text("note_plain")
if note_plain then
add(" " .. note_plain)
end
-- Wrapper around format_numeric_param that inserts the formatted text with optional preceding text.
local function handle_numeric_param(paramname, singular_desc, pretext)
local numspec = format_numeric_param(paramname, singular_desc)
if numspec then
add((pretext or "") .. numspec)
end
end
-- l10n: pretext is the leading separator before each piece; format_numeric_param
-- internally produces "第N頁/欄/行" or "<val>頁/欄/行" in zh mode.
handle_numeric_param("page", a("page_prefix") or "page", sep_comma())
handle_numeric_param("column", a("column_prefix") or "column", sep_comma())
handle_numeric_param("line", a("line_prefix") or "line", sep_comma())
-- FIXME: Does this make sense? What is other=?
local other = parse_and_format_annotated_text("other")
if other then
add(sep_comma() .. other)
end
end
local function add_authors(args, last_first)
-- Find maximum indexed author or last name.
local maxind = math.max(args.author.maxindex, args.last.maxindex)
-- Include max index of ancillary params so we get an error message about their use without the primary params.
local ancillary_params =
{"trans-author", "authorlink", "trans-authorlink", "first", "trans-first", "trans-last"}
for _, ancillary in ipairs(ancillary_params) do
maxind = math.max(maxind, args[ancillary].maxindex)
end
local num_authors = 0
for i = 1, maxind do
local ind = i == 1 and "" or i
local author, last = args.author[i], args.last[i]
if author or last then
local this_num_authors = add_author(
author,
"author" .. ind,
args["trans-author"][i],
"trans-author" .. ind,
args.authorlink[i],
"authorlink" .. ind,
args["trans-authorlink"][i],
"trans-authorlink" .. ind,
args.first[i],
"first" .. ind,
args["trans-first"][i],
"trans-first" .. ind,
last,
"last" .. ind,
args["trans-last"][i],
"trans-last" .. ind,
last_first
)
num_authors = num_authors + this_num_authors
sep = last_first and sep_semicolon() or sep_comma()
else
for _, cant_have in ipairs(ancillary_params) do
if args[cant_have][i] then
error(("Can't have |%s%s= without |author%s= or |last%s="):format(cant_have, ind, ind, ind))
end
end
end
end
return num_authors
end
local function add_newversion()
-- If there's a "newversion" section, add the new-version text.
if has_newversion() then
sep = nil
--Test for new version of work.
add(sep_semicolon())
if args.newversion then -- newversion= is intended for English text, e.g. "quoted in" or "republished as".
add(args.newversion)
elseif not args.edition2 then
if has_new_title_or_author() then
add(L("republished as"))
else
add(L("republished"))
end
end
add(" ")
return ""
else
return ", "
end
end
------------------- Now we start outputting text ----------------------
local need_comma = false
-- Set this now so a() works just below.
get_full_paramname = make_get_full_paramname("")
if args.brackets then
add("[")
end
bold_year = not format_as_cite
year_last = format_as_cite
formatted_date, need_date = format_date_args(
a,
get_full_paramname,
alias_map,
nil,
nil,
bold_year,
L("Can we [[:Category:Requests for date|date]] this quote?"),
year_last
)
-- Fetch origdate=/origyear=/origmonth= and format appropriately.
formatted_origdate = format_date_args(a, get_full_paramname, alias_map, "orig", nil, nil, nil, year_last)
local num_authors, need_date
if format_as_cite then
num_authors = add_authors(args, "last_first")
if author_outputted then
sep = " "
end
-- Display all the text that comes after the author, for the main portion.
postauthor("", num_authors, "format_as_cite")
author_outputted = false
sep = add_newversion()
-- Add the newversion author(s).
if args["2ndauthor"] or args["2ndlast"] then
num_authors = add_author(
args["2ndauthor"],
"2ndauthor",
nil,
nil,
args["2ndauthorlink"],
"2ndauthorlink",
nil,
nil,
args["2ndfirst"],
"2ndfirst",
nil,
nil,
args["2ndlast"],
"2ndlast",
nil,
nil,
"last_first"
)
sep = sep_comma()
else
for _, cant_have in ipairs{"2ndauthorlink", "2ndfirst"} do
if args[cant_have] then
error(("Can't have |%s= without |2ndauthor= or |2ndlast="):format(cant_have))
end
end
end
-- Display all the text that comes after the author, for the "newversion" section.
postauthor(2, num_authors, "format_as_cite")
else
if formatted_date then
need_comma = true
add(formatted_date)
end
if formatted_origdate then
need_comma = true
add(SPACE_LBRAC .. formatted_origdate .. RBRAC)
end
if need_comma then
sep = sep_comma()
end
date_outputted = true
num_authors = add_authors(args)
-- Display all the text that comes after the author, for the main portion.
postauthor("", num_authors)
author_outputted = false
sep = add_newversion()
-- Add the newversion author(s).
if args["2ndauthor"] or args["2ndlast"] then
num_authors = add_author(
args["2ndauthor"],
"2ndauthor",
nil,
nil,
args["2ndauthorlink"],
"2ndauthorlink",
nil,
nil,
args["2ndfirst"],
"2ndfirst",
nil,
nil,
args["2ndlast"],
"2ndlast",
nil,
nil
)
sep = sep_comma()
else
for _, cant_have in ipairs{"2ndauthorlink", "2ndfirst"} do
if args[cant_have] then
error(("Can't have |%s= without |2ndauthor= or |2ndlast="):format(cant_have))
end
end
end
-- Display all the text that comes after the author, for the "newversion" section.
postauthor(2, num_authors)
end
if not args.nocolon then
sep = nil
-- l10n: trailing colon — zh uses fullwidth ":" with no following space
add(output_mode == "zh" and ZH_COLON or ":")
elseif args.usenodot and not args.nodot then
-- l10n: trailing period — zh uses "。"
add(output_mode == "zh" and "。" or ".")
end
-- Concatenate output portions to form output text.
local output_text = concat(output)
-- Remainder of code handles adding categories. We add one or more of the following categories:
--
-- 1. [[Category:LANG terms with quotations]], based on the first language code in termlang= or 1=. Added to
-- mainspace, Reconstruction: and Appendix: pages as well as Citations: pages if the corresponding mainspace
-- page exists. Not added if nocat= is given. Note that [[Module:usex]] adds the same category using the same
-- logic, but we do it here too because we may not have a quotation to format. (We add in those circumstances
-- because typically when there's no quotation to format, it's because it's formatted manually underneath the
-- citation, or using {{ja-x}}, {{th-x}} or similar.)
-- 2. [[Category:Requests for date in LANG entries]], based on the first language code in 1=. Added to mainspace,
-- Reconstruction:, Appendix: and Citations: pages unless nocat= is given.
-- 3. [[Category:Quotations using nocat parameter]], if nocat= is given. Added to mainspace, Reconstruction:,
-- Appendix: and Citations: pages.
local categories = {}
local termlang = get_first_lang(args.termlang or argslang)
if args.nocat then
if format_as_cite then
insert(tracking_categories, "Citations using nocat parameter")
else
insert(tracking_categories, "Quotations using nocat parameter")
end
else
-- don't create language tracking categories for citations
if not format_as_cite then
local title
if args.pagename then -- for testing, doc pages, etc.
title = mw.title.new(args.pagename)
if not title then
error(("Bad value for `args.pagename`: '%s'"):format(args.pagename))
end
else
title = mw.title.getCurrentTitle()
end
-- Only add [[Citations:foo]] to [[:Category:LANG terms with quotations]] if [[foo]] exists.
local ok_to_add_cat
if title.nsText ~= "Citations" then
ok_to_add_cat = true
else
local mainspace_title = mw.title.new(title.text)
if mainspace_title and mainspace_title.exists then
ok_to_add_cat = true
end
end
if ok_to_add_cat then
insert(categories, termlang:getFullName() .. " terms with quotations")
end
end
if need_date then
local argslangobj = get_first_lang(argslang)
insert(categories, "Requests for date in " .. argslangobj:getCanonicalName() .. " entries")
end
end
return output_text .. (
not lang and "" or
(#categories > 0 and format_categories(categories, lang, args.sort) or "") .. (
#tracking_categories > 0
and format_categories(
tracking_categories,
lang,
args.sort,
nil,
not page_should_be_ignored(mw.title.getCurrentTitle().fullText)
)
or ""
)
)
end
-- Alias specs for type= and type2=. Each spec is `{canon, aliases, with_newversion}` where `canon` is the canonical
-- parameter (with "2" added if type2= is being handled), `aliases` is a comma-separated string of aliases (with "2"
-- added if type2= is being handled, except for numeric params), and `with_newversion` indicates whether we should
-- process this spec if type2= is being handled.
local type_alias_specs = {
av = {
{"author", "writer,writers", true},
{"chapter", "episode", true},
{"chapterurl", "episodeurl", true},
{"trans-chapter", "trans-episode", true},
{"chapter_tlr", "episode_tlr,episode_tlrs,episode_translator,episode_translators", true},
{"chapter_series", "episode_series", true},
{"chapter_seriesvolume", "episode_seriesvolume", true},
{"chapter_number", "episode_number", true},
{"chapter_plain", "episode_plain", true},
{"volume", "season", true},
{"volumes", "seasons", true},
{"volume_plain", "season_plain", true},
{"volumeurl", "seasonurl", true},
{"platform", "network", true},
},
book = {
{"author", "3"},
{"title", "4"},
{"url", "5"},
{"year", "2"},
{"page", "6"},
{"text", "7"},
{"t", "8"},
},
journal = {
{"year", "2"},
{"author", "3"},
{"chapter", "title,article,4", true},
{"chapterurl", "titleurl,articleurl", true},
{"trans-chapter", "trans-title,trans-article", true},
{"chapter_tlr", "title_tlr,title_tlrs,title_translator,title_translators,article_tlr,article_tlrs,article_translator,article_translators", true},
{"chapter_series", "title_series,article_series", true},
{"chapter_seriesvolume", "title_seriesvolume,article_seriesvolume", true},
{"chapter_number", "title_number,article_number", true},
{"chapter_plain", "title_plain,article_plain", true},
{"title", "journal,magazine,newspaper,work,5", true},
{"trans-title", "trans-journal,trans-magazine,trans-newspaper,trans-work", true},
{"tlr", "journal_tlr,journal_tlrs,journal_translator,journal_translators,magazine_tlr,magazine_tlrs,magazine_translator,magazine_translators,newspaper_tlr,newspaper_tlrs,newspaper_translator,newspaper_translators,work_tlr,work_tlrs,work_translator,work_translators", true},
{"url", "6,journalurl,magazineurl,newspaperurl,workurl", true},
{"page", "7"},
{"source", "newsagency,news_agency", true},
{"text", "8"},
{"t", "9"},
},
}
-- Process interally-handled aliases related to type= or type2=. `args` is a table of arguments; `typ` is the value of
-- type= or type2=; newversion=true if we're dealing with type2=; alias_map is used to keep track of alias mappings
-- seen.
local function process_type_aliases(args, typ, newversion, alias_map)
local ind = newversion and "2" or ""
local deprecated = ine(args.lang)
if not type_alias_specs[typ] then
local possible_values = {}
for possible, _ in pairs(type_alias_specs) do
insert(possible_values, possible)
end
sort(possible_values)
error(
("Unrecognized value '%s' for type%s=; possible values are %s"):format(
typ,
ind,
concat(possible_values, ",")
)
)
end
for _, alias_spec in ipairs(type_alias_specs[typ]) do
local canon, aliases, with_newversion = unpack(alias_spec)
if with_newversion or not newversion then
canon = canon .. ind
aliases = split(aliases, ",", true)
local saw_alias = nil
for _, alias in ipairs(aliases) do
if alias:match("^%d+$") then
alias = tonumber(alias)
if deprecated then
alias = alias - 1
end
else
alias = alias .. ind
end
if args[alias] then
if saw_alias == nil then
saw_alias = alias
else
error(("|%s= and |%s= are aliases; cannot specify a value for both"):format(saw_alias, alias))
end
end
end
if saw_alias and (not newversion or type(saw_alias) == "string") then
if args[canon] then
error(("|%s= is an alias of |%s=; cannot specify a value for both"):format(saw_alias, canon))
end
args[canon] = args[saw_alias]
-- Wipe out the original after copying. This is important in case of a param that has general significance
-- but has been redefined (e.g. {{quote-av}} redefines number= for the episode number, and
-- {{quote-journal}} redefines title= for the chapter= (article). It's also important due to unhandled
-- parameter checking.
args[saw_alias] = nil
alias_map[canon] = saw_alias
end
end
end
end
-- Clone and combine frame's and parent's args while also assigning nil to empty strings. Handle aliases and ignores.
local function clone_args(direct_args, parent_args)
local args = {}
-- Processing parent args must come first so that direct args override parent args. Note that if a direct arg is
-- specified but is blank, it will still override the parent arg (with nil).
for pname, param in pairs(parent_args) do
-- [[Special:WhatLinksHere/Wiktionary:Tracking/quote/param/PARAM]]
track("param/" .. pname)
args[pname] = ine(param)
end
-- Process ignores. The value of `ignore` is a comma-separated list of parameter names to ignore (erase). We need to
-- do this before aliases due to {{quote-song}}, which sets chapter= to the value of title= in the direct params and
-- sets title= to the value of album= using an alias. If we do the ignores after aliases, we get an error during alias
-- processing, saying that title= and its alias album= are both present.
local ignores = ine(direct_args.ignore)
if ignores then
for ignore in gsplit(ignores, "%s*,%s*") do
args[ignore] = nil
end
end
local alias_map = {}
local other_controls = {}
-- noroman
local noroman = ine(direct_args.noroman)
if noroman then
other_controls.overrides = other_controls.overrides or {}
for param in gsplit(noroman, "%s*,%s*") do
other_controls.overrides[param] = (other_controls.overrides[param] or {})
other_controls.overrides[param].noroman = true
end
end
-- Process internally-specified aliases using type= or type2=.
local typ = args.type or direct_args.type
if typ then
process_type_aliases(args, typ, false, alias_map)
end
local typ2 = args.type2 or direct_args.type2
if typ2 then
process_type_aliases(args, typ2, true, alias_map)
end
-- Process externally-specified aliases. The value of `alias` is a list of semicolon-separated specs, each of which
-- is of the form DEST:SOURCE,SOURCE,... where DEST is the canonical name of a parameter and SOURCE refers to an
-- alias. Whitespace is allowed between all delimiters. The order of aliases may be important. For example, for
-- {{quote-journal}}, title= contains the article name and is an alias of underlying chapter=, while journal= or
-- work= contains the journal name and is an alias of underlying title=. As a result, the title -> chapter alias
-- must be specified before the journal/work -> title alias.
--
-- Whenever we copy a value from argument SOURCE to argument DEST, we record an entry for the pair in alias_map, so
-- that when we would display an error message about DEST, we display SOURCE instead.
--
-- Do alias processing (and ignore and error_if processing) before processing direct_args so that e.g. we can set up
-- an alias of title -> chapter and then set title= to something else in the direct args ({{quote-hansard}} does
-- this).
--
-- FIXME: Delete this once we've converted all alias processing to internal.
local aliases = ine(direct_args.alias)
if aliases then
-- Allow and discard a trailing semicolon, to make managing multiple aliases easier.
aliases = ugsub(aliases, "%s*;$", "")
for alias_spec in gsplit(aliases, "%s*;%s*") do
local alias_spec_parts = split(alias_spec, "%s*:%s*")
if #alias_spec_parts ~= 2 then
error(("Alias spec '%s' should have one colon in it"):format(alias_spec))
end
local dest, sources = unpack(alias_spec_parts)
sources = split(sources, "%s*,%s*")
local saw_source = nil
for _, source in ipairs(sources) do
if source:match("^%d+$") then
source = tonumber(source)
end
if args[source] then
if saw_source == nil then
saw_source = source
else
error(("|%s= and |%s= are aliases; cannot specify a value for both"):format(saw_source, source))
end
end
end
if saw_source then
if args[dest] then
error(("|%s= is an alias of |%s=; cannot specify a value for both"):format(saw_source, dest))
end
args[dest] = args[saw_source]
-- Wipe out the original after copying. This important in case of a param that has general significance
-- but has been redefined (e.g. {{quote-av}} redefines number= for the episode number, and
-- {{quote-journal}} redefines title= for the chapter= (article). It's also important due to unhandled
-- parameter checking.
args[saw_source] = nil
alias_map[dest] = saw_source
end
end
end
-- Process error_if. The value of `error_if` is a comma-separated list of parameter names to throw an error if seen
-- in parent_args (they are params we overwrite in the direct args).
local error_ifs = ine(direct_args.error_if)
if error_ifs then
for error_if in gsplit(error_ifs, "%s*,%s*") do
if ine(parent_args[error_if]) then
error(
("Cannot specify a value |%s=%s as it would be overwritten or ignored"):format(
error_if,
ine(parent_args[error_if])
)
)
end
end
end
for pname, param in pairs(direct_args) do
-- ignore control params
if pname ~= "ignore" and pname ~= "alias" and pname ~= "error_if" and pname ~= "noroman" then
args[pname] = ine(param)
end
end
return args, alias_map, other_controls
end
local function get_args(frame_args, parent_args, require_lang)
-- FIXME: We are processing arguments twice, once in clone_args() and then again in [[Module:parameters]]. This is
-- wasteful of memory.
local cloned_args, alias_map, other_controls = clone_args(frame_args, parent_args)
local deprecated = ine(parent_args.lang)
local alias_of_t = {alias_of = "t"}
local boolean = {type = "boolean"}
local language_sublist = {type = "language", sublist = true}
local list_allow_holes = {list = true, allow_holes = true}
local script = {type = "script"}
-- First, the "single" params that don't have FOO2 or FOOn versions.
local params = {
[deprecated and "lang" or 1] = {required = require_lang, type = "language", sublist = true, default = "und"},
["lang2"] = language_sublist,
["newversion"] = true,
["author"] = list_allow_holes,
["2ndauthor"] = true,
["trans-author"] = list_allow_holes,
["authorlink"] = list_allow_holes,
["2ndauthorlink"] = true,
["trans-authorlink"] = list_allow_holes,
["first"] = list_allow_holes,
["2ndfirst"] = true,
["trans-first"] = list_allow_holes,
["last"] = list_allow_holes,
["2ndlast"] = true,
["trans-last"] = list_allow_holes,
["nocat"] = boolean,
["nocolon"] = boolean,
-- quote params
text = true,
passage = {alias_of = "text"},
tr = true,
transliteration = {alias_of = "tr"},
ts = true,
transcription = {alias_of = "ts"},
norm = true,
normalization = {alias_of = "norm"},
sc = script,
normsc = script,
sort = true,
subst = true,
footer = true,
lit = true,
t = true,
translation = alias_of_t,
gloss = alias_of_t,
lb = true,
brackets = boolean,
-- original quote params
origtext = true,
origtr = true,
origts = true,
orignorm = true,
origsc = script,
orignormsc = script,
origsubst = true,
origlb = true,
usenodot = boolean,
nodot = boolean,
inline = boolean,
asquote = boolean,
ascite = boolean,
}
-- Most params have PARAM2 variants for use with `newversion`. FIXME: We should generalize this to
-- allow PARAMN variants for any N.
local function add_with_2(param, value)
params[param] = value
params[param .. "2"] = value
end
local function alias_with_2(alias, canon)
params[alias] = {alias_of = canon}
params[alias .. "2"] = {alias_of = canon .. "2"}
end
for _, param12 in ipairs{
"worklang",
"termlang",
"origlang",
"origworklang"
} do
add_with_2(param12, language_sublist)
end
-- Then the newversion params (which have FOO2 versions).
for _, param12 in ipairs{
-- author-like params; author params themselves are either list params (author=, last=, etc.) or single params
-- (2ndauthor=, 2ndlast=, etc.)
"coauthors",
"quotee",
"tlr",
"editor",
"editors",
"mainauthor",
"compiler",
"compilers",
"director",
"directors",
"lyricist",
"lyrics-translator",
"composer",
"role",
"actor",
"artist",
"feat",
-- author control params
"default-authorlabel",
"authorlabel",
-- title
"title",
"trans-title",
"series",
"seriesvolume",
"notitle",
-- entry
"entry",
"entryurl",
"trans-entry",
-- chapter
"chapter",
"chapterurl",
"chapter_number",
"chapter_plain",
"chapter_series",
"chapter_seriesvolume",
"trans-chapter",
"chapter_tlr",
-- section
"section",
"sectionurl",
"section_number",
"section_plain",
"section_series",
"section_seriesvolume",
"trans-section",
-- other video-game params
"system",
"scene",
"level",
-- URL
"url",
"urls",
"archiveurl",
-- edition
"edition",
"edition_plain",
-- ID params
"bibcode",
"doi",
"isbn",
"issn",
"jstor",
"lccn",
"oclc",
"ol",
"pmid",
"pmcid",
"ssrn",
"urn",
"id",
-- misc date params; most date params handled below
"archivedate",
"accessdate",
"nodate",
-- numeric params handled below
-- other params
"type",
"genre",
"format",
"medium",
"others",
"quoted_in",
"location",
"publisher",
"original",
"by",
"deriv",
"note",
"note_plain",
"other",
"source",
"platform",
} do
add_with_2(param12, true)
end
-- Then the aliases of newversion params (which have FOO2 versions).
for _, param12_aliased in ipairs{
{"role", "roles"},
{"role", "speaker"},
{"tlr", "tlrs"},
{"tlr", "translator"},
{"tlr", "translators"},
{"chapter_tlr", "chapter_tlrs"},
{"chapter_tlr", "chapter_translator"},
{"chapter_tlr", "chapter_translators"},
{"doi", "DOI"},
{"isbn", "ISBN"},
{"issn", "ISSN"},
{"jstor", "JSTOR"},
{"lccn", "LCCN"},
{"oclc", "OCLC"},
{"ol", "OL"},
{"pmid", "PMID"},
{"pmcid", "PMCID"},
{"ssrn", "SSRN"},
{"urn", "URN"},
} do
local canon, alias = unpack(param12_aliased)
alias_with_2(alias, canon)
end
-- Then the date params.
for _, datelike in ipairs{{"", ""}, {"orig", ""}, {"", "_published"}} do
local pref, suf = unpack(datelike)
for _, arg in ipairs{"date", "year", "month", "start_date", "start_year", "start_month"} do
add_with_2(pref .. arg .. suf, true)
end
end
local numeric_param_suffixes = {"", "s", "_plain", "url", "_prefix"}
-- Then the numeric params.
for _, numeric in ipairs{"volume", "issue", "number", "line", "page", "column"} do
for _, suf in ipairs(numeric_param_suffixes) do
add_with_2(numeric .. suf, true)
end
end
-- And the aliases of numeric params.
for _, numeric_aliased in ipairs{{"volume", "vol"}} do
local canon, alias = unpack(numeric_aliased)
for _, suf in ipairs(numeric_param_suffixes) do
alias_with_2(alias .. suf, canon .. suf)
end
end
return process_params(cloned_args, params), alias_map, other_controls
end
local function get_origtext_params(args)
local origtext, origtextlang, origsc, orignormsc
if args.origtext then
-- Wiktionary language codes have at least two lowercase letters followed possibly by lowercase letters and/or
-- hyphens (there are more restrictions but this is close enough). Also check for nonstandard Latin etymology
-- language codes (e.g. VL. or LL.). (There used to be more nonstandard codes but they have all been
-- eliminated.)
origtextlang, origtext = args.origtext:match("^(%l%l[%l-]*):([^ ].*)$")
if not origtextlang then
-- Special hack for Latin variants, which can have nonstandard etym codes, e.g. VL., LL.
origtextlang, origtext = args.origtext:match("^(%uL%.):([^ ].*)$")
end
if not origtextlang then
error("origtext= should begin with a language code prefix")
end
origtextlang = get_lang(origtextlang, nil, "allow etym") or
error("origtext= should begin with a language code prefix")
origsc = args.origsc
orignormsc = args.orignormsc
else
for _, noparam in ipairs{"origtr", "origts", "origsc", "orignorm", "orignormsc", "origsubst", "origlb"} do
if args[noparam] then
error(("Cannot specify %s= without origtext="):format(noparam))
end
end
end
return origtext, origtextlang, origsc, orignormsc
end
local function get_quote(args, is_cite)
local text = args.text
local gloss = args.t
local tr = args.tr
local ts = args.ts
local norm = args.norm
local sc = args.sc
local normsc = args.normsc
-- Fetch original-text parameters.
local origtext, origtextlang, origsc, orignormsc = get_origtext_params(args)
-- If any quote-related args are present, display the actual quote; otherwise, display nothing.
if text or gloss or tr or ts or norm or args.origtext then
-- Pass "und" here rather than cause an error; there will be an error on mainspace, Citations, etc. pages
-- in any case in source() if the language is omitted.
local lang = get_first_lang(args[1] or args.lang)
local termlang = args.termlang and get_first_lang(args.termlang) or lang
local usex_data = {
lang = lang,
termlang = termlang,
usex = text,
sc = sc,
translation = gloss,
normalization = norm,
normsc = normsc,
transliteration = tr,
transcription = ts,
brackets = args.brackets,
subst = args.subst,
lit = args.lit,
footer = args.footer,
qq = parse_and_format_labels(args.lb, lang),
quote = "quote-meta",
orig = origtext,
origlang = origtextlang,
origsc = origsc,
orignorm = args.orignorm,
orignormsc = orignormsc,
origtr = args.origtr,
origts = args.origts,
origsubst = args.origsubst,
origqq = parse_and_format_labels(args.origlb, lang),
noreq = args.noreq,
nocat = is_cite or args.nocat,
}
if args.inline then
-- don't let usex format the footer, otherwise it gets inlined with the rest of the quoted text
usex_data.footer = nil
usex_data.inline = 1
text = format_usex(usex_data)
if text then
text = " “" .. text .. "”"
else
text = ""
end
if args.footer then
text = text .. "<dl><dd>" .. args.footer .. "</dd></dl>"
end
else
text = "<dl><dd>" .. format_usex(usex_data) .. "</dd></dl>"
end
elseif args.footer then
text = "<dl><dd>" .. args.footer .. "</dd></dl>"
end
return text
end
-- External interface, meant to be called from a template. Replaces {{quote-meta}} and meant to be the primary
-- interface for {{quote-*}} templates.
function export.quote_t(frame)
local args, alias_map, other_controls = get_args(frame.args, frame:getParent().args, "require_lang")
if args.ascite then
return export.cite_t(frame)
end
return show_quote(args, alias_map, other_controls)
end
function show_quote(args, alias_map, other_controls)
local parts = {}
insert(parts, '<div class="citation-whole"><span class="cited-source">')
insert(parts, export.source(args, alias_map, nil, other_controls))
insert(parts, "</span>")
insert(parts, get_quote(args))
insert(parts, "</div>")
local retval = concat(parts)
return deprecated and frame:expandTemplate({
title = "check deprecated lang param usage",
args = {retval, lang = args.lang},
}) or retval
end
-- External interface, meant to be called from a template. Replaces {{cite-meta}} and meant to be the primary
-- interface for {{cite-*}} templates.
function export.cite_t(frame)
local parent_args = {}
for k, v in pairs(frame:getParent().args) do
parent_args[k] = v
end
-- use "und" as lang if none provided
if parent_args[1] == nil then
parent_args[1] = "und"
end
local args, alias_map, other_controls = get_args(frame.args, parent_args)
if args.asquote then
return show_quote(args, alias_map, other_controls)
end
return show_cite(args, alias_map, other_controls)
end
function show_cite(args, alias_map, other_controls)
local parts = {}
-- don't nag for translations
if args.text and not args.t then
args.noreq = 1
end
local len_visible = args.text and ulen((args.text:gsub("<[^<>]+>", ""))) or 0
if len_visible == 0 then
if not args.t or args.t == "-" then
args.nocolon = true
end
elseif args.inline == nil then
args.inline = not (
args.block_text
or len_visible > 300
or (args.t and not args.t == "-" and len_visible < 80)
or string.match(args.text, "<br>")
)
end
insert(parts, '<span class="citation-whole"><span class="cited-source">')
insert(parts, export.source(args, alias_map, "format_as_cite", other_controls))
insert(parts, "</span>")
insert(parts, get_quote(args, "is_cite"))
insert(parts, "</span>")
local retval = concat(parts)
return deprecated
and frame:expandTemplate({
title = "check deprecated lang param usage",
args = {retval, lang = args.lang},
})
or retval
end
-- External interface, meant to be called from a template.
function export.call_quote_template(frame)
return export.call_template(frame)
end
-- External interface, for calling a template with overloaded parameters.
function export.overload(frame)
local iargs, overloaded_args = process_params(frame.args, {
[1] = {required = true}
}, true)
local parent_args = frame:getParent().args
for k, v in pairs(parent_args) do
overloaded_args[k] = v
end
return frame:expandTemplate{title = iargs[1], args = overloaded_args}
end
-- External interface, meant to be called from a template.
function export.call_template(frame)
local parameter_sublist = {type = "parameter", sublist = true}
local iargs, other_direct_args = process_params(frame.args, {
["template"] = true,
["textparam"] = parameter_sublist,
["pageparam"] = parameter_sublist,
["propagateparams"] = parameter_sublist,
["allowparams"] = {sublist = true}, -- Doesn't use type = "parameter", because any that end in :list get processed differently.
}, true)
local function fetch_param(source, params)
for _, param in ipairs(params) do
if source[param] then
return source[param]
end
end
return nil
end
local params = {
["text"] = true,
["passage"] = true,
["footer"] = true, -- always propagates, but gets special formatting
}
-- paramaters that can be used during template declaration or included in template calls
-- if the template is called with param=- it will set any declared value to nil
local always_propagate = {
["brackets"] = true,
["usenodot"] = true,
["nodot"] = true,
["ascite"] = true,
["asquote"] = true,
}
for k,v in pairs(always_propagate) do
params[k] = v
end
local textparam = iargs.textparam or {}
for _, param in ipairs(textparam) do
params[param] = true
end
local pageparam = iargs.pageparam or {}
local pageparam1 = pageparam[1]
if pageparam1 ~= nil then
params["page"], params["pages"] = true, true
for _, param in ipairs(pageparam) do
params[param] = true
end
end
local allowparams, allow_all, list = iargs.allowparams, false
if allowparams ~= nil then
for _, allow in ipairs(allowparams) do
local param = allow:match("^(.*):list$")
if param then
if list == nil then
list = {list = true}
end
params[scribunto_parameter_key(param)] = list
elseif allow == "*" then
track("no parameter checking")
allow_all = true
else
params[scribunto_parameter_key(allow)] = true
end
end
else
local parent = frame:getParent()
local template_name = parent:getTitle()
local template_title = new_title(template_name)
local content = template_title:getContent()
local allowed_params, seen = {}, {}
-- Detect all params used by the parent template. param:get_name() takes the
-- parent frame arg table as an argument so that preprocessing will take
-- them into account, since it will matter if the name contains another
-- parameter (e.g. the outer param in "{{{foo{{{bar}}}baz}}}" will change
-- depending on the value for bar=). `seen` memoizes results based on the
-- raw parameter text (which is stored as a string in the parameter object),
-- which avoids unnecessary param:get_name() calls, which are non-trivial.
for param in find_parameters(content) do
local raw = param.raw
if not seen[raw] then
allow = param:get_name(template_args)
params[scribunto_parameter_key(allow)] = true
seen[raw] = true
end
end
end
local propagateparams = iargs.propagateparams or {}
for _, param in ipairs(propagateparams) do
params[param] = true
end
local parent_args = frame:getParent().args
local args = process_params(parent_args, params, allow_all)
parent_args = shallow_copy(parent_args)
if textparam[1] ~= "-" then
other_direct_args.passage = args.text or args.passage or fetch_param(args, textparam)
end
if not (pageparam1 == nil or pageparam1 == "-") then
other_direct_args.page = fetch_param(args, pageparam) or args.page or other_direct_args.page or nil
other_direct_args.pages = args.pages or other_direct_args.pages or nil
if other_direct_args.page == "-" then
other_direct_args.page = nil
end
if other_direct_args.pages == "-" then
other_direct_args.pages = nil
end
end
if args.footer then
other_direct_args.footer = frame:expandTemplate{title = "small", args = {args.footer}}
end
for param, _ in pairs(always_propagate) do
if args[param] == "-" then
other_direct_args[param] = nil
else
other_direct_args[param] = args[param] or other_direct_args[param] or nil
end
end
-- authorlink=- can be used to prevent copying of author= to authorlink= but we don't want to propagate this to
-- the actual {{quote-*}} code.
if other_direct_args.authorlink == "-" then
other_direct_args.authorlink = nil
end
for _, param in ipairs(propagateparams) do
if args[param] then
other_direct_args[param] = args[param]
end
end
return frame:expandTemplate{title = iargs.template or "quote-book", args = other_direct_args}
end
local paramdoc_param_replacements = {
passage = {
param_with_synonym = "<<synonym>>, {{para|text}}, or {{para|passage}}",
param_no_synonym = "{{para|text}} or {{para|passage}}",
text = [=[
* <<params>> – the passage to be quoted.]=],
},
page = {
param_with_synonym = "<<synonym>> or {{para|page}}, or {{para|pages}}",
param_no_synonym = "{{para|page}} or {{para|pages}}",
text = [=[
* <<params>> – '''mandatory in some cases''': the page number(s) quoted from. When quoting a range of pages, note the following:
** Separate the first and last pages of the range with an [[en dash]], like this: {{para|pages|10–11}}.
** You must also use {{para|pageref}} to indicate the page to be linked to (usually the page on which the Wiktionary entry appears).
: This parameter must be specified to have the template link to the online version of the work.]=],
},
page_with_roman_preface = {
param_with_synonym = {"inherit", "page"},
param_no_synonym = {"inherit", "page"},
text = [=[
* <<params>> – '''mandatory in some cases''': the page number(s) quoted from. If quoting from the preface, specify the page number(s) in lowercase Roman numerals. When quoting a range of pages, note the following:
** Separate the first and last page number of the range with an [[en dash]], like this: {{para|pages|10–11}} or {{para|pages|iii–iv}}.
** You must also use {{para|pageref}} to indicate the page to be linked to (usually the page on which the Wiktionary entry appears).
: This parameter must be specified to have the template link to the online version of the work.]=],
},
chapter = {
param_with_synonym = "<<synonym>> or {{para|chapter}}",
param_no_synonym = "{{para|chapter}}",
text = [=[
* <<params>> – the name of the chapter quoted from.]=],
},
roman_chapter = {
param_with_synonym = {"inherit", "chapter"},
param_no_synonym = {"inherit", "chapter"},
text = [=[
* <<params>> – the chapter number quoted from in uppercase Roman numerals.]=],
},
arabic_chapter = {
param_with_synonym = {"inherit", "chapter"},
param_no_synonym = {"inherit", "chapter"},
text = [=[
* <<params>> – the chapter number quoted from in Arabic numerals.]=],
},
trailing_params = {
text = [=[
* {{para|footer}} – a comment on the passage quoted.
* {{para|brackets}} – use {{para|brackets|on}} to surround a quotation with [[bracket#Noun|brackets]]. This indicates that the quotation either contains a mere mention of a term (for example, “some people find the word '''''manoeuvre''''' hard to spell”) rather than an actual use of it (for example, “we need to '''manoeuvre''' carefully to avoid causing upset”), or does not provide an actual instance of a term but provides information about related terms.]=],
},
}
function export.paramdoc(frame)
local parargs = frame:getParent().args
local args = process_params(parargs, {
[1] = true,
})
local text = args[1]
local function do_param_with_optional_synonym(param, text_to_sub, paramtext_synonym, paramtext_no_synonym)
local function sub_param(synonym)
local subbed_paramtext
if synonym then
subbed_paramtext = paramtext_synonym:gsub("<<synonym>>", "{{para|" .. replacement_escape(synonym) .. "}}")
else
subbed_paramtext = paramtext_no_synonym
end
return frame:preprocess((text_to_sub:gsub("<<params>>", replacement_escape(subbed_paramtext))))
end
text = text:gsub("<<" .. pattern_escape(param) .. ">>", function()
return sub_param()
end)
text = text:gsub("<<" .. pattern_escape(param) .. ":(.-)>>", sub_param)
end
local function fetch_text(param_to_replace, key)
local spec = paramdoc_param_replacements[param_to_replace]
local val = spec[key]
if type(val) == "string" then
return val
end
if type(val) == "table" and val[1] == "inherit" then
return fetch_text(val[2], key)
end
error(
"Internal error: Unrecognized value for param '"
.. param_to_replace
.. "', key '"
.. key
.. "': "
.. mw.dumpObject(val)
)
end
for param_to_replace, spec in pairs(paramdoc_param_replacements) do
if not spec.param_no_synonym then
-- Text to substitute directly.
text = text:gsub("<<" .. pattern_escape(param_to_replace) .. ">>", function()
return frame:preprocess(fetch_text(param_to_replace, "text"))
end)
else
do_param_with_optional_synonym(
param_to_replace,
fetch_text(param_to_replace, "text"),
fetch_text(param_to_replace, "param_with_synonym"),
fetch_text(param_to_replace, "param_no_synonym")
)
end
end
-- Remove final newline so template code can add a newline after invocation
text = text:gsub("\n$", "")
return text
end
return export
c73ezc9624z24pbdlut7oi6e0resxpv
9787477
9787412
2026-05-24T14:59:49Z
TongcyDai
53191
9787477
Scribunto
text/plain
--[=[
This module contains functions to implement quote-* templates.
Author: Benwing2; conversion into Lua of {{quote-meta/source}} template,
written by Sgconlaw with some help from Erutuon and Benwing2.
The main interface is quote_t(). Note that the source display is handled by source(), which reads both the
arguments passed to it *and* the arguments passed to the parent template, with the former overriding the latter.
]=]
local export = {}
--[=[
FIXME:
1. Dates like `1 march 2025` with the day of the month being 1 and the month lowercased are treated as month-year-only.
The relevant code checks for a capitalized word; it should probably instead check for the actual month names or
abbrevs.
]=]
-- Named constants for all modules used, to make it easier to swap out sandbox versions.
local check_isxn_module = "Module:check isxn"
local debug_track_module = "Module:debug/track"
local en_utilities_module = "Module:en-utilities"
local italics_module = "Module:italics"
local labels_module = "Module:labels"
local languages_module = "Module:languages"
local languages_error_module = "Module:languages/error"
local links_module = "Module:links"
local number_utilities_module = "Module:number utilities"
local parameters_module = "Module:parameters"
local parse_utilities_module = "Module:parse utilities"
local qualifier_module = "Module:qualifier"
local roman_numerals_module = "Module:roman numerals"
local scribunto_module = "Module:Scribunto"
local script_utilities_module = "Module:script utilities"
local scripts_module = "Module:scripts"
local string_pattern_escape_module = "Module:string/patternEscape"
local string_replacement_escape_module = "Module:string/replacementEscape"
local string_utilities_module = "Module:string utilities"
local table_module = "Module:table"
local template_parser_module = "Module:template parser"
local usex_module = "Module:usex"
local usex_templates_module = "Module:usex/templates"
local utilities_module = "Module:utilities"
local yesno_module = "Module:yesno"
local concat = table.concat
local insert = table.insert
local new_title = mw.title.new
local remove = table.remove
local require = require
local sort = table.sort
local u = mw.ustring.char
local ugsub = mw.ustring.gsub
local umatch = mw.ustring.match
local unpack = unpack or table.unpack -- Lua 5.2 compatibility
-- Use HTML entities here to avoid parsing issues (esp. with brackets)
local SEMICOLON_SPACE = "; "
local SPACE_LBRAC = " ["
local RBRAC = "]"
local TEMP_LT = u(0xFFF1)
local TEMP_GT = u(0xFFF2)
local TEMP_LBRAC = u(0xFFF3)
local TEMP_RBRAC = u(0xFFF4)
local TEMP_SEMICOLON = u(0xFFF5)
-- ============================================================
-- l10n: Chinese localization infrastructure (zhwikt fork).
--
-- output_mode is detected once per export.source() invocation by
-- scanning every args value for CJK characters. If any value
-- contains CJK script, the module switches to "zh" mode and
-- substitutes Chinese framing at every print site; otherwise it
-- stays in "en" mode and behaves byte-for-byte identically to
-- enwikt. This avoids awkward half-translated output like
-- "第second版" when an editor copies an English template verbatim.
--
-- All localization touchpoints below this block are marked with
-- "-- l10n:" comments. To audit, grep for "l10n:". Simple word
-- substitutions go through L(); word-order shifts go through
-- build_* helper functions.
-- ============================================================
-- l10n: output mode, set per-invocation by detect_output_mode().
local output_mode = "en"
-- l10n: full-width punctuation constants for zh mode.
local ZH_COMMA = ","
local ZH_SEMICOLON = ";"
local ZH_COLON = ":"
local ZH_LPAREN = "("
local ZH_RPAREN = ")"
local ZH_LQUOTE = "「"
local ZH_RQUOTE = "」"
-- l10n: CJK script ranges used by has_cjk(). Covers Han ideographs,
-- kana and Hangul but deliberately excludes fullwidth punctuation
-- so a stray "," in an otherwise-English value doesn't trip zh mode.
local CJK_PATTERN = "[" ..
u(0x3400) .. "-" .. u(0x4DBF) .. -- CJK Unified Ideographs Extension A
u(0x4E00) .. "-" .. u(0x9FFF) .. -- CJK Unified Ideographs
u(0x3040) .. "-" .. u(0x309F) .. -- Hiragana
u(0x30A0) .. "-" .. u(0x30FF) .. -- Katakana
u(0xAC00) .. "-" .. u(0xD7AF) .. -- Hangul Syllables
"]"
local function has_cjk(s)
return type(s) == "string" and umatch(s, CJK_PATTERN) ~= nil
end
-- l10n: scan all args values (including list-typed params) for CJK.
-- trans-* params are exempt: they exist to provide display translations
-- of titles/chapters/etc., not to indicate the source work is in CJK.
-- So a Chinese trans-title on an otherwise-English template keeps the
-- output in en mode.
local function detect_output_mode(args)
for k, v in pairs(args) do
if type(k) == "string" and k:find("^trans%-") then
-- l10n: skip trans-* params (see comment above).
elseif type(v) == "string" then
if has_cjk(v) then return "zh" end
elseif type(v) == "table" then
for _, vv in pairs(v) do
if type(vv) == "string" and has_cjk(vv) then return "zh" end
end
end
end
return "en"
end
-- l10n: bilingual lookup table. Keys are the exact English literals
-- used at enwikt print sites. L() returns the key unchanged in en
-- mode; in zh mode it returns the value, falling back to the key on
-- a miss so the module stays functional under unexpected inputs.
local STRINGS = {
-- newversion verbs
["republished"] = "再版",
["republished as"] = "再版為",
-- author-like roles, prefix form (used when other authors precede)
["translated by "] = "由 ",
["edited by "] = "由 ",
["compiled by "] = "由 ",
["directed by "] = "由 ",
["performed by "] = "由 ",
["spoken by "] = "由 ",
["quoting "] = "引用 ",
-- author-like roles, suffix form (used when role-bearer comes first)
[", transl."] = "(譯)",
[", editor"] = "(編)",
[", editors"] = "(編)",
[", compiler"] = "(編纂)",
[", compilers"] = "(編纂)",
[", director"] = "(導演)",
[", directors"] = "(導演)",
[", quotee"] = "(被引用者)",
[", quotees"] = "(被引用者)",
-- bare-noun anonymous suffixes (used when role-bearer is anonymous)
[" translator"] = "譯者",
[" lyricist"] = "作詞者",
[" lyrics translator"] = "譯詞者",
[" composer"] = "作曲者",
-- music role suffixes
[" (lyrics)"] = "(作詞)",
[" (translation)"] = "(譯詞)",
[" (music)"] = "(作曲)",
-- chapter → containing title connector ("Chapter X, in Book Title")
["in "] = "收錄於 ",
-- quoting / sourcing
["sourced from "] = "來源 ",
["quoted in "] = "引述自 ",
-- archive
[", archived from "] = ",原始內容存檔自 ",
["the original"] = "原始內容",
[" on "] = ",存檔時間 ", -- between [URL label] and the archive date
-- video game / misc
[", scene: "] = ",幕:",
[", level/area: "] = ",關卡/區域:",
[" (last accessed)"] = "(最後存取)",
-- generics
["anonymous"] = "佚名",
["actor"] = "演員",
["actors"] = "演員",
["original"] = "原文",
["translation"] = "翻譯",
["unnumbered"] = "未編號",
-- numeric-field suffixes (used by format_numeric_param / format_chapterlike)
["page"] = "頁",
["pages"] = "頁",
["column"] = "-{zh-hans:列;zh-hant:欄}-",
["columns"] = "-{zh-hans:列;zh-hant:欄}-",
["line"] = "行",
["lines"] = "行",
["volume"] = "卷",
["volumes"] = "卷",
["issue"] = "期",
["issues"] = "期",
["number"] = "號",
["numbers"] = "號",
["chapter"] = "章",
["section"] = "節",
["entry"] = "條",
["edition"] = "版",
-- maintenance lines
["Please provide the book title or journal name"] =
"請提供書名或期刊名",
["Please specify the language of the quote using |1="] =
"請以 |1= 指明引文語言",
["Can we [[:Category:Requests for date|date]] this quote?"] =
"能否為此引文加上[[:Category:Requests for date|日期]]?",
["Please provide a date or year"] =
"請提供日期或年份",
}
-- l10n: simple bilingual lookup. Returns the en key unchanged in en mode.
local function L(s)
if output_mode == "en" then return s end
return STRINGS[s] or s
end
-- l10n: mode-aware separators. Read these instead of writing literal
-- ", " / "; " at print sites that need to round-trip both modes.
local function sep_comma()
return output_mode == "zh" and ZH_COMMA or ", "
end
local function sep_semicolon()
return output_mode == "zh" and ZH_SEMICOLON or SEMICOLON_SPACE
end
-- l10n: classify a numeric-field value so the zh formatter can decide
-- between "第N章" (numeric prefix) and "<val>章" / "「<val>」" (textual).
-- CHINESE_NUMERALS covers vernacular (一二...), formal (壹貳...), and
-- shorthand (兩, 廿, 卅, 〇).
local CHINESE_NUMERALS =
"零〇一二三四五六七八九十百千萬億兩两廿卅壹貳贰參叁肆伍陸陆柒捌玖拾佰仟"
local function classify_numeric_value(val)
if not val or val == "" then return "empty" end
local clean = mw.text.trim((val:gsub("<[^>]*>", "")))
if clean == "" then return "empty" end
if umatch(clean, "^[%d%s,%-–—/%.]+$") then return "arabic" end
if clean:match("^[mdclxviMDCLXVI]+$") then return "roman" end
if umatch(clean, "^[" .. CHINESE_NUMERALS .. "%s,/%-–—]+$") then
return "chinese"
end
return "text"
end
local function is_numeric_class(cls)
return cls == "arabic" or cls == "roman" or cls == "chinese"
end
-- l10n: zh-mode rendering for page/column/line/volume/issue/section/etc.
-- Numeric values (Arabic/Roman/Chinese) → "第N<suffix>";
-- textual values → "<val><suffix>" (no leading 第).
local function build_zh_numeric(val, suffix_key)
local cls = classify_numeric_value(val)
local suffix = L(suffix_key)
if is_numeric_class(cls) then
return "第" .. val .. suffix
end
return val .. suffix
end
-- l10n: zh-mode rendering for chapter/section/entry text. Numeric →
-- "第N章"; textual → "「<val>」" (drops the 第N章 wrapper because the
-- value is a chapter NAME, mirroring enwikt's textual_prefix/suffix
-- branch).
local function build_zh_chapterlike(val, suffix_key)
local cls = classify_numeric_value(val)
if is_numeric_class(cls) then
return "第" .. val .. L(suffix_key)
end
return ZH_LQUOTE .. val .. ZH_RQUOTE
end
-- l10n: "translation of X by Y" → "X(Y 譯)".
-- Variants: no by → "X 之翻譯"; no original → "原文翻譯(Y 譯)".
local function build_translation_phrase(origtype, original, by)
if output_mode == "en" then
return origtype .. " of " .. (original or "original")
.. (by and " by " .. by or "")
end
local zh_type = L(origtype)
if original and by then
return original .. ZH_LPAREN .. by .. " " .. zh_type .. ZH_RPAREN
elseif original then
return original .. " 之" .. zh_type
elseif by then
-- l10n: same shape as the main "X(Y 譯)" pattern with X = "原文"
return L("original") .. ZH_LPAREN .. by .. " " .. zh_type .. ZH_RPAREN
end
return L("original") .. zh_type
end
-- l10n: " (in French)" / " (quotation in X; overall work in Y)".
local function build_annotations_paren(annotations)
if output_mode == "en" then
return " (" .. concat(annotations, SEMICOLON_SPACE) .. ")"
end
return ZH_LPAREN .. concat(annotations, ZH_SEMICOLON) .. ZH_RPAREN
end
-- l10n: language-of-work annotation snippets used inside the paren block.
-- zh templates have no inner spaces around lang_name; lang_name is always
-- a Chinese language name in zh mode (resolved via format_langs).
local function build_lang_annotation(kind, lang_name)
if output_mode == "en" then
if kind == "in" then return "in " .. lang_name end
if kind == "quotation_in" then return "quotation in " .. lang_name end
if kind == "overall_work_in" then return "overall work in " .. lang_name end
else
if kind == "in" then return "以" .. lang_name .. "寫成" end
if kind == "quotation_in" then return "引文以" .. lang_name .. "寫成" end
if kind == "overall_work_in" then return "整體作品以" .. lang_name .. "寫成" end
end
end
-- l10n: actor / role phrases.
local function build_actor_as_role(actor)
if output_mode == "en" then return actor .. " as " end
return actor .. " 飾演 "
end
local function build_actor_paren(actor, is_plural)
local label = is_plural and L("actors") or L("actor")
if output_mode == "en" then
return actor .. " (" .. label .. ")"
end
return actor .. ZH_LPAREN .. label .. ZH_RPAREN
end
-- l10n: "published <date> via <platform>" / "published <date>" / "via <platform>".
local function build_published(date, platform)
if output_mode == "en" then
return "published " .. date .. (platform and " via " .. platform or "")
end
if platform then
return date .. " 於 " .. platform .. " 出版"
end
return date .. " 出版"
end
local function build_via(platform)
if output_mode == "en" then return "via " .. platform end
return "透過 " .. platform
end
-- l10n: ", retrieved <date>" → ",於 <date> 擷取" (verb-final shift).
local function build_retrieved(date_str)
if output_mode == "en" then return ", retrieved " .. date_str end
return ZH_COMMA .. "於 " .. date_str .. " 擷取"
end
-- l10n: derive an anonymous-role suffix. enwikt strips leading
-- punctuation/parens out of suffix_without_preceding_authors to get
-- e.g. "transl." → " translator"; we mirror that by recognising our
-- own zh suffix shapes and mapping them to bare role nouns.
local ZH_ANONYMOUS_ROLE_FROM_PAREN = {
["譯"] = "譯者",
["編"] = "編者",
["編纂"] = "編纂者",
["導演"] = "導演者",
["被引用者"] = "被引用者",
["作詞"] = "作詞者",
["譯詞"] = "譯詞者",
["作曲"] = "作曲者",
}
local function derive_anonymous_suffix_zh(zh_suffix)
local inside = umatch(zh_suffix, "^%s*((.-))%s*$")
if inside then
return ZH_ANONYMOUS_ROLE_FROM_PAREN[inside] or inside
end
return mw.text.trim(zh_suffix)
end
-- l10n: zh-mode formatter for the top-level format_date() helper used
-- by archivedate / accessdate / wayback dates. Falls back to the raw
-- timestamp on parse error.
local _zh_lang
local function zh_lang()
if not _zh_lang then _zh_lang = mw.language.new("zh") end
return _zh_lang
end
local function format_zh_date(text)
local lang = zh_lang()
local ok, date = pcall(lang.formatDate, lang, "Y年n月j日", text)
if ok then return date end
return text
end
-- l10n: zh serial join — "A、B和C" / "A、B或C" (no Oxford comma, no
-- spaces around the conjunction since CJK text doesn't use inter-word
-- spacing; mixed Latin items are an acceptable edge case).
local function zh_serial_join(parts, conj)
local n = #parts
if n == 0 then return "" end
if n == 1 then return parts[1] end
local conj_word = (conj == "or") and "或" or "和"
if n == 2 then
return parts[1] .. conj_word .. parts[2]
end
return table.concat(parts, "、", 1, n - 1) .. conj_word .. parts[n]
end
-- ============================================================
-- l10n: end of localization infrastructure block.
-- ============================================================
local function apply_subst(...)
apply_subst = require(usex_module).apply_subst
return apply_subst(...)
end
local function check_isbn(...)
check_isbn = require(check_isxn_module).check_isbn
return check_isbn(...)
end
local function check_issn(...)
check_issn = require(check_isxn_module).check_issn
return check_issn(...)
end
local function debug_track(...)
debug_track = require(debug_track_module)
return debug_track(...)
end
local function decode_entities(...)
decode_entities = require(string_utilities_module).decode_entities
return decode_entities(...)
end
local function embedded_language_links(...)
embedded_language_links = require(links_module).embedded_language_links
return embedded_language_links(...)
end
local function escape_wikicode(...)
escape_wikicode = require(parse_utilities_module).escape_wikicode
return escape_wikicode(...)
end
local function find_best_script_without_lang(...)
find_best_script_without_lang = require(scripts_module).findBestScriptWithoutLang
return find_best_script_without_lang(...)
end
local function find_parameters(...)
find_parameters = require(template_parser_module).find_parameters
return find_parameters(...)
end
local function format_categories(...)
format_categories = require(utilities_module).format_categories
return format_categories(...)
end
local function format_processed_labels(...)
format_processed_labels = require(labels_module).format_processed_labels
return format_processed_labels(...)
end
local function format_qualifier(...)
format_qualifier = require(qualifier_module).format_qualifier
return format_qualifier(...)
end
local function format_usex(...)
format_usex = require(usex_module).format_usex
return format_usex(...)
end
local function get_lang(...)
get_lang = require(languages_module).getByCode
return get_lang(...)
end
local function get_number(...)
get_number = require(number_utilities_module).get_number
return get_number(...)
end
local function get_script(...)
get_script = require(scripts_module).getByCode
return get_script(...)
end
local function gsplit(...)
gsplit = require(string_utilities_module).gsplit
return gsplit(...)
end
local function page_should_be_ignored(...)
page_should_be_ignored = require(usex_templates_module).page_should_be_ignored
return page_should_be_ignored(...)
end
local function parse_inline_modifiers(...)
parse_inline_modifiers = require(parse_utilities_module).parse_inline_modifiers
return parse_inline_modifiers(...)
end
local function parse_inline_modifiers_from_segments(...)
parse_inline_modifiers_from_segments = require(parse_utilities_module).parse_inline_modifiers_from_segments
return parse_inline_modifiers_from_segments(...)
end
local function parse_multi_delimiter_balanced_segment_run(...)
parse_multi_delimiter_balanced_segment_run = require(parse_utilities_module).parse_multi_delimiter_balanced_segment_run
return parse_multi_delimiter_balanced_segment_run(...)
end
local function parse_term_with_lang(...)
parse_term_with_lang = require(parse_utilities_module).parse_term_with_lang
return parse_term_with_lang(...)
end
local function pattern_escape(...)
pattern_escape = require(string_pattern_escape_module)
return pattern_escape(...)
end
local function pluralize(...)
pluralize = require(en_utilities_module).pluralize
return pluralize(...)
end
local function process_params(...)
process_params = require(parameters_module).process
return process_params(...)
end
local function remove_links(...)
remove_links = require(links_module).remove_links
return remove_links(...)
end
local function roman_to_arabic(...)
roman_to_arabic = require(roman_numerals_module).roman_to_arabic
return roman_to_arabic(...)
end
local function replacement_escape(...)
replacement_escape = require(string_replacement_escape_module)
return replacement_escape(...)
end
local function scribunto_parameter_key(...)
scribunto_parameter_key = require(scribunto_module).scribunto_parameter_key
return scribunto_parameter_key(...)
end
local function serial_comma_join(...)
serial_comma_join = require(table_module).serialCommaJoin
return serial_comma_join(...)
end
local function shallow_copy(...)
shallow_copy = require(table_module).shallowCopy
return shallow_copy(...)
end
local function split(...)
split = require(string_utilities_module).split
return split(...)
end
local function split_alternating_runs(...)
split_alternating_runs = require(parse_utilities_module).split_alternating_runs
return split_alternating_runs(...)
end
local function split_and_process_raw_labels(...)
split_and_process_raw_labels = require(labels_module).split_and_process_raw_labels
return split_and_process_raw_labels(...)
end
local function split_on_comma(...)
split_on_comma = require(parse_utilities_module).split_on_comma
return split_on_comma(...)
end
local function tag_text(...)
tag_text = require(script_utilities_module).tag_text
return tag_text(...)
end
local function tag_transcription(...)
tag_transcription = require(script_utilities_module).tag_transcription
return tag_transcription(...)
end
local function tag_translit(...)
tag_translit = require(script_utilities_module).tag_translit
return tag_translit(...)
end
local function ulen(...)
ulen = require(string_utilities_module).len
return ulen(...)
end
local function unitalicize_brackets(...)
unitalicize_brackets = require(italics_module).unitalicize_brackets
return unitalicize_brackets(...)
end
local function upper(...)
upper = require(string_utilities_module).upper
return upper(...)
end
local function usub(...)
usub = require(string_utilities_module).sub
return usub(...)
end
local function yesno(...)
yesno = require(yesno_module)
return yesno(...)
end
local function track(page)
debug_track("quote/" .. page)
end
local function maintenance_line(text)
return '<span class="maintenance-line">(' .. text .. ")</span>"
end
local function isbn(text)
return "[[Special:BookSources/"
.. text
.. "|→ISBN]]"
.. check_isbn(
text,
' <span class="error" style="font-size:88%">Invalid ISBN</span>[[Category:Pages with ISBN errors]]'
)
end
local function issn(text)
return "[https://www.worldcat.org/issn/"
.. text
.. " →ISSN]"
.. check_issn(
text,
' <span class="error" style="font-size:88%">Invalid ISSN</span>[[Category:Pages with ISSN errors]]'
)
end
local function lccn(text)
text = text:gsub(" ", "")
if text:find("-") then
-- old-style LCCN; reformat per request by [[User:The Editor's Apprentice]]
local prefix, part1, part2 = text:match("^(.-)(%d+)%-(%d+)$")
if prefix then
if ulen(part2) < 6 then
part2 = ("0"):rep(6 - ulen(part2)) .. part2
end
text = prefix .. part1 .. part2
end
end
return "[https://lccn.loc.gov/" .. mw.uri.encode(text) .. " →LCCN]"
end
local function format_date(text)
-- l10n: zh mode → "Y年n月j日"; en mode → enwikt #formatdate dmy.
if output_mode == "zh" then
return format_zh_date(text)
end
return mw.getCurrentFrame():callParserFunction("#formatdate", text, "dmy")
end
-- Parse a raw lb= param (or nil) to individual label info objects and then concatenate them appropriately into a
-- qualifier input, respecting flags like `omit_preComma` and `omit_postSpace` in the label specs.
local function parse_and_format_labels(raw_lb, lang)
if not raw_lb then
return nil
end
local labels = split_and_process_raw_labels{labels = raw_lb, lang = lang, nocat = true}
labels = format_processed_labels{labels = labels, lang = lang, no_ib_content = true}
if labels ~= "" then -- not sure labels can be an empty string but it seems possible in some circumstances
return {labels}
end
end
-- Convert a comma-separated list of language codes to a comma-separated list of language names. `fullname` is the
-- name of the parameter from which the list of language codes was fetched.
local function format_langs(langs)
local names = {}
for i, lang in ipairs(langs) do
names[i] = lang:getCanonicalName()
end
if #names == 1 then
return names[1]
end
-- l10n: language list joiner — zh uses 、 + 和 (no Oxford comma).
if output_mode == "zh" then
return zh_serial_join(names, "and")
end
return serial_comma_join(names)
end
local function get_first_lang(langs)
return langs[1] or get_lang("und")
end
--[=[
Normally we parse off inline modifiers and language code prefixes in various places, e.g. he:מרים<tr:Miryem>. But we
exclude HTML entries with <span ...>, <i ...>, <br/> or similar in it, caused by wrapping an argument in {{l|...}},
{{lang|...}} or similar. Basically, all tags of the sort we parse here should consist of a less-than sign, plus letters,
plus a colon, e.g. <tr:...>, so if we see a tag on the outer level that isn't in this format, we don't try to parse it.
The restriction to the outer level is to allow generated HTML inside of e.g. qualifier modifiers, such as
foo<q:similar to {{m|fr|bar}}> (if we end up supporting such modifiers).
Also exclude things that look like URL's from being parsed as having language code prefixes.
]=]
local function val_should_not_be_parsed_for_annotations(val)
return val:find("^[^<]*<%l*[^%l:]") or val:find("^%l+://")
end
local param_mods = {
t = {
-- <t:...> and <gloss:...> are aliases.
item_dest = "gloss",
},
gloss = {},
alt = {},
tr = {},
ts = {},
subst = {},
sc = {type = "script"},
f = {
convert = function(arg, parse_err)
local prefix, val = arg:match("^(.-):([^ ].*)$")
if not prefix then
prefix = ""
val = arg
end
local tags, sc_code, sc = prefix:match("^(.*)/(.-)$")
if sc_code then
sc = get_script(sc_code) or
require(languages_error_module)(sc_code, parse_err, "script code", nil, "not real lang")
else
tags = prefix
end
local quals
if tags ~= "" then
quals = split_on_comma(tags)
for i, qual in ipairs(quals) do
local obj = get_lang(qual, nil, "allow etym") or get_script(qual)
quals[i] = obj or qual
end
end
return {
quals = quals,
sc = sc,
val = val,
}
end,
store = "insert",
},
q = {},
qq = {},
}
local function generate_obj_annotated_text(text, parse_err, paramname)
local obj = {}
if text:find(":[^ ]") or text:find("%[%[") then
local display, is_wikipedia_wikisource
obj.text, obj.lang, obj.link, display, is_wikipedia_wikisource =
parse_term_with_lang {
term = text,
parse_err = parse_err,
paramname = paramname
}
-- HACK: If object is a Wikipedia or Wikisource link, we need to convert it to a two-part link
-- to avoid the w: or s: prefix showing. We should probably avoid this by calling
-- language_link() (in [[Module:links]]) in format_annotated_text() instead of the hacky stuff
-- that we currently do; but we need to test that carefully to make sure it doesn't do things like
-- munge % signs.
if is_wikipedia_wikisource and not obj.text:find("%[%[") and not obj.text:find("%]%]") then
-- Don't directly set .alt, because then if the user specifies <alt:...>, it will cause an error in
-- parse_inline_modifiers().
obj.display = display
end
else
obj.text = text
obj.link = text
end
return obj
end
--[=[
Parse a textual property that may be in a foreign language or script and may be annotated with a language prefix and/or
inline modifiers. `val` is the value of the parameter and `fullname` is the name of the parameter from which the value
was retrieved. `explicit_gloss`, if specified and non-nil, overrides any gloss specified using the <t:...> or
<gloss:...> inline modifier.
If `val` is nil, the return value of this function is nil. Otherwise it is parsed for a language prefix (e.g.
'ar:مُؤَلِّف') and inline modifiers (e.g. 'ar:مُؤَلِّف<t:Author>'), and the return value is an object with the following
fields:
`lang`: The language object corresponding to the language prefix, if specified, or nil if no language prefix is
given.
`text`: The text after stripping off any language prefix and inline modifiers.
`link`: The link part of the text if it consists of a two-part link; otherwise, same as `text`.
`alt`: Display text specified using the <alt:...> modifier, if given; otherwise, nil.
`subst`: Substitutions used to generate the transliteration, in the same format as the subst= parameter.
`sc`: The script object corresponding to the <sc:...> modifier, if given; otherwise nil.
`tr`: The transliteration corresponding to the <tr:...> modifier, if given; otherwise nil.
`ts`: The transcription corresponding to the <ts:...> modifier, if given; otherwise nil.
`gloss`: The gloss/translation corresponding to the `explicit_gloss` parameter (if given and non-nil), otherwise
the <t:...> or <gloss:...> modifiers if given, otherwise nil.
`f`: Foreign versions of the text.
`q`: Left qualifiers.
`qq`: Right qualifiers.
Note that as a special case, if `val` contains HTML tags at the top level (e.g. '<span class="Arab">...</span>', as
might be generated by specifying {{lang|ar|مُؤَلِّف}}), no language prefix or inline modifiers are parsed, and the return
value has the `noscript` field set to true, which tells format_annotated_text() not to try to identify the script of
the text and CSS-tag the text accordingly, but to leave the text untagged.
This object can be passed to format_annotated_text() to format a string displaying the text (appropriately
script-tagged, unless `noscript` is set, as described above) and modifiers.
]=]
local function parse_annotated_text(val, fullname, explicit_gloss)
if not val then
return nil
end
-- When checking for inline modifiers, exclude HTML entry with <span ...>, <i ...>, <br/> or similar in it, caused
-- by wrapping an argument in {{l|...}}, {{lang|...}} or similar. Also exclude URL's from being parsed as having
-- language code prefixes. See val_should_not_be_parsed_for_annotations() for more information. If we find a
-- parameter value with top-level HTML in it, add 'noscript = true' to indicate that we should not try to do script
-- inference and tagging. (Otherwise, e.g. if you specify {{lang|ar|مُؤَلِّف}} as the author, you'll get an extra big
-- font coming from the fact that {{lang|...}} wraps the Arabic text in CSS that increases the size from the
-- default, and then we do script detection and again wrap the text in the same CSS, which increases the size even
-- more.)
if val_should_not_be_parsed_for_annotations(val) then
return {text = val, link = val, noscript = true, gloss = explicit_gloss}
end
local obj
if val:find("<") then
-- Check for inline modifier.
obj = parse_inline_modifiers(val, {
paramname = fullname,
param_mods = param_mods,
generate_obj = generate_obj_annotated_text,
})
else
obj = generate_obj_annotated_text(val, nil, fullname)
end
if explicit_gloss then
obj.gloss = explicit_gloss
end
return obj
end
local html_entity_char_to_replacement = {
["<"] = TEMP_LT,
[">"] = TEMP_GT,
["["] = TEMP_LBRAC,
["]"] = TEMP_RBRAC,
}
local function html_entity_replacement(entity, code_without_semicolon, hash, xcode, x, code)
-- Try to decode the entity. If successful, Replace certain special HTML entities (those that are bracket-like)
-- with single Unicode characters; otherwise, replace the semicolon with a special character so it won't get
-- interpreted as a delimiter.
local ch = decode_entities(entity)
if ch ~= entity then
return html_entity_char_to_replacement[ch] or code_without_semicolon .. TEMP_SEMICOLON
end
-- If the entity doesn't decode, escape it anyway iff it follows a valid format.
if hash == "" then
-- Any nonstandard MediaWiki-only entities have now been filtered off, so treat any non-ASCII characters as
-- invalid.
return xcode:match("^[^\128-\255]+$") and code_without_semicolon .. TEMP_SEMICOLON or entity
elseif x == "" then
return xcode:match("^%d+$") and code_without_semicolon .. TEMP_SEMICOLON or entity
end
return code:match("^%x+$") and code_without_semicolon .. TEMP_SEMICOLON or entity
end
local html_entity_replacement_to_char = {
[TEMP_LT] = "<",
[TEMP_GT] = ">",
[TEMP_LBRAC] = "[",
[TEMP_RBRAC] = "]",
[TEMP_SEMICOLON] = ";",
}
local function undo_html_entity_replacement(txt)
-- Pattern covers everything in html_entity_replacement_to_char.
return (txt:gsub("\239\191[\177-\181]", html_entity_replacement_to_char))
end
-- NOTE: We try hard to optimize this function for the common cases and avoid loading [[Module:parse utilities]]
-- in such cases. The cases we can handle without loading [[Module:parse utilities]] are single values (no
-- semicolons present) without inline modifiers or language prefixes, and multi-entity values (semicolons present)
-- without (a) brackets of any kind (including parens, braces and angle brackets; angle brackets typically indicate
-- inline modifiers and other brackets may protect a semicolon from being interpreted as a delimiter);
-- (b) ampersands (which may indicate HTML entities, which protect a semicolon from being interpreted as a
-- delimiter); and (c) colons not followed by a space (which may indicate a language prefix).
local function generate_obj_multivalued_annotated_text(text, parse_err, paramname, no_undo_html_entity_replacement)
local obj = generate_obj_annotated_text(text, parse_err, paramname)
if not no_undo_html_entity_replacement then
obj.text = undo_html_entity_replacement(obj.text)
obj.link = undo_html_entity_replacement(obj.link)
end
return obj
end
--[=[
Similar to parse_annotated_text() but the parameter value may contain multiple semicolon-separated entities, each with
their own inline modifiers. Some examples:
* mainauthor=Paula Pattengale; Terea Sonsthagen
* author=Katie Brick; J. Cody Nielsen; Greg Jao; Eric Paul Rogers; John A. Monson
* author=Suzanne Brockmann; Patrick G. Lawlor (Patrick Girard); Melanie Ewbank
* author=G Ristori; et al.
* author=Jason Scott; zh:王晰宁<t:Wang Xining>
* editors=zh:包文俊; zh:金心雯
* quotee=zh:張福運<t:Chang Fu-yun>; zh:張景文<t:Chang Ching-wen>
There may be embedded semicolons within brackets, braces or parens that should not be treated as delimiters, e.g.:
* author=Oliver Optic [pseudonym; {{w|William Taylor Adams}}]
* author=author=Shannon Drake (pen name; {{w|Heather Graham Pozzessere}})
* author=James (the Elder;) Humphrys
There may also be HTML entities with semicolons in them:
* author=[{{w|Gilbert Clerke}}]
* 2ndauthor=Martin Biddle & Sally Badham
* author=Peter Christen Asbjørnsen
There may be both embedded semicolons and HTML entities with semicolons in them:
* author=[{{w|Voltaire}} [pseudonym; François-Marie Arouet]]
In general we want to treat [ like an opening bracket and ] like a closing bracket. Beware that they may be
mismatched:
* author=Anonymous [{{w|Karl Maria Kertbeny}}]
Here, `val` is the value of the parameter and `fullname` is the name of the parameter from which the value was
retrieved. `explicit_gloss`, if specified and non-nil, overrides any gloss specified using the <t:...> or <gloss:...>
inline modifier, and `explicit_gloss_fullname` is the name of the parameter from which this value was retrieved. (If
`explicit_gloss` is specified and multiple values were seen, an error results.)
Return value is a list of objects of the same sort as returned by parse_annotated_text().
]=]
local function parse_multivalued_annotated_text(val, fullname, explicit_gloss, explicit_gloss_fullname)
if not val then
return nil
end
-- NOTE: In the code that follows, we use `entity` most of the time to refer to one of the semicolon-separated
-- values in the multivalued param. Entities are most commonly people (typically authors, editors, translators or
-- the like), but may be the names of publishers, locations, or other entities. "Entity" can also refer to HTML
-- entities; in the places where this occurs, the variable name contains 'html' in it.
local splitchar, english_delim
if val:find("^,") then
splitchar = ","
english_delim = "comma"
val = val:gsub("^,", "")
else
splitchar = ";"
english_delim = "semicolon"
end
-- Optimization #1: No semicolons/commas or angle brackets (indicating inline modifiers).
if not val:find("[<" .. splitchar .. "]") then
if val_should_not_be_parsed_for_annotations(val) then
return {{text = val, link = val, noscript = true}}
else
return {generate_obj_multivalued_annotated_text(val, nil, fullname, "no undo html entity replacement")}
end
end
-- Optimization #2: Semicolons/commas but no angle brackets (indicating inline modifiers), braces, brackets, or
-- parens (any of which would protect the semicolon/comma from interpretation as a delimiter), and no ampersand
-- (which might indicate an HTML entity with a terminating semicolon, which should not be interpreted as a
-- delimiter).
if not val:find("[<>%[%](){}&]") then
local entity_objs = {}
for entity in gsplit(val, "%s*" .. splitchar .. "%s*") do
if val_should_not_be_parsed_for_annotations(entity) then
insert(entity_objs, {
text = entity,
link = entity,
noscript = true
})
else
insert(entity_objs, generate_obj_multivalued_annotated_text(entity, nil, fullname, "no undo html entity replacement"))
end
end
return entity_objs
end
-- Escape HTML entities, and get rid of directionality markers.
local amp = val:find("&", nil, true)
if amp then
-- The pattern is more permissive than the usual entity pattern, as MediaWiki has some nonstandard entities
-- that have non-ASCII characters in their codes.
val = val:gsub("((&(#?)(([xX]?)([%w\128-\255]+)));)", html_entity_replacement)
end
-- Pattern covers left-to-right (U+200E) and right-to-left (U+200F).
val = val:gsub("\226\128[\142\143]", "")
-- Parse balanced segment runs, treating HTML entities for left and right bracket and left and right angle bracket
-- as matching literal versions of the same characters.
local entity_runs = parse_multi_delimiter_balanced_segment_run(
val,
{{"[" .. TEMP_LBRAC, "]" .. TEMP_RBRAC}, {"(", ")"}, {"{", "}"}, {"<" .. TEMP_LT, ">" .. TEMP_GT}},
true
)
if type(entity_runs) == "string" then
local undo_val = undo_html_entity_replacement(val)
-- Parse error due to unbalanced delimiters. Don't throw an error here; instead, don't attempt to parse off
-- any annotations, but return the value directly, maybe allowing script tagging (not allowing it if it appears
-- the text is already script-tagged).
return {{text = undo_val, link = undo_val, noscript = not not val_should_not_be_parsed_for_annotations(val)}}
end
-- Split on semicolon (or comma), possibly surrounded by whitespace.
local separated_groups = split_alternating_runs(entity_runs, "%s*" .. splitchar .. "%s*")
-- Process each value.
local entity_objs = {}
for _, entity_group in ipairs(separated_groups) do
-- Rejoin runs that don't involve <...>.
local j = 2
while j <= #entity_group do
if not entity_group[j]:find("^<.*>$") then
entity_group[j - 1] = entity_group[j - 1] .. entity_group[j] .. entity_group[j + 1]
remove(entity_group, j)
remove(entity_group, j)
else
j = j + 2
end
end
local oneval = undo_html_entity_replacement(concat(entity_group))
-- When checking for inline modifiers, exclude HTML entry with <span ...>, <i ...>, <br/> or similar in it,
-- caused by wrapping an argument in {{l|...}}, {{lang|...}} or similar. Also exclude URL's from being parsed
-- as having language code prefixes. This works analogously to parse_annotated_text(); see there for more.
if val_should_not_be_parsed_for_annotations(oneval) then
insert(entity_objs, {
text = oneval,
link = oneval,
noscript = true
})
else
local obj
if #entity_group > 1 then
-- Check for inline modifier.
obj = parse_inline_modifiers_from_segments({
group = entity_group,
arg = oneval,
props = {
paramname = fullname,
param_mods = param_mods,
generate_obj = generate_obj_multivalued_annotated_text,
},
})
else
obj = generate_obj_multivalued_annotated_text(entity_group[1], nil, fullname)
end
insert(entity_objs, obj)
end
end
if explicit_gloss then
if #entity_objs > 1 then
error(
(
"Can't specify |%s= along with multiple %s-separated entities in |%s=; use the <t:...> "
.. "inline modifier attached to the individual entities"
):format(explicit_gloss_fullname, english_delim, fullname)
)
end
entity_objs[1].gloss = explicit_gloss
end
return entity_objs
end
--[=[
Format a text property that may be in a foreign language or script, along with annotations. This is conceptually
similar to the full_link() function in [[Module:links]], but displays the annotations in a different format that is
more appropriate for bibliographic entries. The output looks like this:
TEXT [TRANSLIT /TRANSCRIPTION/, GLOSS]
`textobj` is as returned by parse_annotated_text(). `tag_text_func`, if supplied, is a function of one argument to further
wrap the text after it has been processed and CSS-tagged appropriately, directly before insertion. `tag_gloss_func` is a
similar function for the gloss.
]=]
local function format_annotated_text(textobj, tag_text_func, tag_gloss_func)
if not textobj then
return nil
end
local text, link = textobj.text, textobj.link
local subst, tr, ts, f, gloss = textobj.subst, textobj.tr, textobj.ts, textobj.f, textobj.gloss
-- Retrieve the display text, either specified by the user (.alt) or by parse_annotated_text() (.display) when a
-- Wikipedia link is given.
local alt = textobj.alt or textobj.display
if alt then
if link:find("%[%[") or link:find("%]%]") then
local errmsg = ("Can't currently handle embedded links in '%s', with <alt:...> text '%s'"):format(link, alt)
error(escape_wikicode(errmsg))
end
text = ("[[%s|%s]]"):format(link, alt)
end
-- See above for `noscript`, meaning HTML was found in the text value, probably generated using {{lang|...}}.
-- {{lang}} already script-tags the text and processes embedded language links, so we don't want to do it again (in
-- fact, the code below within the if-clause is similar to what {{lang}} does). In such a case, an explicit language
-- won't be available and find_best_script_without_lang() may not be accurate, so we can't do automatic transliteration.
if not textobj.noscript then
local lang = textobj.lang
-- As an optimization, don't do script detection on an argument that contains only ASCII.
local sc = textobj.sc
or lang and lang:findBestScript(text)
or not text:find("^[ -~]$") and find_best_script_without_lang(text)
or nil
-- As an optimization, don't do any of the following if there's no language, script, translit or transcription,
-- as will be the case with simple ASCII values.
if lang or sc or tr or ts then
if not lang then
lang = get_lang("und")
end
if tr == "-" then
tr = nil
elseif not tr and sc and not sc:getCode():find("Lat") then -- Latn, Latf, Latg, pjt-Latn
-- might return nil
local text_for_tr = text
if subst then
text_for_tr = apply_subst(text_for_tr, subst)
else
text_for_tr = remove_links(text)
end
tr = (lang:transliterate(text_for_tr, sc))
end
if text:find("%[%[") then
-- FIXME: embedded_language_links() replaces % signs with their URL-encoded equivalents,
-- which messes up URL's that may be present (e.g. if chapterurl= is given). IMO this
-- should not happen, and embedded_language_links() should do nothing if no embedded links
-- are present. To work around this, only call embedded_language_links() when there are
-- embedded links present.
text = embedded_language_links({
term = text,
lang = lang,
sc = sc,
})
end
if lang:getCode() ~= "und" or sc:getCode() ~= "Latn" then
text = tag_text(text, lang, sc)
end
if tr then
-- Should we link to the transliteration of languages with lang:link_tr()? Probably not because `text` is not
-- likely to be a term that has an entry.
tr = tag_translit(tr, lang, "usex")
end
if ts then
ts = tag_transcription(ts, lang, "usex")
end
end
end
text = unitalicize_brackets(text)
if tag_text_func then
text = tag_text_func(text)
end
local parts = {}
if textobj.q then
insert(parts, format_qualifier(textobj.q) .. " ")
end
insert(parts, text)
if tr or ts or f or gloss then
insert(parts, SPACE_LBRAC)
local subparts = {}
if tr or ts then
local tr_ts
if ts then
ts = "/" .. ts .. "/"
end
if tr and ts then
tr_ts = tr .. " " .. ts
else
tr_ts = tr or ts
end
insert(subparts, tr_ts)
end
if f then
for _, ff in ipairs(f) do
local sc = ff.sc
local lang
if not sc and ff.quals then
local qual = ff.quals[1]
if type(qual) == "string" then
-- do nothing; we'll do script detection farther down
elseif qual:hasType("script") then
sc = qual
else -- language
sc = qual:findBestScript(ff.val)
lang = qual
end
end
if not lang then
lang = get_lang("und")
end
sc = sc or find_best_script_without_lang(ff.val)
local val = embedded_language_links({
term = ff.val,
lang = lang,
sc = sc,
})
if lang:getCode() ~= "und" or sc:getCode() ~= "Latn" then
val = tag_text(val, lang, sc)
end
local qual_prefix
if ff.quals then
for i, qual in ipairs(ff.quals) do
if type(qual) ~= "string" and (qual:hasType("script") or qual:hasType("language")) then
ff.quals[i] = qual:getCanonicalName()
end
end
qual_prefix = concat(ff.quals, "/") .. ": "
else
qual_prefix = ""
end
insert(subparts, qual_prefix .. val)
end
end
if gloss then
-- l10n: per-value CJK check on gloss content. tag_gloss_func
-- (e.g. tag_with_cite → <cite>) renders italic in browsers,
-- which looks poor on CJK characters. Skip the tag wrap when
-- gloss contains CJK; English glosses retain italics in both
-- output modes. The check happens before HTML wrapping so the
-- <span> tags don't interfere with detection.
local gloss_has_cjk = has_cjk(gloss)
gloss = '<span class="e-translation">' .. gloss .. "</span>"
gloss = unitalicize_brackets(gloss)
if tag_gloss_func and not gloss_has_cjk then
gloss = tag_gloss_func(gloss)
end
insert(subparts, gloss)
end
insert(parts, concat(subparts, ", "))
insert(parts, RBRAC)
end
if textobj.qq then
insert(parts, " " .. format_qualifier(textobj.qq))
end
return concat(parts)
end
--[=[
Format a multivalued text property that may be in a foreign language or script, along with annotations. This is the
multivalued analog to format_annotated_text(), and formats each individual entity using format_annotated_text(),
joining the results with `delimiter`, which defaults to ", ". It `delimiter` is "and" or "or", join the results using
serial_comma_join() with the specified conjunction.
`textobjs` is as returned by parse_multivalued_annotated_text(). `tag_text_func` and `tag_gloss_func` are as in
format_annotated_text().
]=]
local function format_multivalued_annotated_text(textobjs, delimiter, tag_text_func, tag_gloss_func)
if not textobjs then
return nil
end
if #textobjs == 1 then
return format_annotated_text(textobjs[1], tag_text_func, tag_gloss_func)
end
local parts = {}
for _, textobj in ipairs(textobjs) do
insert(parts, format_annotated_text(textobj, tag_text_func, tag_gloss_func))
end
-- Change delimiter to semicolon if the items themselves contain commas (e.g., in ", Jr.")
local use_semicolon = false
for _, obj in ipairs(textobjs) do
-- Use remove_links to ignore commas in links
if obj.text and remove_links(obj.text):find(", ") then
use_semicolon = true
break
end
end
local n = #parts
if n > 0 and parts[n]:match("^'*et al[.']*$") then
-- Special handling for 'et al.' (Latin abbreviation, kept verbatim in zh too)
parts[n] = "''et al.''"
if n == 2 then
-- author et al.
return concat(parts, " ")
else
-- l10n: enumeration separator switches to fullwidth in zh mode.
if output_mode == "zh" then
return concat(parts, use_semicolon and ZH_SEMICOLON or "、")
end
-- author 1, author 2, et al.
return concat(parts, (use_semicolon and "; ") or ", ")
end
if delimiter == "and" or delimiter == "or" then
delimiter = ", "
end
return concat(parts, delimiter)
end
if delimiter == "and" or delimiter == "or" then
-- l10n: zh uses 、 + 和/或 (no Oxford comma) instead of serialCommaJoin.
if output_mode == "zh" then
return zh_serial_join(parts, delimiter)
end
return serial_comma_join(parts, {conj = delimiter})
end
if output_mode == "zh" then
-- l10n: zh-mode delimiter substitution (no trailing space on fullwidth marks).
if delimiter == "; " then return concat(parts, ZH_SEMICOLON) end
if delimiter == ", " or delimiter == nil then return concat(parts, ZH_COMMA) end
end
return concat(parts, delimiter or ((use_semicolon and "; ") or ", "))
end
-- Fancy version of ine() (if-not-empty). Converts empty string to nil, but also strips leading/trailing space.
local function ine(arg)
if not arg then
return nil
elseif type(arg) ~= "string" then
return arg
end
arg = mw.text.trim(arg)
if arg == "" then
return nil
end
return arg
end
local abbrs = {
["a."] = {anchor = "a.", full = "ante"},
["c."] = {anchor = "c.", full = "circa"},
["p."] = {anchor = "p.", full = "post"},
}
-- Process prefixes 'a.' (ante), 'c.' (circa) and 'p.' (post) at the beginning of an arbitrary date or year spec.
-- Returns two values, the formatted version of the prefix and the date spec minus the prefix. If no prefix is found,
-- returns an empty string and the full date.
local function process_ante_circa_post(date)
local prefix = usub(date, 1, 2)
local abbr = abbrs[prefix]
local abbr_prefix = ""
if abbr then
abbr_prefix = "''[[Appendix:Glossary#"
.. abbr.anchor
.. '|<abbr title="'
.. abbr.full
.. '">'
.. abbr.anchor
.. "</abbr>]]'' "
-- Remove lowercase letter, period, and space from beginning of date parameter.
date = ugsub(date, "^%l%.%s*", "")
end
return abbr_prefix, date
end
-- Format the arguments that specify the date of the quotation. These include the following:
-- |date=: The date. If |start_date= is given, this is the end date.
-- |year=, |month=: Year and month of quotation date or end of range, if |date= isn't given.
-- |start_date=: The start date, to specify a range.
-- |start_year=, |start_month=: Year and month of start of range, if |start_date= isn't given.
-- |accessdate=: Date a website was accessed; processed if no other date was given.
-- |nodate=: Indicate that no date is present; otherwise a maintenance line will be displayed if there is no date.
--
-- If `parampref` and/or `paramsuf` are given, this modifies all the date arguments accordingly. For example, if
-- `parampref` == "orig" and `paramsuf` is omitted, the date is specified using |origdate= or |origyear=/|origmonth=,
-- and the start of the range is |origstart_date=, etc. Similarly, if `parampref` is omitted and `paramsuf` is
-- "_published", the date is specified using |date_published= or |year_published=/|month_published=, and the start of
-- the range is |start_date_published=, etc.
--
-- `a` and `get_full_paramname` are functions with the same interpretation as the local functions of the same name in
-- source(). These are used to fetch parameters and get their full names. Note that this may cause all arguments to
-- have an index added to them (|date2=, |year2=, |month2=, etc.).
--
-- `alias_map` is as in source() and is used to map canonical arguments to their aliases when aliases were used.
--
-- If `bold_year` is given, displayed years are boldfaced unless boldface is present in the parameter value.
--
-- If `maintenance_line_no_date` is specified, it should be a string that will be returned if no date is found (i.e.
-- neither |date= nor |year=, or their appropriate equivalents per `parampref` and `paramsuf`, are specified, and
-- neither |nodate= is given to indicate that there is no date, or |accessdate= is given).
--
-- Returns two values: the formatted date and a boolean indicating whether to add a maintenance category
-- [[:Category:Requests for date in LANG entries]]. The first return value will be nil if nothing is to be added
-- (in which case the scond return value will always be nil).
local function format_date_args(
a,
get_full_paramname,
alias_map,
parampref,
paramsuf,
bold_year,
maintenance_line_no_date,
year_last
)
local output = {}
parampref = parampref or ""
paramsuf = paramsuf or ""
local function getp(param)
return a(parampref .. param .. paramsuf)
end
local function pname(param)
local fullname = get_full_paramname(parampref .. param .. paramsuf)
return alias_map[fullname] or fullname
end
-- Format `timestamp` (a timestamp referencing a date) according to the spec in `code`. `param` is the base name of
-- the parameter from which the timestamp was fetched, for error messages.
local function format_date_with_code(code, timestamp, param)
-- l10n: force the locale to match output_mode rather than the wiki's
-- content language, so behaviour is deterministic regardless of
-- where the module is deployed (enwikt vs zhwikt sandbox vs test).
local language = output_mode == "zh" and zh_lang() or mw.language.new("en")
local ok, date = pcall(language.formatDate, language, code, timestamp)
if ok then
return date
else
-- All the formats used in format_date_args() are fine, so the timestamp must be at fault.
error(
(
"Timestamp |%s=%s (possibly canonicalized from its original format) could not be parsed; see the "
.. "[[mw:Help:Extension:ParserFunctions##time|documentation for the #time parser function]]"
):format(pname(param), tostring(timestamp))
)
end
end
-- Try to figure out if the given timestamp has the day of the month explicitly given. We use the following
-- algorithm:
-- 1. Format as year-month-day; if the day is not 1, the day was explicitly given, since if only the year/month are
-- given, the day shows up as 1.
-- 2. If the day shows up as 1 and there isn't a 1 or 01 in the timestamp, the day wasn't explicitly given.
-- 3. Otherwise, if there are three separate numbers (e.g. 2022-07-01), or two separate numbers plus a capitalized
-- letter (taken as an English month, e.g. 2022 July 1), the day was explicitly given, otherwise not.
--
-- `param` is the base name of the parameter from which the timestamp was fetched.
local function date_has_day_specified(timestamp, param)
local day = format_date_with_code("j", timestamp, param)
if day ~= "1" then
return true
end
local english_month = timestamp:find("%u")
local canon_timestamp = mw.text.trim((timestamp:gsub("%D+", " ")))
local seen_nums = split(canon_timestamp, " ", true)
local saw_one = false
for _, num in ipairs(seen_nums) do
if num == "1" or num == "01" then
saw_one = true
break
end
end
if not saw_one then
return false
end
return #seen_nums >= 3 or english_month and #seen_nums >= 2
end
-- Format a date with boldfaced year, as e.g. '''2023''' August 3. `explicit_day_given` indicates whether to include
-- the day; if false, the return value will be e.g. '''2023''' August. `date_param` is the base name of the param
-- from which the date was fetched, for error messages.
local function format_bold_date(date, explicit_day_given, date_param)
-- l10n: zh mode → always year-first, native "Y年n月j日" (or short
-- forms when day/month missing). year_last is ignored because
-- Chinese conventionally writes the year first regardless of
-- citation style.
if output_mode == "zh" then
local zh_code
if bold_year then
zh_code = explicit_day_given and "'''Y年''' n月j日" or "'''Y年''' n月"
else
zh_code = explicit_day_given and "Y年n月j日" or "Y年n月"
end
return format_date_with_code(zh_code, date, date_param)
end
local day_month_code = explicit_day_given and "j F" or "F"
local month_day_code = explicit_day_given and "F j" or "F"
if year_last then
if bold_year then
-- This formats like "3 August '''2023'''" (or "August '''2023'''" if day not explicitly given).
return format_date_with_code(day_month_code .. " '''Y'''", date, date_param)
else
-- This formats like "3 August 2023" (or "August 2023" if day not explicitly given).
return format_date_with_code(day_month_code .. " Y", date, date_param)
end
else
if bold_year then
-- This formats like "'''2023''' August 3" (or "'''2023''' August" if day not explicitly given).
return format_date_with_code("'''Y''' " .. month_day_code, date, date_param)
else
-- This formats like "2023 August 3" (or "2023 August" if day not explicitly given).
return format_date_with_code("Y " .. month_day_code, date, date_param)
end
end
end
-- The formatDate method of the mw.language object behaves like the {{#time:}} parser function, which doesn't
-- accept the formats "monthday monthname, year" or "year monthname monthday", but outputs garbage when it receives
-- them, behavior inherited from PHP. {{#formatdate:}} magic word is more forgiving. Fix dates so that, for
-- instance, the |date= parameter of {{quote-journal}} (which uses this code) and the |accessdate= parameter (which
-- uses {{#formatdate:}}) accept similar date formats. See:
-- * [[mw:Extension:Scribunto/Lua_reference_manual#mw.language:formatDate]]
-- * [[mw:Help:Extension:ParserFunctions##time]]
-- * [[mw:Help:Magic_words#Formatting]]
-- `date` is the date spec from the user, which is assumed to come from a parameter whose base name ends in "date";
-- `parampref` is the prefix added to "date" to get the parameter name.
local function fix_date(date, param_pref)
if tonumber(date) ~= nil then
error(
("|%s= should contain a full date (year, month, day of month); use |%s= for year"):format(
pname(param_pref .. "date"),
pname(param_pref .. "year")
)
)
elseif date and date:find("%s*%a+,%s*%d+%s*$") then
error(
("|%s= should contain a full date (year, month, day of month); use |%s=, |%s= for month and year"):format(
pname(param_pref .. "date"),
pname(param_pref .. "month"),
pname(param_pref .. "year")
)
)
end
if date then
-- Commas are replaced with spaces to prevent parsing issues
local fixed_date = ugsub(date, ", *", " ")
return (ugsub(ugsub(fixed_date or date, "(%d+ %a+),", "%1"), "^(%d%d%d%d) (%a+ %d%d?)$", "%2 %1"))
end
end
local start_date, date = fix_date(getp("start_date"), "start_"), fix_date(getp("date"), "")
local year = getp("year")
local month = getp("month")
local start_year = getp("start_year")
local start_month = getp("start_month")
if date and year then
error(("Only one of |%s= or |%s= should be specified"):format(pname("date"), pname("year")))
end
if date and month then
error(
("|%s= should only be specified in conjunction with |%s=, not with |%s="):format(
pname("month"),
pname("year"),
pname("date")
)
)
end
if start_date and start_year then
error(("Only one of |%s= or |%s= should be specified"):format(pname("start_date"), pname("start_year")))
end
if start_date and start_month then
error(
("|%s= should only be specified in conjunction with |%s=, not with |%s="):format(
pname("start_month"),
pname("start_year"),
pname("start_date")
)
)
end
if (start_date or start_year) and not (date or year) then
error(
("|%s= or |%s=/|%s= cannot be specified without specifying |%s= or |%s=/|%s="):format(
pname("start_date"),
pname("start_year"),
pname("start_month"),
pname("date"),
pname("year"),
pname("month")
)
)
end
local dash = " – "
local day_explicitly_given = date and date_has_day_specified(date, "date")
local start_day_explicitly_given = start_date and date_has_day_specified(start_date, "start_date")
-- Format a date with boldfaced year, as e.g. '''2023''' August 3 (if `explicit_day_given` specified) or
-- '''2023''' August (if `explicit_day_given` not specified). If no date specified, fall back to formatting based
-- on the year and (optionally) month params given in `yearobj` and `monthobj`, boldfacing the year if not already.
-- `date_param` is the base name of the param from which the date was fetched, for error messages.
local function format_date_or_year_month(date, yearobj, monthobj, explicit_day_given, date_param)
if date then
return format_bold_date(date, explicit_day_given, date_param)
else
-- Boldface a year spec if it's not already boldface.
if bold_year and not yearobj.text:find("'''") then
-- Clone the year object before modifying it because we may use it later to check against the current
-- year (if we're dealing with start_year).
yearobj = shallow_copy(yearobj)
yearobj.text = "'''" .. yearobj.text .. "'''"
if yearobj.alt then
yearobj.alt = "'''" .. yearobj.alt .. "'''"
end
end
if year_last then
return (monthobj and format_annotated_text(monthobj) .. " " or "") .. format_annotated_text(yearobj)
else
return format_annotated_text(yearobj) .. (monthobj and " " .. format_annotated_text(monthobj) or "")
end
end
end
local yearobj = parse_annotated_text(year, pname("year"))
local monthobj = parse_annotated_text(month, pname("month"))
local start_yearobj = parse_annotated_text(start_year, pname("start_year"))
local start_monthobj = parse_annotated_text(start_month, pname("start_month"))
if start_yearobj then
local abbr_prefix
abbr_prefix, start_yearobj.text = process_ante_circa_post(start_yearobj.text)
start_yearobj.link = select(2, process_ante_circa_post(start_yearobj.link))
insert(output, abbr_prefix)
elseif yearobj then
local abbr_prefix
abbr_prefix, yearobj.text = process_ante_circa_post(yearobj.text)
yearobj.link = select(2, process_ante_circa_post(yearobj.link))
insert(output, abbr_prefix)
end
if start_date or start_year then
-- l10n: zh mode short-circuit — render both endpoints fully ("Y年n月j日")
-- and join with a dash. We deliberately skip enwikt's elide-common-parts
-- optimization because "2026年5月24日 – 2026年5月26日" reads fine in zh
-- and avoids reconstructing partial Chinese date fragments by hand.
if output_mode == "zh" then
insert(output, format_date_or_year_month(
start_date, start_yearobj, start_monthobj,
start_day_explicitly_given, "start_date"
))
insert(output, dash)
insert(output, format_date_or_year_month(
date, yearobj, monthobj, day_explicitly_given, "date"
))
else
local cur_year = yearobj and yearobj.text or format_date_with_code("Y", date, "date")
local cur_month = monthobj and monthobj.text or date and format_date_with_code("F", date, "date") or nil
local cur_day = date and day_explicitly_given and format_date_with_code("j", date, "date") or nil
local beg_year = start_yearobj and start_yearobj.text or format_date_with_code("Y", start_date, "start_date")
local beg_month = start_monthobj and start_monthobj.text
or start_date and format_date_with_code("F", start_date, "start_date")
or nil
local beg_day = start_date
and start_day_explicitly_given
and format_date_with_code("j", start_date, "start_date")
or nil
if year_last then
if beg_day then
insert(output, beg_day .. " " .. beg_month)
else
insert(output, beg_month)
end
if beg_year ~= cur_year then
insert(output, " " .. beg_year)
end
else
insert(output, format_date_or_year_month(
start_date,
start_yearobj,
start_monthobj,
start_day_explicitly_given,
"start_date"
))
end
if cur_year ~= beg_year then
-- Different years; insert current date in full.
if beg_month or cur_month then
insert(output, dash)
else
insert(output, "–")
end
insert(output, format_date_or_year_month(date, yearobj, monthobj, day_explicitly_given, "date"))
elseif cur_month and cur_month ~= beg_month then
local month_ins = monthobj and format_annotated_text(monthobj) or cur_month
-- Same year but different months; insert current month and (if available) current day.
if cur_day then
insert(output, dash)
if year_last then
insert(output, cur_day .. " " .. month_ins)
else
insert(output, month_ins .. " " .. cur_day)
end
else
if beg_day then
insert(output, dash)
else
insert(output, "–")
end
insert(output, month_ins)
end
elseif cur_day and cur_day ~= beg_day then
-- Same year and month but different days; insert current day.
insert(output, "–")
insert(output, cur_day)
else
-- Same year, month and day; or same year and month, and day not available; or same year, and month and
-- day not available. Do nothing. FIXME: Should we throw an error?
end
if year_last and beg_year == cur_year then
if cur_month then
insert(output, " " .. cur_year)
else
insert(output, " " .. cur_year)
end
end
end -- l10n: end of en-mode range branch (matches the if output_mode=="zh" above)
elseif date or yearobj then
insert(output, format_date_or_year_month(date, yearobj, monthobj, day_explicitly_given, "date"))
elseif not maintenance_line_no_date then
-- Not main quote date. Return nil, caller will handle.
return nil, nil
elseif not getp("nodate") then
local accessdate = getp("accessdate")
if accessdate then
local explicit_day_given = date_has_day_specified(accessdate, "accessdate")
insert(output, format_bold_date(accessdate, explicit_day_given, "accessdate") .. L(" (last accessed)"))
else
if mw.title.getCurrentTitle().namespace ~= 10 then
return maintenance_line(maintenance_line_no_date), true
end
return nil, nil
end
end
return ine(concat(output)), nil
end
local function tag_with_cite(txt)
return "<cite>" .. txt .. "</cite>"
end
-- Display the source line of the quote, above the actual quote text. This contains the majority of the logic of this
-- module (formerly contained in {{quote-meta/source}}).
function export.source(args, alias_map, format_as_cite, other_controls)
-- l10n: detect output mode at the entry of every source() invocation.
-- Mode is a module-level upvalue read by L(), format_date(), and the
-- build_* helpers; we reset it each call so two transclusions on the
-- same page can independently land in en vs zh mode.
output_mode = detect_output_mode(args)
local tracking_categories = {}
local argslang = args[1] or args.lang
if not argslang then
-- For the moment, only trigger an error on mainspace pages and
-- other pages that are not user pages or pages containing discussions.
-- These are the same pages that appear in the appropriate tracking
-- categories. User and discussion pages have not generally been
-- fixed up to include a language code and so it's more helpful
-- to use a maintenance line than signal an error.
local current_title = mw.title.getCurrentTitle()
if not (current_title.namespace == 10 or page_should_be_ignored(current_title.fullText)) then
require(languages_error_module)(nil, 1)
end
end
-- Given a canonical param, convert it to the original parameter specified by the user (which may have been an
-- alias).
local function alias(param)
return alias_map[param] or param
end
local output, sep = {}
local overrides = other_controls and other_controls.overrides or {}
-- Add text to the output. The text goes into a list, and we concatenate all the list components together at the
-- end. To make it easier to handle comma-separated items, we keep track (in `sep`) of the separator (if any) that
-- needs to be inserted before the next item added. For example, if we're in the "newversion" code (ind ~= ""), and
-- there's no title and no URL, then the first time we add anything after the title, we don't want to add a
-- separating comma because the preceding text will say "republished " or "republished as " or "translated as " or
-- similar. In all- other cases, we do want to add a separating comma. The bare add() function reset the separator
-- to be nothing, while the add_with_sep() function resets the separator to be the value of `next_sep` (defaulting
-- to ", "), so the next time around we do add a comma to separate `text` from the preceding piece of text.
local function add(text)
if sep then
insert(output, sep)
end
insert(output, text)
sep = nil
end
local function add_with_sep(text, next_sep)
add(text)
-- l10n: default separator follows output_mode (zh → ",", en → ", ")
sep = next_sep or sep_comma()
end
-- FIXME: This is all very over-engineered, which makes it slow and memory-inefficient.
-- Return a function that generates the actual parameter name associated with a base param (e.g. "author", "last").
-- The actual parameter name may have an index added (an empty string for the first set of params, e.g. author=,
-- last=, or a numeric index for further sets of params, e.g. author2=, last2=, etc.).
local function make_get_full_paramname(ind)
return function(param)
return param .. ind
end
end
-- Function to fetch the actual parameter name associated with a base param (see make_get_full_paramname() above).
-- Assigned at various times below by calling make_get_full_paramname(). We do it this way so that we can have
-- wrapper functions that access params and define them only once.
local get_full_paramname
-- Return two values: the value of a parameter given the base param name (which may have a numeric index added),
-- and the parameter name from which the value was fetched (which may be an alias, i.e. you can't necessarily fetch
-- the parameter value from args[] given this name). The base parameter can be a list of such base params, which
-- are checked in turn, or nil, in which case nil is returned.
local function a_with_name(param)
if not param then
return nil
elseif type(param) ~= "table" then
local fullname = get_full_paramname(param)
return args[fullname], alias(fullname)
end
for _, par in ipairs(param) do
local val, fullname = a_with_name(par)
if val then
return val, alias(fullname)
end
end
return nil
end
-- Fetch the value of a parameter given the base param name (which may have a numeric index added). The base
-- parameter can be a list of such base params, which are checked in turn, or nil, in which case nil is returned.
local function a(param)
return (a_with_name(param))
end
-- Identical to a_with_name(param) except that it verifies that no space is present. Should be used for URL's.
local function aurl_with_name(param)
local value, fullname = a_with_name(param)
if value and value:find(" ") and not value:find("%[") then
error(("URL not allowed to contain a space, but saw |%s=%s"):format(fullname, value))
end
return value, fullname
end
-- Identical to a(param) except that it verifies that no space is present. Should be used for URL's.
local function aurl(param)
return (aurl_with_name(param))
end
-- Convenience function to fetch a parameter that may be in a foreign language or text (and may consequently have
-- a language prefix and/or inline modifiers), parse the annotations and convert the result into a formatted string.
-- This is the same as parse_and_format_annotated_text() below but also returns the full param name as the second
-- return value.
local function parse_and_format_annotated_text_with_name(param, tag_text_func, tag_gloss_func)
local val, fullname = a_with_name(param)
local obj = parse_annotated_text(val, fullname)
return format_annotated_text(obj, tag_text_func, tag_gloss_func), fullname
end
-- Convenience function to fetch a parameter that may be in a foreign language or text (and may consequently have
-- a language prefix and/or inline modifiers), parse the modifiers and convert the result into a formatted string.
-- This is a wrapper around parse_annotated_text() and format_annotated_text(). `param` is the base parameter name (see
-- a_with_name()), `tag_text_func` is an optional function to tag the parameter text after all other processing (e.g.
-- wrap in <cite>...</cite> tags), and `tag_gloss_func` is a similar function for the parameter translation/gloss.
local function parse_and_format_annotated_text(param, tag_text_func, tag_gloss_func)
return (parse_and_format_annotated_text_with_name(param, tag_text_func, tag_gloss_func))
end
-- Convenience function to fetch a multivalued parameter that may be in a foreign language or text (and may
-- consequently have a language prefix and/or inline modifiers), parse the modifiers and convert the result into a
-- formatted string. This is the multivalued analog to parse_and_format_annotated_text_with_name() and returns two
-- values, the formatted string and the full name of the parameter fetched. `delimiter` is as in
-- format_multivalued_annotated_text().
local function parse_and_format_multivalued_annotated_text_with_name(param, delimiter, tag_text_func, tag_gloss_func)
local val, fullname = a_with_name(param)
local objs = parse_multivalued_annotated_text(val, fullname)
local num_objs = objs and #objs or 0
return format_multivalued_annotated_text(objs, delimiter, tag_text_func, tag_gloss_func), fullname, num_objs
end
-- Convenience function to fetch a multivalued parameter that may be in a foreign language or text (and may
-- consequently have a language prefix and/or inline modifiers), parse the modifiers and convert the result into a
-- formatted string. This is the multivalued analog to parse_and_format_annotated_text(). `delimiter` is as in
-- format_multivalued_annotated_text().
local function parse_and_format_multivalued_annotated_text(param, delimiter, tag_text_func, tag_gloss_func)
return (parse_and_format_multivalued_annotated_text_with_name(param, delimiter, tag_text_func, tag_gloss_func))
end
-- This determines whether to display "Mary Bloggs, transl." (if there's no author preceding) or "translated by
-- Mary Bloggs" (if there's an author preceding).
local author_outputted = false
-- When formatting as a citation, the priority is to display a name and a date before the book/chapter title
-- this tracks whether or not the author/date has been displayed
local date_outputted, formatted_date, formatted_origdate = false
local function add_date(no_paren)
if not date_outputted then
if no_paren then
sep = sep_comma()
else
sep = " "
end
if formatted_date then
if no_paren then
add(formatted_date)
elseif output_mode == "zh" then
-- l10n: fullwidth parens around the date
add(ZH_LPAREN .. formatted_date .. ZH_RPAREN)
else
add("(" .. formatted_date .. ")")
end
end
if formatted_origdate then
add(SPACE_LBRAC .. formatted_origdate .. RBRAC)
end
sep = sep_comma()
date_outputted = true
end
end
local function is_anonymous(val)
return val:match("^[Aa]nonymous$") or val:match("^[Aa]non%.?$")
end
-- Add a formatted author (whose values may be specified using `author` or, for compatibility purposes, split
-- among various parameters):
-- * `author` is the value of the author param (e.g. "author", "author2" or "2ndauthor"), and `author_fullname` is
-- the full parameter name holding that value;
-- * `trans_author` is the optional value of the param holding the gloss/translation of the author, and
-- `trans_author_fullname` is the full parameter name holding that value (or nil for no such parameter);
-- * `authorlink` is the value of the authorlink param, which holds the Wikipedia link of the author(s) in `author`,
-- and `authorlink_fullname` is the full parameter name holding that value;
-- * `trans_authorlink` is the optional value of the param holding the Wikipedia link of the gloss/translation of
-- the author, and `trans_authorlink_fullname` is the full parameter name holding that value (or nil for no such
-- parameter);
-- * `first` is the value of the parameter holding the first name of the author, and `first_fullname` is the full
-- parameter name holding that value;
-- * `trans_first` is the value of the corresponding parameter holding the gloss/translation of the first name
-- (e.g. "trans-first"), and `trans_first_fullname` is the full parameter name holding that value (or nil for
-- no such parameter);
-- * `last` is the value of the parameter holding the last name of the author, and `last_fullname` is the full
-- parameter name holding that value;
-- * `trans_last` is the value of the corresponding parameter holding the gloss/translation of the last name
-- (e.g. "trans-last"), and `trans_last_fullname` is the full parameter name holding that value (or nil for
-- no such parameter).
-- * `last_first` if set, when parameters `first` and `last` are used, display the author name as "last, first"
local function add_author(
author,
author_fullname,
trans_author,
trans_author_fullname,
authorlink,
authorlink_fullname,
trans_authorlink,
trans_authorlink_fullname,
first,
first_fullname,
trans_first,
trans_first_fullname,
last,
last_fullname,
trans_last,
trans_last_fullname,
last_first
)
local function make_author_with_url(txt, txtparam, authorlink, authorlink_param)
if authorlink then
if authorlink:find("%[%[") then
error(("Can't specify links in |%s=%s"):format(authorlink_param, authorlink))
end
if txt:find("%[%[") then
error(("Can't specify links in %s=%s"):format(txtparam, txt))
end
return "[[w:" .. authorlink .. "|" .. txt .. "]]"
else
return txt
end
end
local num_authorobjs
if author then
local authorobjs =
parse_multivalued_annotated_text(author, author_fullname, trans_author, trans_author_fullname)
num_authorobjs = #authorobjs
if num_authorobjs == 1 then
if is_anonymous(authorobjs[1].text) then
authorobjs[1].text = "anonymous author"
authorobjs[1].link = "anonymous author"
end
if authorlink then
authorobjs[1].text = make_author_with_url(
authorobjs[1].text,
"|" .. author_fullname,
authorlink,
"|" .. authorlink_fullname
)
authorobjs[1].link = make_author_with_url(
authorobjs[1].link,
"|" .. author_fullname,
authorlink,
"|" .. authorlink_fullname
)
end
if authorobjs[1].gloss and trans_authorlink then
authorobjs[1].gloss = make_author_with_url(
authorobjs[1].gloss,
("<t:...> in |%s"):format(author_fullname),
trans_authorlink,
"|" .. trans_author_fullname
)
end
add(format_multivalued_annotated_text(authorobjs))
elseif trans_authorlink then
error(
(
"Can't specify |%s= along with multiple semicolon-separated entities in |%s=; use the "
.. "<t:...> inline modifier attached to the individual entities and put the link directly "
.. "in the value of the inline modifier"
):format(trans_authorlink_fullname, author_fullname)
)
else
-- Allow an authorlink with multiple authors, e.g. for use with |author=Max Mills; Harvey Mills
-- with |authorlink=Max and Harvey. For this we have to generate the entire text and link it
-- all.
local formatted_text = format_multivalued_annotated_text(authorobjs)
if authorlink then
formatted_text = make_author_with_url(
formatted_text,
"|" .. author_fullname,
authorlink,
"|" .. authorlink_fullname
)
end
add(formatted_text)
end
else
num_authorobjs = 1
-- Author separated into first name + last name. We don't currently support non-Latin-script
-- authors separated this way and probably never will.
if first then
if last_first then
author = last .. ", " .. first
else
author = first .. " " .. last
end
else
author = last
end
if authorlink then
local authorparam = first and ("|%s |%s"):format(first_fullname, last_fullname) or "|" .. last_fullname
author = make_author_with_url(author, authorparam, authorlink, authorlink_fullname)
end
local trans_author
if trans_last then
if trans_first then
trans_author = trans_first .. " " .. trans_last
else
trans_author = trans_last
end
if trans_authorlink then
local trans_authorparam = trans_first
and ("|%s |%s"):format(trans_first_fullname, trans_last_fullname)
or "|" .. trans_last_fullname
trans_author = make_author_with_url(
trans_author,
trans_authorparam,
trans_authorlink,
trans_authorlink_fullname
)
end
end
add(author)
if trans_author then
add(SPACE_LBRAC)
add(trans_author)
add(RBRAC)
end
end
author_outputted = true
return num_authorobjs
end
local function add_authorlike(
param,
prefix_with_preceding_authors,
suffix_without_preceding_authors,
suffix_if_multiple,
anonymous_suffix
)
local delimiter = author_outputted and "and" or ", "
local entities, _, num_entities = parse_and_format_multivalued_annotated_text_with_name(param, delimiter)
if not entities then
return
end
if is_anonymous(entities) then
-- If tlr=anonymous or similar given, display as "anonymous translator" or similar. If a specific
-- anonymous suffix not given, try to derive the anonymous suffix from the non-preceding-author suffix.
if not anonymous_suffix then
if output_mode == "zh" then
-- l10n: zh suffix shape is "(X)"; derive_anonymous_suffix_zh
-- maps it to a bare role noun like "譯者" / "編者" so we get
-- "佚名譯者" instead of "佚名(譯)".
anonymous_suffix = derive_anonymous_suffix_zh(suffix_without_preceding_authors)
else
local cleaned_suffix = suffix_without_preceding_authors
:gsub(" ", " ")
:gsub(" ", " ")
:gsub(" ", " ")
:gsub("[", "[")
:gsub("]", "]")
cleaned_suffix = mw.text.trim(cleaned_suffix)
if not anonymous_suffix then
anonymous_suffix = " " .. cleaned_suffix:match("^, (.*)$")
end
if not anonymous_suffix then
anonymous_suffix = " " .. cleaned_suffix:match("^%((.*)%)$")
end
if not anonymous_suffix then
anonymous_suffix = " " .. cleaned_suffix:match("^%[(.*)%]$")
end
if not anonymous_suffix then
anonymous_suffix = suffix_without_preceding_authors
end
end -- l10n: end of en branch
end
add_with_sep(L("anonymous") .. anonymous_suffix)
elseif prefix_with_preceding_authors and (author_outputted or not suffix_without_preceding_authors) then
add_with_sep(prefix_with_preceding_authors .. entities)
elseif suffix_if_multiple and num_entities > 1 then
add_with_sep(entities .. suffix_if_multiple)
else
add_with_sep(entities .. suffix_without_preceding_authors)
end
author_outputted = true
end
local function add_authorlabel()
local default_authorlabel = a("default-authorlabel")
if default_authorlabel and yesno(a("authorlabel"), true) then
sep = nil
add_with_sep(" " .. default_authorlabel)
end
end
local function has_new_title_or_author()
return args["2ndauthor"]
or args["2ndlast"]
or args.chapter2
or args.title2
or args.tlr2
or args.mainauthor2
or args.editor2
or args.editors2
or args.compiler2
or args.compilers2
or args.director2
or args.directors2
end
local function has_newversion()
return args.newversion or args.location2 or has_new_title_or_author()
end
-- Handle chapter=, section=, etc. `param` is the base name of the parameter in question, e.g. "chapter" or
-- "section". If numeric (either Arabic or Roman), add `numeric_prefix`; otherwise, parse as textual (allowing for
-- language prefixes, inline modifiers, etc.), prefix with `textual_prefix` (if given) and suffix with
-- `textual_suffix` (if given). Also checks for and handles the following (assuming param == "chapter"):
-- * chapterurl=: URL of the chapter.
-- * trans-chapter=: Chapter translation (can be given using an inline modifier <t:...>).
-- * chapter_number=: Chapter number, when chapter= is also given (otherwise put the chapter number in chapter=).
-- * chapter_plain=: Plain version of the chapter number; the "chapter " prefix isn't added.
-- * chapter_series=: Series that the chapter is within (used e.g. for journal articles part of a series).
-- * chapter_seriesvolume=: Volume of the series (compare seriesvolume=).
--
-- Returns nil if no value specified for the main parameter, otherwise the formatted value.
local function format_chapterlike(param, numeric_prefix, textual_prefix, textual_suffix)
local chap, chap_fullname = a_with_name(param)
local chap_num, chap_num_fullname = a_with_name(param .. "_number")
local chap_plain, chap_plain_fullname = parse_and_format_annotated_text_with_name(param .. "_plain")
if chap_num and chap_plain then
error(("Specify only one of |%s= or %s="):format(chap_num_fullname, chap_plain_fullname))
end
local chap_series, chap_series_fullname =
parse_and_format_annotated_text_with_name(param .. "_series", tag_with_cite, tag_with_cite)
local chap_seriesvolume, chap_seriesvolume_fullname =
parse_and_format_annotated_text_with_name(param .. "_seriesvolume")
if chap_series then
-- l10n: zh uses fullwidth ","
chap_series = sep_comma() .. chap_series
end
if chap_seriesvolume then
if not chap_series then
error(("Cannot specify |%s= without %s="):format(chap_series_fullname, chap_seriesvolume_fullname))
end
if output_mode == "zh" then
chap_series = chap_series .. ZH_LPAREN .. chap_seriesvolume .. ZH_RPAREN
else
chap_series = chap_series .. " (" .. chap_seriesvolume .. ")"
end
end
local chapterurl
local function make_chapter_with_url(chap)
if chapterurl then
return "[" .. chapterurl .. " " .. chap .. "]"
else
return chap
end
end
if not chap then
if chap_num then
error(
("Cannot specify |%s= without |%s=; put the numeric value in |%s= directly"):format(
chap_num_fullname,
chap_fullname,
chap_fullname
)
)
end
if chap_plain then
chapterurl = aurl(param .. "url")
return make_chapter_with_url(chap_plain .. (chap_series or ""))
end
return nil
end
local cleaned_chap = chap:gsub("<sup>[^<>]*</sup>", ""):gsub("[*+#]", "")
chapterurl = aurl(param .. "url")
-- l10n: zh wraps numeric-class chap as "第N章" (suffix is L(param));
-- textual chap as "「title」" (CJK corner brackets in place of "...").
local function emit_numeric(chap_with_url)
if output_mode == "zh" then
return "第" .. chap_with_url .. L(param)
end
return numeric_prefix .. chap_with_url
end
local formatted
if numeric_prefix and get_number(cleaned_chap) then
-- Arabic chapter number
formatted = emit_numeric(make_chapter_with_url(chap))
elseif
numeric_prefix
and cleaned_chap:match("^[mdclxviMDCLXVI]+$")
and roman_to_arabic(cleaned_chap, true)
and (not overrides[param] or not overrides[param].noroman)
then
-- Roman chapter number
formatted = emit_numeric(make_chapter_with_url(upper(chap)))
elseif numeric_prefix and output_mode == "zh"
and classify_numeric_value(cleaned_chap) == "chinese"
then
-- l10n: Chinese-numeral chapter number (e.g. "五"), also wraps as 第五章.
formatted = emit_numeric(make_chapter_with_url(chap))
else
-- strip leading ! (used to force text-mode for titles that look like Roman numerals like "mil" and "dill")
if chap:find("^!") then
chap = chap:gsub("^!", "")
end
-- Must be a chapter name
local chapterobj = parse_annotated_text(chap, chap_fullname, a("trans-" .. param))
chapterobj.text = make_chapter_with_url(chapterobj.text)
chapterobj.link = make_chapter_with_url(chapterobj.link)
if output_mode == "zh" then
-- l10n: textual chap name uses CJK corner brackets「」 (not "..." quotes).
formatted = ZH_LQUOTE .. format_annotated_text(chapterobj) .. ZH_RQUOTE
else
formatted = (textual_prefix or "") .. format_annotated_text(chapterobj) .. (textual_suffix or "")
end
end
if chap_num or chap_plain then
-- NOTE: Up above we throw an error if both chap_num and chap_plain are specified.
if output_mode == "zh" then
-- l10n: zh parenthesized number, e.g. 「題目」(第5章)
formatted = formatted .. ZH_LPAREN
.. (chap_plain or "第" .. chap_num .. L(param))
.. ZH_RPAREN
else
formatted = formatted .. " (" .. (chap_plain or numeric_prefix .. chap_num) .. ")"
end
end
if chap_series then
formatted = formatted .. chap_series
end
return formatted
end
-- This handles everything after displaying the author, starting with the chapter and ending with page, column,
-- line and then other=. It is currently called twice: Once to handle the main portion of the citation, and once to
-- handle a "newversion" citation. `ind` is either "" for the main portion or a number (currently only 2) for a
-- "newversion" citation. In a few places we conditionalize on `ind` to take actions depending on its value.
local function postauthor(ind, num_authors, format_as_cite)
get_full_paramname = make_get_full_paramname(ind)
if author_outputted then
add_authorlabel()
end
local coauthors = parse_and_format_multivalued_annotated_text("coauthors", "and")
if coauthors then
local with_prefix = ""
if author_outputted then
with_prefix = "with "
if num_authors == 1 then
sep = " "
end
end
add_with_sep(with_prefix .. coauthors)
author_outputted = true
end
add_authorlike("quotee", L("quoting "), L(", quotee"), L(", quotees"))
if format_as_cite and author_outputted and not date_outputted then
add_date()
sep = sep_comma()
end
add_authorlike("chapter_tlr", L("translated by "), L(", transl."), nil, L(" translator"))
local function add_sg_and_pl_authorlike(noun, verbed)
local sgparam = noun
local plparam = noun .. "s"
local sgval, sgval_fullname = a_with_name(sgparam)
local plval, plval_fullname = a_with_name(plparam)
if sgval and plval then
error(("Can't specify both |%s= and |%s="):format(sgval_fullname, plval_fullname))
end
if sgval or plval then
-- l10n: route each constructed phrase through L() so zh mode picks up
-- "由 " / "(編)" / "(編纂)" etc. from STRINGS.
local verbed_by = L(verbed .. " by ")
local comma_sgnoun = L(", " .. noun)
local comma_plnoun = L(", " .. noun .. "s")
add_authorlike(sgparam, verbed_by, comma_sgnoun, comma_plnoun)
add_authorlike(plparam, verbed_by, comma_plnoun)
end
end
local formatted_entry = format_chapterlike("entry", nil, "“", "”")
local formatted_chapter = format_chapterlike("chapter", "chapter ", "“", "”")
local function add_entry()
if formatted_entry then
add_with_sep(formatted_entry)
if not a("notitle") then
add(L("in "))
author_outputted = false
else
author_outputted = true
end
formatted_entry = nil
end
end
local function add_chapter()
add_entry()
if formatted_chapter then
add_with_sep(formatted_chapter)
if not a("notitle") then
add(L("in "))
author_outputted = false
end
formatted_chapter = nil
end
end
local function add_actor_role(format_as_cite)
local role = parse_and_format_multivalued_annotated_text("role", "and")
local actor_val, actor_fullname = a_with_name("actor")
local actor_objs = parse_multivalued_annotated_text(actor_val, actor_fullname)
local actor = format_multivalued_annotated_text(actor_objs, "and")
if format_as_cite then
if role then
if actor then
-- l10n: "John as " / "John 飾演 "
add_with_sep(build_actor_as_role(actor))
end
sep = nil
add_with_sep(role)
elseif actor then
add_with_sep(build_actor_paren(actor, #actor_objs > 1))
end
else
if role then
add_with_sep(L("spoken by ") .. role)
if actor then
sep = nil
-- l10n: parenthesized actor next to a role
if output_mode == "zh" then
add_with_sep(ZH_LPAREN .. actor .. ZH_RPAREN)
else
add_with_sep(" (" .. actor .. ")")
end
end
elseif actor then
add_with_sep(build_actor_paren(actor, #actor_objs > 1))
end
end
end
if format_as_cite then
if date_outputted then
add_chapter()
end
local output_len = #output
local mainauthor = parse_and_format_multivalued_annotated_text("mainauthor")
if mainauthor then
add_with_sep(mainauthor)
end
-- quote-* templates display "jobbed by name" after the author, controlled by the author_outputted flag
author_outputted = false
add_authorlike("tlr", L("translated by "), L(", transl."), nil, L(" translator"))
author_outputted = false
add_sg_and_pl_authorlike("editor", "edited")
add_sg_and_pl_authorlike("compiler", "compiled")
add_sg_and_pl_authorlike("director", "directed")
add_authorlike("lyricist", nil, L(" (lyrics)"), nil, L(" lyricist"))
add_authorlike("lyrics-translator", nil, L(" (translation)"), nil, L(" lyrics translator"))
add_authorlike("composer", nil, L(" (music)"), nil, L(" composer"))
add_actor_role("format_as_cite")
-- if the output length has changed, a credit name has been printed
-- and we can print the date
if output_len ~= #output then
author_outputted = true
add_date()
end
add_chapter()
else
add_chapter()
local mainauthor = parse_and_format_multivalued_annotated_text("mainauthor")
if mainauthor then
add_with_sep(mainauthor)
author_outputted = true
end
add_authorlike("tlr", L("translated by "), L(", transl."), nil, L(" translator"))
add_sg_and_pl_authorlike("editor", "edited")
add_sg_and_pl_authorlike("compiler", "compiled")
add_sg_and_pl_authorlike("director", "directed")
add_authorlike("lyricist", nil, L(" (lyrics)"), nil, L(" lyricist"))
add_authorlike("lyrics-translator", nil, L(" (translation)"), nil, L(" lyrics translator"))
add_authorlike("composer", nil, L(" (music)"), nil, L(" composer"))
end
local title, title_fullname = a_with_name("title")
local need_comma = false
if title then
local titleobj = parse_annotated_text(title, title_fullname, a("trans-title"))
add(format_annotated_text(titleobj, tag_with_cite, tag_with_cite))
local series = parse_and_format_annotated_text("series")
if series then
-- l10n: fullwidth parens around series (no leading space in zh).
add((output_mode == "zh" and ZH_LPAREN or " (") .. series)
local seriesvolume = parse_and_format_annotated_text("seriesvolume")
if seriesvolume then
add(sep_semicolon() .. seriesvolume)
end
add(output_mode == "zh" and ZH_RPAREN or ")")
end
need_comma = true
elseif ind == "" then
if not a("notitle") then
add(maintenance_line(L("Please provide the book title or journal name")))
need_comma = true
end
end
local archiveurl, archiveurl_fullname = aurl_with_name("archiveurl")
local url, url_fullname = aurl_with_name("url")
local urls, urls_fullname = aurl_with_name("urls")
if url and urls then
error(("Supply only one of |%s= and |%s="):format(url_fullname, urls_fullname))
end
local function verify_title_supplied(url_name)
-- There are too many cases of this to throw an error at this time.
-- if not title then
-- error(("If |%s= is given, |%s= must also be supplied"):format(url_name, title_fullname))
-- end
end
if archiveurl or url then
verify_title_supplied(archiveurl and archiveurl_fullname or url_fullname)
sep = nil
add("‎<sup>[" .. (archiveurl or url) .. "]</sup>")
elseif urls then
verify_title_supplied(urls_fullname)
sep = nil
add("‎<sup>" .. urls .. "</sup>")
end
-- display (in Language) if language is provided and is not English and not overriden by termlang or worklang
if format_as_cite and ind == "" and not (args.termlang or args.worklang) and (args[1] or args.lang) then
local lang = get_first_lang(args[1] or args.lang)
if lang then
local langcode = lang:getCode()
if not (langcode == "und" or langcode == "en") then
local langs = format_langs(args[1] or args.lang)
if langs then
-- l10n: cite-mode language annotation appended to the title.
add(build_annotations_paren({build_lang_annotation("in", langs)}))
end
end
end
end
if need_comma then
sep = sep_comma()
end
local edition, edition_fullname = parse_and_format_annotated_text_with_name("edition")
local edition_plain, edition_plain_fullname = parse_and_format_annotated_text_with_name("edition_plain")
if edition and edition_plain then
error(("Supply only one of |%s= and |%s="):format(edition_fullname, edition_plain_fullname))
end
if edition then
-- l10n: numeric edition → "第N版"; textual edition → "<val>版"
if output_mode == "zh" then
add_with_sep(build_zh_numeric(edition, "edition"))
else
add_with_sep(edition .. " edition")
end
end
if edition_plain then
add_with_sep(edition_plain)
end
-- Display a numeric param such as page=, volume=, column=. For each `paramname`, four params are actually
-- recognized, e.g. for paramname == "page", the params page=, pages=, page_plain= and pageurl= are recognized
-- and checked (or the same with an index, e.g. page2=, pages2=, page_plain2= and pageurl2= respectively if
-- ind == "2"). Only one of the first three can be specified; an error results if more than one are given.
-- If none are given, the return value is nil; otherwise it is a string. The numeric spec is taken directly
-- from e.g. page_plain= if given; otherwise if e.g. pages= is given, or if page= is given and looks like a
-- combination of numbers (i.e. it has a hyphen or dash in it, a comma, or the word " and "), it is prefixed
-- by `singular_desc` + "s" (e.g. "pages "), otherwise it is prefixed by just `singular_desc` (e.g. "page ").
-- (As a special case, if either e.g. page=unnumbered or pages=unnumbered is given, the numeric spec is
-- "unnumbered page".) The resulting spec is returned directly unless e.g. pageurl= is given, in which case
-- it is linked to the specified URL. Note that any of the specs can be foreign text, e.g. foreign numbers
-- (including with optional inline modifiers), and such text is handled appropriately.
local function format_numeric_param(paramname, singular_desc)
local sgval = a_with_name(paramname)
local sgobj = parse_annotated_text(sgval, paramname)
local plparamname = paramname .. "s"
local plval = a_with_name(plparamname)
local plobj = parse_annotated_text(plval, plparamname)
local plainval, plain_fullname = parse_and_format_annotated_text_with_name(paramname .. "_plain")
local numspec
if not sgval and not plval and not plainval then
return
elseif plainval and (sgval or plval) then
error(("Can't specify " .. plain_fullname .. " with " .. paramname .. " or " .. plparamname))
elseif sgval and plval then
-- if both singular and plural, display "page 1 of 1-10"
if output_mode == "zh" then
-- l10n: zh sg-of-pl range, e.g. "第1頁/共1-10頁"
numspec = "第" .. sgval .. L(paramname) .. "/共" .. plval .. L(paramname)
else
numspec = singular_desc .. " " .. sgval .. " of " .. plval
end
else
-- Merge page= and pages= and treat alike because people often mix them up in both directions.
if plainval then
numspec = plainval
else
local val = sgobj and sgobj.text or plobj.text
if val == "unnumbered" then
if output_mode == "zh" then
-- l10n: e.g. "未編號頁"
numspec = L("unnumbered") .. L(paramname)
else
numspec = "unnumbered " .. singular_desc
end
else
local desc
if val:find("^!") then
val = val:gsub("^!", "")
desc = sgval and singular_desc or pluralize(singular_desc)
else
local check_val = val
if check_val:find("%[") then
check_val = remove_links(check_val)
-- convert URL's of the form [URL DISPLAY] to the displayed value
check_val = check_val:gsub("%[[^ %[%]]* ([^%[%]]*)%]", "%1")
end
-- in case of negative page numbers (do they exist?), don't treat as multiple pages
check_val = check_val:gsub("^%-", "")
-- replace HTML entity en-dashes and em-dashes with their literal codes
check_val = check_val:gsub("–", "–")
check_val = check_val:gsub("–", "–")
check_val = check_val:gsub("—", "—")
check_val = check_val:gsub("—", "—")
-- Check for en-dash or em-dash, or two numbers (possibly with stuff after like 12a-15b)
-- separated by a hyphen or by comma a followed by a space (to avoid firing on thousands separators).
if
umatch(check_val, "[–—]")
or check_val:find(" and ")
or check_val:match("%d+[^ ]* *%- *%d+")
or check_val:match("%d+[^ ]* *, +%d+")
then
desc = pluralize(singular_desc)
else
desc = singular_desc
end
end
local obj = sgobj or plobj
obj.text = val
if obj.link:find("^!") then
obj.link = obj.link:gsub("^!", "")
end
val = format_annotated_text(obj)
if output_mode == "zh" then
-- l10n: numeric class → "第N<suffix>"; textual → "<val><suffix>"
numspec = build_zh_numeric(val, paramname)
else
numspec = desc .. " " .. val
end
end
end
end
local url = a(paramname .. "url")
if url then
return "[" .. url .. " " .. numspec .. "]"
else
return numspec
end
end
local volume = format_numeric_param("volume", a("volume_prefix") or "volume")
if volume then
add_with_sep(volume)
end
local issue = format_numeric_param("issue", a("issue_prefix") or "number")
if issue then
add_with_sep(issue)
end
-- number= is an alias for issue= (except in {{quote-av}}, where it is the episode number)
local number = format_numeric_param("number", a("number_prefix") or "number")
if number then
add_with_sep(number)
end
local annotations = {}
local genre = a("genre")
if genre then
insert(annotations, genre)
end
local format = a("format")
if format then
insert(annotations, format)
end
local medium = a("medium")
if medium then
insert(annotations, medium)
end
-- Now handle the display of language annotations like "(in French)" or
-- "(quotation in Nauruan; overall work in German)".
local quotelang = args[1] or args.lang
if not quotelang then
if ind == "" then
-- This can only happen for certain non-mainspace pages, e.g. Talk pages; otherwise an error is thrown
-- above.
insert(annotations, maintenance_line(L("Please specify the language of the quote using |1=")))
else
-- do nothing in newversion= portion
end
elseif ind == "" then
local worklang = a("worklang")
local termlang = a("termlang")
worklang = worklang or quotelang
termlang = termlang or quotelang
if worklang == quotelang then
if worklang == termlang then
-- do nothing
else
insert(annotations, build_lang_annotation("in", format_langs(quotelang)))
end
else
if quotelang ~= termlang then
insert(annotations, build_lang_annotation("quotation_in", format_langs(quotelang)))
end
insert(annotations, build_lang_annotation("overall_work_in", format_langs(worklang)))
end
else
local lang2 = a("lang2")
if lang2 then
insert(annotations, build_lang_annotation("in", format_langs(lang2)))
end
end
if #annotations > 0 then
sep = nil
add_with_sep(build_annotations_paren(annotations))
end
local artist = parse_and_format_multivalued_annotated_text("artist", "and")
if artist then
add_with_sep(L("performed by ") .. artist)
end
local feat = parse_and_format_multivalued_annotated_text("feat", "and")
if feat then
sep = " "
-- l10n: "ft." is universal in modern music citation and not translated.
add_with_sep("ft. " .. feat)
end
if not format_as_cite then
add_actor_role()
end
local others = parse_and_format_annotated_text("others")
if others then
add_with_sep(others)
end
local quoted_in = parse_and_format_annotated_text("quoted_in", tag_with_cite, tag_with_cite)
if quoted_in then
add_with_sep(L("quoted in ") .. quoted_in)
insert(tracking_categories, "Quotations using quoted-in parameter")
end
local location = parse_and_format_multivalued_annotated_text("location", "; ")
local publisher = parse_and_format_multivalued_annotated_text("publisher", "; ")
if publisher then
if location then
add_with_sep(location) -- colon
-- l10n: separator between location and publisher (colon)
sep = output_mode == "zh" and ZH_COLON or ": "
end
add_with_sep(publisher)
elseif location then
add_with_sep(location)
end
if not date_outputted then
add_date("no_paren")
end
local source = parse_and_format_multivalued_annotated_text("source", "and")
if source then
add_with_sep(L("sourced from ") .. source)
end
local original = parse_and_format_annotated_text("original", tag_with_cite, tag_with_cite)
local by = parse_and_format_multivalued_annotated_text("by", "and")
local origtype = a("deriv") or "translation"
if original or by then
-- l10n: "translation of X by Y" → "X,Y 譯" (word order shift, see build_translation_phrase)
add_with_sep(build_translation_phrase(origtype, original, by))
end
-- Handle origlang=, origworklang=. How we handle them depends on whether the original title or author are explicitly
-- given.
local origlang = a("origlang")
local origworklang = a("origworklang")
local origlangtext, origworklangtext
if origlang then
origlangtext = build_lang_annotation("in", format_langs(origlang))
end
if origworklang then
origworklangtext = build_lang_annotation("overall_work_in", format_langs(origworklang))
end
if origlang or origworklang then
if original or by then
local orig_annotations = {}
if origlangtext then
insert(orig_annotations, origlangtext)
end
if origworklangtext then
insert(orig_annotations, origworklangtext)
end
sep = nil
add_with_sep(build_annotations_paren(orig_annotations))
else
-- l10n: "translation of original (in French)" → "原文翻譯(以法語寫成)"
add_with_sep(build_translation_phrase(origtype, nil, nil)
.. (origlangtext and " " .. origlangtext or ""))
if origworklangtext then
sep = nil
add_with_sep(build_annotations_paren({origworklangtext}))
end
end
end
if ind ~= "" and has_newversion() then
local formatted_new_date = format_date_args(a, get_full_paramname, alias_map, "", "", nil, L("Please provide a date or year"), true)
if formatted_new_date then
add_with_sep(formatted_new_date)
end
end
-- Fetch date_published=/year_published=/month_published= and format appropriately.
local formatted_date_published = format_date_args(a, get_full_paramname, alias_map, "", "_published", nil, nil, true)
local platform = parse_and_format_multivalued_annotated_text("platform", "and")
if formatted_date_published then
-- l10n: "published <date> via <platform>" → "<date> 於 <platform> 出版"
add_with_sep(build_published(formatted_date_published, platform))
elseif platform then
add_with_sep(build_via(platform))
end
-- From here on out, there should always be a preceding item, so we
-- can dispense with add_with_sep() and always insert the comma.
sep = nil
local function small(txt)
-- l10n: leading comma is a separator; HTML <small> tags are untranslated.
add(sep_comma() .. "<small>")
add(txt)
add("</small>")
end
-- Add an identifier to a book or article database such as DOI, ISBN, JSTOR, etc. `param_or_params`
-- is a string identifying the base param, or a list of such strings to check in turn. If found, the value
-- of the parameter is processed using `process` (a function of one argument, defaulting to mw.uri.encode()),
-- and then the actual URL to insert is generated by preceding with `pretext`, following with `posttext`,
-- and running the resulting string through small(), which first adds a comma and then the URL in small font.
local function add_identifier(param_or_params, pretext, posttext, process)
local val = a(param_or_params)
if val then
val = (process or mw.uri.encode)(val)
small(pretext .. val .. posttext)
end
end
add_identifier("bibcode", "[https://adsabs.harvard.edu/abs/", " →Bibcode]")
add_identifier("doi", '<span class="neverexpand">[https://doi.org/', " →DOI]</span>")
add_identifier("isbn", "", "", isbn)
add_identifier("issn", "", "", issn)
add_identifier("jstor", "[https://www.jstor.org/stable/", " →JSTOR]")
add_identifier("lccn", "", "", lccn)
add_identifier("oclc", "[https://search.worldcat.org/title/", " →OCLC]")
add_identifier("ol", "[https://openlibrary.org/works/OL", "/ →OL]")
add_identifier("pmid", "[https://www.ncbi.nlm.nih.gov/pubmed/", " →PMID]")
add_identifier("pmcid", "[https://www.ncbi.nlm.nih.gov/pmc/articles/", "/ →PMCID]")
add_identifier("ssrn", "[https://ssrn.com/abstract=", " →SSRN]")
-- add_identifier("urn", "", "", urn)
local id = a("id")
if id then
small(id)
end
archiveurl, archiveurl_fullname = aurl_with_name("archiveurl")
if archiveurl then
add(L(", archived from "))
local url, url_fullname = aurl_with_name("url")
if not url then
-- attempt to infer original URL from archive URL; this works at
-- least for Wayback Machine (web.archive.org) URL's
url = archiveurl:match("/(https?:.*)$")
if not url then
error(
("When |%s= is specified, |%s= must also be included"):format(archiveurl_fullname, url_fullname)
)
end
end
add("[" .. url .. " " .. L("the original") .. "]" .. L(" on "))
local archivedate, archivedate_fullname = a_with_name("archivedate")
if archivedate then
add(format_date(archivedate))
elseif string.sub(archiveurl, 1, 28) == "https://web.archive.org/web/" then
-- If the archive is from the Wayback Machine, then it already contains the date
-- Get the date and format it
local wayback_date = string.sub(archiveurl, 29, 29 + 7)
wayback_date = string.sub(wayback_date, 1, 4)
.. "-"
.. string.sub(wayback_date, 5, 6)
.. "-"
.. string.sub(wayback_date, 7, 8)
add(format_date(wayback_date))
else
error(
("When |%s= is specified, |%s= must also be included"):format(
archiveurl_fullname,
archivedate_fullname
)
)
end
end
if a("accessdate") then
--Otherwise do not display here, as already used as a fallback for missing date= or year= earlier.
if (a("date") or a("nodate") or a("year")) and not a("archivedate") then
-- l10n: ", retrieved <date>" → ",於 <date> 擷取" (verb-final)
add(build_retrieved(format_date(a("accessdate"))))
end
end
local formatted_section = format_chapterlike("section", "section ")
if formatted_section then
add(sep_comma())
add(formatted_section)
end
-- video game stuff
local system = parse_and_format_annotated_text("system")
if system then
add(sep_comma() .. system)
end
local scene = parse_and_format_annotated_text("scene")
if scene then
add(L(", scene: ") .. scene)
end
local level = parse_and_format_annotated_text("level")
if level then
add(L(", level/area: ") .. level)
end
local note = parse_and_format_annotated_text("note")
if note then
add(sep_comma() .. note)
end
local note_plain = parse_and_format_annotated_text("note_plain")
if note_plain then
add(" " .. note_plain)
end
-- Wrapper around format_numeric_param that inserts the formatted text with optional preceding text.
local function handle_numeric_param(paramname, singular_desc, pretext)
local numspec = format_numeric_param(paramname, singular_desc)
if numspec then
add((pretext or "") .. numspec)
end
end
-- l10n: pretext is the leading separator before each piece; format_numeric_param
-- internally produces "第N頁/欄/行" or "<val>頁/欄/行" in zh mode.
handle_numeric_param("page", a("page_prefix") or "page", sep_comma())
handle_numeric_param("column", a("column_prefix") or "column", sep_comma())
handle_numeric_param("line", a("line_prefix") or "line", sep_comma())
-- FIXME: Does this make sense? What is other=?
local other = parse_and_format_annotated_text("other")
if other then
add(sep_comma() .. other)
end
end
local function add_authors(args, last_first)
-- Find maximum indexed author or last name.
local maxind = math.max(args.author.maxindex, args.last.maxindex)
-- Include max index of ancillary params so we get an error message about their use without the primary params.
local ancillary_params =
{"trans-author", "authorlink", "trans-authorlink", "first", "trans-first", "trans-last"}
for _, ancillary in ipairs(ancillary_params) do
maxind = math.max(maxind, args[ancillary].maxindex)
end
local num_authors = 0
for i = 1, maxind do
local ind = i == 1 and "" or i
local author, last = args.author[i], args.last[i]
if author or last then
local this_num_authors = add_author(
author,
"author" .. ind,
args["trans-author"][i],
"trans-author" .. ind,
args.authorlink[i],
"authorlink" .. ind,
args["trans-authorlink"][i],
"trans-authorlink" .. ind,
args.first[i],
"first" .. ind,
args["trans-first"][i],
"trans-first" .. ind,
last,
"last" .. ind,
args["trans-last"][i],
"trans-last" .. ind,
last_first
)
num_authors = num_authors + this_num_authors
sep = last_first and sep_semicolon() or sep_comma()
else
for _, cant_have in ipairs(ancillary_params) do
if args[cant_have][i] then
error(("Can't have |%s%s= without |author%s= or |last%s="):format(cant_have, ind, ind, ind))
end
end
end
end
return num_authors
end
local function add_newversion()
-- If there's a "newversion" section, add the new-version text.
if has_newversion() then
sep = nil
--Test for new version of work.
add(sep_semicolon())
if args.newversion then -- newversion= is intended for English text, e.g. "quoted in" or "republished as".
add(args.newversion)
elseif not args.edition2 then
if has_new_title_or_author() then
add(L("republished as"))
else
add(L("republished"))
end
end
add(" ")
return ""
else
return ", "
end
end
------------------- Now we start outputting text ----------------------
local need_comma = false
-- Set this now so a() works just below.
get_full_paramname = make_get_full_paramname("")
if args.brackets then
add("[")
end
bold_year = not format_as_cite
year_last = format_as_cite
formatted_date, need_date = format_date_args(
a,
get_full_paramname,
alias_map,
nil,
nil,
bold_year,
L("Can we [[:Category:Requests for date|date]] this quote?"),
year_last
)
-- Fetch origdate=/origyear=/origmonth= and format appropriately.
formatted_origdate = format_date_args(a, get_full_paramname, alias_map, "orig", nil, nil, nil, year_last)
local num_authors, need_date
if format_as_cite then
num_authors = add_authors(args, "last_first")
if author_outputted then
sep = " "
end
-- Display all the text that comes after the author, for the main portion.
postauthor("", num_authors, "format_as_cite")
author_outputted = false
sep = add_newversion()
-- Add the newversion author(s).
if args["2ndauthor"] or args["2ndlast"] then
num_authors = add_author(
args["2ndauthor"],
"2ndauthor",
nil,
nil,
args["2ndauthorlink"],
"2ndauthorlink",
nil,
nil,
args["2ndfirst"],
"2ndfirst",
nil,
nil,
args["2ndlast"],
"2ndlast",
nil,
nil,
"last_first"
)
sep = sep_comma()
else
for _, cant_have in ipairs{"2ndauthorlink", "2ndfirst"} do
if args[cant_have] then
error(("Can't have |%s= without |2ndauthor= or |2ndlast="):format(cant_have))
end
end
end
-- Display all the text that comes after the author, for the "newversion" section.
postauthor(2, num_authors, "format_as_cite")
else
if formatted_date then
need_comma = true
add(formatted_date)
end
if formatted_origdate then
need_comma = true
add(SPACE_LBRAC .. formatted_origdate .. RBRAC)
end
if need_comma then
sep = sep_comma()
end
date_outputted = true
num_authors = add_authors(args)
-- Display all the text that comes after the author, for the main portion.
postauthor("", num_authors)
author_outputted = false
sep = add_newversion()
-- Add the newversion author(s).
if args["2ndauthor"] or args["2ndlast"] then
num_authors = add_author(
args["2ndauthor"],
"2ndauthor",
nil,
nil,
args["2ndauthorlink"],
"2ndauthorlink",
nil,
nil,
args["2ndfirst"],
"2ndfirst",
nil,
nil,
args["2ndlast"],
"2ndlast",
nil,
nil
)
sep = sep_comma()
else
for _, cant_have in ipairs{"2ndauthorlink", "2ndfirst"} do
if args[cant_have] then
error(("Can't have |%s= without |2ndauthor= or |2ndlast="):format(cant_have))
end
end
end
-- Display all the text that comes after the author, for the "newversion" section.
postauthor(2, num_authors)
end
if not args.nocolon then
sep = nil
-- l10n: trailing colon — zh uses fullwidth ":" with no following space
add(output_mode == "zh" and ZH_COLON or ":")
elseif args.usenodot and not args.nodot then
-- l10n: trailing period — zh uses "。"
add(output_mode == "zh" and "。" or ".")
end
-- Concatenate output portions to form output text.
local output_text = concat(output)
-- Remainder of code handles adding categories. We add one or more of the following categories:
--
-- 1. [[Category:LANG terms with quotations]], based on the first language code in termlang= or 1=. Added to
-- mainspace, Reconstruction: and Appendix: pages as well as Citations: pages if the corresponding mainspace
-- page exists. Not added if nocat= is given. Note that [[Module:usex]] adds the same category using the same
-- logic, but we do it here too because we may not have a quotation to format. (We add in those circumstances
-- because typically when there's no quotation to format, it's because it's formatted manually underneath the
-- citation, or using {{ja-x}}, {{th-x}} or similar.)
-- 2. [[Category:Requests for date in LANG entries]], based on the first language code in 1=. Added to mainspace,
-- Reconstruction:, Appendix: and Citations: pages unless nocat= is given.
-- 3. [[Category:Quotations using nocat parameter]], if nocat= is given. Added to mainspace, Reconstruction:,
-- Appendix: and Citations: pages.
local categories = {}
local termlang = get_first_lang(args.termlang or argslang)
if args.nocat then
if format_as_cite then
insert(tracking_categories, "Citations using nocat parameter")
else
insert(tracking_categories, "Quotations using nocat parameter")
end
else
-- don't create language tracking categories for citations
if not format_as_cite then
local title
if args.pagename then -- for testing, doc pages, etc.
title = mw.title.new(args.pagename)
if not title then
error(("Bad value for `args.pagename`: '%s'"):format(args.pagename))
end
else
title = mw.title.getCurrentTitle()
end
-- Only add [[Citations:foo]] to [[:Category:LANG terms with quotations]] if [[foo]] exists.
local ok_to_add_cat
if title.nsText ~= "Citations" then
ok_to_add_cat = true
else
local mainspace_title = mw.title.new(title.text)
if mainspace_title and mainspace_title.exists then
ok_to_add_cat = true
end
end
if ok_to_add_cat then
insert(categories, termlang:getFullName() .. " terms with quotations")
end
end
if need_date then
local argslangobj = get_first_lang(argslang)
insert(categories, "Requests for date in " .. argslangobj:getCanonicalName() .. " entries")
end
end
return output_text .. (
not lang and "" or
(#categories > 0 and format_categories(categories, lang, args.sort) or "") .. (
#tracking_categories > 0
and format_categories(
tracking_categories,
lang,
args.sort,
nil,
not page_should_be_ignored(mw.title.getCurrentTitle().fullText)
)
or ""
)
)
end
-- Alias specs for type= and type2=. Each spec is `{canon, aliases, with_newversion}` where `canon` is the canonical
-- parameter (with "2" added if type2= is being handled), `aliases` is a comma-separated string of aliases (with "2"
-- added if type2= is being handled, except for numeric params), and `with_newversion` indicates whether we should
-- process this spec if type2= is being handled.
local type_alias_specs = {
av = {
{"author", "writer,writers", true},
{"chapter", "episode", true},
{"chapterurl", "episodeurl", true},
{"trans-chapter", "trans-episode", true},
{"chapter_tlr", "episode_tlr,episode_tlrs,episode_translator,episode_translators", true},
{"chapter_series", "episode_series", true},
{"chapter_seriesvolume", "episode_seriesvolume", true},
{"chapter_number", "episode_number", true},
{"chapter_plain", "episode_plain", true},
{"volume", "season", true},
{"volumes", "seasons", true},
{"volume_plain", "season_plain", true},
{"volumeurl", "seasonurl", true},
{"platform", "network", true},
},
book = {
{"author", "3"},
{"title", "4"},
{"url", "5"},
{"year", "2"},
{"page", "6"},
{"text", "7"},
{"t", "8"},
},
journal = {
{"year", "2"},
{"author", "3"},
{"chapter", "title,article,4", true},
{"chapterurl", "titleurl,articleurl", true},
{"trans-chapter", "trans-title,trans-article", true},
{"chapter_tlr", "title_tlr,title_tlrs,title_translator,title_translators,article_tlr,article_tlrs,article_translator,article_translators", true},
{"chapter_series", "title_series,article_series", true},
{"chapter_seriesvolume", "title_seriesvolume,article_seriesvolume", true},
{"chapter_number", "title_number,article_number", true},
{"chapter_plain", "title_plain,article_plain", true},
{"title", "journal,magazine,newspaper,work,5", true},
{"trans-title", "trans-journal,trans-magazine,trans-newspaper,trans-work", true},
{"tlr", "journal_tlr,journal_tlrs,journal_translator,journal_translators,magazine_tlr,magazine_tlrs,magazine_translator,magazine_translators,newspaper_tlr,newspaper_tlrs,newspaper_translator,newspaper_translators,work_tlr,work_tlrs,work_translator,work_translators", true},
{"url", "6,journalurl,magazineurl,newspaperurl,workurl", true},
{"page", "7"},
{"source", "newsagency,news_agency", true},
{"text", "8"},
{"t", "9"},
},
}
-- Process interally-handled aliases related to type= or type2=. `args` is a table of arguments; `typ` is the value of
-- type= or type2=; newversion=true if we're dealing with type2=; alias_map is used to keep track of alias mappings
-- seen.
local function process_type_aliases(args, typ, newversion, alias_map)
local ind = newversion and "2" or ""
local deprecated = ine(args.lang)
if not type_alias_specs[typ] then
local possible_values = {}
for possible, _ in pairs(type_alias_specs) do
insert(possible_values, possible)
end
sort(possible_values)
error(
("Unrecognized value '%s' for type%s=; possible values are %s"):format(
typ,
ind,
concat(possible_values, ",")
)
)
end
for _, alias_spec in ipairs(type_alias_specs[typ]) do
local canon, aliases, with_newversion = unpack(alias_spec)
if with_newversion or not newversion then
canon = canon .. ind
aliases = split(aliases, ",", true)
local saw_alias = nil
for _, alias in ipairs(aliases) do
if alias:match("^%d+$") then
alias = tonumber(alias)
if deprecated then
alias = alias - 1
end
else
alias = alias .. ind
end
if args[alias] then
if saw_alias == nil then
saw_alias = alias
else
error(("|%s= and |%s= are aliases; cannot specify a value for both"):format(saw_alias, alias))
end
end
end
if saw_alias and (not newversion or type(saw_alias) == "string") then
if args[canon] then
error(("|%s= is an alias of |%s=; cannot specify a value for both"):format(saw_alias, canon))
end
args[canon] = args[saw_alias]
-- Wipe out the original after copying. This is important in case of a param that has general significance
-- but has been redefined (e.g. {{quote-av}} redefines number= for the episode number, and
-- {{quote-journal}} redefines title= for the chapter= (article). It's also important due to unhandled
-- parameter checking.
args[saw_alias] = nil
alias_map[canon] = saw_alias
end
end
end
end
-- Clone and combine frame's and parent's args while also assigning nil to empty strings. Handle aliases and ignores.
local function clone_args(direct_args, parent_args)
local args = {}
-- Processing parent args must come first so that direct args override parent args. Note that if a direct arg is
-- specified but is blank, it will still override the parent arg (with nil).
for pname, param in pairs(parent_args) do
-- [[Special:WhatLinksHere/Wiktionary:Tracking/quote/param/PARAM]]
track("param/" .. pname)
args[pname] = ine(param)
end
-- Process ignores. The value of `ignore` is a comma-separated list of parameter names to ignore (erase). We need to
-- do this before aliases due to {{quote-song}}, which sets chapter= to the value of title= in the direct params and
-- sets title= to the value of album= using an alias. If we do the ignores after aliases, we get an error during alias
-- processing, saying that title= and its alias album= are both present.
local ignores = ine(direct_args.ignore)
if ignores then
for ignore in gsplit(ignores, "%s*,%s*") do
args[ignore] = nil
end
end
local alias_map = {}
local other_controls = {}
-- noroman
local noroman = ine(direct_args.noroman)
if noroman then
other_controls.overrides = other_controls.overrides or {}
for param in gsplit(noroman, "%s*,%s*") do
other_controls.overrides[param] = (other_controls.overrides[param] or {})
other_controls.overrides[param].noroman = true
end
end
-- Process internally-specified aliases using type= or type2=.
local typ = args.type or direct_args.type
if typ then
process_type_aliases(args, typ, false, alias_map)
end
local typ2 = args.type2 or direct_args.type2
if typ2 then
process_type_aliases(args, typ2, true, alias_map)
end
-- Process externally-specified aliases. The value of `alias` is a list of semicolon-separated specs, each of which
-- is of the form DEST:SOURCE,SOURCE,... where DEST is the canonical name of a parameter and SOURCE refers to an
-- alias. Whitespace is allowed between all delimiters. The order of aliases may be important. For example, for
-- {{quote-journal}}, title= contains the article name and is an alias of underlying chapter=, while journal= or
-- work= contains the journal name and is an alias of underlying title=. As a result, the title -> chapter alias
-- must be specified before the journal/work -> title alias.
--
-- Whenever we copy a value from argument SOURCE to argument DEST, we record an entry for the pair in alias_map, so
-- that when we would display an error message about DEST, we display SOURCE instead.
--
-- Do alias processing (and ignore and error_if processing) before processing direct_args so that e.g. we can set up
-- an alias of title -> chapter and then set title= to something else in the direct args ({{quote-hansard}} does
-- this).
--
-- FIXME: Delete this once we've converted all alias processing to internal.
local aliases = ine(direct_args.alias)
if aliases then
-- Allow and discard a trailing semicolon, to make managing multiple aliases easier.
aliases = ugsub(aliases, "%s*;$", "")
for alias_spec in gsplit(aliases, "%s*;%s*") do
local alias_spec_parts = split(alias_spec, "%s*:%s*")
if #alias_spec_parts ~= 2 then
error(("Alias spec '%s' should have one colon in it"):format(alias_spec))
end
local dest, sources = unpack(alias_spec_parts)
sources = split(sources, "%s*,%s*")
local saw_source = nil
for _, source in ipairs(sources) do
if source:match("^%d+$") then
source = tonumber(source)
end
if args[source] then
if saw_source == nil then
saw_source = source
else
error(("|%s= and |%s= are aliases; cannot specify a value for both"):format(saw_source, source))
end
end
end
if saw_source then
if args[dest] then
error(("|%s= is an alias of |%s=; cannot specify a value for both"):format(saw_source, dest))
end
args[dest] = args[saw_source]
-- Wipe out the original after copying. This important in case of a param that has general significance
-- but has been redefined (e.g. {{quote-av}} redefines number= for the episode number, and
-- {{quote-journal}} redefines title= for the chapter= (article). It's also important due to unhandled
-- parameter checking.
args[saw_source] = nil
alias_map[dest] = saw_source
end
end
end
-- Process error_if. The value of `error_if` is a comma-separated list of parameter names to throw an error if seen
-- in parent_args (they are params we overwrite in the direct args).
local error_ifs = ine(direct_args.error_if)
if error_ifs then
for error_if in gsplit(error_ifs, "%s*,%s*") do
if ine(parent_args[error_if]) then
error(
("Cannot specify a value |%s=%s as it would be overwritten or ignored"):format(
error_if,
ine(parent_args[error_if])
)
)
end
end
end
for pname, param in pairs(direct_args) do
-- ignore control params
if pname ~= "ignore" and pname ~= "alias" and pname ~= "error_if" and pname ~= "noroman" then
args[pname] = ine(param)
end
end
return args, alias_map, other_controls
end
local function get_args(frame_args, parent_args, require_lang)
-- FIXME: We are processing arguments twice, once in clone_args() and then again in [[Module:parameters]]. This is
-- wasteful of memory.
local cloned_args, alias_map, other_controls = clone_args(frame_args, parent_args)
local deprecated = ine(parent_args.lang)
local alias_of_t = {alias_of = "t"}
local boolean = {type = "boolean"}
local language_sublist = {type = "language", sublist = true}
local list_allow_holes = {list = true, allow_holes = true}
local script = {type = "script"}
-- First, the "single" params that don't have FOO2 or FOOn versions.
local params = {
[deprecated and "lang" or 1] = {required = require_lang, type = "language", sublist = true, default = "und"},
["lang2"] = language_sublist,
["newversion"] = true,
["author"] = list_allow_holes,
["2ndauthor"] = true,
["trans-author"] = list_allow_holes,
["authorlink"] = list_allow_holes,
["2ndauthorlink"] = true,
["trans-authorlink"] = list_allow_holes,
["first"] = list_allow_holes,
["2ndfirst"] = true,
["trans-first"] = list_allow_holes,
["last"] = list_allow_holes,
["2ndlast"] = true,
["trans-last"] = list_allow_holes,
["nocat"] = boolean,
["nocolon"] = boolean,
-- quote params
text = true,
passage = {alias_of = "text"},
tr = true,
transliteration = {alias_of = "tr"},
ts = true,
transcription = {alias_of = "ts"},
norm = true,
normalization = {alias_of = "norm"},
sc = script,
normsc = script,
sort = true,
subst = true,
footer = true,
lit = true,
t = true,
translation = alias_of_t,
gloss = alias_of_t,
lb = true,
brackets = boolean,
-- original quote params
origtext = true,
origtr = true,
origts = true,
orignorm = true,
origsc = script,
orignormsc = script,
origsubst = true,
origlb = true,
usenodot = boolean,
nodot = boolean,
inline = boolean,
asquote = boolean,
ascite = boolean,
}
-- Most params have PARAM2 variants for use with `newversion`. FIXME: We should generalize this to
-- allow PARAMN variants for any N.
local function add_with_2(param, value)
params[param] = value
params[param .. "2"] = value
end
local function alias_with_2(alias, canon)
params[alias] = {alias_of = canon}
params[alias .. "2"] = {alias_of = canon .. "2"}
end
for _, param12 in ipairs{
"worklang",
"termlang",
"origlang",
"origworklang"
} do
add_with_2(param12, language_sublist)
end
-- Then the newversion params (which have FOO2 versions).
for _, param12 in ipairs{
-- author-like params; author params themselves are either list params (author=, last=, etc.) or single params
-- (2ndauthor=, 2ndlast=, etc.)
"coauthors",
"quotee",
"tlr",
"editor",
"editors",
"mainauthor",
"compiler",
"compilers",
"director",
"directors",
"lyricist",
"lyrics-translator",
"composer",
"role",
"actor",
"artist",
"feat",
-- author control params
"default-authorlabel",
"authorlabel",
-- title
"title",
"trans-title",
"series",
"seriesvolume",
"notitle",
-- entry
"entry",
"entryurl",
"trans-entry",
-- chapter
"chapter",
"chapterurl",
"chapter_number",
"chapter_plain",
"chapter_series",
"chapter_seriesvolume",
"trans-chapter",
"chapter_tlr",
-- section
"section",
"sectionurl",
"section_number",
"section_plain",
"section_series",
"section_seriesvolume",
"trans-section",
-- other video-game params
"system",
"scene",
"level",
-- URL
"url",
"urls",
"archiveurl",
-- edition
"edition",
"edition_plain",
-- ID params
"bibcode",
"doi",
"isbn",
"issn",
"jstor",
"lccn",
"oclc",
"ol",
"pmid",
"pmcid",
"ssrn",
"urn",
"id",
-- misc date params; most date params handled below
"archivedate",
"accessdate",
"nodate",
-- numeric params handled below
-- other params
"type",
"genre",
"format",
"medium",
"others",
"quoted_in",
"location",
"publisher",
"original",
"by",
"deriv",
"note",
"note_plain",
"other",
"source",
"platform",
} do
add_with_2(param12, true)
end
-- Then the aliases of newversion params (which have FOO2 versions).
for _, param12_aliased in ipairs{
{"role", "roles"},
{"role", "speaker"},
{"tlr", "tlrs"},
{"tlr", "translator"},
{"tlr", "translators"},
{"chapter_tlr", "chapter_tlrs"},
{"chapter_tlr", "chapter_translator"},
{"chapter_tlr", "chapter_translators"},
{"doi", "DOI"},
{"isbn", "ISBN"},
{"issn", "ISSN"},
{"jstor", "JSTOR"},
{"lccn", "LCCN"},
{"oclc", "OCLC"},
{"ol", "OL"},
{"pmid", "PMID"},
{"pmcid", "PMCID"},
{"ssrn", "SSRN"},
{"urn", "URN"},
} do
local canon, alias = unpack(param12_aliased)
alias_with_2(alias, canon)
end
-- Then the date params.
for _, datelike in ipairs{{"", ""}, {"orig", ""}, {"", "_published"}} do
local pref, suf = unpack(datelike)
for _, arg in ipairs{"date", "year", "month", "start_date", "start_year", "start_month"} do
add_with_2(pref .. arg .. suf, true)
end
end
local numeric_param_suffixes = {"", "s", "_plain", "url", "_prefix"}
-- Then the numeric params.
for _, numeric in ipairs{"volume", "issue", "number", "line", "page", "column"} do
for _, suf in ipairs(numeric_param_suffixes) do
add_with_2(numeric .. suf, true)
end
end
-- And the aliases of numeric params.
for _, numeric_aliased in ipairs{{"volume", "vol"}} do
local canon, alias = unpack(numeric_aliased)
for _, suf in ipairs(numeric_param_suffixes) do
alias_with_2(alias .. suf, canon .. suf)
end
end
return process_params(cloned_args, params), alias_map, other_controls
end
local function get_origtext_params(args)
local origtext, origtextlang, origsc, orignormsc
if args.origtext then
-- Wiktionary language codes have at least two lowercase letters followed possibly by lowercase letters and/or
-- hyphens (there are more restrictions but this is close enough). Also check for nonstandard Latin etymology
-- language codes (e.g. VL. or LL.). (There used to be more nonstandard codes but they have all been
-- eliminated.)
origtextlang, origtext = args.origtext:match("^(%l%l[%l-]*):([^ ].*)$")
if not origtextlang then
-- Special hack for Latin variants, which can have nonstandard etym codes, e.g. VL., LL.
origtextlang, origtext = args.origtext:match("^(%uL%.):([^ ].*)$")
end
if not origtextlang then
error("origtext= should begin with a language code prefix")
end
origtextlang = get_lang(origtextlang, nil, "allow etym") or
error("origtext= should begin with a language code prefix")
origsc = args.origsc
orignormsc = args.orignormsc
else
for _, noparam in ipairs{"origtr", "origts", "origsc", "orignorm", "orignormsc", "origsubst", "origlb"} do
if args[noparam] then
error(("Cannot specify %s= without origtext="):format(noparam))
end
end
end
return origtext, origtextlang, origsc, orignormsc
end
local function get_quote(args, is_cite)
local text = args.text
local gloss = args.t
local tr = args.tr
local ts = args.ts
local norm = args.norm
local sc = args.sc
local normsc = args.normsc
-- Fetch original-text parameters.
local origtext, origtextlang, origsc, orignormsc = get_origtext_params(args)
-- If any quote-related args are present, display the actual quote; otherwise, display nothing.
if text or gloss or tr or ts or norm or args.origtext then
-- Pass "und" here rather than cause an error; there will be an error on mainspace, Citations, etc. pages
-- in any case in source() if the language is omitted.
local lang = get_first_lang(args[1] or args.lang)
local termlang = args.termlang and get_first_lang(args.termlang) or lang
local usex_data = {
lang = lang,
termlang = termlang,
usex = text,
sc = sc,
translation = gloss,
normalization = norm,
normsc = normsc,
transliteration = tr,
transcription = ts,
brackets = args.brackets,
subst = args.subst,
lit = args.lit,
footer = args.footer,
qq = parse_and_format_labels(args.lb, lang),
quote = "quote-meta",
orig = origtext,
origlang = origtextlang,
origsc = origsc,
orignorm = args.orignorm,
orignormsc = orignormsc,
origtr = args.origtr,
origts = args.origts,
origsubst = args.origsubst,
origqq = parse_and_format_labels(args.origlb, lang),
noreq = args.noreq,
nocat = is_cite or args.nocat,
}
if args.inline then
-- don't let usex format the footer, otherwise it gets inlined with the rest of the quoted text
usex_data.footer = nil
usex_data.inline = 1
text = format_usex(usex_data)
if text then
text = " “" .. text .. "”"
else
text = ""
end
if args.footer then
text = text .. "<dl><dd>" .. args.footer .. "</dd></dl>"
end
else
text = "<dl><dd>" .. format_usex(usex_data) .. "</dd></dl>"
end
elseif args.footer then
text = "<dl><dd>" .. args.footer .. "</dd></dl>"
end
return text
end
-- External interface, meant to be called from a template. Replaces {{quote-meta}} and meant to be the primary
-- interface for {{quote-*}} templates.
function export.quote_t(frame)
local args, alias_map, other_controls = get_args(frame.args, frame:getParent().args, "require_lang")
if args.ascite then
return export.cite_t(frame)
end
return show_quote(args, alias_map, other_controls)
end
function show_quote(args, alias_map, other_controls)
local parts = {}
insert(parts, '<div class="citation-whole"><span class="cited-source">')
insert(parts, export.source(args, alias_map, nil, other_controls))
insert(parts, "</span>")
insert(parts, get_quote(args))
insert(parts, "</div>")
local retval = concat(parts)
return deprecated and frame:expandTemplate({
title = "check deprecated lang param usage",
args = {retval, lang = args.lang},
}) or retval
end
-- External interface, meant to be called from a template. Replaces {{cite-meta}} and meant to be the primary
-- interface for {{cite-*}} templates.
function export.cite_t(frame)
local parent_args = {}
for k, v in pairs(frame:getParent().args) do
parent_args[k] = v
end
-- use "und" as lang if none provided
if parent_args[1] == nil then
parent_args[1] = "und"
end
local args, alias_map, other_controls = get_args(frame.args, parent_args)
if args.asquote then
return show_quote(args, alias_map, other_controls)
end
return show_cite(args, alias_map, other_controls)
end
function show_cite(args, alias_map, other_controls)
local parts = {}
-- don't nag for translations
if args.text and not args.t then
args.noreq = 1
end
local len_visible = args.text and ulen((args.text:gsub("<[^<>]+>", ""))) or 0
if len_visible == 0 then
if not args.t or args.t == "-" then
args.nocolon = true
end
elseif args.inline == nil then
args.inline = not (
args.block_text
or len_visible > 300
or (args.t and not args.t == "-" and len_visible < 80)
or string.match(args.text, "<br>")
)
end
insert(parts, '<span class="citation-whole"><span class="cited-source">')
insert(parts, export.source(args, alias_map, "format_as_cite", other_controls))
insert(parts, "</span>")
insert(parts, get_quote(args, "is_cite"))
insert(parts, "</span>")
local retval = concat(parts)
return deprecated
and frame:expandTemplate({
title = "check deprecated lang param usage",
args = {retval, lang = args.lang},
})
or retval
end
-- External interface, meant to be called from a template.
function export.call_quote_template(frame)
return export.call_template(frame)
end
-- External interface, for calling a template with overloaded parameters.
function export.overload(frame)
local iargs, overloaded_args = process_params(frame.args, {
[1] = {required = true}
}, true)
local parent_args = frame:getParent().args
for k, v in pairs(parent_args) do
overloaded_args[k] = v
end
return frame:expandTemplate{title = iargs[1], args = overloaded_args}
end
-- External interface, meant to be called from a template.
function export.call_template(frame)
local parameter_sublist = {type = "parameter", sublist = true}
local iargs, other_direct_args = process_params(frame.args, {
["template"] = true,
["textparam"] = parameter_sublist,
["pageparam"] = parameter_sublist,
["propagateparams"] = parameter_sublist,
["allowparams"] = {sublist = true}, -- Doesn't use type = "parameter", because any that end in :list get processed differently.
}, true)
local function fetch_param(source, params)
for _, param in ipairs(params) do
if source[param] then
return source[param]
end
end
return nil
end
local params = {
["text"] = true,
["passage"] = true,
["footer"] = true, -- always propagates, but gets special formatting
}
-- paramaters that can be used during template declaration or included in template calls
-- if the template is called with param=- it will set any declared value to nil
local always_propagate = {
["brackets"] = true,
["usenodot"] = true,
["nodot"] = true,
["ascite"] = true,
["asquote"] = true,
}
for k,v in pairs(always_propagate) do
params[k] = v
end
local textparam = iargs.textparam or {}
for _, param in ipairs(textparam) do
params[param] = true
end
local pageparam = iargs.pageparam or {}
local pageparam1 = pageparam[1]
if pageparam1 ~= nil then
params["page"], params["pages"] = true, true
for _, param in ipairs(pageparam) do
params[param] = true
end
end
local allowparams, allow_all, list = iargs.allowparams, false
if allowparams ~= nil then
for _, allow in ipairs(allowparams) do
local param = allow:match("^(.*):list$")
if param then
if list == nil then
list = {list = true}
end
params[scribunto_parameter_key(param)] = list
elseif allow == "*" then
track("no parameter checking")
allow_all = true
else
params[scribunto_parameter_key(allow)] = true
end
end
else
local parent = frame:getParent()
local template_name = parent:getTitle()
local template_title = new_title(template_name)
local content = template_title:getContent()
local allowed_params, seen = {}, {}
-- Detect all params used by the parent template. param:get_name() takes the
-- parent frame arg table as an argument so that preprocessing will take
-- them into account, since it will matter if the name contains another
-- parameter (e.g. the outer param in "{{{foo{{{bar}}}baz}}}" will change
-- depending on the value for bar=). `seen` memoizes results based on the
-- raw parameter text (which is stored as a string in the parameter object),
-- which avoids unnecessary param:get_name() calls, which are non-trivial.
for param in find_parameters(content) do
local raw = param.raw
if not seen[raw] then
allow = param:get_name(template_args)
params[scribunto_parameter_key(allow)] = true
seen[raw] = true
end
end
end
local propagateparams = iargs.propagateparams or {}
for _, param in ipairs(propagateparams) do
params[param] = true
end
local parent_args = frame:getParent().args
local args = process_params(parent_args, params, allow_all)
parent_args = shallow_copy(parent_args)
if textparam[1] ~= "-" then
other_direct_args.passage = args.text or args.passage or fetch_param(args, textparam)
end
if not (pageparam1 == nil or pageparam1 == "-") then
other_direct_args.page = fetch_param(args, pageparam) or args.page or other_direct_args.page or nil
other_direct_args.pages = args.pages or other_direct_args.pages or nil
if other_direct_args.page == "-" then
other_direct_args.page = nil
end
if other_direct_args.pages == "-" then
other_direct_args.pages = nil
end
end
if args.footer then
other_direct_args.footer = frame:expandTemplate{title = "small", args = {args.footer}}
end
for param, _ in pairs(always_propagate) do
if args[param] == "-" then
other_direct_args[param] = nil
else
other_direct_args[param] = args[param] or other_direct_args[param] or nil
end
end
-- authorlink=- can be used to prevent copying of author= to authorlink= but we don't want to propagate this to
-- the actual {{quote-*}} code.
if other_direct_args.authorlink == "-" then
other_direct_args.authorlink = nil
end
for _, param in ipairs(propagateparams) do
if args[param] then
other_direct_args[param] = args[param]
end
end
return frame:expandTemplate{title = iargs.template or "quote-book", args = other_direct_args}
end
local paramdoc_param_replacements = {
passage = {
param_with_synonym = "<<synonym>>, {{para|text}}, or {{para|passage}}",
param_no_synonym = "{{para|text}} or {{para|passage}}",
text = [=[
* <<params>> – the passage to be quoted.]=],
},
page = {
param_with_synonym = "<<synonym>> or {{para|page}}, or {{para|pages}}",
param_no_synonym = "{{para|page}} or {{para|pages}}",
text = [=[
* <<params>> – '''mandatory in some cases''': the page number(s) quoted from. When quoting a range of pages, note the following:
** Separate the first and last pages of the range with an [[en dash]], like this: {{para|pages|10–11}}.
** You must also use {{para|pageref}} to indicate the page to be linked to (usually the page on which the Wiktionary entry appears).
: This parameter must be specified to have the template link to the online version of the work.]=],
},
page_with_roman_preface = {
param_with_synonym = {"inherit", "page"},
param_no_synonym = {"inherit", "page"},
text = [=[
* <<params>> – '''mandatory in some cases''': the page number(s) quoted from. If quoting from the preface, specify the page number(s) in lowercase Roman numerals. When quoting a range of pages, note the following:
** Separate the first and last page number of the range with an [[en dash]], like this: {{para|pages|10–11}} or {{para|pages|iii–iv}}.
** You must also use {{para|pageref}} to indicate the page to be linked to (usually the page on which the Wiktionary entry appears).
: This parameter must be specified to have the template link to the online version of the work.]=],
},
chapter = {
param_with_synonym = "<<synonym>> or {{para|chapter}}",
param_no_synonym = "{{para|chapter}}",
text = [=[
* <<params>> – the name of the chapter quoted from.]=],
},
roman_chapter = {
param_with_synonym = {"inherit", "chapter"},
param_no_synonym = {"inherit", "chapter"},
text = [=[
* <<params>> – the chapter number quoted from in uppercase Roman numerals.]=],
},
arabic_chapter = {
param_with_synonym = {"inherit", "chapter"},
param_no_synonym = {"inherit", "chapter"},
text = [=[
* <<params>> – the chapter number quoted from in Arabic numerals.]=],
},
trailing_params = {
text = [=[
* {{para|footer}} – a comment on the passage quoted.
* {{para|brackets}} – use {{para|brackets|on}} to surround a quotation with [[bracket#Noun|brackets]]. This indicates that the quotation either contains a mere mention of a term (for example, “some people find the word '''''manoeuvre''''' hard to spell”) rather than an actual use of it (for example, “we need to '''manoeuvre''' carefully to avoid causing upset”), or does not provide an actual instance of a term but provides information about related terms.]=],
},
}
function export.paramdoc(frame)
local parargs = frame:getParent().args
local args = process_params(parargs, {
[1] = true,
})
local text = args[1]
local function do_param_with_optional_synonym(param, text_to_sub, paramtext_synonym, paramtext_no_synonym)
local function sub_param(synonym)
local subbed_paramtext
if synonym then
subbed_paramtext = paramtext_synonym:gsub("<<synonym>>", "{{para|" .. replacement_escape(synonym) .. "}}")
else
subbed_paramtext = paramtext_no_synonym
end
return frame:preprocess((text_to_sub:gsub("<<params>>", replacement_escape(subbed_paramtext))))
end
text = text:gsub("<<" .. pattern_escape(param) .. ">>", function()
return sub_param()
end)
text = text:gsub("<<" .. pattern_escape(param) .. ":(.-)>>", sub_param)
end
local function fetch_text(param_to_replace, key)
local spec = paramdoc_param_replacements[param_to_replace]
local val = spec[key]
if type(val) == "string" then
return val
end
if type(val) == "table" and val[1] == "inherit" then
return fetch_text(val[2], key)
end
error(
"Internal error: Unrecognized value for param '"
.. param_to_replace
.. "', key '"
.. key
.. "': "
.. mw.dumpObject(val)
)
end
for param_to_replace, spec in pairs(paramdoc_param_replacements) do
if not spec.param_no_synonym then
-- Text to substitute directly.
text = text:gsub("<<" .. pattern_escape(param_to_replace) .. ">>", function()
return frame:preprocess(fetch_text(param_to_replace, "text"))
end)
else
do_param_with_optional_synonym(
param_to_replace,
fetch_text(param_to_replace, "text"),
fetch_text(param_to_replace, "param_with_synonym"),
fetch_text(param_to_replace, "param_no_synonym")
)
end
end
-- Remove final newline so template code can add a newline after invocation
text = text:gsub("\n$", "")
return text
end
return export
mui5bx00mzzirfqbr1vn4bthjcohn5p
9787514
9787477
2026-05-24T16:09:44Z
TongcyDai
53191
9787514
Scribunto
text/plain
--[=[
This module contains functions to implement quote-* templates.
Author: Benwing2; conversion into Lua of {{quote-meta/source}} template,
written by Sgconlaw with some help from Erutuon and Benwing2.
The main interface is quote_t(). Note that the source display is handled by source(), which reads both the
arguments passed to it *and* the arguments passed to the parent template, with the former overriding the latter.
]=]
local export = {}
--[=[
FIXME:
1. Dates like `1 march 2025` with the day of the month being 1 and the month lowercased are treated as month-year-only.
The relevant code checks for a capitalized word; it should probably instead check for the actual month names or
abbrevs.
]=]
-- Named constants for all modules used, to make it easier to swap out sandbox versions.
local check_isxn_module = "Module:check isxn"
local debug_track_module = "Module:debug/track"
local en_utilities_module = "Module:en-utilities"
local italics_module = "Module:italics"
local labels_module = "Module:labels"
local languages_module = "Module:languages"
local languages_error_module = "Module:languages/error"
local links_module = "Module:links"
local number_utilities_module = "Module:number utilities"
local parameters_module = "Module:parameters"
local parse_utilities_module = "Module:parse utilities"
local qualifier_module = "Module:qualifier"
local roman_numerals_module = "Module:roman numerals"
local scribunto_module = "Module:Scribunto"
local script_utilities_module = "Module:script utilities"
local scripts_module = "Module:scripts"
local string_pattern_escape_module = "Module:string/patternEscape"
local string_replacement_escape_module = "Module:string/replacementEscape"
local string_utilities_module = "Module:string utilities"
local table_module = "Module:table"
local template_parser_module = "Module:template parser"
local usex_module = "Module:usex"
local usex_templates_module = "Module:usex/templates"
local utilities_module = "Module:utilities"
local yesno_module = "Module:yesno"
local concat = table.concat
local insert = table.insert
local new_title = mw.title.new
local remove = table.remove
local require = require
local sort = table.sort
local u = mw.ustring.char
local ugsub = mw.ustring.gsub
local umatch = mw.ustring.match
local unpack = unpack or table.unpack -- Lua 5.2 compatibility
-- Use HTML entities here to avoid parsing issues (esp. with brackets)
local SEMICOLON_SPACE = "; "
local SPACE_LBRAC = " ["
local RBRAC = "]"
local TEMP_LT = u(0xFFF1)
local TEMP_GT = u(0xFFF2)
local TEMP_LBRAC = u(0xFFF3)
local TEMP_RBRAC = u(0xFFF4)
local TEMP_SEMICOLON = u(0xFFF5)
-- ============================================================
-- l10n: Chinese localization infrastructure (zhwikt fork).
--
-- output_mode is detected once per export.source() invocation by
-- scanning every args value for CJK characters. If any value
-- contains CJK script, the module switches to "zh" mode and
-- substitutes Chinese framing at every print site; otherwise it
-- stays in "en" mode and behaves byte-for-byte identically to
-- enwikt. This avoids awkward half-translated output like
-- "第second版" when an editor copies an English template verbatim.
--
-- All localization touchpoints below this block are marked with
-- "-- l10n:" comments. To audit, grep for "l10n:". Simple word
-- substitutions go through L(); word-order shifts go through
-- build_* helper functions.
-- ============================================================
-- l10n: output mode, set per-invocation by detect_output_mode().
local output_mode = "en"
-- l10n: full-width punctuation constants for zh mode.
local ZH_COMMA = ","
local ZH_SEMICOLON = ";"
local ZH_COLON = ":"
local ZH_LPAREN = "("
local ZH_RPAREN = ")"
local ZH_LQUOTE = "「"
local ZH_RQUOTE = "」"
-- l10n: CJK script ranges used by has_cjk(). Covers Han ideographs,
-- kana and Hangul but deliberately excludes fullwidth punctuation
-- so a stray "," in an otherwise-English value doesn't trip zh mode.
local CJK_PATTERN = "[" ..
u(0x3400) .. "-" .. u(0x4DBF) .. -- CJK Unified Ideographs Extension A
u(0x4E00) .. "-" .. u(0x9FFF) .. -- CJK Unified Ideographs
u(0x3040) .. "-" .. u(0x309F) .. -- Hiragana
u(0x30A0) .. "-" .. u(0x30FF) .. -- Katakana
u(0xAC00) .. "-" .. u(0xD7AF) .. -- Hangul Syllables
"]"
local function has_cjk(s)
return type(s) == "string" and umatch(s, CJK_PATTERN) ~= nil
end
-- l10n: scan all args values (including list-typed params) for CJK.
-- trans-* params are exempt: they exist to provide display translations
-- of titles/chapters/etc., not to indicate the source work is in CJK.
-- So a Chinese trans-title on an otherwise-English template keeps the
-- output in en mode.
local function detect_output_mode(args)
for k, v in pairs(args) do
if type(k) == "string" and k:find("^trans%-") then
-- l10n: skip trans-* params (see comment above).
elseif type(v) == "string" then
if has_cjk(v) then return "zh" end
elseif type(v) == "table" then
for _, vv in pairs(v) do
if type(vv) == "string" and has_cjk(vv) then return "zh" end
end
end
end
return "en"
end
-- l10n: bilingual lookup table. Keys are the exact English literals
-- used at enwikt print sites. L() returns the key unchanged in en
-- mode; in zh mode it returns the value, falling back to the key on
-- a miss so the module stays functional under unexpected inputs.
local STRINGS = {
-- newversion verbs
["republished"] = "再版",
["republished as"] = "再版為",
-- author-like roles, prefix form (used when other authors precede)
["translated by "] = "由 ",
["edited by "] = "由 ",
["compiled by "] = "由 ",
["directed by "] = "由 ",
["performed by "] = "由 ",
["spoken by "] = "由 ",
["quoting "] = "引用 ",
-- author-like roles, suffix form (used when role-bearer comes first)
[", transl."] = "(譯)",
[", editor"] = "(編)",
[", editors"] = "(編)",
[", compiler"] = "(編纂)",
[", compilers"] = "(編纂)",
[", director"] = "(導演)",
[", directors"] = "(導演)",
[", quotee"] = "(被引用者)",
[", quotees"] = "(被引用者)",
-- bare-noun anonymous suffixes (used when role-bearer is anonymous)
[" translator"] = "譯者",
[" lyricist"] = "作詞者",
[" lyrics translator"] = "譯詞者",
[" composer"] = "作曲者",
-- music role suffixes
[" (lyrics)"] = "(作詞)",
[" (translation)"] = "(譯詞)",
[" (music)"] = "(作曲)",
-- chapter → containing title connector ("Chapter X, in Book Title")
["in "] = "收錄於 ",
-- quoting / sourcing
["sourced from "] = "來源 ",
["quoted in "] = "引述自 ",
-- archive
[", archived from "] = ",原始內容存檔自 ",
["the original"] = "原始內容",
[" on "] = ",存檔時間 ", -- between [URL label] and the archive date
-- video game / misc
[", scene: "] = ",幕:",
[", level/area: "] = ",關卡/區域:",
[" (last accessed)"] = "(最後存取)",
-- generics
["anonymous"] = "佚名",
["actor"] = "演員",
["actors"] = "演員",
["original"] = "原文",
["translation"] = "翻譯",
["unnumbered"] = "未編號",
-- numeric-field suffixes (used by format_numeric_param / format_chapterlike)
["page"] = "頁",
["pages"] = "頁",
["column"] = "-{zh-hans:列;zh-hant:欄}-",
["columns"] = "-{zh-hans:列;zh-hant:欄}-",
["line"] = "行",
["lines"] = "行",
["volume"] = "卷",
["volumes"] = "卷",
["issue"] = "期",
["issues"] = "期",
["number"] = "號",
["numbers"] = "號",
["chapter"] = "章",
["section"] = "節",
["entry"] = "條",
["edition"] = "版",
-- maintenance lines
["Please provide the book title or journal name"] =
"請提供書名或期刊名",
["Please specify the language of the quote using |1="] =
"請以 |1= 指明引文語言",
["Can we [[:Category:Requests for date|date]] this quote?"] =
"能否為此引文加上[[:Category:Requests for date|日期]]?",
["Please provide a date or year"] =
"請提供日期或年份",
}
-- l10n: simple bilingual lookup. Returns the en key unchanged in en mode.
local function L(s)
if output_mode == "en" then return s end
return STRINGS[s] or s
end
-- l10n: mode-aware separators. Read these instead of writing literal
-- ", " / "; " at print sites that need to round-trip both modes.
local function sep_comma()
return output_mode == "zh" and ZH_COMMA or ", "
end
local function sep_semicolon()
return output_mode == "zh" and ZH_SEMICOLON or SEMICOLON_SPACE
end
-- l10n: classify a numeric-field value so the zh formatter can decide
-- between "第N章" (numeric prefix) and "<val>章" / "「<val>」" (textual).
-- CHINESE_NUMERALS covers vernacular (一二...), formal (壹貳...), and
-- shorthand (兩, 廿, 卅, 〇).
local CHINESE_NUMERALS =
"零〇一二三四五六七八九十百千萬億兩两廿卅壹貳贰參叁肆伍陸陆柒捌玖拾佰仟"
local function classify_numeric_value(val)
if not val or val == "" then return "empty" end
local clean = mw.text.trim((val:gsub("<[^>]*>", "")))
if clean == "" then return "empty" end
if umatch(clean, "^[%d%s,%-–—/%.]+$") then return "arabic" end
if clean:match("^[mdclxviMDCLXVI]+$") then return "roman" end
if umatch(clean, "^[" .. CHINESE_NUMERALS .. "%s,/%-–—]+$") then
return "chinese"
end
return "text"
end
local function is_numeric_class(cls)
return cls == "arabic" or cls == "roman" or cls == "chinese"
end
-- l10n: zh-mode rendering for page/column/line/volume/issue/section/etc.
-- Numeric values (Arabic/Roman/Chinese) → "第N<suffix>";
-- textual values → "<val><suffix>" (no leading 第).
local function build_zh_numeric(val, suffix_key)
local cls = classify_numeric_value(val)
local suffix = L(suffix_key)
if is_numeric_class(cls) then
return "第" .. val .. suffix
end
return val .. suffix
end
-- l10n: zh-mode rendering for chapter/section/entry text. Numeric →
-- "第N章"; textual → "「<val>」" (drops the 第N章 wrapper because the
-- value is a chapter NAME, mirroring enwikt's textual_prefix/suffix
-- branch).
local function build_zh_chapterlike(val, suffix_key)
local cls = classify_numeric_value(val)
if is_numeric_class(cls) then
return "第" .. val .. L(suffix_key)
end
return ZH_LQUOTE .. val .. ZH_RQUOTE
end
-- l10n: "translation of X by Y" → "X(Y 譯)".
-- Variants: no by → "X 之翻譯"; no original → "原文翻譯(Y 譯)".
local function build_translation_phrase(origtype, original, by)
if output_mode == "en" then
return origtype .. " of " .. (original or "original")
.. (by and " by " .. by or "")
end
local zh_type = L(origtype)
if original and by then
return original .. ZH_LPAREN .. by .. " " .. zh_type .. ZH_RPAREN
elseif original then
return original .. " 之" .. zh_type
elseif by then
-- l10n: same shape as the main "X(Y 譯)" pattern with X = "原文"
return L("original") .. ZH_LPAREN .. by .. " " .. zh_type .. ZH_RPAREN
end
return L("original") .. zh_type
end
-- l10n: " (in French)" / " (quotation in X; overall work in Y)".
local function build_annotations_paren(annotations)
if output_mode == "en" then
return " (" .. concat(annotations, SEMICOLON_SPACE) .. ")"
end
return ZH_LPAREN .. concat(annotations, ZH_SEMICOLON) .. ZH_RPAREN
end
-- l10n: language-of-work annotation snippets used inside the paren block.
-- zh templates have no inner spaces around lang_name; lang_name is always
-- a Chinese language name in zh mode (resolved via format_langs).
local function build_lang_annotation(kind, lang_name)
if output_mode == "en" then
if kind == "in" then return "in " .. lang_name end
if kind == "quotation_in" then return "quotation in " .. lang_name end
if kind == "overall_work_in" then return "overall work in " .. lang_name end
else
if kind == "in" then return "以" .. lang_name .. "寫成" end
if kind == "quotation_in" then return "引文以" .. lang_name .. "寫成" end
if kind == "overall_work_in" then return "整體作品以" .. lang_name .. "寫成" end
end
end
-- l10n: actor / role phrases.
local function build_actor_as_role(actor)
if output_mode == "en" then return actor .. " as " end
return actor .. " 飾演 "
end
local function build_actor_paren(actor, is_plural)
local label = is_plural and L("actors") or L("actor")
if output_mode == "en" then
return actor .. " (" .. label .. ")"
end
return actor .. ZH_LPAREN .. label .. ZH_RPAREN
end
-- l10n: "published <date> via <platform>" / "published <date>" / "via <platform>".
local function build_published(date, platform)
if output_mode == "en" then
return "published " .. date .. (platform and " via " .. platform or "")
end
if platform then
return date .. " 於 " .. platform .. " 出版"
end
return date .. " 出版"
end
local function build_via(platform)
if output_mode == "en" then return "via " .. platform end
return "透過 " .. platform
end
-- l10n: ", retrieved <date>" → ",於 <date> 擷取" (verb-final shift).
local function build_retrieved(date_str)
if output_mode == "en" then return ", retrieved " .. date_str end
return ZH_COMMA .. "於 " .. date_str .. " 擷取"
end
-- l10n: derive an anonymous-role suffix. enwikt strips leading
-- punctuation/parens out of suffix_without_preceding_authors to get
-- e.g. "transl." → " translator"; we mirror that by recognising our
-- own zh suffix shapes and mapping them to bare role nouns.
local ZH_ANONYMOUS_ROLE_FROM_PAREN = {
["譯"] = "譯者",
["編"] = "編者",
["編纂"] = "編纂者",
["導演"] = "導演者",
["被引用者"] = "被引用者",
["作詞"] = "作詞者",
["譯詞"] = "譯詞者",
["作曲"] = "作曲者",
}
local function derive_anonymous_suffix_zh(zh_suffix)
local inside = umatch(zh_suffix, "^%s*((.-))%s*$")
if inside then
return ZH_ANONYMOUS_ROLE_FROM_PAREN[inside] or inside
end
return mw.text.trim(zh_suffix)
end
-- l10n: zh-mode formatter for the top-level format_date() helper used
-- by archivedate / accessdate / wayback dates. Falls back to the raw
-- timestamp on parse error.
local _zh_lang
local function zh_lang()
if not _zh_lang then _zh_lang = mw.language.new("zh") end
return _zh_lang
end
local function format_zh_date(text)
local lang = zh_lang()
local ok, date = pcall(lang.formatDate, lang, "Y年n月j日", text)
if ok then return date end
return text
end
-- l10n: zh serial join — "A、B和C" / "A、B或C" (no Oxford comma, no
-- spaces around the conjunction since CJK text doesn't use inter-word
-- spacing; mixed Latin items are an acceptable edge case).
local function zh_serial_join(parts, conj)
local n = #parts
if n == 0 then return "" end
if n == 1 then return parts[1] end
local conj_word = (conj == "or") and "或" or "和"
if n == 2 then
return parts[1] .. conj_word .. parts[2]
end
return table.concat(parts, "、", 1, n - 1) .. conj_word .. parts[n]
end
-- ============================================================
-- l10n: end of localization infrastructure block.
-- ============================================================
local function apply_subst(...)
apply_subst = require(usex_module).apply_subst
return apply_subst(...)
end
local function check_isbn(...)
check_isbn = require(check_isxn_module).check_isbn
return check_isbn(...)
end
local function check_issn(...)
check_issn = require(check_isxn_module).check_issn
return check_issn(...)
end
local function debug_track(...)
debug_track = require(debug_track_module)
return debug_track(...)
end
local function decode_entities(...)
decode_entities = require(string_utilities_module).decode_entities
return decode_entities(...)
end
local function embedded_language_links(...)
embedded_language_links = require(links_module).embedded_language_links
return embedded_language_links(...)
end
local function escape_wikicode(...)
escape_wikicode = require(parse_utilities_module).escape_wikicode
return escape_wikicode(...)
end
local function find_best_script_without_lang(...)
find_best_script_without_lang = require(scripts_module).findBestScriptWithoutLang
return find_best_script_without_lang(...)
end
local function find_parameters(...)
find_parameters = require(template_parser_module).find_parameters
return find_parameters(...)
end
local function format_categories(...)
format_categories = require(utilities_module).format_categories
return format_categories(...)
end
local function format_processed_labels(...)
format_processed_labels = require(labels_module).format_processed_labels
return format_processed_labels(...)
end
local function format_qualifier(...)
format_qualifier = require(qualifier_module).format_qualifier
return format_qualifier(...)
end
local function format_usex(...)
format_usex = require(usex_module).format_usex
return format_usex(...)
end
local function get_lang(...)
get_lang = require(languages_module).getByCode
return get_lang(...)
end
local function get_number(...)
get_number = require(number_utilities_module).get_number
return get_number(...)
end
local function get_script(...)
get_script = require(scripts_module).getByCode
return get_script(...)
end
local function gsplit(...)
gsplit = require(string_utilities_module).gsplit
return gsplit(...)
end
local function page_should_be_ignored(...)
page_should_be_ignored = require(usex_templates_module).page_should_be_ignored
return page_should_be_ignored(...)
end
local function parse_inline_modifiers(...)
parse_inline_modifiers = require(parse_utilities_module).parse_inline_modifiers
return parse_inline_modifiers(...)
end
local function parse_inline_modifiers_from_segments(...)
parse_inline_modifiers_from_segments = require(parse_utilities_module).parse_inline_modifiers_from_segments
return parse_inline_modifiers_from_segments(...)
end
local function parse_multi_delimiter_balanced_segment_run(...)
parse_multi_delimiter_balanced_segment_run = require(parse_utilities_module).parse_multi_delimiter_balanced_segment_run
return parse_multi_delimiter_balanced_segment_run(...)
end
local function parse_term_with_lang(...)
parse_term_with_lang = require(parse_utilities_module).parse_term_with_lang
return parse_term_with_lang(...)
end
local function pattern_escape(...)
pattern_escape = require(string_pattern_escape_module)
return pattern_escape(...)
end
local function pluralize(...)
pluralize = require(en_utilities_module).pluralize
return pluralize(...)
end
local function process_params(...)
process_params = require(parameters_module).process
return process_params(...)
end
local function remove_links(...)
remove_links = require(links_module).remove_links
return remove_links(...)
end
local function roman_to_arabic(...)
roman_to_arabic = require(roman_numerals_module).roman_to_arabic
return roman_to_arabic(...)
end
local function replacement_escape(...)
replacement_escape = require(string_replacement_escape_module)
return replacement_escape(...)
end
local function scribunto_parameter_key(...)
scribunto_parameter_key = require(scribunto_module).scribunto_parameter_key
return scribunto_parameter_key(...)
end
local function serial_comma_join(...)
serial_comma_join = require(table_module).serialCommaJoin
return serial_comma_join(...)
end
local function shallow_copy(...)
shallow_copy = require(table_module).shallowCopy
return shallow_copy(...)
end
local function split(...)
split = require(string_utilities_module).split
return split(...)
end
local function split_alternating_runs(...)
split_alternating_runs = require(parse_utilities_module).split_alternating_runs
return split_alternating_runs(...)
end
local function split_and_process_raw_labels(...)
split_and_process_raw_labels = require(labels_module).split_and_process_raw_labels
return split_and_process_raw_labels(...)
end
local function split_on_comma(...)
split_on_comma = require(parse_utilities_module).split_on_comma
return split_on_comma(...)
end
local function tag_text(...)
tag_text = require(script_utilities_module).tag_text
return tag_text(...)
end
local function tag_transcription(...)
tag_transcription = require(script_utilities_module).tag_transcription
return tag_transcription(...)
end
local function tag_translit(...)
tag_translit = require(script_utilities_module).tag_translit
return tag_translit(...)
end
local function ulen(...)
ulen = require(string_utilities_module).len
return ulen(...)
end
local function unitalicize_brackets(...)
unitalicize_brackets = require(italics_module).unitalicize_brackets
return unitalicize_brackets(...)
end
local function upper(...)
upper = require(string_utilities_module).upper
return upper(...)
end
local function usub(...)
usub = require(string_utilities_module).sub
return usub(...)
end
local function yesno(...)
yesno = require(yesno_module)
return yesno(...)
end
local function track(page)
debug_track("quote/" .. page)
end
local function maintenance_line(text)
return '<span class="maintenance-line">(' .. text .. ")</span>"
end
local function isbn(text)
return "[[Special:BookSources/"
.. text
.. "|→ISBN]]"
.. check_isbn(
text,
' <span class="error" style="font-size:88%">Invalid ISBN</span>[[Category:Pages with ISBN errors]]'
)
end
local function issn(text)
return "[https://www.worldcat.org/issn/"
.. text
.. " →ISSN]"
.. check_issn(
text,
' <span class="error" style="font-size:88%">Invalid ISSN</span>[[Category:Pages with ISSN errors]]'
)
end
local function lccn(text)
text = text:gsub(" ", "")
if text:find("-") then
-- old-style LCCN; reformat per request by [[User:The Editor's Apprentice]]
local prefix, part1, part2 = text:match("^(.-)(%d+)%-(%d+)$")
if prefix then
if ulen(part2) < 6 then
part2 = ("0"):rep(6 - ulen(part2)) .. part2
end
text = prefix .. part1 .. part2
end
end
return "[https://lccn.loc.gov/" .. mw.uri.encode(text) .. " →LCCN]"
end
local function format_date(text)
-- l10n: zh mode → "Y年n月j日"; en mode → enwikt #formatdate dmy.
if output_mode == "zh" then
return format_zh_date(text)
end
return mw.getCurrentFrame():callParserFunction("#formatdate", text, "dmy")
end
-- Parse a raw lb= param (or nil) to individual label info objects and then concatenate them appropriately into a
-- qualifier input, respecting flags like `omit_preComma` and `omit_postSpace` in the label specs.
local function parse_and_format_labels(raw_lb, lang)
if not raw_lb then
return nil
end
local labels = split_and_process_raw_labels{labels = raw_lb, lang = lang, nocat = true}
labels = format_processed_labels{labels = labels, lang = lang, no_ib_content = true}
if labels ~= "" then -- not sure labels can be an empty string but it seems possible in some circumstances
return {labels}
end
end
-- Convert a comma-separated list of language codes to a comma-separated list of language names. `fullname` is the
-- name of the parameter from which the list of language codes was fetched.
local function format_langs(langs)
local names = {}
for i, lang in ipairs(langs) do
names[i] = lang:getCanonicalName()
end
if #names == 1 then
return names[1]
end
-- l10n: language list joiner — zh uses 、 + 和 (no Oxford comma).
if output_mode == "zh" then
return zh_serial_join(names, "and")
end
return serial_comma_join(names)
end
local function get_first_lang(langs)
return langs[1] or get_lang("und")
end
--[=[
Normally we parse off inline modifiers and language code prefixes in various places, e.g. he:מרים<tr:Miryem>. But we
exclude HTML entries with <span ...>, <i ...>, <br/> or similar in it, caused by wrapping an argument in {{l|...}},
{{lang|...}} or similar. Basically, all tags of the sort we parse here should consist of a less-than sign, plus letters,
plus a colon, e.g. <tr:...>, so if we see a tag on the outer level that isn't in this format, we don't try to parse it.
The restriction to the outer level is to allow generated HTML inside of e.g. qualifier modifiers, such as
foo<q:similar to {{m|fr|bar}}> (if we end up supporting such modifiers).
Also exclude things that look like URL's from being parsed as having language code prefixes.
]=]
local function val_should_not_be_parsed_for_annotations(val)
return val:find("^[^<]*<%l*[^%l:]") or val:find("^%l+://")
end
local param_mods = {
t = {
-- <t:...> and <gloss:...> are aliases.
item_dest = "gloss",
},
gloss = {},
alt = {},
tr = {},
ts = {},
subst = {},
sc = {type = "script"},
f = {
convert = function(arg, parse_err)
local prefix, val = arg:match("^(.-):([^ ].*)$")
if not prefix then
prefix = ""
val = arg
end
local tags, sc_code, sc = prefix:match("^(.*)/(.-)$")
if sc_code then
sc = get_script(sc_code) or
require(languages_error_module)(sc_code, parse_err, "script code", nil, "not real lang")
else
tags = prefix
end
local quals
if tags ~= "" then
quals = split_on_comma(tags)
for i, qual in ipairs(quals) do
local obj = get_lang(qual, nil, "allow etym") or get_script(qual)
quals[i] = obj or qual
end
end
return {
quals = quals,
sc = sc,
val = val,
}
end,
store = "insert",
},
q = {},
qq = {},
}
local function generate_obj_annotated_text(text, parse_err, paramname)
local obj = {}
if text:find(":[^ ]") or text:find("%[%[") then
local display, is_wikipedia_wikisource
obj.text, obj.lang, obj.link, display, is_wikipedia_wikisource =
parse_term_with_lang {
term = text,
parse_err = parse_err,
paramname = paramname
}
-- HACK: If object is a Wikipedia or Wikisource link, we need to convert it to a two-part link
-- to avoid the w: or s: prefix showing. We should probably avoid this by calling
-- language_link() (in [[Module:links]]) in format_annotated_text() instead of the hacky stuff
-- that we currently do; but we need to test that carefully to make sure it doesn't do things like
-- munge % signs.
if is_wikipedia_wikisource and not obj.text:find("%[%[") and not obj.text:find("%]%]") then
-- Don't directly set .alt, because then if the user specifies <alt:...>, it will cause an error in
-- parse_inline_modifiers().
obj.display = display
end
else
obj.text = text
obj.link = text
end
return obj
end
--[=[
Parse a textual property that may be in a foreign language or script and may be annotated with a language prefix and/or
inline modifiers. `val` is the value of the parameter and `fullname` is the name of the parameter from which the value
was retrieved. `explicit_gloss`, if specified and non-nil, overrides any gloss specified using the <t:...> or
<gloss:...> inline modifier.
If `val` is nil, the return value of this function is nil. Otherwise it is parsed for a language prefix (e.g.
'ar:مُؤَلِّف') and inline modifiers (e.g. 'ar:مُؤَلِّف<t:Author>'), and the return value is an object with the following
fields:
`lang`: The language object corresponding to the language prefix, if specified, or nil if no language prefix is
given.
`text`: The text after stripping off any language prefix and inline modifiers.
`link`: The link part of the text if it consists of a two-part link; otherwise, same as `text`.
`alt`: Display text specified using the <alt:...> modifier, if given; otherwise, nil.
`subst`: Substitutions used to generate the transliteration, in the same format as the subst= parameter.
`sc`: The script object corresponding to the <sc:...> modifier, if given; otherwise nil.
`tr`: The transliteration corresponding to the <tr:...> modifier, if given; otherwise nil.
`ts`: The transcription corresponding to the <ts:...> modifier, if given; otherwise nil.
`gloss`: The gloss/translation corresponding to the `explicit_gloss` parameter (if given and non-nil), otherwise
the <t:...> or <gloss:...> modifiers if given, otherwise nil.
`f`: Foreign versions of the text.
`q`: Left qualifiers.
`qq`: Right qualifiers.
Note that as a special case, if `val` contains HTML tags at the top level (e.g. '<span class="Arab">...</span>', as
might be generated by specifying {{lang|ar|مُؤَلِّف}}), no language prefix or inline modifiers are parsed, and the return
value has the `noscript` field set to true, which tells format_annotated_text() not to try to identify the script of
the text and CSS-tag the text accordingly, but to leave the text untagged.
This object can be passed to format_annotated_text() to format a string displaying the text (appropriately
script-tagged, unless `noscript` is set, as described above) and modifiers.
]=]
local function parse_annotated_text(val, fullname, explicit_gloss)
if not val then
return nil
end
-- When checking for inline modifiers, exclude HTML entry with <span ...>, <i ...>, <br/> or similar in it, caused
-- by wrapping an argument in {{l|...}}, {{lang|...}} or similar. Also exclude URL's from being parsed as having
-- language code prefixes. See val_should_not_be_parsed_for_annotations() for more information. If we find a
-- parameter value with top-level HTML in it, add 'noscript = true' to indicate that we should not try to do script
-- inference and tagging. (Otherwise, e.g. if you specify {{lang|ar|مُؤَلِّف}} as the author, you'll get an extra big
-- font coming from the fact that {{lang|...}} wraps the Arabic text in CSS that increases the size from the
-- default, and then we do script detection and again wrap the text in the same CSS, which increases the size even
-- more.)
if val_should_not_be_parsed_for_annotations(val) then
return {text = val, link = val, noscript = true, gloss = explicit_gloss}
end
local obj
if val:find("<") then
-- Check for inline modifier.
obj = parse_inline_modifiers(val, {
paramname = fullname,
param_mods = param_mods,
generate_obj = generate_obj_annotated_text,
})
else
obj = generate_obj_annotated_text(val, nil, fullname)
end
if explicit_gloss then
obj.gloss = explicit_gloss
end
return obj
end
local html_entity_char_to_replacement = {
["<"] = TEMP_LT,
[">"] = TEMP_GT,
["["] = TEMP_LBRAC,
["]"] = TEMP_RBRAC,
}
local function html_entity_replacement(entity, code_without_semicolon, hash, xcode, x, code)
-- Try to decode the entity. If successful, Replace certain special HTML entities (those that are bracket-like)
-- with single Unicode characters; otherwise, replace the semicolon with a special character so it won't get
-- interpreted as a delimiter.
local ch = decode_entities(entity)
if ch ~= entity then
return html_entity_char_to_replacement[ch] or code_without_semicolon .. TEMP_SEMICOLON
end
-- If the entity doesn't decode, escape it anyway iff it follows a valid format.
if hash == "" then
-- Any nonstandard MediaWiki-only entities have now been filtered off, so treat any non-ASCII characters as
-- invalid.
return xcode:match("^[^\128-\255]+$") and code_without_semicolon .. TEMP_SEMICOLON or entity
elseif x == "" then
return xcode:match("^%d+$") and code_without_semicolon .. TEMP_SEMICOLON or entity
end
return code:match("^%x+$") and code_without_semicolon .. TEMP_SEMICOLON or entity
end
local html_entity_replacement_to_char = {
[TEMP_LT] = "<",
[TEMP_GT] = ">",
[TEMP_LBRAC] = "[",
[TEMP_RBRAC] = "]",
[TEMP_SEMICOLON] = ";",
}
local function undo_html_entity_replacement(txt)
-- Pattern covers everything in html_entity_replacement_to_char.
return (txt:gsub("\239\191[\177-\181]", html_entity_replacement_to_char))
end
-- NOTE: We try hard to optimize this function for the common cases and avoid loading [[Module:parse utilities]]
-- in such cases. The cases we can handle without loading [[Module:parse utilities]] are single values (no
-- semicolons present) without inline modifiers or language prefixes, and multi-entity values (semicolons present)
-- without (a) brackets of any kind (including parens, braces and angle brackets; angle brackets typically indicate
-- inline modifiers and other brackets may protect a semicolon from being interpreted as a delimiter);
-- (b) ampersands (which may indicate HTML entities, which protect a semicolon from being interpreted as a
-- delimiter); and (c) colons not followed by a space (which may indicate a language prefix).
local function generate_obj_multivalued_annotated_text(text, parse_err, paramname, no_undo_html_entity_replacement)
local obj = generate_obj_annotated_text(text, parse_err, paramname)
if not no_undo_html_entity_replacement then
obj.text = undo_html_entity_replacement(obj.text)
obj.link = undo_html_entity_replacement(obj.link)
end
return obj
end
--[=[
Similar to parse_annotated_text() but the parameter value may contain multiple semicolon-separated entities, each with
their own inline modifiers. Some examples:
* mainauthor=Paula Pattengale; Terea Sonsthagen
* author=Katie Brick; J. Cody Nielsen; Greg Jao; Eric Paul Rogers; John A. Monson
* author=Suzanne Brockmann; Patrick G. Lawlor (Patrick Girard); Melanie Ewbank
* author=G Ristori; et al.
* author=Jason Scott; zh:王晰宁<t:Wang Xining>
* editors=zh:包文俊; zh:金心雯
* quotee=zh:張福運<t:Chang Fu-yun>; zh:張景文<t:Chang Ching-wen>
There may be embedded semicolons within brackets, braces or parens that should not be treated as delimiters, e.g.:
* author=Oliver Optic [pseudonym; {{w|William Taylor Adams}}]
* author=author=Shannon Drake (pen name; {{w|Heather Graham Pozzessere}})
* author=James (the Elder;) Humphrys
There may also be HTML entities with semicolons in them:
* author=[{{w|Gilbert Clerke}}]
* 2ndauthor=Martin Biddle & Sally Badham
* author=Peter Christen Asbjørnsen
There may be both embedded semicolons and HTML entities with semicolons in them:
* author=[{{w|Voltaire}} [pseudonym; François-Marie Arouet]]
In general we want to treat [ like an opening bracket and ] like a closing bracket. Beware that they may be
mismatched:
* author=Anonymous [{{w|Karl Maria Kertbeny}}]
Here, `val` is the value of the parameter and `fullname` is the name of the parameter from which the value was
retrieved. `explicit_gloss`, if specified and non-nil, overrides any gloss specified using the <t:...> or <gloss:...>
inline modifier, and `explicit_gloss_fullname` is the name of the parameter from which this value was retrieved. (If
`explicit_gloss` is specified and multiple values were seen, an error results.)
Return value is a list of objects of the same sort as returned by parse_annotated_text().
]=]
local function parse_multivalued_annotated_text(val, fullname, explicit_gloss, explicit_gloss_fullname)
if not val then
return nil
end
-- NOTE: In the code that follows, we use `entity` most of the time to refer to one of the semicolon-separated
-- values in the multivalued param. Entities are most commonly people (typically authors, editors, translators or
-- the like), but may be the names of publishers, locations, or other entities. "Entity" can also refer to HTML
-- entities; in the places where this occurs, the variable name contains 'html' in it.
local splitchar, english_delim
if val:find("^,") then
splitchar = ","
english_delim = "comma"
val = val:gsub("^,", "")
else
splitchar = ";"
english_delim = "semicolon"
end
-- Optimization #1: No semicolons/commas or angle brackets (indicating inline modifiers).
if not val:find("[<" .. splitchar .. "]") then
if val_should_not_be_parsed_for_annotations(val) then
return {{text = val, link = val, noscript = true}}
else
return {generate_obj_multivalued_annotated_text(val, nil, fullname, "no undo html entity replacement")}
end
end
-- Optimization #2: Semicolons/commas but no angle brackets (indicating inline modifiers), braces, brackets, or
-- parens (any of which would protect the semicolon/comma from interpretation as a delimiter), and no ampersand
-- (which might indicate an HTML entity with a terminating semicolon, which should not be interpreted as a
-- delimiter).
if not val:find("[<>%[%](){}&]") then
local entity_objs = {}
for entity in gsplit(val, "%s*" .. splitchar .. "%s*") do
if val_should_not_be_parsed_for_annotations(entity) then
insert(entity_objs, {
text = entity,
link = entity,
noscript = true
})
else
insert(entity_objs, generate_obj_multivalued_annotated_text(entity, nil, fullname, "no undo html entity replacement"))
end
end
return entity_objs
end
-- Escape HTML entities, and get rid of directionality markers.
local amp = val:find("&", nil, true)
if amp then
-- The pattern is more permissive than the usual entity pattern, as MediaWiki has some nonstandard entities
-- that have non-ASCII characters in their codes.
val = val:gsub("((&(#?)(([xX]?)([%w\128-\255]+)));)", html_entity_replacement)
end
-- Pattern covers left-to-right (U+200E) and right-to-left (U+200F).
val = val:gsub("\226\128[\142\143]", "")
-- Parse balanced segment runs, treating HTML entities for left and right bracket and left and right angle bracket
-- as matching literal versions of the same characters.
local entity_runs = parse_multi_delimiter_balanced_segment_run(
val,
{{"[" .. TEMP_LBRAC, "]" .. TEMP_RBRAC}, {"(", ")"}, {"{", "}"}, {"<" .. TEMP_LT, ">" .. TEMP_GT}},
true
)
if type(entity_runs) == "string" then
local undo_val = undo_html_entity_replacement(val)
-- Parse error due to unbalanced delimiters. Don't throw an error here; instead, don't attempt to parse off
-- any annotations, but return the value directly, maybe allowing script tagging (not allowing it if it appears
-- the text is already script-tagged).
return {{text = undo_val, link = undo_val, noscript = not not val_should_not_be_parsed_for_annotations(val)}}
end
-- Split on semicolon (or comma), possibly surrounded by whitespace.
local separated_groups = split_alternating_runs(entity_runs, "%s*" .. splitchar .. "%s*")
-- Process each value.
local entity_objs = {}
for _, entity_group in ipairs(separated_groups) do
-- Rejoin runs that don't involve <...>.
local j = 2
while j <= #entity_group do
if not entity_group[j]:find("^<.*>$") then
entity_group[j - 1] = entity_group[j - 1] .. entity_group[j] .. entity_group[j + 1]
remove(entity_group, j)
remove(entity_group, j)
else
j = j + 2
end
end
local oneval = undo_html_entity_replacement(concat(entity_group))
-- When checking for inline modifiers, exclude HTML entry with <span ...>, <i ...>, <br/> or similar in it,
-- caused by wrapping an argument in {{l|...}}, {{lang|...}} or similar. Also exclude URL's from being parsed
-- as having language code prefixes. This works analogously to parse_annotated_text(); see there for more.
if val_should_not_be_parsed_for_annotations(oneval) then
insert(entity_objs, {
text = oneval,
link = oneval,
noscript = true
})
else
local obj
if #entity_group > 1 then
-- Check for inline modifier.
obj = parse_inline_modifiers_from_segments({
group = entity_group,
arg = oneval,
props = {
paramname = fullname,
param_mods = param_mods,
generate_obj = generate_obj_multivalued_annotated_text,
},
})
else
obj = generate_obj_multivalued_annotated_text(entity_group[1], nil, fullname)
end
insert(entity_objs, obj)
end
end
if explicit_gloss then
if #entity_objs > 1 then
error(
(
"Can't specify |%s= along with multiple %s-separated entities in |%s=; use the <t:...> "
.. "inline modifier attached to the individual entities"
):format(explicit_gloss_fullname, english_delim, fullname)
)
end
entity_objs[1].gloss = explicit_gloss
end
return entity_objs
end
--[=[
Format a text property that may be in a foreign language or script, along with annotations. This is conceptually
similar to the full_link() function in [[Module:links]], but displays the annotations in a different format that is
more appropriate for bibliographic entries. The output looks like this:
TEXT [TRANSLIT /TRANSCRIPTION/, GLOSS]
`textobj` is as returned by parse_annotated_text(). `tag_text_func`, if supplied, is a function of one argument to further
wrap the text after it has been processed and CSS-tagged appropriately, directly before insertion. `tag_gloss_func` is a
similar function for the gloss.
]=]
local function format_annotated_text(textobj, tag_text_func, tag_gloss_func)
if not textobj then
return nil
end
local text, link = textobj.text, textobj.link
local subst, tr, ts, f, gloss = textobj.subst, textobj.tr, textobj.ts, textobj.f, textobj.gloss
-- Retrieve the display text, either specified by the user (.alt) or by parse_annotated_text() (.display) when a
-- Wikipedia link is given.
local alt = textobj.alt or textobj.display
if alt then
if link:find("%[%[") or link:find("%]%]") then
local errmsg = ("Can't currently handle embedded links in '%s', with <alt:...> text '%s'"):format(link, alt)
error(escape_wikicode(errmsg))
end
text = ("[[%s|%s]]"):format(link, alt)
end
-- See above for `noscript`, meaning HTML was found in the text value, probably generated using {{lang|...}}.
-- {{lang}} already script-tags the text and processes embedded language links, so we don't want to do it again (in
-- fact, the code below within the if-clause is similar to what {{lang}} does). In such a case, an explicit language
-- won't be available and find_best_script_without_lang() may not be accurate, so we can't do automatic transliteration.
if not textobj.noscript then
local lang = textobj.lang
-- As an optimization, don't do script detection on an argument that contains only ASCII.
local sc = textobj.sc
or lang and lang:findBestScript(text)
or not text:find("^[ -~]$") and find_best_script_without_lang(text)
or nil
-- As an optimization, don't do any of the following if there's no language, script, translit or transcription,
-- as will be the case with simple ASCII values.
if lang or sc or tr or ts then
if not lang then
lang = get_lang("und")
end
if tr == "-" then
tr = nil
elseif not tr and sc and not sc:getCode():find("Lat") then -- Latn, Latf, Latg, pjt-Latn
-- might return nil
local text_for_tr = text
if subst then
text_for_tr = apply_subst(text_for_tr, subst)
else
text_for_tr = remove_links(text)
end
tr = (lang:transliterate(text_for_tr, sc))
end
-- l10n: in zh mode, Han-script text is in the wiki's host
-- language — skip lang/script tagging so the wiki's CJK font
-- CSS doesn't get applied inside citations (which would make
-- titles, locations etc. visually clash with surrounding
-- text). Triggers only when (a) we're in zh mode, (b) the
-- detected script is Han-family (Hani/Hans/Hant), and (c) no
-- explicit non-zh language was given — so foreign scripts
-- (Arab, Hebr, …) and explicit non-zh languages on Han text
-- (e.g. `ja:狂人日記`) still get tagged for their native font.
local skip_host_tagging = output_mode == "zh"
and sc and sc:getCode():find("^Han")
and (lang:getCode() == "und" or lang:getCode() == "zh")
if text:find("%[%[") then
-- FIXME: embedded_language_links() replaces % signs with their URL-encoded equivalents,
-- which messes up URL's that may be present (e.g. if chapterurl= is given). IMO this
-- should not happen, and embedded_language_links() should do nothing if no embedded links
-- are present. To work around this, only call embedded_language_links() when there are
-- embedded links present.
if skip_host_tagging then
-- l10n: don't pass lang/sc — avoids tagging the link-segment wrappers.
text = embedded_language_links({
term = text,
})
else
text = embedded_language_links({
term = text,
lang = lang,
sc = sc,
})
end
end
if not skip_host_tagging and (lang:getCode() ~= "und" or sc:getCode() ~= "Latn") then
text = tag_text(text, lang, sc)
end
if tr then
-- Should we link to the transliteration of languages with lang:link_tr()? Probably not because `text` is not
-- likely to be a term that has an entry.
tr = tag_translit(tr, lang, "usex")
end
if ts then
ts = tag_transcription(ts, lang, "usex")
end
end
end
text = unitalicize_brackets(text)
if tag_text_func then
text = tag_text_func(text)
end
local parts = {}
if textobj.q then
insert(parts, format_qualifier(textobj.q) .. " ")
end
insert(parts, text)
if tr or ts or f or gloss then
insert(parts, SPACE_LBRAC)
local subparts = {}
if tr or ts then
local tr_ts
if ts then
ts = "/" .. ts .. "/"
end
if tr and ts then
tr_ts = tr .. " " .. ts
else
tr_ts = tr or ts
end
insert(subparts, tr_ts)
end
if f then
for _, ff in ipairs(f) do
local sc = ff.sc
local lang
if not sc and ff.quals then
local qual = ff.quals[1]
if type(qual) == "string" then
-- do nothing; we'll do script detection farther down
elseif qual:hasType("script") then
sc = qual
else -- language
sc = qual:findBestScript(ff.val)
lang = qual
end
end
if not lang then
lang = get_lang("und")
end
sc = sc or find_best_script_without_lang(ff.val)
local val = embedded_language_links({
term = ff.val,
lang = lang,
sc = sc,
})
if lang:getCode() ~= "und" or sc:getCode() ~= "Latn" then
val = tag_text(val, lang, sc)
end
local qual_prefix
if ff.quals then
for i, qual in ipairs(ff.quals) do
if type(qual) ~= "string" and (qual:hasType("script") or qual:hasType("language")) then
ff.quals[i] = qual:getCanonicalName()
end
end
qual_prefix = concat(ff.quals, "/") .. ": "
else
qual_prefix = ""
end
insert(subparts, qual_prefix .. val)
end
end
if gloss then
-- l10n: per-value CJK check on gloss content. tag_gloss_func
-- (e.g. tag_with_cite → <cite>) renders italic in browsers,
-- which looks poor on CJK characters. Skip the tag wrap when
-- gloss contains CJK; English glosses retain italics in both
-- output modes. The check happens before HTML wrapping so the
-- <span> tags don't interfere with detection.
local gloss_has_cjk = has_cjk(gloss)
gloss = '<span class="e-translation">' .. gloss .. "</span>"
gloss = unitalicize_brackets(gloss)
if tag_gloss_func and not gloss_has_cjk then
gloss = tag_gloss_func(gloss)
end
insert(subparts, gloss)
end
insert(parts, concat(subparts, ", "))
insert(parts, RBRAC)
end
if textobj.qq then
insert(parts, " " .. format_qualifier(textobj.qq))
end
return concat(parts)
end
--[=[
Format a multivalued text property that may be in a foreign language or script, along with annotations. This is the
multivalued analog to format_annotated_text(), and formats each individual entity using format_annotated_text(),
joining the results with `delimiter`, which defaults to ", ". It `delimiter` is "and" or "or", join the results using
serial_comma_join() with the specified conjunction.
`textobjs` is as returned by parse_multivalued_annotated_text(). `tag_text_func` and `tag_gloss_func` are as in
format_annotated_text().
]=]
local function format_multivalued_annotated_text(textobjs, delimiter, tag_text_func, tag_gloss_func)
if not textobjs then
return nil
end
if #textobjs == 1 then
return format_annotated_text(textobjs[1], tag_text_func, tag_gloss_func)
end
local parts = {}
for _, textobj in ipairs(textobjs) do
insert(parts, format_annotated_text(textobj, tag_text_func, tag_gloss_func))
end
-- Change delimiter to semicolon if the items themselves contain commas (e.g., in ", Jr.")
local use_semicolon = false
for _, obj in ipairs(textobjs) do
-- Use remove_links to ignore commas in links
if obj.text and remove_links(obj.text):find(", ") then
use_semicolon = true
break
end
end
local n = #parts
if n > 0 and parts[n]:match("^'*et al[.']*$") then
-- Special handling for 'et al.' (Latin abbreviation, kept verbatim in zh too)
parts[n] = "''et al.''"
if n == 2 then
-- author et al.
return concat(parts, " ")
else
-- l10n: enumeration separator switches to fullwidth in zh mode.
if output_mode == "zh" then
return concat(parts, use_semicolon and ZH_SEMICOLON or "、")
end
-- author 1, author 2, et al.
return concat(parts, (use_semicolon and "; ") or ", ")
end
if delimiter == "and" or delimiter == "or" then
delimiter = ", "
end
return concat(parts, delimiter)
end
if delimiter == "and" or delimiter == "or" then
-- l10n: zh uses 、 + 和/或 (no Oxford comma) instead of serialCommaJoin.
if output_mode == "zh" then
return zh_serial_join(parts, delimiter)
end
return serial_comma_join(parts, {conj = delimiter})
end
if output_mode == "zh" then
-- l10n: zh-mode delimiter substitution (no trailing space on fullwidth marks).
if delimiter == "; " then return concat(parts, ZH_SEMICOLON) end
if delimiter == ", " or delimiter == nil then return concat(parts, ZH_COMMA) end
end
return concat(parts, delimiter or ((use_semicolon and "; ") or ", "))
end
-- Fancy version of ine() (if-not-empty). Converts empty string to nil, but also strips leading/trailing space.
local function ine(arg)
if not arg then
return nil
elseif type(arg) ~= "string" then
return arg
end
arg = mw.text.trim(arg)
if arg == "" then
return nil
end
return arg
end
local abbrs = {
["a."] = {anchor = "a.", full = "ante"},
["c."] = {anchor = "c.", full = "circa"},
["p."] = {anchor = "p.", full = "post"},
}
-- Process prefixes 'a.' (ante), 'c.' (circa) and 'p.' (post) at the beginning of an arbitrary date or year spec.
-- Returns two values, the formatted version of the prefix and the date spec minus the prefix. If no prefix is found,
-- returns an empty string and the full date.
local function process_ante_circa_post(date)
local prefix = usub(date, 1, 2)
local abbr = abbrs[prefix]
local abbr_prefix = ""
if abbr then
abbr_prefix = "''[[Appendix:Glossary#"
.. abbr.anchor
.. '|<abbr title="'
.. abbr.full
.. '">'
.. abbr.anchor
.. "</abbr>]]'' "
-- Remove lowercase letter, period, and space from beginning of date parameter.
date = ugsub(date, "^%l%.%s*", "")
end
return abbr_prefix, date
end
-- Format the arguments that specify the date of the quotation. These include the following:
-- |date=: The date. If |start_date= is given, this is the end date.
-- |year=, |month=: Year and month of quotation date or end of range, if |date= isn't given.
-- |start_date=: The start date, to specify a range.
-- |start_year=, |start_month=: Year and month of start of range, if |start_date= isn't given.
-- |accessdate=: Date a website was accessed; processed if no other date was given.
-- |nodate=: Indicate that no date is present; otherwise a maintenance line will be displayed if there is no date.
--
-- If `parampref` and/or `paramsuf` are given, this modifies all the date arguments accordingly. For example, if
-- `parampref` == "orig" and `paramsuf` is omitted, the date is specified using |origdate= or |origyear=/|origmonth=,
-- and the start of the range is |origstart_date=, etc. Similarly, if `parampref` is omitted and `paramsuf` is
-- "_published", the date is specified using |date_published= or |year_published=/|month_published=, and the start of
-- the range is |start_date_published=, etc.
--
-- `a` and `get_full_paramname` are functions with the same interpretation as the local functions of the same name in
-- source(). These are used to fetch parameters and get their full names. Note that this may cause all arguments to
-- have an index added to them (|date2=, |year2=, |month2=, etc.).
--
-- `alias_map` is as in source() and is used to map canonical arguments to their aliases when aliases were used.
--
-- If `bold_year` is given, displayed years are boldfaced unless boldface is present in the parameter value.
--
-- If `maintenance_line_no_date` is specified, it should be a string that will be returned if no date is found (i.e.
-- neither |date= nor |year=, or their appropriate equivalents per `parampref` and `paramsuf`, are specified, and
-- neither |nodate= is given to indicate that there is no date, or |accessdate= is given).
--
-- Returns two values: the formatted date and a boolean indicating whether to add a maintenance category
-- [[:Category:Requests for date in LANG entries]]. The first return value will be nil if nothing is to be added
-- (in which case the scond return value will always be nil).
local function format_date_args(
a,
get_full_paramname,
alias_map,
parampref,
paramsuf,
bold_year,
maintenance_line_no_date,
year_last
)
local output = {}
parampref = parampref or ""
paramsuf = paramsuf or ""
local function getp(param)
return a(parampref .. param .. paramsuf)
end
local function pname(param)
local fullname = get_full_paramname(parampref .. param .. paramsuf)
return alias_map[fullname] or fullname
end
-- Format `timestamp` (a timestamp referencing a date) according to the spec in `code`. `param` is the base name of
-- the parameter from which the timestamp was fetched, for error messages.
local function format_date_with_code(code, timestamp, param)
-- l10n: force the locale to match output_mode rather than the wiki's
-- content language, so behaviour is deterministic regardless of
-- where the module is deployed (enwikt vs zhwikt sandbox vs test).
local language = output_mode == "zh" and zh_lang() or mw.language.new("en")
local ok, date = pcall(language.formatDate, language, code, timestamp)
if ok then
return date
else
-- All the formats used in format_date_args() are fine, so the timestamp must be at fault.
error(
(
"Timestamp |%s=%s (possibly canonicalized from its original format) could not be parsed; see the "
.. "[[mw:Help:Extension:ParserFunctions##time|documentation for the #time parser function]]"
):format(pname(param), tostring(timestamp))
)
end
end
-- Try to figure out if the given timestamp has the day of the month explicitly given. We use the following
-- algorithm:
-- 1. Format as year-month-day; if the day is not 1, the day was explicitly given, since if only the year/month are
-- given, the day shows up as 1.
-- 2. If the day shows up as 1 and there isn't a 1 or 01 in the timestamp, the day wasn't explicitly given.
-- 3. Otherwise, if there are three separate numbers (e.g. 2022-07-01), or two separate numbers plus a capitalized
-- letter (taken as an English month, e.g. 2022 July 1), the day was explicitly given, otherwise not.
--
-- `param` is the base name of the parameter from which the timestamp was fetched.
local function date_has_day_specified(timestamp, param)
local day = format_date_with_code("j", timestamp, param)
if day ~= "1" then
return true
end
local english_month = timestamp:find("%u")
local canon_timestamp = mw.text.trim((timestamp:gsub("%D+", " ")))
local seen_nums = split(canon_timestamp, " ", true)
local saw_one = false
for _, num in ipairs(seen_nums) do
if num == "1" or num == "01" then
saw_one = true
break
end
end
if not saw_one then
return false
end
return #seen_nums >= 3 or english_month and #seen_nums >= 2
end
-- Format a date with boldfaced year, as e.g. '''2023''' August 3. `explicit_day_given` indicates whether to include
-- the day; if false, the return value will be e.g. '''2023''' August. `date_param` is the base name of the param
-- from which the date was fetched, for error messages.
local function format_bold_date(date, explicit_day_given, date_param)
-- l10n: zh mode → always year-first, native "Y年n月j日" (or short
-- forms when day/month missing). year_last is ignored because
-- Chinese conventionally writes the year first regardless of
-- citation style.
if output_mode == "zh" then
local zh_code
if bold_year then
zh_code = explicit_day_given and "'''Y年''' n月j日" or "'''Y年''' n月"
else
zh_code = explicit_day_given and "Y年n月j日" or "Y年n月"
end
return format_date_with_code(zh_code, date, date_param)
end
local day_month_code = explicit_day_given and "j F" or "F"
local month_day_code = explicit_day_given and "F j" or "F"
if year_last then
if bold_year then
-- This formats like "3 August '''2023'''" (or "August '''2023'''" if day not explicitly given).
return format_date_with_code(day_month_code .. " '''Y'''", date, date_param)
else
-- This formats like "3 August 2023" (or "August 2023" if day not explicitly given).
return format_date_with_code(day_month_code .. " Y", date, date_param)
end
else
if bold_year then
-- This formats like "'''2023''' August 3" (or "'''2023''' August" if day not explicitly given).
return format_date_with_code("'''Y''' " .. month_day_code, date, date_param)
else
-- This formats like "2023 August 3" (or "2023 August" if day not explicitly given).
return format_date_with_code("Y " .. month_day_code, date, date_param)
end
end
end
-- The formatDate method of the mw.language object behaves like the {{#time:}} parser function, which doesn't
-- accept the formats "monthday monthname, year" or "year monthname monthday", but outputs garbage when it receives
-- them, behavior inherited from PHP. {{#formatdate:}} magic word is more forgiving. Fix dates so that, for
-- instance, the |date= parameter of {{quote-journal}} (which uses this code) and the |accessdate= parameter (which
-- uses {{#formatdate:}}) accept similar date formats. See:
-- * [[mw:Extension:Scribunto/Lua_reference_manual#mw.language:formatDate]]
-- * [[mw:Help:Extension:ParserFunctions##time]]
-- * [[mw:Help:Magic_words#Formatting]]
-- `date` is the date spec from the user, which is assumed to come from a parameter whose base name ends in "date";
-- `parampref` is the prefix added to "date" to get the parameter name.
local function fix_date(date, param_pref)
if tonumber(date) ~= nil then
error(
("|%s= should contain a full date (year, month, day of month); use |%s= for year"):format(
pname(param_pref .. "date"),
pname(param_pref .. "year")
)
)
elseif date and date:find("%s*%a+,%s*%d+%s*$") then
error(
("|%s= should contain a full date (year, month, day of month); use |%s=, |%s= for month and year"):format(
pname(param_pref .. "date"),
pname(param_pref .. "month"),
pname(param_pref .. "year")
)
)
end
if date then
-- Commas are replaced with spaces to prevent parsing issues
local fixed_date = ugsub(date, ", *", " ")
return (ugsub(ugsub(fixed_date or date, "(%d+ %a+),", "%1"), "^(%d%d%d%d) (%a+ %d%d?)$", "%2 %1"))
end
end
local start_date, date = fix_date(getp("start_date"), "start_"), fix_date(getp("date"), "")
local year = getp("year")
local month = getp("month")
local start_year = getp("start_year")
local start_month = getp("start_month")
if date and year then
error(("Only one of |%s= or |%s= should be specified"):format(pname("date"), pname("year")))
end
if date and month then
error(
("|%s= should only be specified in conjunction with |%s=, not with |%s="):format(
pname("month"),
pname("year"),
pname("date")
)
)
end
if start_date and start_year then
error(("Only one of |%s= or |%s= should be specified"):format(pname("start_date"), pname("start_year")))
end
if start_date and start_month then
error(
("|%s= should only be specified in conjunction with |%s=, not with |%s="):format(
pname("start_month"),
pname("start_year"),
pname("start_date")
)
)
end
if (start_date or start_year) and not (date or year) then
error(
("|%s= or |%s=/|%s= cannot be specified without specifying |%s= or |%s=/|%s="):format(
pname("start_date"),
pname("start_year"),
pname("start_month"),
pname("date"),
pname("year"),
pname("month")
)
)
end
local dash = " – "
local day_explicitly_given = date and date_has_day_specified(date, "date")
local start_day_explicitly_given = start_date and date_has_day_specified(start_date, "start_date")
-- Format a date with boldfaced year, as e.g. '''2023''' August 3 (if `explicit_day_given` specified) or
-- '''2023''' August (if `explicit_day_given` not specified). If no date specified, fall back to formatting based
-- on the year and (optionally) month params given in `yearobj` and `monthobj`, boldfacing the year if not already.
-- `date_param` is the base name of the param from which the date was fetched, for error messages.
local function format_date_or_year_month(date, yearobj, monthobj, explicit_day_given, date_param)
if date then
return format_bold_date(date, explicit_day_given, date_param)
else
-- Boldface a year spec if it's not already boldface.
if bold_year and not yearobj.text:find("'''") then
-- Clone the year object before modifying it because we may use it later to check against the current
-- year (if we're dealing with start_year).
yearobj = shallow_copy(yearobj)
yearobj.text = "'''" .. yearobj.text .. "'''"
if yearobj.alt then
yearobj.alt = "'''" .. yearobj.alt .. "'''"
end
end
if year_last then
return (monthobj and format_annotated_text(monthobj) .. " " or "") .. format_annotated_text(yearobj)
else
return format_annotated_text(yearobj) .. (monthobj and " " .. format_annotated_text(monthobj) or "")
end
end
end
local yearobj = parse_annotated_text(year, pname("year"))
local monthobj = parse_annotated_text(month, pname("month"))
local start_yearobj = parse_annotated_text(start_year, pname("start_year"))
local start_monthobj = parse_annotated_text(start_month, pname("start_month"))
if start_yearobj then
local abbr_prefix
abbr_prefix, start_yearobj.text = process_ante_circa_post(start_yearobj.text)
start_yearobj.link = select(2, process_ante_circa_post(start_yearobj.link))
insert(output, abbr_prefix)
elseif yearobj then
local abbr_prefix
abbr_prefix, yearobj.text = process_ante_circa_post(yearobj.text)
yearobj.link = select(2, process_ante_circa_post(yearobj.link))
insert(output, abbr_prefix)
end
if start_date or start_year then
-- l10n: zh mode short-circuit — render both endpoints fully ("Y年n月j日")
-- and join with a dash. We deliberately skip enwikt's elide-common-parts
-- optimization because "2026年5月24日 – 2026年5月26日" reads fine in zh
-- and avoids reconstructing partial Chinese date fragments by hand.
if output_mode == "zh" then
insert(output, format_date_or_year_month(
start_date, start_yearobj, start_monthobj,
start_day_explicitly_given, "start_date"
))
insert(output, dash)
insert(output, format_date_or_year_month(
date, yearobj, monthobj, day_explicitly_given, "date"
))
else
local cur_year = yearobj and yearobj.text or format_date_with_code("Y", date, "date")
local cur_month = monthobj and monthobj.text or date and format_date_with_code("F", date, "date") or nil
local cur_day = date and day_explicitly_given and format_date_with_code("j", date, "date") or nil
local beg_year = start_yearobj and start_yearobj.text or format_date_with_code("Y", start_date, "start_date")
local beg_month = start_monthobj and start_monthobj.text
or start_date and format_date_with_code("F", start_date, "start_date")
or nil
local beg_day = start_date
and start_day_explicitly_given
and format_date_with_code("j", start_date, "start_date")
or nil
if year_last then
if beg_day then
insert(output, beg_day .. " " .. beg_month)
else
insert(output, beg_month)
end
if beg_year ~= cur_year then
insert(output, " " .. beg_year)
end
else
insert(output, format_date_or_year_month(
start_date,
start_yearobj,
start_monthobj,
start_day_explicitly_given,
"start_date"
))
end
if cur_year ~= beg_year then
-- Different years; insert current date in full.
if beg_month or cur_month then
insert(output, dash)
else
insert(output, "–")
end
insert(output, format_date_or_year_month(date, yearobj, monthobj, day_explicitly_given, "date"))
elseif cur_month and cur_month ~= beg_month then
local month_ins = monthobj and format_annotated_text(monthobj) or cur_month
-- Same year but different months; insert current month and (if available) current day.
if cur_day then
insert(output, dash)
if year_last then
insert(output, cur_day .. " " .. month_ins)
else
insert(output, month_ins .. " " .. cur_day)
end
else
if beg_day then
insert(output, dash)
else
insert(output, "–")
end
insert(output, month_ins)
end
elseif cur_day and cur_day ~= beg_day then
-- Same year and month but different days; insert current day.
insert(output, "–")
insert(output, cur_day)
else
-- Same year, month and day; or same year and month, and day not available; or same year, and month and
-- day not available. Do nothing. FIXME: Should we throw an error?
end
if year_last and beg_year == cur_year then
if cur_month then
insert(output, " " .. cur_year)
else
insert(output, " " .. cur_year)
end
end
end -- l10n: end of en-mode range branch (matches the if output_mode=="zh" above)
elseif date or yearobj then
insert(output, format_date_or_year_month(date, yearobj, monthobj, day_explicitly_given, "date"))
elseif not maintenance_line_no_date then
-- Not main quote date. Return nil, caller will handle.
return nil, nil
elseif not getp("nodate") then
local accessdate = getp("accessdate")
if accessdate then
local explicit_day_given = date_has_day_specified(accessdate, "accessdate")
insert(output, format_bold_date(accessdate, explicit_day_given, "accessdate") .. L(" (last accessed)"))
else
if mw.title.getCurrentTitle().namespace ~= 10 then
return maintenance_line(maintenance_line_no_date), true
end
return nil, nil
end
end
return ine(concat(output)), nil
end
local function tag_with_cite(txt)
return "<cite>" .. txt .. "</cite>"
end
-- Display the source line of the quote, above the actual quote text. This contains the majority of the logic of this
-- module (formerly contained in {{quote-meta/source}}).
function export.source(args, alias_map, format_as_cite, other_controls)
-- l10n: detect output mode at the entry of every source() invocation.
-- Mode is a module-level upvalue read by L(), format_date(), and the
-- build_* helpers; we reset it each call so two transclusions on the
-- same page can independently land in en vs zh mode.
output_mode = detect_output_mode(args)
local tracking_categories = {}
local argslang = args[1] or args.lang
if not argslang then
-- For the moment, only trigger an error on mainspace pages and
-- other pages that are not user pages or pages containing discussions.
-- These are the same pages that appear in the appropriate tracking
-- categories. User and discussion pages have not generally been
-- fixed up to include a language code and so it's more helpful
-- to use a maintenance line than signal an error.
local current_title = mw.title.getCurrentTitle()
if not (current_title.namespace == 10 or page_should_be_ignored(current_title.fullText)) then
require(languages_error_module)(nil, 1)
end
end
-- Given a canonical param, convert it to the original parameter specified by the user (which may have been an
-- alias).
local function alias(param)
return alias_map[param] or param
end
local output, sep = {}
local overrides = other_controls and other_controls.overrides or {}
-- Add text to the output. The text goes into a list, and we concatenate all the list components together at the
-- end. To make it easier to handle comma-separated items, we keep track (in `sep`) of the separator (if any) that
-- needs to be inserted before the next item added. For example, if we're in the "newversion" code (ind ~= ""), and
-- there's no title and no URL, then the first time we add anything after the title, we don't want to add a
-- separating comma because the preceding text will say "republished " or "republished as " or "translated as " or
-- similar. In all- other cases, we do want to add a separating comma. The bare add() function reset the separator
-- to be nothing, while the add_with_sep() function resets the separator to be the value of `next_sep` (defaulting
-- to ", "), so the next time around we do add a comma to separate `text` from the preceding piece of text.
local function add(text)
if sep then
insert(output, sep)
end
insert(output, text)
sep = nil
end
local function add_with_sep(text, next_sep)
add(text)
-- l10n: default separator follows output_mode (zh → ",", en → ", ")
sep = next_sep or sep_comma()
end
-- FIXME: This is all very over-engineered, which makes it slow and memory-inefficient.
-- Return a function that generates the actual parameter name associated with a base param (e.g. "author", "last").
-- The actual parameter name may have an index added (an empty string for the first set of params, e.g. author=,
-- last=, or a numeric index for further sets of params, e.g. author2=, last2=, etc.).
local function make_get_full_paramname(ind)
return function(param)
return param .. ind
end
end
-- Function to fetch the actual parameter name associated with a base param (see make_get_full_paramname() above).
-- Assigned at various times below by calling make_get_full_paramname(). We do it this way so that we can have
-- wrapper functions that access params and define them only once.
local get_full_paramname
-- Return two values: the value of a parameter given the base param name (which may have a numeric index added),
-- and the parameter name from which the value was fetched (which may be an alias, i.e. you can't necessarily fetch
-- the parameter value from args[] given this name). The base parameter can be a list of such base params, which
-- are checked in turn, or nil, in which case nil is returned.
local function a_with_name(param)
if not param then
return nil
elseif type(param) ~= "table" then
local fullname = get_full_paramname(param)
return args[fullname], alias(fullname)
end
for _, par in ipairs(param) do
local val, fullname = a_with_name(par)
if val then
return val, alias(fullname)
end
end
return nil
end
-- Fetch the value of a parameter given the base param name (which may have a numeric index added). The base
-- parameter can be a list of such base params, which are checked in turn, or nil, in which case nil is returned.
local function a(param)
return (a_with_name(param))
end
-- Identical to a_with_name(param) except that it verifies that no space is present. Should be used for URL's.
local function aurl_with_name(param)
local value, fullname = a_with_name(param)
if value and value:find(" ") and not value:find("%[") then
error(("URL not allowed to contain a space, but saw |%s=%s"):format(fullname, value))
end
return value, fullname
end
-- Identical to a(param) except that it verifies that no space is present. Should be used for URL's.
local function aurl(param)
return (aurl_with_name(param))
end
-- Convenience function to fetch a parameter that may be in a foreign language or text (and may consequently have
-- a language prefix and/or inline modifiers), parse the annotations and convert the result into a formatted string.
-- This is the same as parse_and_format_annotated_text() below but also returns the full param name as the second
-- return value.
local function parse_and_format_annotated_text_with_name(param, tag_text_func, tag_gloss_func)
local val, fullname = a_with_name(param)
local obj = parse_annotated_text(val, fullname)
return format_annotated_text(obj, tag_text_func, tag_gloss_func), fullname
end
-- Convenience function to fetch a parameter that may be in a foreign language or text (and may consequently have
-- a language prefix and/or inline modifiers), parse the modifiers and convert the result into a formatted string.
-- This is a wrapper around parse_annotated_text() and format_annotated_text(). `param` is the base parameter name (see
-- a_with_name()), `tag_text_func` is an optional function to tag the parameter text after all other processing (e.g.
-- wrap in <cite>...</cite> tags), and `tag_gloss_func` is a similar function for the parameter translation/gloss.
local function parse_and_format_annotated_text(param, tag_text_func, tag_gloss_func)
return (parse_and_format_annotated_text_with_name(param, tag_text_func, tag_gloss_func))
end
-- Convenience function to fetch a multivalued parameter that may be in a foreign language or text (and may
-- consequently have a language prefix and/or inline modifiers), parse the modifiers and convert the result into a
-- formatted string. This is the multivalued analog to parse_and_format_annotated_text_with_name() and returns two
-- values, the formatted string and the full name of the parameter fetched. `delimiter` is as in
-- format_multivalued_annotated_text().
local function parse_and_format_multivalued_annotated_text_with_name(param, delimiter, tag_text_func, tag_gloss_func)
local val, fullname = a_with_name(param)
local objs = parse_multivalued_annotated_text(val, fullname)
local num_objs = objs and #objs or 0
return format_multivalued_annotated_text(objs, delimiter, tag_text_func, tag_gloss_func), fullname, num_objs
end
-- Convenience function to fetch a multivalued parameter that may be in a foreign language or text (and may
-- consequently have a language prefix and/or inline modifiers), parse the modifiers and convert the result into a
-- formatted string. This is the multivalued analog to parse_and_format_annotated_text(). `delimiter` is as in
-- format_multivalued_annotated_text().
local function parse_and_format_multivalued_annotated_text(param, delimiter, tag_text_func, tag_gloss_func)
return (parse_and_format_multivalued_annotated_text_with_name(param, delimiter, tag_text_func, tag_gloss_func))
end
-- This determines whether to display "Mary Bloggs, transl." (if there's no author preceding) or "translated by
-- Mary Bloggs" (if there's an author preceding).
local author_outputted = false
-- When formatting as a citation, the priority is to display a name and a date before the book/chapter title
-- this tracks whether or not the author/date has been displayed
local date_outputted, formatted_date, formatted_origdate = false
local function add_date(no_paren)
if not date_outputted then
if no_paren then
sep = sep_comma()
else
sep = " "
end
if formatted_date then
if no_paren then
add(formatted_date)
elseif output_mode == "zh" then
-- l10n: fullwidth parens around the date
add(ZH_LPAREN .. formatted_date .. ZH_RPAREN)
else
add("(" .. formatted_date .. ")")
end
end
if formatted_origdate then
add(SPACE_LBRAC .. formatted_origdate .. RBRAC)
end
sep = sep_comma()
date_outputted = true
end
end
local function is_anonymous(val)
return val:match("^[Aa]nonymous$") or val:match("^[Aa]non%.?$")
end
-- Add a formatted author (whose values may be specified using `author` or, for compatibility purposes, split
-- among various parameters):
-- * `author` is the value of the author param (e.g. "author", "author2" or "2ndauthor"), and `author_fullname` is
-- the full parameter name holding that value;
-- * `trans_author` is the optional value of the param holding the gloss/translation of the author, and
-- `trans_author_fullname` is the full parameter name holding that value (or nil for no such parameter);
-- * `authorlink` is the value of the authorlink param, which holds the Wikipedia link of the author(s) in `author`,
-- and `authorlink_fullname` is the full parameter name holding that value;
-- * `trans_authorlink` is the optional value of the param holding the Wikipedia link of the gloss/translation of
-- the author, and `trans_authorlink_fullname` is the full parameter name holding that value (or nil for no such
-- parameter);
-- * `first` is the value of the parameter holding the first name of the author, and `first_fullname` is the full
-- parameter name holding that value;
-- * `trans_first` is the value of the corresponding parameter holding the gloss/translation of the first name
-- (e.g. "trans-first"), and `trans_first_fullname` is the full parameter name holding that value (or nil for
-- no such parameter);
-- * `last` is the value of the parameter holding the last name of the author, and `last_fullname` is the full
-- parameter name holding that value;
-- * `trans_last` is the value of the corresponding parameter holding the gloss/translation of the last name
-- (e.g. "trans-last"), and `trans_last_fullname` is the full parameter name holding that value (or nil for
-- no such parameter).
-- * `last_first` if set, when parameters `first` and `last` are used, display the author name as "last, first"
local function add_author(
author,
author_fullname,
trans_author,
trans_author_fullname,
authorlink,
authorlink_fullname,
trans_authorlink,
trans_authorlink_fullname,
first,
first_fullname,
trans_first,
trans_first_fullname,
last,
last_fullname,
trans_last,
trans_last_fullname,
last_first
)
local function make_author_with_url(txt, txtparam, authorlink, authorlink_param)
if authorlink then
if authorlink:find("%[%[") then
error(("Can't specify links in |%s=%s"):format(authorlink_param, authorlink))
end
if txt:find("%[%[") then
error(("Can't specify links in %s=%s"):format(txtparam, txt))
end
return "[[w:" .. authorlink .. "|" .. txt .. "]]"
else
return txt
end
end
local num_authorobjs
if author then
local authorobjs =
parse_multivalued_annotated_text(author, author_fullname, trans_author, trans_author_fullname)
num_authorobjs = #authorobjs
if num_authorobjs == 1 then
if is_anonymous(authorobjs[1].text) then
authorobjs[1].text = "anonymous author"
authorobjs[1].link = "anonymous author"
end
if authorlink then
authorobjs[1].text = make_author_with_url(
authorobjs[1].text,
"|" .. author_fullname,
authorlink,
"|" .. authorlink_fullname
)
authorobjs[1].link = make_author_with_url(
authorobjs[1].link,
"|" .. author_fullname,
authorlink,
"|" .. authorlink_fullname
)
end
if authorobjs[1].gloss and trans_authorlink then
authorobjs[1].gloss = make_author_with_url(
authorobjs[1].gloss,
("<t:...> in |%s"):format(author_fullname),
trans_authorlink,
"|" .. trans_author_fullname
)
end
add(format_multivalued_annotated_text(authorobjs))
elseif trans_authorlink then
error(
(
"Can't specify |%s= along with multiple semicolon-separated entities in |%s=; use the "
.. "<t:...> inline modifier attached to the individual entities and put the link directly "
.. "in the value of the inline modifier"
):format(trans_authorlink_fullname, author_fullname)
)
else
-- Allow an authorlink with multiple authors, e.g. for use with |author=Max Mills; Harvey Mills
-- with |authorlink=Max and Harvey. For this we have to generate the entire text and link it
-- all.
local formatted_text = format_multivalued_annotated_text(authorobjs)
if authorlink then
formatted_text = make_author_with_url(
formatted_text,
"|" .. author_fullname,
authorlink,
"|" .. authorlink_fullname
)
end
add(formatted_text)
end
else
num_authorobjs = 1
-- Author separated into first name + last name. We don't currently support non-Latin-script
-- authors separated this way and probably never will.
if first then
if last_first then
author = last .. ", " .. first
else
author = first .. " " .. last
end
else
author = last
end
if authorlink then
local authorparam = first and ("|%s |%s"):format(first_fullname, last_fullname) or "|" .. last_fullname
author = make_author_with_url(author, authorparam, authorlink, authorlink_fullname)
end
local trans_author
if trans_last then
if trans_first then
trans_author = trans_first .. " " .. trans_last
else
trans_author = trans_last
end
if trans_authorlink then
local trans_authorparam = trans_first
and ("|%s |%s"):format(trans_first_fullname, trans_last_fullname)
or "|" .. trans_last_fullname
trans_author = make_author_with_url(
trans_author,
trans_authorparam,
trans_authorlink,
trans_authorlink_fullname
)
end
end
add(author)
if trans_author then
add(SPACE_LBRAC)
add(trans_author)
add(RBRAC)
end
end
author_outputted = true
return num_authorobjs
end
local function add_authorlike(
param,
prefix_with_preceding_authors,
suffix_without_preceding_authors,
suffix_if_multiple,
anonymous_suffix
)
local delimiter = author_outputted and "and" or ", "
local entities, _, num_entities = parse_and_format_multivalued_annotated_text_with_name(param, delimiter)
if not entities then
return
end
if is_anonymous(entities) then
-- If tlr=anonymous or similar given, display as "anonymous translator" or similar. If a specific
-- anonymous suffix not given, try to derive the anonymous suffix from the non-preceding-author suffix.
if not anonymous_suffix then
if output_mode == "zh" then
-- l10n: zh suffix shape is "(X)"; derive_anonymous_suffix_zh
-- maps it to a bare role noun like "譯者" / "編者" so we get
-- "佚名譯者" instead of "佚名(譯)".
anonymous_suffix = derive_anonymous_suffix_zh(suffix_without_preceding_authors)
else
local cleaned_suffix = suffix_without_preceding_authors
:gsub(" ", " ")
:gsub(" ", " ")
:gsub(" ", " ")
:gsub("[", "[")
:gsub("]", "]")
cleaned_suffix = mw.text.trim(cleaned_suffix)
if not anonymous_suffix then
anonymous_suffix = " " .. cleaned_suffix:match("^, (.*)$")
end
if not anonymous_suffix then
anonymous_suffix = " " .. cleaned_suffix:match("^%((.*)%)$")
end
if not anonymous_suffix then
anonymous_suffix = " " .. cleaned_suffix:match("^%[(.*)%]$")
end
if not anonymous_suffix then
anonymous_suffix = suffix_without_preceding_authors
end
end -- l10n: end of en branch
end
add_with_sep(L("anonymous") .. anonymous_suffix)
elseif prefix_with_preceding_authors and (author_outputted or not suffix_without_preceding_authors) then
add_with_sep(prefix_with_preceding_authors .. entities)
elseif suffix_if_multiple and num_entities > 1 then
add_with_sep(entities .. suffix_if_multiple)
else
add_with_sep(entities .. suffix_without_preceding_authors)
end
author_outputted = true
end
local function add_authorlabel()
local default_authorlabel = a("default-authorlabel")
if default_authorlabel and yesno(a("authorlabel"), true) then
sep = nil
add_with_sep(" " .. default_authorlabel)
end
end
local function has_new_title_or_author()
return args["2ndauthor"]
or args["2ndlast"]
or args.chapter2
or args.title2
or args.tlr2
or args.mainauthor2
or args.editor2
or args.editors2
or args.compiler2
or args.compilers2
or args.director2
or args.directors2
end
local function has_newversion()
return args.newversion or args.location2 or has_new_title_or_author()
end
-- Handle chapter=, section=, etc. `param` is the base name of the parameter in question, e.g. "chapter" or
-- "section". If numeric (either Arabic or Roman), add `numeric_prefix`; otherwise, parse as textual (allowing for
-- language prefixes, inline modifiers, etc.), prefix with `textual_prefix` (if given) and suffix with
-- `textual_suffix` (if given). Also checks for and handles the following (assuming param == "chapter"):
-- * chapterurl=: URL of the chapter.
-- * trans-chapter=: Chapter translation (can be given using an inline modifier <t:...>).
-- * chapter_number=: Chapter number, when chapter= is also given (otherwise put the chapter number in chapter=).
-- * chapter_plain=: Plain version of the chapter number; the "chapter " prefix isn't added.
-- * chapter_series=: Series that the chapter is within (used e.g. for journal articles part of a series).
-- * chapter_seriesvolume=: Volume of the series (compare seriesvolume=).
--
-- Returns nil if no value specified for the main parameter, otherwise the formatted value.
local function format_chapterlike(param, numeric_prefix, textual_prefix, textual_suffix)
local chap, chap_fullname = a_with_name(param)
local chap_num, chap_num_fullname = a_with_name(param .. "_number")
local chap_plain, chap_plain_fullname = parse_and_format_annotated_text_with_name(param .. "_plain")
if chap_num and chap_plain then
error(("Specify only one of |%s= or %s="):format(chap_num_fullname, chap_plain_fullname))
end
local chap_series, chap_series_fullname =
parse_and_format_annotated_text_with_name(param .. "_series", tag_with_cite, tag_with_cite)
local chap_seriesvolume, chap_seriesvolume_fullname =
parse_and_format_annotated_text_with_name(param .. "_seriesvolume")
if chap_series then
-- l10n: zh uses fullwidth ","
chap_series = sep_comma() .. chap_series
end
if chap_seriesvolume then
if not chap_series then
error(("Cannot specify |%s= without %s="):format(chap_series_fullname, chap_seriesvolume_fullname))
end
if output_mode == "zh" then
chap_series = chap_series .. ZH_LPAREN .. chap_seriesvolume .. ZH_RPAREN
else
chap_series = chap_series .. " (" .. chap_seriesvolume .. ")"
end
end
local chapterurl
local function make_chapter_with_url(chap)
if chapterurl then
return "[" .. chapterurl .. " " .. chap .. "]"
else
return chap
end
end
if not chap then
if chap_num then
error(
("Cannot specify |%s= without |%s=; put the numeric value in |%s= directly"):format(
chap_num_fullname,
chap_fullname,
chap_fullname
)
)
end
if chap_plain then
chapterurl = aurl(param .. "url")
return make_chapter_with_url(chap_plain .. (chap_series or ""))
end
return nil
end
local cleaned_chap = chap:gsub("<sup>[^<>]*</sup>", ""):gsub("[*+#]", "")
chapterurl = aurl(param .. "url")
-- l10n: zh wraps numeric-class chap as "第N章" (suffix is L(param));
-- textual chap as "「title」" (CJK corner brackets in place of "...").
local function emit_numeric(chap_with_url)
if output_mode == "zh" then
return "第" .. chap_with_url .. L(param)
end
return numeric_prefix .. chap_with_url
end
local formatted
if numeric_prefix and get_number(cleaned_chap) then
-- Arabic chapter number
formatted = emit_numeric(make_chapter_with_url(chap))
elseif
numeric_prefix
and cleaned_chap:match("^[mdclxviMDCLXVI]+$")
and roman_to_arabic(cleaned_chap, true)
and (not overrides[param] or not overrides[param].noroman)
then
-- Roman chapter number
formatted = emit_numeric(make_chapter_with_url(upper(chap)))
elseif numeric_prefix and output_mode == "zh"
and classify_numeric_value(cleaned_chap) == "chinese"
then
-- l10n: Chinese-numeral chapter number (e.g. "五"), also wraps as 第五章.
formatted = emit_numeric(make_chapter_with_url(chap))
else
-- strip leading ! (used to force text-mode for titles that look like Roman numerals like "mil" and "dill")
if chap:find("^!") then
chap = chap:gsub("^!", "")
end
-- Must be a chapter name
local chapterobj = parse_annotated_text(chap, chap_fullname, a("trans-" .. param))
chapterobj.text = make_chapter_with_url(chapterobj.text)
chapterobj.link = make_chapter_with_url(chapterobj.link)
if output_mode == "zh" then
-- l10n: textual chap name uses CJK corner brackets「」 (not "..." quotes).
formatted = ZH_LQUOTE .. format_annotated_text(chapterobj) .. ZH_RQUOTE
else
formatted = (textual_prefix or "") .. format_annotated_text(chapterobj) .. (textual_suffix or "")
end
end
if chap_num or chap_plain then
-- NOTE: Up above we throw an error if both chap_num and chap_plain are specified.
if output_mode == "zh" then
-- l10n: zh parenthesized number, e.g. 「題目」(第5章)
formatted = formatted .. ZH_LPAREN
.. (chap_plain or "第" .. chap_num .. L(param))
.. ZH_RPAREN
else
formatted = formatted .. " (" .. (chap_plain or numeric_prefix .. chap_num) .. ")"
end
end
if chap_series then
formatted = formatted .. chap_series
end
return formatted
end
-- This handles everything after displaying the author, starting with the chapter and ending with page, column,
-- line and then other=. It is currently called twice: Once to handle the main portion of the citation, and once to
-- handle a "newversion" citation. `ind` is either "" for the main portion or a number (currently only 2) for a
-- "newversion" citation. In a few places we conditionalize on `ind` to take actions depending on its value.
local function postauthor(ind, num_authors, format_as_cite)
get_full_paramname = make_get_full_paramname(ind)
if author_outputted then
add_authorlabel()
end
local coauthors = parse_and_format_multivalued_annotated_text("coauthors", "and")
if coauthors then
local with_prefix = ""
if author_outputted then
with_prefix = "with "
if num_authors == 1 then
sep = " "
end
end
add_with_sep(with_prefix .. coauthors)
author_outputted = true
end
add_authorlike("quotee", L("quoting "), L(", quotee"), L(", quotees"))
if format_as_cite and author_outputted and not date_outputted then
add_date()
sep = sep_comma()
end
add_authorlike("chapter_tlr", L("translated by "), L(", transl."), nil, L(" translator"))
local function add_sg_and_pl_authorlike(noun, verbed)
local sgparam = noun
local plparam = noun .. "s"
local sgval, sgval_fullname = a_with_name(sgparam)
local plval, plval_fullname = a_with_name(plparam)
if sgval and plval then
error(("Can't specify both |%s= and |%s="):format(sgval_fullname, plval_fullname))
end
if sgval or plval then
-- l10n: route each constructed phrase through L() so zh mode picks up
-- "由 " / "(編)" / "(編纂)" etc. from STRINGS.
local verbed_by = L(verbed .. " by ")
local comma_sgnoun = L(", " .. noun)
local comma_plnoun = L(", " .. noun .. "s")
add_authorlike(sgparam, verbed_by, comma_sgnoun, comma_plnoun)
add_authorlike(plparam, verbed_by, comma_plnoun)
end
end
local formatted_entry = format_chapterlike("entry", nil, "“", "”")
local formatted_chapter = format_chapterlike("chapter", "chapter ", "“", "”")
local function add_entry()
if formatted_entry then
add_with_sep(formatted_entry)
if not a("notitle") then
add(L("in "))
author_outputted = false
else
author_outputted = true
end
formatted_entry = nil
end
end
local function add_chapter()
add_entry()
if formatted_chapter then
add_with_sep(formatted_chapter)
if not a("notitle") then
add(L("in "))
author_outputted = false
end
formatted_chapter = nil
end
end
local function add_actor_role(format_as_cite)
local role = parse_and_format_multivalued_annotated_text("role", "and")
local actor_val, actor_fullname = a_with_name("actor")
local actor_objs = parse_multivalued_annotated_text(actor_val, actor_fullname)
local actor = format_multivalued_annotated_text(actor_objs, "and")
if format_as_cite then
if role then
if actor then
-- l10n: "John as " / "John 飾演 "
add_with_sep(build_actor_as_role(actor))
end
sep = nil
add_with_sep(role)
elseif actor then
add_with_sep(build_actor_paren(actor, #actor_objs > 1))
end
else
if role then
add_with_sep(L("spoken by ") .. role)
if actor then
sep = nil
-- l10n: parenthesized actor next to a role
if output_mode == "zh" then
add_with_sep(ZH_LPAREN .. actor .. ZH_RPAREN)
else
add_with_sep(" (" .. actor .. ")")
end
end
elseif actor then
add_with_sep(build_actor_paren(actor, #actor_objs > 1))
end
end
end
if format_as_cite then
if date_outputted then
add_chapter()
end
local output_len = #output
local mainauthor = parse_and_format_multivalued_annotated_text("mainauthor")
if mainauthor then
add_with_sep(mainauthor)
end
-- quote-* templates display "jobbed by name" after the author, controlled by the author_outputted flag
author_outputted = false
add_authorlike("tlr", L("translated by "), L(", transl."), nil, L(" translator"))
author_outputted = false
add_sg_and_pl_authorlike("editor", "edited")
add_sg_and_pl_authorlike("compiler", "compiled")
add_sg_and_pl_authorlike("director", "directed")
add_authorlike("lyricist", nil, L(" (lyrics)"), nil, L(" lyricist"))
add_authorlike("lyrics-translator", nil, L(" (translation)"), nil, L(" lyrics translator"))
add_authorlike("composer", nil, L(" (music)"), nil, L(" composer"))
add_actor_role("format_as_cite")
-- if the output length has changed, a credit name has been printed
-- and we can print the date
if output_len ~= #output then
author_outputted = true
add_date()
end
add_chapter()
else
add_chapter()
local mainauthor = parse_and_format_multivalued_annotated_text("mainauthor")
if mainauthor then
add_with_sep(mainauthor)
author_outputted = true
end
add_authorlike("tlr", L("translated by "), L(", transl."), nil, L(" translator"))
add_sg_and_pl_authorlike("editor", "edited")
add_sg_and_pl_authorlike("compiler", "compiled")
add_sg_and_pl_authorlike("director", "directed")
add_authorlike("lyricist", nil, L(" (lyrics)"), nil, L(" lyricist"))
add_authorlike("lyrics-translator", nil, L(" (translation)"), nil, L(" lyrics translator"))
add_authorlike("composer", nil, L(" (music)"), nil, L(" composer"))
end
local title, title_fullname = a_with_name("title")
local need_comma = false
if title then
local titleobj = parse_annotated_text(title, title_fullname, a("trans-title"))
add(format_annotated_text(titleobj, tag_with_cite, tag_with_cite))
local series = parse_and_format_annotated_text("series")
if series then
-- l10n: fullwidth parens around series (no leading space in zh).
add((output_mode == "zh" and ZH_LPAREN or " (") .. series)
local seriesvolume = parse_and_format_annotated_text("seriesvolume")
if seriesvolume then
add(sep_semicolon() .. seriesvolume)
end
add(output_mode == "zh" and ZH_RPAREN or ")")
end
need_comma = true
elseif ind == "" then
if not a("notitle") then
add(maintenance_line(L("Please provide the book title or journal name")))
need_comma = true
end
end
local archiveurl, archiveurl_fullname = aurl_with_name("archiveurl")
local url, url_fullname = aurl_with_name("url")
local urls, urls_fullname = aurl_with_name("urls")
if url and urls then
error(("Supply only one of |%s= and |%s="):format(url_fullname, urls_fullname))
end
local function verify_title_supplied(url_name)
-- There are too many cases of this to throw an error at this time.
-- if not title then
-- error(("If |%s= is given, |%s= must also be supplied"):format(url_name, title_fullname))
-- end
end
if archiveurl or url then
verify_title_supplied(archiveurl and archiveurl_fullname or url_fullname)
sep = nil
add("‎<sup>[" .. (archiveurl or url) .. "]</sup>")
elseif urls then
verify_title_supplied(urls_fullname)
sep = nil
add("‎<sup>" .. urls .. "</sup>")
end
-- display (in Language) if language is provided and is not English and not overriden by termlang or worklang
if format_as_cite and ind == "" and not (args.termlang or args.worklang) and (args[1] or args.lang) then
local lang = get_first_lang(args[1] or args.lang)
if lang then
local langcode = lang:getCode()
if not (langcode == "und" or langcode == "en") then
local langs = format_langs(args[1] or args.lang)
if langs then
-- l10n: cite-mode language annotation appended to the title.
add(build_annotations_paren({build_lang_annotation("in", langs)}))
end
end
end
end
if need_comma then
sep = sep_comma()
end
local edition, edition_fullname = parse_and_format_annotated_text_with_name("edition")
local edition_plain, edition_plain_fullname = parse_and_format_annotated_text_with_name("edition_plain")
if edition and edition_plain then
error(("Supply only one of |%s= and |%s="):format(edition_fullname, edition_plain_fullname))
end
if edition then
-- l10n: numeric edition → "第N版"; textual edition → "<val>版"
if output_mode == "zh" then
add_with_sep(build_zh_numeric(edition, "edition"))
else
add_with_sep(edition .. " edition")
end
end
if edition_plain then
add_with_sep(edition_plain)
end
-- Display a numeric param such as page=, volume=, column=. For each `paramname`, four params are actually
-- recognized, e.g. for paramname == "page", the params page=, pages=, page_plain= and pageurl= are recognized
-- and checked (or the same with an index, e.g. page2=, pages2=, page_plain2= and pageurl2= respectively if
-- ind == "2"). Only one of the first three can be specified; an error results if more than one are given.
-- If none are given, the return value is nil; otherwise it is a string. The numeric spec is taken directly
-- from e.g. page_plain= if given; otherwise if e.g. pages= is given, or if page= is given and looks like a
-- combination of numbers (i.e. it has a hyphen or dash in it, a comma, or the word " and "), it is prefixed
-- by `singular_desc` + "s" (e.g. "pages "), otherwise it is prefixed by just `singular_desc` (e.g. "page ").
-- (As a special case, if either e.g. page=unnumbered or pages=unnumbered is given, the numeric spec is
-- "unnumbered page".) The resulting spec is returned directly unless e.g. pageurl= is given, in which case
-- it is linked to the specified URL. Note that any of the specs can be foreign text, e.g. foreign numbers
-- (including with optional inline modifiers), and such text is handled appropriately.
local function format_numeric_param(paramname, singular_desc)
local sgval = a_with_name(paramname)
local sgobj = parse_annotated_text(sgval, paramname)
local plparamname = paramname .. "s"
local plval = a_with_name(plparamname)
local plobj = parse_annotated_text(plval, plparamname)
local plainval, plain_fullname = parse_and_format_annotated_text_with_name(paramname .. "_plain")
local numspec
if not sgval and not plval and not plainval then
return
elseif plainval and (sgval or plval) then
error(("Can't specify " .. plain_fullname .. " with " .. paramname .. " or " .. plparamname))
elseif sgval and plval then
-- if both singular and plural, display "page 1 of 1-10"
if output_mode == "zh" then
-- l10n: zh sg-of-pl range, e.g. "第1頁/共1-10頁"
numspec = "第" .. sgval .. L(paramname) .. "/共" .. plval .. L(paramname)
else
numspec = singular_desc .. " " .. sgval .. " of " .. plval
end
else
-- Merge page= and pages= and treat alike because people often mix them up in both directions.
if plainval then
numspec = plainval
else
local val = sgobj and sgobj.text or plobj.text
if val == "unnumbered" then
if output_mode == "zh" then
-- l10n: e.g. "未編號頁"
numspec = L("unnumbered") .. L(paramname)
else
numspec = "unnumbered " .. singular_desc
end
else
local desc
if val:find("^!") then
val = val:gsub("^!", "")
desc = sgval and singular_desc or pluralize(singular_desc)
else
local check_val = val
if check_val:find("%[") then
check_val = remove_links(check_val)
-- convert URL's of the form [URL DISPLAY] to the displayed value
check_val = check_val:gsub("%[[^ %[%]]* ([^%[%]]*)%]", "%1")
end
-- in case of negative page numbers (do they exist?), don't treat as multiple pages
check_val = check_val:gsub("^%-", "")
-- replace HTML entity en-dashes and em-dashes with their literal codes
check_val = check_val:gsub("–", "–")
check_val = check_val:gsub("–", "–")
check_val = check_val:gsub("—", "—")
check_val = check_val:gsub("—", "—")
-- Check for en-dash or em-dash, or two numbers (possibly with stuff after like 12a-15b)
-- separated by a hyphen or by comma a followed by a space (to avoid firing on thousands separators).
if
umatch(check_val, "[–—]")
or check_val:find(" and ")
or check_val:match("%d+[^ ]* *%- *%d+")
or check_val:match("%d+[^ ]* *, +%d+")
then
desc = pluralize(singular_desc)
else
desc = singular_desc
end
end
local obj = sgobj or plobj
obj.text = val
if obj.link:find("^!") then
obj.link = obj.link:gsub("^!", "")
end
val = format_annotated_text(obj)
if output_mode == "zh" then
-- l10n: numeric class → "第N<suffix>"; textual → "<val><suffix>"
numspec = build_zh_numeric(val, paramname)
else
numspec = desc .. " " .. val
end
end
end
end
local url = a(paramname .. "url")
if url then
return "[" .. url .. " " .. numspec .. "]"
else
return numspec
end
end
local volume = format_numeric_param("volume", a("volume_prefix") or "volume")
if volume then
add_with_sep(volume)
end
local issue = format_numeric_param("issue", a("issue_prefix") or "number")
if issue then
add_with_sep(issue)
end
-- number= is an alias for issue= (except in {{quote-av}}, where it is the episode number)
local number = format_numeric_param("number", a("number_prefix") or "number")
if number then
add_with_sep(number)
end
local annotations = {}
local genre = a("genre")
if genre then
insert(annotations, genre)
end
local format = a("format")
if format then
insert(annotations, format)
end
local medium = a("medium")
if medium then
insert(annotations, medium)
end
-- Now handle the display of language annotations like "(in French)" or
-- "(quotation in Nauruan; overall work in German)".
local quotelang = args[1] or args.lang
if not quotelang then
if ind == "" then
-- This can only happen for certain non-mainspace pages, e.g. Talk pages; otherwise an error is thrown
-- above.
insert(annotations, maintenance_line(L("Please specify the language of the quote using |1=")))
else
-- do nothing in newversion= portion
end
elseif ind == "" then
local worklang = a("worklang")
local termlang = a("termlang")
worklang = worklang or quotelang
termlang = termlang or quotelang
if worklang == quotelang then
if worklang == termlang then
-- do nothing
else
insert(annotations, build_lang_annotation("in", format_langs(quotelang)))
end
else
if quotelang ~= termlang then
insert(annotations, build_lang_annotation("quotation_in", format_langs(quotelang)))
end
insert(annotations, build_lang_annotation("overall_work_in", format_langs(worklang)))
end
else
local lang2 = a("lang2")
if lang2 then
insert(annotations, build_lang_annotation("in", format_langs(lang2)))
end
end
if #annotations > 0 then
sep = nil
add_with_sep(build_annotations_paren(annotations))
end
local artist = parse_and_format_multivalued_annotated_text("artist", "and")
if artist then
add_with_sep(L("performed by ") .. artist)
end
local feat = parse_and_format_multivalued_annotated_text("feat", "and")
if feat then
sep = " "
-- l10n: "ft." is universal in modern music citation and not translated.
add_with_sep("ft. " .. feat)
end
if not format_as_cite then
add_actor_role()
end
local others = parse_and_format_annotated_text("others")
if others then
add_with_sep(others)
end
local quoted_in = parse_and_format_annotated_text("quoted_in", tag_with_cite, tag_with_cite)
if quoted_in then
add_with_sep(L("quoted in ") .. quoted_in)
insert(tracking_categories, "Quotations using quoted-in parameter")
end
local location = parse_and_format_multivalued_annotated_text("location", "; ")
local publisher = parse_and_format_multivalued_annotated_text("publisher", "; ")
if publisher then
if location then
add_with_sep(location) -- colon
-- l10n: separator between location and publisher (colon)
sep = output_mode == "zh" and ZH_COLON or ": "
end
add_with_sep(publisher)
elseif location then
add_with_sep(location)
end
if not date_outputted then
add_date("no_paren")
end
local source = parse_and_format_multivalued_annotated_text("source", "and")
if source then
add_with_sep(L("sourced from ") .. source)
end
local original = parse_and_format_annotated_text("original", tag_with_cite, tag_with_cite)
local by = parse_and_format_multivalued_annotated_text("by", "and")
local origtype = a("deriv") or "translation"
if original or by then
-- l10n: "translation of X by Y" → "X,Y 譯" (word order shift, see build_translation_phrase)
add_with_sep(build_translation_phrase(origtype, original, by))
end
-- Handle origlang=, origworklang=. How we handle them depends on whether the original title or author are explicitly
-- given.
local origlang = a("origlang")
local origworklang = a("origworklang")
local origlangtext, origworklangtext
if origlang then
origlangtext = build_lang_annotation("in", format_langs(origlang))
end
if origworklang then
origworklangtext = build_lang_annotation("overall_work_in", format_langs(origworklang))
end
if origlang or origworklang then
if original or by then
local orig_annotations = {}
if origlangtext then
insert(orig_annotations, origlangtext)
end
if origworklangtext then
insert(orig_annotations, origworklangtext)
end
sep = nil
add_with_sep(build_annotations_paren(orig_annotations))
else
-- l10n: "translation of original (in French)" → "原文翻譯(以法語寫成)"
add_with_sep(build_translation_phrase(origtype, nil, nil)
.. (origlangtext and " " .. origlangtext or ""))
if origworklangtext then
sep = nil
add_with_sep(build_annotations_paren({origworklangtext}))
end
end
end
if ind ~= "" and has_newversion() then
local formatted_new_date = format_date_args(a, get_full_paramname, alias_map, "", "", nil, L("Please provide a date or year"), true)
if formatted_new_date then
add_with_sep(formatted_new_date)
end
end
-- Fetch date_published=/year_published=/month_published= and format appropriately.
local formatted_date_published = format_date_args(a, get_full_paramname, alias_map, "", "_published", nil, nil, true)
local platform = parse_and_format_multivalued_annotated_text("platform", "and")
if formatted_date_published then
-- l10n: "published <date> via <platform>" → "<date> 於 <platform> 出版"
add_with_sep(build_published(formatted_date_published, platform))
elseif platform then
add_with_sep(build_via(platform))
end
-- From here on out, there should always be a preceding item, so we
-- can dispense with add_with_sep() and always insert the comma.
sep = nil
local function small(txt)
-- l10n: leading comma is a separator; HTML <small> tags are untranslated.
add(sep_comma() .. "<small>")
add(txt)
add("</small>")
end
-- Add an identifier to a book or article database such as DOI, ISBN, JSTOR, etc. `param_or_params`
-- is a string identifying the base param, or a list of such strings to check in turn. If found, the value
-- of the parameter is processed using `process` (a function of one argument, defaulting to mw.uri.encode()),
-- and then the actual URL to insert is generated by preceding with `pretext`, following with `posttext`,
-- and running the resulting string through small(), which first adds a comma and then the URL in small font.
local function add_identifier(param_or_params, pretext, posttext, process)
local val = a(param_or_params)
if val then
val = (process or mw.uri.encode)(val)
small(pretext .. val .. posttext)
end
end
add_identifier("bibcode", "[https://adsabs.harvard.edu/abs/", " →Bibcode]")
add_identifier("doi", '<span class="neverexpand">[https://doi.org/', " →DOI]</span>")
add_identifier("isbn", "", "", isbn)
add_identifier("issn", "", "", issn)
add_identifier("jstor", "[https://www.jstor.org/stable/", " →JSTOR]")
add_identifier("lccn", "", "", lccn)
add_identifier("oclc", "[https://search.worldcat.org/title/", " →OCLC]")
add_identifier("ol", "[https://openlibrary.org/works/OL", "/ →OL]")
add_identifier("pmid", "[https://www.ncbi.nlm.nih.gov/pubmed/", " →PMID]")
add_identifier("pmcid", "[https://www.ncbi.nlm.nih.gov/pmc/articles/", "/ →PMCID]")
add_identifier("ssrn", "[https://ssrn.com/abstract=", " →SSRN]")
-- add_identifier("urn", "", "", urn)
local id = a("id")
if id then
small(id)
end
archiveurl, archiveurl_fullname = aurl_with_name("archiveurl")
if archiveurl then
add(L(", archived from "))
local url, url_fullname = aurl_with_name("url")
if not url then
-- attempt to infer original URL from archive URL; this works at
-- least for Wayback Machine (web.archive.org) URL's
url = archiveurl:match("/(https?:.*)$")
if not url then
error(
("When |%s= is specified, |%s= must also be included"):format(archiveurl_fullname, url_fullname)
)
end
end
add("[" .. url .. " " .. L("the original") .. "]" .. L(" on "))
local archivedate, archivedate_fullname = a_with_name("archivedate")
if archivedate then
add(format_date(archivedate))
elseif string.sub(archiveurl, 1, 28) == "https://web.archive.org/web/" then
-- If the archive is from the Wayback Machine, then it already contains the date
-- Get the date and format it
local wayback_date = string.sub(archiveurl, 29, 29 + 7)
wayback_date = string.sub(wayback_date, 1, 4)
.. "-"
.. string.sub(wayback_date, 5, 6)
.. "-"
.. string.sub(wayback_date, 7, 8)
add(format_date(wayback_date))
else
error(
("When |%s= is specified, |%s= must also be included"):format(
archiveurl_fullname,
archivedate_fullname
)
)
end
end
if a("accessdate") then
--Otherwise do not display here, as already used as a fallback for missing date= or year= earlier.
if (a("date") or a("nodate") or a("year")) and not a("archivedate") then
-- l10n: ", retrieved <date>" → ",於 <date> 擷取" (verb-final)
add(build_retrieved(format_date(a("accessdate"))))
end
end
local formatted_section = format_chapterlike("section", "section ")
if formatted_section then
add(sep_comma())
add(formatted_section)
end
-- video game stuff
local system = parse_and_format_annotated_text("system")
if system then
add(sep_comma() .. system)
end
local scene = parse_and_format_annotated_text("scene")
if scene then
add(L(", scene: ") .. scene)
end
local level = parse_and_format_annotated_text("level")
if level then
add(L(", level/area: ") .. level)
end
local note = parse_and_format_annotated_text("note")
if note then
add(sep_comma() .. note)
end
local note_plain = parse_and_format_annotated_text("note_plain")
if note_plain then
add(" " .. note_plain)
end
-- Wrapper around format_numeric_param that inserts the formatted text with optional preceding text.
local function handle_numeric_param(paramname, singular_desc, pretext)
local numspec = format_numeric_param(paramname, singular_desc)
if numspec then
add((pretext or "") .. numspec)
end
end
-- l10n: pretext is the leading separator before each piece; format_numeric_param
-- internally produces "第N頁/欄/行" or "<val>頁/欄/行" in zh mode.
handle_numeric_param("page", a("page_prefix") or "page", sep_comma())
handle_numeric_param("column", a("column_prefix") or "column", sep_comma())
handle_numeric_param("line", a("line_prefix") or "line", sep_comma())
-- FIXME: Does this make sense? What is other=?
local other = parse_and_format_annotated_text("other")
if other then
add(sep_comma() .. other)
end
end
local function add_authors(args, last_first)
-- Find maximum indexed author or last name.
local maxind = math.max(args.author.maxindex, args.last.maxindex)
-- Include max index of ancillary params so we get an error message about their use without the primary params.
local ancillary_params =
{"trans-author", "authorlink", "trans-authorlink", "first", "trans-first", "trans-last"}
for _, ancillary in ipairs(ancillary_params) do
maxind = math.max(maxind, args[ancillary].maxindex)
end
local num_authors = 0
for i = 1, maxind do
local ind = i == 1 and "" or i
local author, last = args.author[i], args.last[i]
if author or last then
local this_num_authors = add_author(
author,
"author" .. ind,
args["trans-author"][i],
"trans-author" .. ind,
args.authorlink[i],
"authorlink" .. ind,
args["trans-authorlink"][i],
"trans-authorlink" .. ind,
args.first[i],
"first" .. ind,
args["trans-first"][i],
"trans-first" .. ind,
last,
"last" .. ind,
args["trans-last"][i],
"trans-last" .. ind,
last_first
)
num_authors = num_authors + this_num_authors
sep = last_first and sep_semicolon() or sep_comma()
else
for _, cant_have in ipairs(ancillary_params) do
if args[cant_have][i] then
error(("Can't have |%s%s= without |author%s= or |last%s="):format(cant_have, ind, ind, ind))
end
end
end
end
return num_authors
end
local function add_newversion()
-- If there's a "newversion" section, add the new-version text.
if has_newversion() then
sep = nil
--Test for new version of work.
add(sep_semicolon())
if args.newversion then -- newversion= is intended for English text, e.g. "quoted in" or "republished as".
add(args.newversion)
elseif not args.edition2 then
if has_new_title_or_author() then
add(L("republished as"))
else
add(L("republished"))
end
end
add(" ")
return ""
else
return ", "
end
end
------------------- Now we start outputting text ----------------------
local need_comma = false
-- Set this now so a() works just below.
get_full_paramname = make_get_full_paramname("")
if args.brackets then
add("[")
end
bold_year = not format_as_cite
year_last = format_as_cite
formatted_date, need_date = format_date_args(
a,
get_full_paramname,
alias_map,
nil,
nil,
bold_year,
L("Can we [[:Category:Requests for date|date]] this quote?"),
year_last
)
-- Fetch origdate=/origyear=/origmonth= and format appropriately.
formatted_origdate = format_date_args(a, get_full_paramname, alias_map, "orig", nil, nil, nil, year_last)
local num_authors, need_date
if format_as_cite then
num_authors = add_authors(args, "last_first")
if author_outputted then
sep = " "
end
-- Display all the text that comes after the author, for the main portion.
postauthor("", num_authors, "format_as_cite")
author_outputted = false
sep = add_newversion()
-- Add the newversion author(s).
if args["2ndauthor"] or args["2ndlast"] then
num_authors = add_author(
args["2ndauthor"],
"2ndauthor",
nil,
nil,
args["2ndauthorlink"],
"2ndauthorlink",
nil,
nil,
args["2ndfirst"],
"2ndfirst",
nil,
nil,
args["2ndlast"],
"2ndlast",
nil,
nil,
"last_first"
)
sep = sep_comma()
else
for _, cant_have in ipairs{"2ndauthorlink", "2ndfirst"} do
if args[cant_have] then
error(("Can't have |%s= without |2ndauthor= or |2ndlast="):format(cant_have))
end
end
end
-- Display all the text that comes after the author, for the "newversion" section.
postauthor(2, num_authors, "format_as_cite")
else
if formatted_date then
need_comma = true
add(formatted_date)
end
if formatted_origdate then
need_comma = true
add(SPACE_LBRAC .. formatted_origdate .. RBRAC)
end
if need_comma then
sep = sep_comma()
end
date_outputted = true
num_authors = add_authors(args)
-- Display all the text that comes after the author, for the main portion.
postauthor("", num_authors)
author_outputted = false
sep = add_newversion()
-- Add the newversion author(s).
if args["2ndauthor"] or args["2ndlast"] then
num_authors = add_author(
args["2ndauthor"],
"2ndauthor",
nil,
nil,
args["2ndauthorlink"],
"2ndauthorlink",
nil,
nil,
args["2ndfirst"],
"2ndfirst",
nil,
nil,
args["2ndlast"],
"2ndlast",
nil,
nil
)
sep = sep_comma()
else
for _, cant_have in ipairs{"2ndauthorlink", "2ndfirst"} do
if args[cant_have] then
error(("Can't have |%s= without |2ndauthor= or |2ndlast="):format(cant_have))
end
end
end
-- Display all the text that comes after the author, for the "newversion" section.
postauthor(2, num_authors)
end
if not args.nocolon then
sep = nil
-- l10n: trailing colon — zh uses fullwidth ":" with no following space
add(output_mode == "zh" and ZH_COLON or ":")
elseif args.usenodot and not args.nodot then
-- l10n: trailing period — zh uses "。"
add(output_mode == "zh" and "。" or ".")
end
-- Concatenate output portions to form output text.
local output_text = concat(output)
-- Remainder of code handles adding categories. We add one or more of the following categories:
--
-- 1. [[Category:LANG terms with quotations]], based on the first language code in termlang= or 1=. Added to
-- mainspace, Reconstruction: and Appendix: pages as well as Citations: pages if the corresponding mainspace
-- page exists. Not added if nocat= is given. Note that [[Module:usex]] adds the same category using the same
-- logic, but we do it here too because we may not have a quotation to format. (We add in those circumstances
-- because typically when there's no quotation to format, it's because it's formatted manually underneath the
-- citation, or using {{ja-x}}, {{th-x}} or similar.)
-- 2. [[Category:Requests for date in LANG entries]], based on the first language code in 1=. Added to mainspace,
-- Reconstruction:, Appendix: and Citations: pages unless nocat= is given.
-- 3. [[Category:Quotations using nocat parameter]], if nocat= is given. Added to mainspace, Reconstruction:,
-- Appendix: and Citations: pages.
local categories = {}
local termlang = get_first_lang(args.termlang or argslang)
if args.nocat then
if format_as_cite then
insert(tracking_categories, "Citations using nocat parameter")
else
insert(tracking_categories, "Quotations using nocat parameter")
end
else
-- don't create language tracking categories for citations
if not format_as_cite then
local title
if args.pagename then -- for testing, doc pages, etc.
title = mw.title.new(args.pagename)
if not title then
error(("Bad value for `args.pagename`: '%s'"):format(args.pagename))
end
else
title = mw.title.getCurrentTitle()
end
-- Only add [[Citations:foo]] to [[:Category:LANG terms with quotations]] if [[foo]] exists.
local ok_to_add_cat
if title.nsText ~= "Citations" then
ok_to_add_cat = true
else
local mainspace_title = mw.title.new(title.text)
if mainspace_title and mainspace_title.exists then
ok_to_add_cat = true
end
end
if ok_to_add_cat then
insert(categories, termlang:getFullName() .. " terms with quotations")
end
end
if need_date then
local argslangobj = get_first_lang(argslang)
insert(categories, "Requests for date in " .. argslangobj:getCanonicalName() .. " entries")
end
end
return output_text .. (
not lang and "" or
(#categories > 0 and format_categories(categories, lang, args.sort) or "") .. (
#tracking_categories > 0
and format_categories(
tracking_categories,
lang,
args.sort,
nil,
not page_should_be_ignored(mw.title.getCurrentTitle().fullText)
)
or ""
)
)
end
-- Alias specs for type= and type2=. Each spec is `{canon, aliases, with_newversion}` where `canon` is the canonical
-- parameter (with "2" added if type2= is being handled), `aliases` is a comma-separated string of aliases (with "2"
-- added if type2= is being handled, except for numeric params), and `with_newversion` indicates whether we should
-- process this spec if type2= is being handled.
local type_alias_specs = {
av = {
{"author", "writer,writers", true},
{"chapter", "episode", true},
{"chapterurl", "episodeurl", true},
{"trans-chapter", "trans-episode", true},
{"chapter_tlr", "episode_tlr,episode_tlrs,episode_translator,episode_translators", true},
{"chapter_series", "episode_series", true},
{"chapter_seriesvolume", "episode_seriesvolume", true},
{"chapter_number", "episode_number", true},
{"chapter_plain", "episode_plain", true},
{"volume", "season", true},
{"volumes", "seasons", true},
{"volume_plain", "season_plain", true},
{"volumeurl", "seasonurl", true},
{"platform", "network", true},
},
book = {
{"author", "3"},
{"title", "4"},
{"url", "5"},
{"year", "2"},
{"page", "6"},
{"text", "7"},
{"t", "8"},
},
journal = {
{"year", "2"},
{"author", "3"},
{"chapter", "title,article,4", true},
{"chapterurl", "titleurl,articleurl", true},
{"trans-chapter", "trans-title,trans-article", true},
{"chapter_tlr", "title_tlr,title_tlrs,title_translator,title_translators,article_tlr,article_tlrs,article_translator,article_translators", true},
{"chapter_series", "title_series,article_series", true},
{"chapter_seriesvolume", "title_seriesvolume,article_seriesvolume", true},
{"chapter_number", "title_number,article_number", true},
{"chapter_plain", "title_plain,article_plain", true},
{"title", "journal,magazine,newspaper,work,5", true},
{"trans-title", "trans-journal,trans-magazine,trans-newspaper,trans-work", true},
{"tlr", "journal_tlr,journal_tlrs,journal_translator,journal_translators,magazine_tlr,magazine_tlrs,magazine_translator,magazine_translators,newspaper_tlr,newspaper_tlrs,newspaper_translator,newspaper_translators,work_tlr,work_tlrs,work_translator,work_translators", true},
{"url", "6,journalurl,magazineurl,newspaperurl,workurl", true},
{"page", "7"},
{"source", "newsagency,news_agency", true},
{"text", "8"},
{"t", "9"},
},
}
-- Process interally-handled aliases related to type= or type2=. `args` is a table of arguments; `typ` is the value of
-- type= or type2=; newversion=true if we're dealing with type2=; alias_map is used to keep track of alias mappings
-- seen.
local function process_type_aliases(args, typ, newversion, alias_map)
local ind = newversion and "2" or ""
local deprecated = ine(args.lang)
if not type_alias_specs[typ] then
local possible_values = {}
for possible, _ in pairs(type_alias_specs) do
insert(possible_values, possible)
end
sort(possible_values)
error(
("Unrecognized value '%s' for type%s=; possible values are %s"):format(
typ,
ind,
concat(possible_values, ",")
)
)
end
for _, alias_spec in ipairs(type_alias_specs[typ]) do
local canon, aliases, with_newversion = unpack(alias_spec)
if with_newversion or not newversion then
canon = canon .. ind
aliases = split(aliases, ",", true)
local saw_alias = nil
for _, alias in ipairs(aliases) do
if alias:match("^%d+$") then
alias = tonumber(alias)
if deprecated then
alias = alias - 1
end
else
alias = alias .. ind
end
if args[alias] then
if saw_alias == nil then
saw_alias = alias
else
error(("|%s= and |%s= are aliases; cannot specify a value for both"):format(saw_alias, alias))
end
end
end
if saw_alias and (not newversion or type(saw_alias) == "string") then
if args[canon] then
error(("|%s= is an alias of |%s=; cannot specify a value for both"):format(saw_alias, canon))
end
args[canon] = args[saw_alias]
-- Wipe out the original after copying. This is important in case of a param that has general significance
-- but has been redefined (e.g. {{quote-av}} redefines number= for the episode number, and
-- {{quote-journal}} redefines title= for the chapter= (article). It's also important due to unhandled
-- parameter checking.
args[saw_alias] = nil
alias_map[canon] = saw_alias
end
end
end
end
-- Clone and combine frame's and parent's args while also assigning nil to empty strings. Handle aliases and ignores.
local function clone_args(direct_args, parent_args)
local args = {}
-- Processing parent args must come first so that direct args override parent args. Note that if a direct arg is
-- specified but is blank, it will still override the parent arg (with nil).
for pname, param in pairs(parent_args) do
-- [[Special:WhatLinksHere/Wiktionary:Tracking/quote/param/PARAM]]
track("param/" .. pname)
args[pname] = ine(param)
end
-- Process ignores. The value of `ignore` is a comma-separated list of parameter names to ignore (erase). We need to
-- do this before aliases due to {{quote-song}}, which sets chapter= to the value of title= in the direct params and
-- sets title= to the value of album= using an alias. If we do the ignores after aliases, we get an error during alias
-- processing, saying that title= and its alias album= are both present.
local ignores = ine(direct_args.ignore)
if ignores then
for ignore in gsplit(ignores, "%s*,%s*") do
args[ignore] = nil
end
end
local alias_map = {}
local other_controls = {}
-- noroman
local noroman = ine(direct_args.noroman)
if noroman then
other_controls.overrides = other_controls.overrides or {}
for param in gsplit(noroman, "%s*,%s*") do
other_controls.overrides[param] = (other_controls.overrides[param] or {})
other_controls.overrides[param].noroman = true
end
end
-- Process internally-specified aliases using type= or type2=.
local typ = args.type or direct_args.type
if typ then
process_type_aliases(args, typ, false, alias_map)
end
local typ2 = args.type2 or direct_args.type2
if typ2 then
process_type_aliases(args, typ2, true, alias_map)
end
-- Process externally-specified aliases. The value of `alias` is a list of semicolon-separated specs, each of which
-- is of the form DEST:SOURCE,SOURCE,... where DEST is the canonical name of a parameter and SOURCE refers to an
-- alias. Whitespace is allowed between all delimiters. The order of aliases may be important. For example, for
-- {{quote-journal}}, title= contains the article name and is an alias of underlying chapter=, while journal= or
-- work= contains the journal name and is an alias of underlying title=. As a result, the title -> chapter alias
-- must be specified before the journal/work -> title alias.
--
-- Whenever we copy a value from argument SOURCE to argument DEST, we record an entry for the pair in alias_map, so
-- that when we would display an error message about DEST, we display SOURCE instead.
--
-- Do alias processing (and ignore and error_if processing) before processing direct_args so that e.g. we can set up
-- an alias of title -> chapter and then set title= to something else in the direct args ({{quote-hansard}} does
-- this).
--
-- FIXME: Delete this once we've converted all alias processing to internal.
local aliases = ine(direct_args.alias)
if aliases then
-- Allow and discard a trailing semicolon, to make managing multiple aliases easier.
aliases = ugsub(aliases, "%s*;$", "")
for alias_spec in gsplit(aliases, "%s*;%s*") do
local alias_spec_parts = split(alias_spec, "%s*:%s*")
if #alias_spec_parts ~= 2 then
error(("Alias spec '%s' should have one colon in it"):format(alias_spec))
end
local dest, sources = unpack(alias_spec_parts)
sources = split(sources, "%s*,%s*")
local saw_source = nil
for _, source in ipairs(sources) do
if source:match("^%d+$") then
source = tonumber(source)
end
if args[source] then
if saw_source == nil then
saw_source = source
else
error(("|%s= and |%s= are aliases; cannot specify a value for both"):format(saw_source, source))
end
end
end
if saw_source then
if args[dest] then
error(("|%s= is an alias of |%s=; cannot specify a value for both"):format(saw_source, dest))
end
args[dest] = args[saw_source]
-- Wipe out the original after copying. This important in case of a param that has general significance
-- but has been redefined (e.g. {{quote-av}} redefines number= for the episode number, and
-- {{quote-journal}} redefines title= for the chapter= (article). It's also important due to unhandled
-- parameter checking.
args[saw_source] = nil
alias_map[dest] = saw_source
end
end
end
-- Process error_if. The value of `error_if` is a comma-separated list of parameter names to throw an error if seen
-- in parent_args (they are params we overwrite in the direct args).
local error_ifs = ine(direct_args.error_if)
if error_ifs then
for error_if in gsplit(error_ifs, "%s*,%s*") do
if ine(parent_args[error_if]) then
error(
("Cannot specify a value |%s=%s as it would be overwritten or ignored"):format(
error_if,
ine(parent_args[error_if])
)
)
end
end
end
for pname, param in pairs(direct_args) do
-- ignore control params
if pname ~= "ignore" and pname ~= "alias" and pname ~= "error_if" and pname ~= "noroman" then
args[pname] = ine(param)
end
end
return args, alias_map, other_controls
end
local function get_args(frame_args, parent_args, require_lang)
-- FIXME: We are processing arguments twice, once in clone_args() and then again in [[Module:parameters]]. This is
-- wasteful of memory.
local cloned_args, alias_map, other_controls = clone_args(frame_args, parent_args)
local deprecated = ine(parent_args.lang)
local alias_of_t = {alias_of = "t"}
local boolean = {type = "boolean"}
local language_sublist = {type = "language", sublist = true}
local list_allow_holes = {list = true, allow_holes = true}
local script = {type = "script"}
-- First, the "single" params that don't have FOO2 or FOOn versions.
local params = {
[deprecated and "lang" or 1] = {required = require_lang, type = "language", sublist = true, default = "und"},
["lang2"] = language_sublist,
["newversion"] = true,
["author"] = list_allow_holes,
["2ndauthor"] = true,
["trans-author"] = list_allow_holes,
["authorlink"] = list_allow_holes,
["2ndauthorlink"] = true,
["trans-authorlink"] = list_allow_holes,
["first"] = list_allow_holes,
["2ndfirst"] = true,
["trans-first"] = list_allow_holes,
["last"] = list_allow_holes,
["2ndlast"] = true,
["trans-last"] = list_allow_holes,
["nocat"] = boolean,
["nocolon"] = boolean,
-- quote params
text = true,
passage = {alias_of = "text"},
tr = true,
transliteration = {alias_of = "tr"},
ts = true,
transcription = {alias_of = "ts"},
norm = true,
normalization = {alias_of = "norm"},
sc = script,
normsc = script,
sort = true,
subst = true,
footer = true,
lit = true,
t = true,
translation = alias_of_t,
gloss = alias_of_t,
lb = true,
brackets = boolean,
-- original quote params
origtext = true,
origtr = true,
origts = true,
orignorm = true,
origsc = script,
orignormsc = script,
origsubst = true,
origlb = true,
usenodot = boolean,
nodot = boolean,
inline = boolean,
asquote = boolean,
ascite = boolean,
}
-- Most params have PARAM2 variants for use with `newversion`. FIXME: We should generalize this to
-- allow PARAMN variants for any N.
local function add_with_2(param, value)
params[param] = value
params[param .. "2"] = value
end
local function alias_with_2(alias, canon)
params[alias] = {alias_of = canon}
params[alias .. "2"] = {alias_of = canon .. "2"}
end
for _, param12 in ipairs{
"worklang",
"termlang",
"origlang",
"origworklang"
} do
add_with_2(param12, language_sublist)
end
-- Then the newversion params (which have FOO2 versions).
for _, param12 in ipairs{
-- author-like params; author params themselves are either list params (author=, last=, etc.) or single params
-- (2ndauthor=, 2ndlast=, etc.)
"coauthors",
"quotee",
"tlr",
"editor",
"editors",
"mainauthor",
"compiler",
"compilers",
"director",
"directors",
"lyricist",
"lyrics-translator",
"composer",
"role",
"actor",
"artist",
"feat",
-- author control params
"default-authorlabel",
"authorlabel",
-- title
"title",
"trans-title",
"series",
"seriesvolume",
"notitle",
-- entry
"entry",
"entryurl",
"trans-entry",
-- chapter
"chapter",
"chapterurl",
"chapter_number",
"chapter_plain",
"chapter_series",
"chapter_seriesvolume",
"trans-chapter",
"chapter_tlr",
-- section
"section",
"sectionurl",
"section_number",
"section_plain",
"section_series",
"section_seriesvolume",
"trans-section",
-- other video-game params
"system",
"scene",
"level",
-- URL
"url",
"urls",
"archiveurl",
-- edition
"edition",
"edition_plain",
-- ID params
"bibcode",
"doi",
"isbn",
"issn",
"jstor",
"lccn",
"oclc",
"ol",
"pmid",
"pmcid",
"ssrn",
"urn",
"id",
-- misc date params; most date params handled below
"archivedate",
"accessdate",
"nodate",
-- numeric params handled below
-- other params
"type",
"genre",
"format",
"medium",
"others",
"quoted_in",
"location",
"publisher",
"original",
"by",
"deriv",
"note",
"note_plain",
"other",
"source",
"platform",
} do
add_with_2(param12, true)
end
-- Then the aliases of newversion params (which have FOO2 versions).
for _, param12_aliased in ipairs{
{"role", "roles"},
{"role", "speaker"},
{"tlr", "tlrs"},
{"tlr", "translator"},
{"tlr", "translators"},
{"chapter_tlr", "chapter_tlrs"},
{"chapter_tlr", "chapter_translator"},
{"chapter_tlr", "chapter_translators"},
{"doi", "DOI"},
{"isbn", "ISBN"},
{"issn", "ISSN"},
{"jstor", "JSTOR"},
{"lccn", "LCCN"},
{"oclc", "OCLC"},
{"ol", "OL"},
{"pmid", "PMID"},
{"pmcid", "PMCID"},
{"ssrn", "SSRN"},
{"urn", "URN"},
} do
local canon, alias = unpack(param12_aliased)
alias_with_2(alias, canon)
end
-- Then the date params.
for _, datelike in ipairs{{"", ""}, {"orig", ""}, {"", "_published"}} do
local pref, suf = unpack(datelike)
for _, arg in ipairs{"date", "year", "month", "start_date", "start_year", "start_month"} do
add_with_2(pref .. arg .. suf, true)
end
end
local numeric_param_suffixes = {"", "s", "_plain", "url", "_prefix"}
-- Then the numeric params.
for _, numeric in ipairs{"volume", "issue", "number", "line", "page", "column"} do
for _, suf in ipairs(numeric_param_suffixes) do
add_with_2(numeric .. suf, true)
end
end
-- And the aliases of numeric params.
for _, numeric_aliased in ipairs{{"volume", "vol"}} do
local canon, alias = unpack(numeric_aliased)
for _, suf in ipairs(numeric_param_suffixes) do
alias_with_2(alias .. suf, canon .. suf)
end
end
return process_params(cloned_args, params), alias_map, other_controls
end
local function get_origtext_params(args)
local origtext, origtextlang, origsc, orignormsc
if args.origtext then
-- Wiktionary language codes have at least two lowercase letters followed possibly by lowercase letters and/or
-- hyphens (there are more restrictions but this is close enough). Also check for nonstandard Latin etymology
-- language codes (e.g. VL. or LL.). (There used to be more nonstandard codes but they have all been
-- eliminated.)
origtextlang, origtext = args.origtext:match("^(%l%l[%l-]*):([^ ].*)$")
if not origtextlang then
-- Special hack for Latin variants, which can have nonstandard etym codes, e.g. VL., LL.
origtextlang, origtext = args.origtext:match("^(%uL%.):([^ ].*)$")
end
if not origtextlang then
error("origtext= should begin with a language code prefix")
end
origtextlang = get_lang(origtextlang, nil, "allow etym") or
error("origtext= should begin with a language code prefix")
origsc = args.origsc
orignormsc = args.orignormsc
else
for _, noparam in ipairs{"origtr", "origts", "origsc", "orignorm", "orignormsc", "origsubst", "origlb"} do
if args[noparam] then
error(("Cannot specify %s= without origtext="):format(noparam))
end
end
end
return origtext, origtextlang, origsc, orignormsc
end
local function get_quote(args, is_cite)
local text = args.text
local gloss = args.t
local tr = args.tr
local ts = args.ts
local norm = args.norm
local sc = args.sc
local normsc = args.normsc
-- Fetch original-text parameters.
local origtext, origtextlang, origsc, orignormsc = get_origtext_params(args)
-- If any quote-related args are present, display the actual quote; otherwise, display nothing.
if text or gloss or tr or ts or norm or args.origtext then
-- Pass "und" here rather than cause an error; there will be an error on mainspace, Citations, etc. pages
-- in any case in source() if the language is omitted.
local lang = get_first_lang(args[1] or args.lang)
local termlang = args.termlang and get_first_lang(args.termlang) or lang
local usex_data = {
lang = lang,
termlang = termlang,
usex = text,
sc = sc,
translation = gloss,
normalization = norm,
normsc = normsc,
transliteration = tr,
transcription = ts,
brackets = args.brackets,
subst = args.subst,
lit = args.lit,
footer = args.footer,
qq = parse_and_format_labels(args.lb, lang),
quote = "quote-meta",
orig = origtext,
origlang = origtextlang,
origsc = origsc,
orignorm = args.orignorm,
orignormsc = orignormsc,
origtr = args.origtr,
origts = args.origts,
origsubst = args.origsubst,
origqq = parse_and_format_labels(args.origlb, lang),
noreq = args.noreq,
nocat = is_cite or args.nocat,
}
if args.inline then
-- don't let usex format the footer, otherwise it gets inlined with the rest of the quoted text
usex_data.footer = nil
usex_data.inline = 1
text = format_usex(usex_data)
if text then
text = " “" .. text .. "”"
else
text = ""
end
if args.footer then
text = text .. "<dl><dd>" .. args.footer .. "</dd></dl>"
end
else
text = "<dl><dd>" .. format_usex(usex_data) .. "</dd></dl>"
end
elseif args.footer then
text = "<dl><dd>" .. args.footer .. "</dd></dl>"
end
return text
end
-- External interface, meant to be called from a template. Replaces {{quote-meta}} and meant to be the primary
-- interface for {{quote-*}} templates.
function export.quote_t(frame)
local args, alias_map, other_controls = get_args(frame.args, frame:getParent().args, "require_lang")
if args.ascite then
return export.cite_t(frame)
end
return show_quote(args, alias_map, other_controls)
end
function show_quote(args, alias_map, other_controls)
local parts = {}
insert(parts, '<div class="citation-whole"><span class="cited-source">')
insert(parts, export.source(args, alias_map, nil, other_controls))
insert(parts, "</span>")
insert(parts, get_quote(args))
insert(parts, "</div>")
local retval = concat(parts)
return deprecated and frame:expandTemplate({
title = "check deprecated lang param usage",
args = {retval, lang = args.lang},
}) or retval
end
-- External interface, meant to be called from a template. Replaces {{cite-meta}} and meant to be the primary
-- interface for {{cite-*}} templates.
function export.cite_t(frame)
local parent_args = {}
for k, v in pairs(frame:getParent().args) do
parent_args[k] = v
end
-- use "und" as lang if none provided
if parent_args[1] == nil then
parent_args[1] = "und"
end
local args, alias_map, other_controls = get_args(frame.args, parent_args)
if args.asquote then
return show_quote(args, alias_map, other_controls)
end
return show_cite(args, alias_map, other_controls)
end
function show_cite(args, alias_map, other_controls)
local parts = {}
-- don't nag for translations
if args.text and not args.t then
args.noreq = 1
end
local len_visible = args.text and ulen((args.text:gsub("<[^<>]+>", ""))) or 0
if len_visible == 0 then
if not args.t or args.t == "-" then
args.nocolon = true
end
elseif args.inline == nil then
args.inline = not (
args.block_text
or len_visible > 300
or (args.t and not args.t == "-" and len_visible < 80)
or string.match(args.text, "<br>")
)
end
insert(parts, '<span class="citation-whole"><span class="cited-source">')
insert(parts, export.source(args, alias_map, "format_as_cite", other_controls))
insert(parts, "</span>")
insert(parts, get_quote(args, "is_cite"))
insert(parts, "</span>")
local retval = concat(parts)
return deprecated
and frame:expandTemplate({
title = "check deprecated lang param usage",
args = {retval, lang = args.lang},
})
or retval
end
-- External interface, meant to be called from a template.
function export.call_quote_template(frame)
return export.call_template(frame)
end
-- External interface, for calling a template with overloaded parameters.
function export.overload(frame)
local iargs, overloaded_args = process_params(frame.args, {
[1] = {required = true}
}, true)
local parent_args = frame:getParent().args
for k, v in pairs(parent_args) do
overloaded_args[k] = v
end
return frame:expandTemplate{title = iargs[1], args = overloaded_args}
end
-- External interface, meant to be called from a template.
function export.call_template(frame)
local parameter_sublist = {type = "parameter", sublist = true}
local iargs, other_direct_args = process_params(frame.args, {
["template"] = true,
["textparam"] = parameter_sublist,
["pageparam"] = parameter_sublist,
["propagateparams"] = parameter_sublist,
["allowparams"] = {sublist = true}, -- Doesn't use type = "parameter", because any that end in :list get processed differently.
}, true)
local function fetch_param(source, params)
for _, param in ipairs(params) do
if source[param] then
return source[param]
end
end
return nil
end
local params = {
["text"] = true,
["passage"] = true,
["footer"] = true, -- always propagates, but gets special formatting
}
-- paramaters that can be used during template declaration or included in template calls
-- if the template is called with param=- it will set any declared value to nil
local always_propagate = {
["brackets"] = true,
["usenodot"] = true,
["nodot"] = true,
["ascite"] = true,
["asquote"] = true,
}
for k,v in pairs(always_propagate) do
params[k] = v
end
local textparam = iargs.textparam or {}
for _, param in ipairs(textparam) do
params[param] = true
end
local pageparam = iargs.pageparam or {}
local pageparam1 = pageparam[1]
if pageparam1 ~= nil then
params["page"], params["pages"] = true, true
for _, param in ipairs(pageparam) do
params[param] = true
end
end
local allowparams, allow_all, list = iargs.allowparams, false
if allowparams ~= nil then
for _, allow in ipairs(allowparams) do
local param = allow:match("^(.*):list$")
if param then
if list == nil then
list = {list = true}
end
params[scribunto_parameter_key(param)] = list
elseif allow == "*" then
track("no parameter checking")
allow_all = true
else
params[scribunto_parameter_key(allow)] = true
end
end
else
local parent = frame:getParent()
local template_name = parent:getTitle()
local template_title = new_title(template_name)
local content = template_title:getContent()
local allowed_params, seen = {}, {}
-- Detect all params used by the parent template. param:get_name() takes the
-- parent frame arg table as an argument so that preprocessing will take
-- them into account, since it will matter if the name contains another
-- parameter (e.g. the outer param in "{{{foo{{{bar}}}baz}}}" will change
-- depending on the value for bar=). `seen` memoizes results based on the
-- raw parameter text (which is stored as a string in the parameter object),
-- which avoids unnecessary param:get_name() calls, which are non-trivial.
for param in find_parameters(content) do
local raw = param.raw
if not seen[raw] then
allow = param:get_name(template_args)
params[scribunto_parameter_key(allow)] = true
seen[raw] = true
end
end
end
local propagateparams = iargs.propagateparams or {}
for _, param in ipairs(propagateparams) do
params[param] = true
end
local parent_args = frame:getParent().args
local args = process_params(parent_args, params, allow_all)
parent_args = shallow_copy(parent_args)
if textparam[1] ~= "-" then
other_direct_args.passage = args.text or args.passage or fetch_param(args, textparam)
end
if not (pageparam1 == nil or pageparam1 == "-") then
other_direct_args.page = fetch_param(args, pageparam) or args.page or other_direct_args.page or nil
other_direct_args.pages = args.pages or other_direct_args.pages or nil
if other_direct_args.page == "-" then
other_direct_args.page = nil
end
if other_direct_args.pages == "-" then
other_direct_args.pages = nil
end
end
if args.footer then
other_direct_args.footer = frame:expandTemplate{title = "small", args = {args.footer}}
end
for param, _ in pairs(always_propagate) do
if args[param] == "-" then
other_direct_args[param] = nil
else
other_direct_args[param] = args[param] or other_direct_args[param] or nil
end
end
-- authorlink=- can be used to prevent copying of author= to authorlink= but we don't want to propagate this to
-- the actual {{quote-*}} code.
if other_direct_args.authorlink == "-" then
other_direct_args.authorlink = nil
end
for _, param in ipairs(propagateparams) do
if args[param] then
other_direct_args[param] = args[param]
end
end
return frame:expandTemplate{title = iargs.template or "quote-book", args = other_direct_args}
end
local paramdoc_param_replacements = {
passage = {
param_with_synonym = "<<synonym>>, {{para|text}}, or {{para|passage}}",
param_no_synonym = "{{para|text}} or {{para|passage}}",
text = [=[
* <<params>> – the passage to be quoted.]=],
},
page = {
param_with_synonym = "<<synonym>> or {{para|page}}, or {{para|pages}}",
param_no_synonym = "{{para|page}} or {{para|pages}}",
text = [=[
* <<params>> – '''mandatory in some cases''': the page number(s) quoted from. When quoting a range of pages, note the following:
** Separate the first and last pages of the range with an [[en dash]], like this: {{para|pages|10–11}}.
** You must also use {{para|pageref}} to indicate the page to be linked to (usually the page on which the Wiktionary entry appears).
: This parameter must be specified to have the template link to the online version of the work.]=],
},
page_with_roman_preface = {
param_with_synonym = {"inherit", "page"},
param_no_synonym = {"inherit", "page"},
text = [=[
* <<params>> – '''mandatory in some cases''': the page number(s) quoted from. If quoting from the preface, specify the page number(s) in lowercase Roman numerals. When quoting a range of pages, note the following:
** Separate the first and last page number of the range with an [[en dash]], like this: {{para|pages|10–11}} or {{para|pages|iii–iv}}.
** You must also use {{para|pageref}} to indicate the page to be linked to (usually the page on which the Wiktionary entry appears).
: This parameter must be specified to have the template link to the online version of the work.]=],
},
chapter = {
param_with_synonym = "<<synonym>> or {{para|chapter}}",
param_no_synonym = "{{para|chapter}}",
text = [=[
* <<params>> – the name of the chapter quoted from.]=],
},
roman_chapter = {
param_with_synonym = {"inherit", "chapter"},
param_no_synonym = {"inherit", "chapter"},
text = [=[
* <<params>> – the chapter number quoted from in uppercase Roman numerals.]=],
},
arabic_chapter = {
param_with_synonym = {"inherit", "chapter"},
param_no_synonym = {"inherit", "chapter"},
text = [=[
* <<params>> – the chapter number quoted from in Arabic numerals.]=],
},
trailing_params = {
text = [=[
* {{para|footer}} – a comment on the passage quoted.
* {{para|brackets}} – use {{para|brackets|on}} to surround a quotation with [[bracket#Noun|brackets]]. This indicates that the quotation either contains a mere mention of a term (for example, “some people find the word '''''manoeuvre''''' hard to spell”) rather than an actual use of it (for example, “we need to '''manoeuvre''' carefully to avoid causing upset”), or does not provide an actual instance of a term but provides information about related terms.]=],
},
}
function export.paramdoc(frame)
local parargs = frame:getParent().args
local args = process_params(parargs, {
[1] = true,
})
local text = args[1]
local function do_param_with_optional_synonym(param, text_to_sub, paramtext_synonym, paramtext_no_synonym)
local function sub_param(synonym)
local subbed_paramtext
if synonym then
subbed_paramtext = paramtext_synonym:gsub("<<synonym>>", "{{para|" .. replacement_escape(synonym) .. "}}")
else
subbed_paramtext = paramtext_no_synonym
end
return frame:preprocess((text_to_sub:gsub("<<params>>", replacement_escape(subbed_paramtext))))
end
text = text:gsub("<<" .. pattern_escape(param) .. ">>", function()
return sub_param()
end)
text = text:gsub("<<" .. pattern_escape(param) .. ":(.-)>>", sub_param)
end
local function fetch_text(param_to_replace, key)
local spec = paramdoc_param_replacements[param_to_replace]
local val = spec[key]
if type(val) == "string" then
return val
end
if type(val) == "table" and val[1] == "inherit" then
return fetch_text(val[2], key)
end
error(
"Internal error: Unrecognized value for param '"
.. param_to_replace
.. "', key '"
.. key
.. "': "
.. mw.dumpObject(val)
)
end
for param_to_replace, spec in pairs(paramdoc_param_replacements) do
if not spec.param_no_synonym then
-- Text to substitute directly.
text = text:gsub("<<" .. pattern_escape(param_to_replace) .. ">>", function()
return frame:preprocess(fetch_text(param_to_replace, "text"))
end)
else
do_param_with_optional_synonym(
param_to_replace,
fetch_text(param_to_replace, "text"),
fetch_text(param_to_replace, "param_with_synonym"),
fetch_text(param_to_replace, "param_no_synonym")
)
end
end
-- Remove final newline so template code can add a newline after invocation
text = text:gsub("\n$", "")
return text
end
return export
i9z72ct9jo3kmctlzgdrxvtik210y01
9787515
9787514
2026-05-24T16:13:22Z
TongcyDai
53191
9787515
Scribunto
text/plain
--[=[
This module contains functions to implement quote-* templates.
Author: Benwing2; conversion into Lua of {{quote-meta/source}} template,
written by Sgconlaw with some help from Erutuon and Benwing2.
The main interface is quote_t(). Note that the source display is handled by source(), which reads both the
arguments passed to it *and* the arguments passed to the parent template, with the former overriding the latter.
]=]
local export = {}
--[=[
FIXME:
1. Dates like `1 march 2025` with the day of the month being 1 and the month lowercased are treated as month-year-only.
The relevant code checks for a capitalized word; it should probably instead check for the actual month names or
abbrevs.
]=]
-- Named constants for all modules used, to make it easier to swap out sandbox versions.
local check_isxn_module = "Module:check isxn"
local debug_track_module = "Module:debug/track"
local en_utilities_module = "Module:en-utilities"
local italics_module = "Module:italics"
local labels_module = "Module:labels"
local languages_module = "Module:languages"
local languages_error_module = "Module:languages/error"
local links_module = "Module:links"
local number_utilities_module = "Module:number utilities"
local parameters_module = "Module:parameters"
local parse_utilities_module = "Module:parse utilities"
local qualifier_module = "Module:qualifier"
local roman_numerals_module = "Module:roman numerals"
local scribunto_module = "Module:Scribunto"
local script_utilities_module = "Module:script utilities"
local scripts_module = "Module:scripts"
local string_pattern_escape_module = "Module:string/patternEscape"
local string_replacement_escape_module = "Module:string/replacementEscape"
local string_utilities_module = "Module:string utilities"
local table_module = "Module:table"
local template_parser_module = "Module:template parser"
local usex_module = "Module:usex"
local usex_templates_module = "Module:usex/templates"
local utilities_module = "Module:utilities"
local yesno_module = "Module:yesno"
local concat = table.concat
local insert = table.insert
local new_title = mw.title.new
local remove = table.remove
local require = require
local sort = table.sort
local u = mw.ustring.char
local ugsub = mw.ustring.gsub
local umatch = mw.ustring.match
local unpack = unpack or table.unpack -- Lua 5.2 compatibility
-- Use HTML entities here to avoid parsing issues (esp. with brackets)
local SEMICOLON_SPACE = "; "
local SPACE_LBRAC = " ["
local RBRAC = "]"
local TEMP_LT = u(0xFFF1)
local TEMP_GT = u(0xFFF2)
local TEMP_LBRAC = u(0xFFF3)
local TEMP_RBRAC = u(0xFFF4)
local TEMP_SEMICOLON = u(0xFFF5)
-- ============================================================
-- l10n: Chinese localization infrastructure (zhwikt fork).
--
-- output_mode is detected once per export.source() invocation by
-- scanning every args value for CJK characters. If any value
-- contains CJK script, the module switches to "zh" mode and
-- substitutes Chinese framing at every print site; otherwise it
-- stays in "en" mode and behaves byte-for-byte identically to
-- enwikt. This avoids awkward half-translated output like
-- "第second版" when an editor copies an English template verbatim.
--
-- All localization touchpoints below this block are marked with
-- "-- l10n:" comments. To audit, grep for "l10n:". Simple word
-- substitutions go through L(); word-order shifts go through
-- build_* helper functions.
-- ============================================================
-- l10n: output mode, set per-invocation by detect_output_mode().
local output_mode = "en"
-- l10n: full-width punctuation constants for zh mode.
local ZH_COMMA = ","
local ZH_SEMICOLON = ";"
local ZH_COLON = ":"
local ZH_LPAREN = "("
local ZH_RPAREN = ")"
local ZH_LQUOTE = "「"
local ZH_RQUOTE = "」"
-- l10n: CJK script ranges used by has_cjk(). Covers Han ideographs,
-- kana and Hangul but deliberately excludes fullwidth punctuation
-- so a stray "," in an otherwise-English value doesn't trip zh mode.
local CJK_PATTERN = "[" ..
u(0x3400) .. "-" .. u(0x4DBF) .. -- CJK Unified Ideographs Extension A
u(0x4E00) .. "-" .. u(0x9FFF) .. -- CJK Unified Ideographs
u(0x3040) .. "-" .. u(0x309F) .. -- Hiragana
u(0x30A0) .. "-" .. u(0x30FF) .. -- Katakana
u(0xAC00) .. "-" .. u(0xD7AF) .. -- Hangul Syllables
"]"
local function has_cjk(s)
return type(s) == "string" and umatch(s, CJK_PATTERN) ~= nil
end
-- l10n: scan all args values (including list-typed params) for CJK.
-- trans-* params are exempt: they exist to provide display translations
-- of titles/chapters/etc., not to indicate the source work is in CJK.
-- So a Chinese trans-title on an otherwise-English template keeps the
-- output in en mode.
local function detect_output_mode(args)
for k, v in pairs(args) do
if type(k) == "string" and k:find("^trans%-") then
-- l10n: skip trans-* params (see comment above).
elseif type(v) == "string" then
if has_cjk(v) then return "zh" end
elseif type(v) == "table" then
for _, vv in pairs(v) do
if type(vv) == "string" and has_cjk(vv) then return "zh" end
end
end
end
return "en"
end
-- l10n: bilingual lookup table. Keys are the exact English literals
-- used at enwikt print sites. L() returns the key unchanged in en
-- mode; in zh mode it returns the value, falling back to the key on
-- a miss so the module stays functional under unexpected inputs.
local STRINGS = {
-- newversion verbs
["republished"] = "再版",
["republished as"] = "再版為",
-- author-like roles, prefix form (used when other authors precede)
["translated by "] = "由 ",
["edited by "] = "由 ",
["compiled by "] = "由 ",
["directed by "] = "由 ",
["performed by "] = "由 ",
["spoken by "] = "由 ",
["quoting "] = "引用 ",
-- author-like roles, suffix form (used when role-bearer comes first)
[", transl."] = "(譯)",
[", editor"] = "(編)",
[", editors"] = "(編)",
[", compiler"] = "(編纂)",
[", compilers"] = "(編纂)",
[", director"] = "(導演)",
[", directors"] = "(導演)",
[", quotee"] = "(被引用者)",
[", quotees"] = "(被引用者)",
-- bare-noun anonymous suffixes (used when role-bearer is anonymous)
[" translator"] = "譯者",
[" lyricist"] = "作詞者",
[" lyrics translator"] = "譯詞者",
[" composer"] = "作曲者",
-- music role suffixes
[" (lyrics)"] = "(作詞)",
[" (translation)"] = "(譯詞)",
[" (music)"] = "(作曲)",
-- chapter → containing title connector ("Chapter X, in Book Title")
["in "] = "收錄於 ",
-- quoting / sourcing
["sourced from "] = "來源 ",
["quoted in "] = "引述自 ",
-- archive
[", archived from "] = ",原始內容存檔自 ",
["the original"] = "原始內容",
[" on "] = ",存檔時間 ", -- between [URL label] and the archive date
-- video game / misc
[", scene: "] = ",幕:",
[", level/area: "] = ",關卡/區域:",
[" (last accessed)"] = "(最後存取)",
-- generics
["anonymous"] = "佚名",
["actor"] = "演員",
["actors"] = "演員",
["original"] = "原文",
["translation"] = "翻譯",
["unnumbered"] = "未編號",
-- numeric-field suffixes (used by format_numeric_param / format_chapterlike)
["page"] = "頁",
["pages"] = "頁",
["column"] = "-{zh-hans:列;zh-hant:欄}-",
["columns"] = "-{zh-hans:列;zh-hant:欄}-",
["line"] = "行",
["lines"] = "行",
["volume"] = "卷",
["volumes"] = "卷",
["issue"] = "期",
["issues"] = "期",
["number"] = "號",
["numbers"] = "號",
["chapter"] = "章",
["section"] = "節",
["entry"] = "條",
["edition"] = "版",
-- maintenance lines
["Please provide the book title or journal name"] =
"請提供書名或期刊名",
["Please specify the language of the quote using |1="] =
"請以 |1= 指明引文語言",
["Can we [[:Category:Requests for date|date]] this quote?"] =
"能否為此引文加上[[:Category:Requests for date|日期]]?",
["Please provide a date or year"] =
"請提供日期或年份",
}
-- l10n: simple bilingual lookup. Returns the en key unchanged in en mode.
local function L(s)
if output_mode == "en" then return s end
return STRINGS[s] or s
end
-- l10n: mode-aware separators. Read these instead of writing literal
-- ", " / "; " at print sites that need to round-trip both modes.
local function sep_comma()
return output_mode == "zh" and ZH_COMMA or ", "
end
local function sep_semicolon()
return output_mode == "zh" and ZH_SEMICOLON or SEMICOLON_SPACE
end
-- l10n: classify a numeric-field value so the zh formatter can decide
-- between "第N章" (numeric prefix) and "<val>章" / "「<val>」" (textual).
-- CHINESE_NUMERALS covers vernacular (一二...), formal (壹貳...), and
-- shorthand (兩, 廿, 卅, 〇).
local CHINESE_NUMERALS =
"零〇一二三四五六七八九十百千萬億兩两廿卅壹貳贰參叁肆伍陸陆柒捌玖拾佰仟"
local function classify_numeric_value(val)
if not val or val == "" then return "empty" end
local clean = mw.text.trim((val:gsub("<[^>]*>", "")))
if clean == "" then return "empty" end
if umatch(clean, "^[%d%s,%-–—/%.]+$") then return "arabic" end
if clean:match("^[mdclxviMDCLXVI]+$") then return "roman" end
if umatch(clean, "^[" .. CHINESE_NUMERALS .. "%s,/%-–—]+$") then
return "chinese"
end
return "text"
end
local function is_numeric_class(cls)
return cls == "arabic" or cls == "roman" or cls == "chinese"
end
-- l10n: zh-mode rendering for page/column/line/volume/issue/section/etc.
-- Numeric values (Arabic/Roman/Chinese) → "第N<suffix>";
-- textual values → "<val><suffix>" (no leading 第).
local function build_zh_numeric(val, suffix_key)
local cls = classify_numeric_value(val)
local suffix = L(suffix_key)
if is_numeric_class(cls) then
return "第" .. val .. suffix
end
return val .. suffix
end
-- l10n: zh-mode rendering for chapter/section/entry text. Numeric →
-- "第N章"; textual → "「<val>」" (drops the 第N章 wrapper because the
-- value is a chapter NAME, mirroring enwikt's textual_prefix/suffix
-- branch).
local function build_zh_chapterlike(val, suffix_key)
local cls = classify_numeric_value(val)
if is_numeric_class(cls) then
return "第" .. val .. L(suffix_key)
end
return ZH_LQUOTE .. val .. ZH_RQUOTE
end
-- l10n: "translation of X by Y" → "X(Y 譯)".
-- Variants: no by → "X 之翻譯"; no original → "原文翻譯(Y 譯)".
local function build_translation_phrase(origtype, original, by)
if output_mode == "en" then
return origtype .. " of " .. (original or "original")
.. (by and " by " .. by or "")
end
local zh_type = L(origtype)
if original and by then
return original .. ZH_LPAREN .. by .. " " .. zh_type .. ZH_RPAREN
elseif original then
return original .. " 之" .. zh_type
elseif by then
-- l10n: same shape as the main "X(Y 譯)" pattern with X = "原文"
return L("original") .. ZH_LPAREN .. by .. " " .. zh_type .. ZH_RPAREN
end
return L("original") .. zh_type
end
-- l10n: " (in French)" / " (quotation in X; overall work in Y)".
local function build_annotations_paren(annotations)
if output_mode == "en" then
return " (" .. concat(annotations, SEMICOLON_SPACE) .. ")"
end
return ZH_LPAREN .. concat(annotations, ZH_SEMICOLON) .. ZH_RPAREN
end
-- l10n: language-of-work annotation snippets used inside the paren block.
-- zh templates have no inner spaces around lang_name; lang_name is always
-- a Chinese language name in zh mode (resolved via format_langs).
local function build_lang_annotation(kind, lang_name)
if output_mode == "en" then
if kind == "in" then return "in " .. lang_name end
if kind == "quotation_in" then return "quotation in " .. lang_name end
if kind == "overall_work_in" then return "overall work in " .. lang_name end
else
if kind == "in" then return "以" .. lang_name .. "寫成" end
if kind == "quotation_in" then return "引文以" .. lang_name .. "寫成" end
if kind == "overall_work_in" then return "整體作品以" .. lang_name .. "寫成" end
end
end
-- l10n: actor / role phrases.
local function build_actor_as_role(actor)
if output_mode == "en" then return actor .. " as " end
return actor .. " 飾演 "
end
local function build_actor_paren(actor, is_plural)
local label = is_plural and L("actors") or L("actor")
if output_mode == "en" then
return actor .. " (" .. label .. ")"
end
return actor .. ZH_LPAREN .. label .. ZH_RPAREN
end
-- l10n: "published <date> via <platform>" / "published <date>" / "via <platform>".
local function build_published(date, platform)
if output_mode == "en" then
return "published " .. date .. (platform and " via " .. platform or "")
end
if platform then
return date .. " 於 " .. platform .. " 出版"
end
return date .. " 出版"
end
local function build_via(platform)
if output_mode == "en" then return "via " .. platform end
return "透過 " .. platform
end
-- l10n: ", retrieved <date>" → ",於 <date> 擷取" (verb-final shift).
local function build_retrieved(date_str)
if output_mode == "en" then return ", retrieved " .. date_str end
return ZH_COMMA .. "於 " .. date_str .. " 擷取"
end
-- l10n: derive an anonymous-role suffix. enwikt strips leading
-- punctuation/parens out of suffix_without_preceding_authors to get
-- e.g. "transl." → " translator"; we mirror that by recognising our
-- own zh suffix shapes and mapping them to bare role nouns.
local ZH_ANONYMOUS_ROLE_FROM_PAREN = {
["譯"] = "譯者",
["編"] = "編者",
["編纂"] = "編纂者",
["導演"] = "導演者",
["被引用者"] = "被引用者",
["作詞"] = "作詞者",
["譯詞"] = "譯詞者",
["作曲"] = "作曲者",
}
local function derive_anonymous_suffix_zh(zh_suffix)
local inside = umatch(zh_suffix, "^%s*((.-))%s*$")
if inside then
return ZH_ANONYMOUS_ROLE_FROM_PAREN[inside] or inside
end
return mw.text.trim(zh_suffix)
end
-- l10n: zh-mode formatter for the top-level format_date() helper used
-- by archivedate / accessdate / wayback dates. Falls back to the raw
-- timestamp on parse error.
local _zh_lang
local function zh_lang()
if not _zh_lang then _zh_lang = mw.language.new("zh") end
return _zh_lang
end
local function format_zh_date(text)
local lang = zh_lang()
local ok, date = pcall(lang.formatDate, lang, "Y年n月j日", text)
if ok then return date end
return text
end
-- l10n: zh serial join — "A、B和C" / "A、B或C" (no Oxford comma, no
-- spaces around the conjunction since CJK text doesn't use inter-word
-- spacing; mixed Latin items are an acceptable edge case).
local function zh_serial_join(parts, conj)
local n = #parts
if n == 0 then return "" end
if n == 1 then return parts[1] end
local conj_word = (conj == "or") and "或" or "和"
if n == 2 then
return parts[1] .. conj_word .. parts[2]
end
return table.concat(parts, "、", 1, n - 1) .. conj_word .. parts[n]
end
-- ============================================================
-- l10n: end of localization infrastructure block.
-- ============================================================
local function apply_subst(...)
apply_subst = require(usex_module).apply_subst
return apply_subst(...)
end
local function check_isbn(...)
check_isbn = require(check_isxn_module).check_isbn
return check_isbn(...)
end
local function check_issn(...)
check_issn = require(check_isxn_module).check_issn
return check_issn(...)
end
local function debug_track(...)
debug_track = require(debug_track_module)
return debug_track(...)
end
local function decode_entities(...)
decode_entities = require(string_utilities_module).decode_entities
return decode_entities(...)
end
local function embedded_language_links(...)
embedded_language_links = require(links_module).embedded_language_links
return embedded_language_links(...)
end
local function escape_wikicode(...)
escape_wikicode = require(parse_utilities_module).escape_wikicode
return escape_wikicode(...)
end
local function find_best_script_without_lang(...)
find_best_script_without_lang = require(scripts_module).findBestScriptWithoutLang
return find_best_script_without_lang(...)
end
local function find_parameters(...)
find_parameters = require(template_parser_module).find_parameters
return find_parameters(...)
end
local function format_categories(...)
format_categories = require(utilities_module).format_categories
return format_categories(...)
end
local function format_processed_labels(...)
format_processed_labels = require(labels_module).format_processed_labels
return format_processed_labels(...)
end
local function format_qualifier(...)
format_qualifier = require(qualifier_module).format_qualifier
return format_qualifier(...)
end
local function format_usex(...)
format_usex = require(usex_module).format_usex
return format_usex(...)
end
local function get_lang(...)
get_lang = require(languages_module).getByCode
return get_lang(...)
end
local function get_number(...)
get_number = require(number_utilities_module).get_number
return get_number(...)
end
local function get_script(...)
get_script = require(scripts_module).getByCode
return get_script(...)
end
local function gsplit(...)
gsplit = require(string_utilities_module).gsplit
return gsplit(...)
end
local function page_should_be_ignored(...)
page_should_be_ignored = require(usex_templates_module).page_should_be_ignored
return page_should_be_ignored(...)
end
local function parse_inline_modifiers(...)
parse_inline_modifiers = require(parse_utilities_module).parse_inline_modifiers
return parse_inline_modifiers(...)
end
local function parse_inline_modifiers_from_segments(...)
parse_inline_modifiers_from_segments = require(parse_utilities_module).parse_inline_modifiers_from_segments
return parse_inline_modifiers_from_segments(...)
end
local function parse_multi_delimiter_balanced_segment_run(...)
parse_multi_delimiter_balanced_segment_run = require(parse_utilities_module).parse_multi_delimiter_balanced_segment_run
return parse_multi_delimiter_balanced_segment_run(...)
end
local function parse_term_with_lang(...)
parse_term_with_lang = require(parse_utilities_module).parse_term_with_lang
return parse_term_with_lang(...)
end
local function pattern_escape(...)
pattern_escape = require(string_pattern_escape_module)
return pattern_escape(...)
end
local function pluralize(...)
pluralize = require(en_utilities_module).pluralize
return pluralize(...)
end
local function process_params(...)
process_params = require(parameters_module).process
return process_params(...)
end
local function remove_links(...)
remove_links = require(links_module).remove_links
return remove_links(...)
end
local function roman_to_arabic(...)
roman_to_arabic = require(roman_numerals_module).roman_to_arabic
return roman_to_arabic(...)
end
local function replacement_escape(...)
replacement_escape = require(string_replacement_escape_module)
return replacement_escape(...)
end
local function scribunto_parameter_key(...)
scribunto_parameter_key = require(scribunto_module).scribunto_parameter_key
return scribunto_parameter_key(...)
end
local function serial_comma_join(...)
serial_comma_join = require(table_module).serialCommaJoin
return serial_comma_join(...)
end
local function shallow_copy(...)
shallow_copy = require(table_module).shallowCopy
return shallow_copy(...)
end
local function split(...)
split = require(string_utilities_module).split
return split(...)
end
local function split_alternating_runs(...)
split_alternating_runs = require(parse_utilities_module).split_alternating_runs
return split_alternating_runs(...)
end
local function split_and_process_raw_labels(...)
split_and_process_raw_labels = require(labels_module).split_and_process_raw_labels
return split_and_process_raw_labels(...)
end
local function split_on_comma(...)
split_on_comma = require(parse_utilities_module).split_on_comma
return split_on_comma(...)
end
local function tag_text(...)
tag_text = require(script_utilities_module).tag_text
return tag_text(...)
end
local function tag_transcription(...)
tag_transcription = require(script_utilities_module).tag_transcription
return tag_transcription(...)
end
local function tag_translit(...)
tag_translit = require(script_utilities_module).tag_translit
return tag_translit(...)
end
local function ulen(...)
ulen = require(string_utilities_module).len
return ulen(...)
end
local function unitalicize_brackets(...)
unitalicize_brackets = require(italics_module).unitalicize_brackets
return unitalicize_brackets(...)
end
local function upper(...)
upper = require(string_utilities_module).upper
return upper(...)
end
local function usub(...)
usub = require(string_utilities_module).sub
return usub(...)
end
local function yesno(...)
yesno = require(yesno_module)
return yesno(...)
end
local function track(page)
debug_track("quote/" .. page)
end
local function maintenance_line(text)
return '<span class="maintenance-line">(' .. text .. ")</span>"
end
local function isbn(text)
return "[[Special:BookSources/"
.. text
.. "|→ISBN]]"
.. check_isbn(
text,
' <span class="error" style="font-size:88%">Invalid ISBN</span>[[Category:Pages with ISBN errors]]'
)
end
local function issn(text)
return "[https://www.worldcat.org/issn/"
.. text
.. " →ISSN]"
.. check_issn(
text,
' <span class="error" style="font-size:88%">Invalid ISSN</span>[[Category:Pages with ISSN errors]]'
)
end
local function lccn(text)
text = text:gsub(" ", "")
if text:find("-") then
-- old-style LCCN; reformat per request by [[User:The Editor's Apprentice]]
local prefix, part1, part2 = text:match("^(.-)(%d+)%-(%d+)$")
if prefix then
if ulen(part2) < 6 then
part2 = ("0"):rep(6 - ulen(part2)) .. part2
end
text = prefix .. part1 .. part2
end
end
return "[https://lccn.loc.gov/" .. mw.uri.encode(text) .. " →LCCN]"
end
local function format_date(text)
-- l10n: zh mode → "Y年n月j日"; en mode → enwikt #formatdate dmy.
if output_mode == "zh" then
return format_zh_date(text)
end
return mw.getCurrentFrame():callParserFunction("#formatdate", text, "dmy")
end
-- Parse a raw lb= param (or nil) to individual label info objects and then concatenate them appropriately into a
-- qualifier input, respecting flags like `omit_preComma` and `omit_postSpace` in the label specs.
local function parse_and_format_labels(raw_lb, lang)
if not raw_lb then
return nil
end
local labels = split_and_process_raw_labels{labels = raw_lb, lang = lang, nocat = true}
labels = format_processed_labels{labels = labels, lang = lang, no_ib_content = true}
if labels ~= "" then -- not sure labels can be an empty string but it seems possible in some circumstances
return {labels}
end
end
-- Convert a comma-separated list of language codes to a comma-separated list of language names. `fullname` is the
-- name of the parameter from which the list of language codes was fetched.
local function format_langs(langs)
local names = {}
for i, lang in ipairs(langs) do
names[i] = lang:getCanonicalName()
end
if #names == 1 then
return names[1]
end
-- l10n: language list joiner — zh uses 、 + 和 (no Oxford comma).
if output_mode == "zh" then
return zh_serial_join(names, "and")
end
return serial_comma_join(names)
end
local function get_first_lang(langs)
return langs[1] or get_lang("und")
end
--[=[
Normally we parse off inline modifiers and language code prefixes in various places, e.g. he:מרים<tr:Miryem>. But we
exclude HTML entries with <span ...>, <i ...>, <br/> or similar in it, caused by wrapping an argument in {{l|...}},
{{lang|...}} or similar. Basically, all tags of the sort we parse here should consist of a less-than sign, plus letters,
plus a colon, e.g. <tr:...>, so if we see a tag on the outer level that isn't in this format, we don't try to parse it.
The restriction to the outer level is to allow generated HTML inside of e.g. qualifier modifiers, such as
foo<q:similar to {{m|fr|bar}}> (if we end up supporting such modifiers).
Also exclude things that look like URL's from being parsed as having language code prefixes.
]=]
local function val_should_not_be_parsed_for_annotations(val)
return val:find("^[^<]*<%l*[^%l:]") or val:find("^%l+://")
end
local param_mods = {
t = {
-- <t:...> and <gloss:...> are aliases.
item_dest = "gloss",
},
gloss = {},
alt = {},
tr = {},
ts = {},
subst = {},
sc = {type = "script"},
f = {
convert = function(arg, parse_err)
local prefix, val = arg:match("^(.-):([^ ].*)$")
if not prefix then
prefix = ""
val = arg
end
local tags, sc_code, sc = prefix:match("^(.*)/(.-)$")
if sc_code then
sc = get_script(sc_code) or
require(languages_error_module)(sc_code, parse_err, "script code", nil, "not real lang")
else
tags = prefix
end
local quals
if tags ~= "" then
quals = split_on_comma(tags)
for i, qual in ipairs(quals) do
local obj = get_lang(qual, nil, "allow etym") or get_script(qual)
quals[i] = obj or qual
end
end
return {
quals = quals,
sc = sc,
val = val,
}
end,
store = "insert",
},
q = {},
qq = {},
}
local function generate_obj_annotated_text(text, parse_err, paramname)
local obj = {}
if text:find(":[^ ]") or text:find("%[%[") then
local display, is_wikipedia_wikisource
obj.text, obj.lang, obj.link, display, is_wikipedia_wikisource =
parse_term_with_lang {
term = text,
parse_err = parse_err,
paramname = paramname
}
-- HACK: If object is a Wikipedia or Wikisource link, we need to convert it to a two-part link
-- to avoid the w: or s: prefix showing. We should probably avoid this by calling
-- language_link() (in [[Module:links]]) in format_annotated_text() instead of the hacky stuff
-- that we currently do; but we need to test that carefully to make sure it doesn't do things like
-- munge % signs.
if is_wikipedia_wikisource and not obj.text:find("%[%[") and not obj.text:find("%]%]") then
-- Don't directly set .alt, because then if the user specifies <alt:...>, it will cause an error in
-- parse_inline_modifiers().
obj.display = display
end
else
obj.text = text
obj.link = text
end
return obj
end
--[=[
Parse a textual property that may be in a foreign language or script and may be annotated with a language prefix and/or
inline modifiers. `val` is the value of the parameter and `fullname` is the name of the parameter from which the value
was retrieved. `explicit_gloss`, if specified and non-nil, overrides any gloss specified using the <t:...> or
<gloss:...> inline modifier.
If `val` is nil, the return value of this function is nil. Otherwise it is parsed for a language prefix (e.g.
'ar:مُؤَلِّف') and inline modifiers (e.g. 'ar:مُؤَلِّف<t:Author>'), and the return value is an object with the following
fields:
`lang`: The language object corresponding to the language prefix, if specified, or nil if no language prefix is
given.
`text`: The text after stripping off any language prefix and inline modifiers.
`link`: The link part of the text if it consists of a two-part link; otherwise, same as `text`.
`alt`: Display text specified using the <alt:...> modifier, if given; otherwise, nil.
`subst`: Substitutions used to generate the transliteration, in the same format as the subst= parameter.
`sc`: The script object corresponding to the <sc:...> modifier, if given; otherwise nil.
`tr`: The transliteration corresponding to the <tr:...> modifier, if given; otherwise nil.
`ts`: The transcription corresponding to the <ts:...> modifier, if given; otherwise nil.
`gloss`: The gloss/translation corresponding to the `explicit_gloss` parameter (if given and non-nil), otherwise
the <t:...> or <gloss:...> modifiers if given, otherwise nil.
`f`: Foreign versions of the text.
`q`: Left qualifiers.
`qq`: Right qualifiers.
Note that as a special case, if `val` contains HTML tags at the top level (e.g. '<span class="Arab">...</span>', as
might be generated by specifying {{lang|ar|مُؤَلِّف}}), no language prefix or inline modifiers are parsed, and the return
value has the `noscript` field set to true, which tells format_annotated_text() not to try to identify the script of
the text and CSS-tag the text accordingly, but to leave the text untagged.
This object can be passed to format_annotated_text() to format a string displaying the text (appropriately
script-tagged, unless `noscript` is set, as described above) and modifiers.
]=]
local function parse_annotated_text(val, fullname, explicit_gloss)
if not val then
return nil
end
-- When checking for inline modifiers, exclude HTML entry with <span ...>, <i ...>, <br/> or similar in it, caused
-- by wrapping an argument in {{l|...}}, {{lang|...}} or similar. Also exclude URL's from being parsed as having
-- language code prefixes. See val_should_not_be_parsed_for_annotations() for more information. If we find a
-- parameter value with top-level HTML in it, add 'noscript = true' to indicate that we should not try to do script
-- inference and tagging. (Otherwise, e.g. if you specify {{lang|ar|مُؤَلِّف}} as the author, you'll get an extra big
-- font coming from the fact that {{lang|...}} wraps the Arabic text in CSS that increases the size from the
-- default, and then we do script detection and again wrap the text in the same CSS, which increases the size even
-- more.)
if val_should_not_be_parsed_for_annotations(val) then
return {text = val, link = val, noscript = true, gloss = explicit_gloss}
end
local obj
if val:find("<") then
-- Check for inline modifier.
obj = parse_inline_modifiers(val, {
paramname = fullname,
param_mods = param_mods,
generate_obj = generate_obj_annotated_text,
})
else
obj = generate_obj_annotated_text(val, nil, fullname)
end
if explicit_gloss then
obj.gloss = explicit_gloss
end
return obj
end
local html_entity_char_to_replacement = {
["<"] = TEMP_LT,
[">"] = TEMP_GT,
["["] = TEMP_LBRAC,
["]"] = TEMP_RBRAC,
}
local function html_entity_replacement(entity, code_without_semicolon, hash, xcode, x, code)
-- Try to decode the entity. If successful, Replace certain special HTML entities (those that are bracket-like)
-- with single Unicode characters; otherwise, replace the semicolon with a special character so it won't get
-- interpreted as a delimiter.
local ch = decode_entities(entity)
if ch ~= entity then
return html_entity_char_to_replacement[ch] or code_without_semicolon .. TEMP_SEMICOLON
end
-- If the entity doesn't decode, escape it anyway iff it follows a valid format.
if hash == "" then
-- Any nonstandard MediaWiki-only entities have now been filtered off, so treat any non-ASCII characters as
-- invalid.
return xcode:match("^[^\128-\255]+$") and code_without_semicolon .. TEMP_SEMICOLON or entity
elseif x == "" then
return xcode:match("^%d+$") and code_without_semicolon .. TEMP_SEMICOLON or entity
end
return code:match("^%x+$") and code_without_semicolon .. TEMP_SEMICOLON or entity
end
local html_entity_replacement_to_char = {
[TEMP_LT] = "<",
[TEMP_GT] = ">",
[TEMP_LBRAC] = "[",
[TEMP_RBRAC] = "]",
[TEMP_SEMICOLON] = ";",
}
local function undo_html_entity_replacement(txt)
-- Pattern covers everything in html_entity_replacement_to_char.
return (txt:gsub("\239\191[\177-\181]", html_entity_replacement_to_char))
end
-- NOTE: We try hard to optimize this function for the common cases and avoid loading [[Module:parse utilities]]
-- in such cases. The cases we can handle without loading [[Module:parse utilities]] are single values (no
-- semicolons present) without inline modifiers or language prefixes, and multi-entity values (semicolons present)
-- without (a) brackets of any kind (including parens, braces and angle brackets; angle brackets typically indicate
-- inline modifiers and other brackets may protect a semicolon from being interpreted as a delimiter);
-- (b) ampersands (which may indicate HTML entities, which protect a semicolon from being interpreted as a
-- delimiter); and (c) colons not followed by a space (which may indicate a language prefix).
local function generate_obj_multivalued_annotated_text(text, parse_err, paramname, no_undo_html_entity_replacement)
local obj = generate_obj_annotated_text(text, parse_err, paramname)
if not no_undo_html_entity_replacement then
obj.text = undo_html_entity_replacement(obj.text)
obj.link = undo_html_entity_replacement(obj.link)
end
return obj
end
--[=[
Similar to parse_annotated_text() but the parameter value may contain multiple semicolon-separated entities, each with
their own inline modifiers. Some examples:
* mainauthor=Paula Pattengale; Terea Sonsthagen
* author=Katie Brick; J. Cody Nielsen; Greg Jao; Eric Paul Rogers; John A. Monson
* author=Suzanne Brockmann; Patrick G. Lawlor (Patrick Girard); Melanie Ewbank
* author=G Ristori; et al.
* author=Jason Scott; zh:王晰宁<t:Wang Xining>
* editors=zh:包文俊; zh:金心雯
* quotee=zh:張福運<t:Chang Fu-yun>; zh:張景文<t:Chang Ching-wen>
There may be embedded semicolons within brackets, braces or parens that should not be treated as delimiters, e.g.:
* author=Oliver Optic [pseudonym; {{w|William Taylor Adams}}]
* author=author=Shannon Drake (pen name; {{w|Heather Graham Pozzessere}})
* author=James (the Elder;) Humphrys
There may also be HTML entities with semicolons in them:
* author=[{{w|Gilbert Clerke}}]
* 2ndauthor=Martin Biddle & Sally Badham
* author=Peter Christen Asbjørnsen
There may be both embedded semicolons and HTML entities with semicolons in them:
* author=[{{w|Voltaire}} [pseudonym; François-Marie Arouet]]
In general we want to treat [ like an opening bracket and ] like a closing bracket. Beware that they may be
mismatched:
* author=Anonymous [{{w|Karl Maria Kertbeny}}]
Here, `val` is the value of the parameter and `fullname` is the name of the parameter from which the value was
retrieved. `explicit_gloss`, if specified and non-nil, overrides any gloss specified using the <t:...> or <gloss:...>
inline modifier, and `explicit_gloss_fullname` is the name of the parameter from which this value was retrieved. (If
`explicit_gloss` is specified and multiple values were seen, an error results.)
Return value is a list of objects of the same sort as returned by parse_annotated_text().
]=]
local function parse_multivalued_annotated_text(val, fullname, explicit_gloss, explicit_gloss_fullname)
if not val then
return nil
end
-- NOTE: In the code that follows, we use `entity` most of the time to refer to one of the semicolon-separated
-- values in the multivalued param. Entities are most commonly people (typically authors, editors, translators or
-- the like), but may be the names of publishers, locations, or other entities. "Entity" can also refer to HTML
-- entities; in the places where this occurs, the variable name contains 'html' in it.
local splitchar, english_delim
if val:find("^,") then
splitchar = ","
english_delim = "comma"
val = val:gsub("^,", "")
else
splitchar = ";"
english_delim = "semicolon"
end
-- Optimization #1: No semicolons/commas or angle brackets (indicating inline modifiers).
if not val:find("[<" .. splitchar .. "]") then
if val_should_not_be_parsed_for_annotations(val) then
return {{text = val, link = val, noscript = true}}
else
return {generate_obj_multivalued_annotated_text(val, nil, fullname, "no undo html entity replacement")}
end
end
-- Optimization #2: Semicolons/commas but no angle brackets (indicating inline modifiers), braces, brackets, or
-- parens (any of which would protect the semicolon/comma from interpretation as a delimiter), and no ampersand
-- (which might indicate an HTML entity with a terminating semicolon, which should not be interpreted as a
-- delimiter).
if not val:find("[<>%[%](){}&]") then
local entity_objs = {}
for entity in gsplit(val, "%s*" .. splitchar .. "%s*") do
if val_should_not_be_parsed_for_annotations(entity) then
insert(entity_objs, {
text = entity,
link = entity,
noscript = true
})
else
insert(entity_objs, generate_obj_multivalued_annotated_text(entity, nil, fullname, "no undo html entity replacement"))
end
end
return entity_objs
end
-- Escape HTML entities, and get rid of directionality markers.
local amp = val:find("&", nil, true)
if amp then
-- The pattern is more permissive than the usual entity pattern, as MediaWiki has some nonstandard entities
-- that have non-ASCII characters in their codes.
val = val:gsub("((&(#?)(([xX]?)([%w\128-\255]+)));)", html_entity_replacement)
end
-- Pattern covers left-to-right (U+200E) and right-to-left (U+200F).
val = val:gsub("\226\128[\142\143]", "")
-- Parse balanced segment runs, treating HTML entities for left and right bracket and left and right angle bracket
-- as matching literal versions of the same characters.
local entity_runs = parse_multi_delimiter_balanced_segment_run(
val,
{{"[" .. TEMP_LBRAC, "]" .. TEMP_RBRAC}, {"(", ")"}, {"{", "}"}, {"<" .. TEMP_LT, ">" .. TEMP_GT}},
true
)
if type(entity_runs) == "string" then
local undo_val = undo_html_entity_replacement(val)
-- Parse error due to unbalanced delimiters. Don't throw an error here; instead, don't attempt to parse off
-- any annotations, but return the value directly, maybe allowing script tagging (not allowing it if it appears
-- the text is already script-tagged).
return {{text = undo_val, link = undo_val, noscript = not not val_should_not_be_parsed_for_annotations(val)}}
end
-- Split on semicolon (or comma), possibly surrounded by whitespace.
local separated_groups = split_alternating_runs(entity_runs, "%s*" .. splitchar .. "%s*")
-- Process each value.
local entity_objs = {}
for _, entity_group in ipairs(separated_groups) do
-- Rejoin runs that don't involve <...>.
local j = 2
while j <= #entity_group do
if not entity_group[j]:find("^<.*>$") then
entity_group[j - 1] = entity_group[j - 1] .. entity_group[j] .. entity_group[j + 1]
remove(entity_group, j)
remove(entity_group, j)
else
j = j + 2
end
end
local oneval = undo_html_entity_replacement(concat(entity_group))
-- When checking for inline modifiers, exclude HTML entry with <span ...>, <i ...>, <br/> or similar in it,
-- caused by wrapping an argument in {{l|...}}, {{lang|...}} or similar. Also exclude URL's from being parsed
-- as having language code prefixes. This works analogously to parse_annotated_text(); see there for more.
if val_should_not_be_parsed_for_annotations(oneval) then
insert(entity_objs, {
text = oneval,
link = oneval,
noscript = true
})
else
local obj
if #entity_group > 1 then
-- Check for inline modifier.
obj = parse_inline_modifiers_from_segments({
group = entity_group,
arg = oneval,
props = {
paramname = fullname,
param_mods = param_mods,
generate_obj = generate_obj_multivalued_annotated_text,
},
})
else
obj = generate_obj_multivalued_annotated_text(entity_group[1], nil, fullname)
end
insert(entity_objs, obj)
end
end
if explicit_gloss then
if #entity_objs > 1 then
error(
(
"Can't specify |%s= along with multiple %s-separated entities in |%s=; use the <t:...> "
.. "inline modifier attached to the individual entities"
):format(explicit_gloss_fullname, english_delim, fullname)
)
end
entity_objs[1].gloss = explicit_gloss
end
return entity_objs
end
--[=[
Format a text property that may be in a foreign language or script, along with annotations. This is conceptually
similar to the full_link() function in [[Module:links]], but displays the annotations in a different format that is
more appropriate for bibliographic entries. The output looks like this:
TEXT [TRANSLIT /TRANSCRIPTION/, GLOSS]
`textobj` is as returned by parse_annotated_text(). `tag_text_func`, if supplied, is a function of one argument to further
wrap the text after it has been processed and CSS-tagged appropriately, directly before insertion. `tag_gloss_func` is a
similar function for the gloss.
]=]
local function format_annotated_text(textobj, tag_text_func, tag_gloss_func)
if not textobj then
return nil
end
local text, link = textobj.text, textobj.link
local subst, tr, ts, f, gloss = textobj.subst, textobj.tr, textobj.ts, textobj.f, textobj.gloss
-- Retrieve the display text, either specified by the user (.alt) or by parse_annotated_text() (.display) when a
-- Wikipedia link is given.
local alt = textobj.alt or textobj.display
if alt then
if link:find("%[%[") or link:find("%]%]") then
local errmsg = ("Can't currently handle embedded links in '%s', with <alt:...> text '%s'"):format(link, alt)
error(escape_wikicode(errmsg))
end
text = ("[[%s|%s]]"):format(link, alt)
end
-- See above for `noscript`, meaning HTML was found in the text value, probably generated using {{lang|...}}.
-- {{lang}} already script-tags the text and processes embedded language links, so we don't want to do it again (in
-- fact, the code below within the if-clause is similar to what {{lang}} does). In such a case, an explicit language
-- won't be available and find_best_script_without_lang() may not be accurate, so we can't do automatic transliteration.
if not textobj.noscript then
local lang = textobj.lang
-- As an optimization, don't do script detection on an argument that contains only ASCII.
local sc = textobj.sc
or lang and lang:findBestScript(text)
or not text:find("^[ -~]$") and find_best_script_without_lang(text)
or nil
-- As an optimization, don't do any of the following if there's no language, script, translit or transcription,
-- as will be the case with simple ASCII values.
if lang or sc or tr or ts then
if not lang then
lang = get_lang("und")
end
if tr == "-" then
tr = nil
elseif not tr and sc and not sc:getCode():find("Lat") then -- Latn, Latf, Latg, pjt-Latn
-- might return nil
local text_for_tr = text
if subst then
text_for_tr = apply_subst(text_for_tr, subst)
else
text_for_tr = remove_links(text)
end
tr = (lang:transliterate(text_for_tr, sc))
end
-- l10n: in zh mode, Han-script text is in the wiki's host
-- language — skip lang/script tagging so the wiki's CJK font
-- CSS doesn't get applied inside citations (which would make
-- titles, locations etc. visually clash with surrounding
-- text). Triggers only when (a) we're in zh mode, (b) the
-- detected script is Han-family (Hani/Hans/Hant), and (c) no
-- explicit non-zh language was given — so foreign scripts
-- (Arab, Hebr, …) and explicit non-zh languages on Han text
-- (e.g. `ja:狂人日記`) still get tagged for their native font.
local skip_host_tagging = output_mode == "zh"
and sc and sc:getCode():find("^Han")
and (lang:getCode() == "und" or lang:getCode() == "zh")
if text:find("%[%[") then
-- FIXME: embedded_language_links() replaces % signs with their URL-encoded equivalents,
-- which messes up URL's that may be present (e.g. if chapterurl= is given). IMO this
-- should not happen, and embedded_language_links() should do nothing if no embedded links
-- are present. To work around this, only call embedded_language_links() when there are
-- embedded links present.
if skip_host_tagging then
-- l10n: Module:links requires a lang object (nil lang
-- triggers an index error). Pass und to avoid the
-- lang="zh" / :lang(zh) CSS rules, and drop sc so the
-- link-segment wrappers aren't tagged with .Hani.
local und_lang = lang:getCode() == "und" and lang or get_lang("und")
text = embedded_language_links({
term = text,
lang = und_lang,
})
else
text = embedded_language_links({
term = text,
lang = lang,
sc = sc,
})
end
end
if not skip_host_tagging and (lang:getCode() ~= "und" or sc:getCode() ~= "Latn") then
text = tag_text(text, lang, sc)
end
if tr then
-- Should we link to the transliteration of languages with lang:link_tr()? Probably not because `text` is not
-- likely to be a term that has an entry.
tr = tag_translit(tr, lang, "usex")
end
if ts then
ts = tag_transcription(ts, lang, "usex")
end
end
end
text = unitalicize_brackets(text)
if tag_text_func then
text = tag_text_func(text)
end
local parts = {}
if textobj.q then
insert(parts, format_qualifier(textobj.q) .. " ")
end
insert(parts, text)
if tr or ts or f or gloss then
insert(parts, SPACE_LBRAC)
local subparts = {}
if tr or ts then
local tr_ts
if ts then
ts = "/" .. ts .. "/"
end
if tr and ts then
tr_ts = tr .. " " .. ts
else
tr_ts = tr or ts
end
insert(subparts, tr_ts)
end
if f then
for _, ff in ipairs(f) do
local sc = ff.sc
local lang
if not sc and ff.quals then
local qual = ff.quals[1]
if type(qual) == "string" then
-- do nothing; we'll do script detection farther down
elseif qual:hasType("script") then
sc = qual
else -- language
sc = qual:findBestScript(ff.val)
lang = qual
end
end
if not lang then
lang = get_lang("und")
end
sc = sc or find_best_script_without_lang(ff.val)
local val = embedded_language_links({
term = ff.val,
lang = lang,
sc = sc,
})
if lang:getCode() ~= "und" or sc:getCode() ~= "Latn" then
val = tag_text(val, lang, sc)
end
local qual_prefix
if ff.quals then
for i, qual in ipairs(ff.quals) do
if type(qual) ~= "string" and (qual:hasType("script") or qual:hasType("language")) then
ff.quals[i] = qual:getCanonicalName()
end
end
qual_prefix = concat(ff.quals, "/") .. ": "
else
qual_prefix = ""
end
insert(subparts, qual_prefix .. val)
end
end
if gloss then
-- l10n: per-value CJK check on gloss content. tag_gloss_func
-- (e.g. tag_with_cite → <cite>) renders italic in browsers,
-- which looks poor on CJK characters. Skip the tag wrap when
-- gloss contains CJK; English glosses retain italics in both
-- output modes. The check happens before HTML wrapping so the
-- <span> tags don't interfere with detection.
local gloss_has_cjk = has_cjk(gloss)
gloss = '<span class="e-translation">' .. gloss .. "</span>"
gloss = unitalicize_brackets(gloss)
if tag_gloss_func and not gloss_has_cjk then
gloss = tag_gloss_func(gloss)
end
insert(subparts, gloss)
end
insert(parts, concat(subparts, ", "))
insert(parts, RBRAC)
end
if textobj.qq then
insert(parts, " " .. format_qualifier(textobj.qq))
end
return concat(parts)
end
--[=[
Format a multivalued text property that may be in a foreign language or script, along with annotations. This is the
multivalued analog to format_annotated_text(), and formats each individual entity using format_annotated_text(),
joining the results with `delimiter`, which defaults to ", ". It `delimiter` is "and" or "or", join the results using
serial_comma_join() with the specified conjunction.
`textobjs` is as returned by parse_multivalued_annotated_text(). `tag_text_func` and `tag_gloss_func` are as in
format_annotated_text().
]=]
local function format_multivalued_annotated_text(textobjs, delimiter, tag_text_func, tag_gloss_func)
if not textobjs then
return nil
end
if #textobjs == 1 then
return format_annotated_text(textobjs[1], tag_text_func, tag_gloss_func)
end
local parts = {}
for _, textobj in ipairs(textobjs) do
insert(parts, format_annotated_text(textobj, tag_text_func, tag_gloss_func))
end
-- Change delimiter to semicolon if the items themselves contain commas (e.g., in ", Jr.")
local use_semicolon = false
for _, obj in ipairs(textobjs) do
-- Use remove_links to ignore commas in links
if obj.text and remove_links(obj.text):find(", ") then
use_semicolon = true
break
end
end
local n = #parts
if n > 0 and parts[n]:match("^'*et al[.']*$") then
-- Special handling for 'et al.' (Latin abbreviation, kept verbatim in zh too)
parts[n] = "''et al.''"
if n == 2 then
-- author et al.
return concat(parts, " ")
else
-- l10n: enumeration separator switches to fullwidth in zh mode.
if output_mode == "zh" then
return concat(parts, use_semicolon and ZH_SEMICOLON or "、")
end
-- author 1, author 2, et al.
return concat(parts, (use_semicolon and "; ") or ", ")
end
if delimiter == "and" or delimiter == "or" then
delimiter = ", "
end
return concat(parts, delimiter)
end
if delimiter == "and" or delimiter == "or" then
-- l10n: zh uses 、 + 和/或 (no Oxford comma) instead of serialCommaJoin.
if output_mode == "zh" then
return zh_serial_join(parts, delimiter)
end
return serial_comma_join(parts, {conj = delimiter})
end
if output_mode == "zh" then
-- l10n: zh-mode delimiter substitution (no trailing space on fullwidth marks).
if delimiter == "; " then return concat(parts, ZH_SEMICOLON) end
if delimiter == ", " or delimiter == nil then return concat(parts, ZH_COMMA) end
end
return concat(parts, delimiter or ((use_semicolon and "; ") or ", "))
end
-- Fancy version of ine() (if-not-empty). Converts empty string to nil, but also strips leading/trailing space.
local function ine(arg)
if not arg then
return nil
elseif type(arg) ~= "string" then
return arg
end
arg = mw.text.trim(arg)
if arg == "" then
return nil
end
return arg
end
local abbrs = {
["a."] = {anchor = "a.", full = "ante"},
["c."] = {anchor = "c.", full = "circa"},
["p."] = {anchor = "p.", full = "post"},
}
-- Process prefixes 'a.' (ante), 'c.' (circa) and 'p.' (post) at the beginning of an arbitrary date or year spec.
-- Returns two values, the formatted version of the prefix and the date spec minus the prefix. If no prefix is found,
-- returns an empty string and the full date.
local function process_ante_circa_post(date)
local prefix = usub(date, 1, 2)
local abbr = abbrs[prefix]
local abbr_prefix = ""
if abbr then
abbr_prefix = "''[[Appendix:Glossary#"
.. abbr.anchor
.. '|<abbr title="'
.. abbr.full
.. '">'
.. abbr.anchor
.. "</abbr>]]'' "
-- Remove lowercase letter, period, and space from beginning of date parameter.
date = ugsub(date, "^%l%.%s*", "")
end
return abbr_prefix, date
end
-- Format the arguments that specify the date of the quotation. These include the following:
-- |date=: The date. If |start_date= is given, this is the end date.
-- |year=, |month=: Year and month of quotation date or end of range, if |date= isn't given.
-- |start_date=: The start date, to specify a range.
-- |start_year=, |start_month=: Year and month of start of range, if |start_date= isn't given.
-- |accessdate=: Date a website was accessed; processed if no other date was given.
-- |nodate=: Indicate that no date is present; otherwise a maintenance line will be displayed if there is no date.
--
-- If `parampref` and/or `paramsuf` are given, this modifies all the date arguments accordingly. For example, if
-- `parampref` == "orig" and `paramsuf` is omitted, the date is specified using |origdate= or |origyear=/|origmonth=,
-- and the start of the range is |origstart_date=, etc. Similarly, if `parampref` is omitted and `paramsuf` is
-- "_published", the date is specified using |date_published= or |year_published=/|month_published=, and the start of
-- the range is |start_date_published=, etc.
--
-- `a` and `get_full_paramname` are functions with the same interpretation as the local functions of the same name in
-- source(). These are used to fetch parameters and get their full names. Note that this may cause all arguments to
-- have an index added to them (|date2=, |year2=, |month2=, etc.).
--
-- `alias_map` is as in source() and is used to map canonical arguments to their aliases when aliases were used.
--
-- If `bold_year` is given, displayed years are boldfaced unless boldface is present in the parameter value.
--
-- If `maintenance_line_no_date` is specified, it should be a string that will be returned if no date is found (i.e.
-- neither |date= nor |year=, or their appropriate equivalents per `parampref` and `paramsuf`, are specified, and
-- neither |nodate= is given to indicate that there is no date, or |accessdate= is given).
--
-- Returns two values: the formatted date and a boolean indicating whether to add a maintenance category
-- [[:Category:Requests for date in LANG entries]]. The first return value will be nil if nothing is to be added
-- (in which case the scond return value will always be nil).
local function format_date_args(
a,
get_full_paramname,
alias_map,
parampref,
paramsuf,
bold_year,
maintenance_line_no_date,
year_last
)
local output = {}
parampref = parampref or ""
paramsuf = paramsuf or ""
local function getp(param)
return a(parampref .. param .. paramsuf)
end
local function pname(param)
local fullname = get_full_paramname(parampref .. param .. paramsuf)
return alias_map[fullname] or fullname
end
-- Format `timestamp` (a timestamp referencing a date) according to the spec in `code`. `param` is the base name of
-- the parameter from which the timestamp was fetched, for error messages.
local function format_date_with_code(code, timestamp, param)
-- l10n: force the locale to match output_mode rather than the wiki's
-- content language, so behaviour is deterministic regardless of
-- where the module is deployed (enwikt vs zhwikt sandbox vs test).
local language = output_mode == "zh" and zh_lang() or mw.language.new("en")
local ok, date = pcall(language.formatDate, language, code, timestamp)
if ok then
return date
else
-- All the formats used in format_date_args() are fine, so the timestamp must be at fault.
error(
(
"Timestamp |%s=%s (possibly canonicalized from its original format) could not be parsed; see the "
.. "[[mw:Help:Extension:ParserFunctions##time|documentation for the #time parser function]]"
):format(pname(param), tostring(timestamp))
)
end
end
-- Try to figure out if the given timestamp has the day of the month explicitly given. We use the following
-- algorithm:
-- 1. Format as year-month-day; if the day is not 1, the day was explicitly given, since if only the year/month are
-- given, the day shows up as 1.
-- 2. If the day shows up as 1 and there isn't a 1 or 01 in the timestamp, the day wasn't explicitly given.
-- 3. Otherwise, if there are three separate numbers (e.g. 2022-07-01), or two separate numbers plus a capitalized
-- letter (taken as an English month, e.g. 2022 July 1), the day was explicitly given, otherwise not.
--
-- `param` is the base name of the parameter from which the timestamp was fetched.
local function date_has_day_specified(timestamp, param)
local day = format_date_with_code("j", timestamp, param)
if day ~= "1" then
return true
end
local english_month = timestamp:find("%u")
local canon_timestamp = mw.text.trim((timestamp:gsub("%D+", " ")))
local seen_nums = split(canon_timestamp, " ", true)
local saw_one = false
for _, num in ipairs(seen_nums) do
if num == "1" or num == "01" then
saw_one = true
break
end
end
if not saw_one then
return false
end
return #seen_nums >= 3 or english_month and #seen_nums >= 2
end
-- Format a date with boldfaced year, as e.g. '''2023''' August 3. `explicit_day_given` indicates whether to include
-- the day; if false, the return value will be e.g. '''2023''' August. `date_param` is the base name of the param
-- from which the date was fetched, for error messages.
local function format_bold_date(date, explicit_day_given, date_param)
-- l10n: zh mode → always year-first, native "Y年n月j日" (or short
-- forms when day/month missing). year_last is ignored because
-- Chinese conventionally writes the year first regardless of
-- citation style.
if output_mode == "zh" then
local zh_code
if bold_year then
zh_code = explicit_day_given and "'''Y年''' n月j日" or "'''Y年''' n月"
else
zh_code = explicit_day_given and "Y年n月j日" or "Y年n月"
end
return format_date_with_code(zh_code, date, date_param)
end
local day_month_code = explicit_day_given and "j F" or "F"
local month_day_code = explicit_day_given and "F j" or "F"
if year_last then
if bold_year then
-- This formats like "3 August '''2023'''" (or "August '''2023'''" if day not explicitly given).
return format_date_with_code(day_month_code .. " '''Y'''", date, date_param)
else
-- This formats like "3 August 2023" (or "August 2023" if day not explicitly given).
return format_date_with_code(day_month_code .. " Y", date, date_param)
end
else
if bold_year then
-- This formats like "'''2023''' August 3" (or "'''2023''' August" if day not explicitly given).
return format_date_with_code("'''Y''' " .. month_day_code, date, date_param)
else
-- This formats like "2023 August 3" (or "2023 August" if day not explicitly given).
return format_date_with_code("Y " .. month_day_code, date, date_param)
end
end
end
-- The formatDate method of the mw.language object behaves like the {{#time:}} parser function, which doesn't
-- accept the formats "monthday monthname, year" or "year monthname monthday", but outputs garbage when it receives
-- them, behavior inherited from PHP. {{#formatdate:}} magic word is more forgiving. Fix dates so that, for
-- instance, the |date= parameter of {{quote-journal}} (which uses this code) and the |accessdate= parameter (which
-- uses {{#formatdate:}}) accept similar date formats. See:
-- * [[mw:Extension:Scribunto/Lua_reference_manual#mw.language:formatDate]]
-- * [[mw:Help:Extension:ParserFunctions##time]]
-- * [[mw:Help:Magic_words#Formatting]]
-- `date` is the date spec from the user, which is assumed to come from a parameter whose base name ends in "date";
-- `parampref` is the prefix added to "date" to get the parameter name.
local function fix_date(date, param_pref)
if tonumber(date) ~= nil then
error(
("|%s= should contain a full date (year, month, day of month); use |%s= for year"):format(
pname(param_pref .. "date"),
pname(param_pref .. "year")
)
)
elseif date and date:find("%s*%a+,%s*%d+%s*$") then
error(
("|%s= should contain a full date (year, month, day of month); use |%s=, |%s= for month and year"):format(
pname(param_pref .. "date"),
pname(param_pref .. "month"),
pname(param_pref .. "year")
)
)
end
if date then
-- Commas are replaced with spaces to prevent parsing issues
local fixed_date = ugsub(date, ", *", " ")
return (ugsub(ugsub(fixed_date or date, "(%d+ %a+),", "%1"), "^(%d%d%d%d) (%a+ %d%d?)$", "%2 %1"))
end
end
local start_date, date = fix_date(getp("start_date"), "start_"), fix_date(getp("date"), "")
local year = getp("year")
local month = getp("month")
local start_year = getp("start_year")
local start_month = getp("start_month")
if date and year then
error(("Only one of |%s= or |%s= should be specified"):format(pname("date"), pname("year")))
end
if date and month then
error(
("|%s= should only be specified in conjunction with |%s=, not with |%s="):format(
pname("month"),
pname("year"),
pname("date")
)
)
end
if start_date and start_year then
error(("Only one of |%s= or |%s= should be specified"):format(pname("start_date"), pname("start_year")))
end
if start_date and start_month then
error(
("|%s= should only be specified in conjunction with |%s=, not with |%s="):format(
pname("start_month"),
pname("start_year"),
pname("start_date")
)
)
end
if (start_date or start_year) and not (date or year) then
error(
("|%s= or |%s=/|%s= cannot be specified without specifying |%s= or |%s=/|%s="):format(
pname("start_date"),
pname("start_year"),
pname("start_month"),
pname("date"),
pname("year"),
pname("month")
)
)
end
local dash = " – "
local day_explicitly_given = date and date_has_day_specified(date, "date")
local start_day_explicitly_given = start_date and date_has_day_specified(start_date, "start_date")
-- Format a date with boldfaced year, as e.g. '''2023''' August 3 (if `explicit_day_given` specified) or
-- '''2023''' August (if `explicit_day_given` not specified). If no date specified, fall back to formatting based
-- on the year and (optionally) month params given in `yearobj` and `monthobj`, boldfacing the year if not already.
-- `date_param` is the base name of the param from which the date was fetched, for error messages.
local function format_date_or_year_month(date, yearobj, monthobj, explicit_day_given, date_param)
if date then
return format_bold_date(date, explicit_day_given, date_param)
else
-- Boldface a year spec if it's not already boldface.
if bold_year and not yearobj.text:find("'''") then
-- Clone the year object before modifying it because we may use it later to check against the current
-- year (if we're dealing with start_year).
yearobj = shallow_copy(yearobj)
yearobj.text = "'''" .. yearobj.text .. "'''"
if yearobj.alt then
yearobj.alt = "'''" .. yearobj.alt .. "'''"
end
end
if year_last then
return (monthobj and format_annotated_text(monthobj) .. " " or "") .. format_annotated_text(yearobj)
else
return format_annotated_text(yearobj) .. (monthobj and " " .. format_annotated_text(monthobj) or "")
end
end
end
local yearobj = parse_annotated_text(year, pname("year"))
local monthobj = parse_annotated_text(month, pname("month"))
local start_yearobj = parse_annotated_text(start_year, pname("start_year"))
local start_monthobj = parse_annotated_text(start_month, pname("start_month"))
if start_yearobj then
local abbr_prefix
abbr_prefix, start_yearobj.text = process_ante_circa_post(start_yearobj.text)
start_yearobj.link = select(2, process_ante_circa_post(start_yearobj.link))
insert(output, abbr_prefix)
elseif yearobj then
local abbr_prefix
abbr_prefix, yearobj.text = process_ante_circa_post(yearobj.text)
yearobj.link = select(2, process_ante_circa_post(yearobj.link))
insert(output, abbr_prefix)
end
if start_date or start_year then
-- l10n: zh mode short-circuit — render both endpoints fully ("Y年n月j日")
-- and join with a dash. We deliberately skip enwikt's elide-common-parts
-- optimization because "2026年5月24日 – 2026年5月26日" reads fine in zh
-- and avoids reconstructing partial Chinese date fragments by hand.
if output_mode == "zh" then
insert(output, format_date_or_year_month(
start_date, start_yearobj, start_monthobj,
start_day_explicitly_given, "start_date"
))
insert(output, dash)
insert(output, format_date_or_year_month(
date, yearobj, monthobj, day_explicitly_given, "date"
))
else
local cur_year = yearobj and yearobj.text or format_date_with_code("Y", date, "date")
local cur_month = monthobj and monthobj.text or date and format_date_with_code("F", date, "date") or nil
local cur_day = date and day_explicitly_given and format_date_with_code("j", date, "date") or nil
local beg_year = start_yearobj and start_yearobj.text or format_date_with_code("Y", start_date, "start_date")
local beg_month = start_monthobj and start_monthobj.text
or start_date and format_date_with_code("F", start_date, "start_date")
or nil
local beg_day = start_date
and start_day_explicitly_given
and format_date_with_code("j", start_date, "start_date")
or nil
if year_last then
if beg_day then
insert(output, beg_day .. " " .. beg_month)
else
insert(output, beg_month)
end
if beg_year ~= cur_year then
insert(output, " " .. beg_year)
end
else
insert(output, format_date_or_year_month(
start_date,
start_yearobj,
start_monthobj,
start_day_explicitly_given,
"start_date"
))
end
if cur_year ~= beg_year then
-- Different years; insert current date in full.
if beg_month or cur_month then
insert(output, dash)
else
insert(output, "–")
end
insert(output, format_date_or_year_month(date, yearobj, monthobj, day_explicitly_given, "date"))
elseif cur_month and cur_month ~= beg_month then
local month_ins = monthobj and format_annotated_text(monthobj) or cur_month
-- Same year but different months; insert current month and (if available) current day.
if cur_day then
insert(output, dash)
if year_last then
insert(output, cur_day .. " " .. month_ins)
else
insert(output, month_ins .. " " .. cur_day)
end
else
if beg_day then
insert(output, dash)
else
insert(output, "–")
end
insert(output, month_ins)
end
elseif cur_day and cur_day ~= beg_day then
-- Same year and month but different days; insert current day.
insert(output, "–")
insert(output, cur_day)
else
-- Same year, month and day; or same year and month, and day not available; or same year, and month and
-- day not available. Do nothing. FIXME: Should we throw an error?
end
if year_last and beg_year == cur_year then
if cur_month then
insert(output, " " .. cur_year)
else
insert(output, " " .. cur_year)
end
end
end -- l10n: end of en-mode range branch (matches the if output_mode=="zh" above)
elseif date or yearobj then
insert(output, format_date_or_year_month(date, yearobj, monthobj, day_explicitly_given, "date"))
elseif not maintenance_line_no_date then
-- Not main quote date. Return nil, caller will handle.
return nil, nil
elseif not getp("nodate") then
local accessdate = getp("accessdate")
if accessdate then
local explicit_day_given = date_has_day_specified(accessdate, "accessdate")
insert(output, format_bold_date(accessdate, explicit_day_given, "accessdate") .. L(" (last accessed)"))
else
if mw.title.getCurrentTitle().namespace ~= 10 then
return maintenance_line(maintenance_line_no_date), true
end
return nil, nil
end
end
return ine(concat(output)), nil
end
local function tag_with_cite(txt)
return "<cite>" .. txt .. "</cite>"
end
-- Display the source line of the quote, above the actual quote text. This contains the majority of the logic of this
-- module (formerly contained in {{quote-meta/source}}).
function export.source(args, alias_map, format_as_cite, other_controls)
-- l10n: detect output mode at the entry of every source() invocation.
-- Mode is a module-level upvalue read by L(), format_date(), and the
-- build_* helpers; we reset it each call so two transclusions on the
-- same page can independently land in en vs zh mode.
output_mode = detect_output_mode(args)
local tracking_categories = {}
local argslang = args[1] or args.lang
if not argslang then
-- For the moment, only trigger an error on mainspace pages and
-- other pages that are not user pages or pages containing discussions.
-- These are the same pages that appear in the appropriate tracking
-- categories. User and discussion pages have not generally been
-- fixed up to include a language code and so it's more helpful
-- to use a maintenance line than signal an error.
local current_title = mw.title.getCurrentTitle()
if not (current_title.namespace == 10 or page_should_be_ignored(current_title.fullText)) then
require(languages_error_module)(nil, 1)
end
end
-- Given a canonical param, convert it to the original parameter specified by the user (which may have been an
-- alias).
local function alias(param)
return alias_map[param] or param
end
local output, sep = {}
local overrides = other_controls and other_controls.overrides or {}
-- Add text to the output. The text goes into a list, and we concatenate all the list components together at the
-- end. To make it easier to handle comma-separated items, we keep track (in `sep`) of the separator (if any) that
-- needs to be inserted before the next item added. For example, if we're in the "newversion" code (ind ~= ""), and
-- there's no title and no URL, then the first time we add anything after the title, we don't want to add a
-- separating comma because the preceding text will say "republished " or "republished as " or "translated as " or
-- similar. In all- other cases, we do want to add a separating comma. The bare add() function reset the separator
-- to be nothing, while the add_with_sep() function resets the separator to be the value of `next_sep` (defaulting
-- to ", "), so the next time around we do add a comma to separate `text` from the preceding piece of text.
local function add(text)
if sep then
insert(output, sep)
end
insert(output, text)
sep = nil
end
local function add_with_sep(text, next_sep)
add(text)
-- l10n: default separator follows output_mode (zh → ",", en → ", ")
sep = next_sep or sep_comma()
end
-- FIXME: This is all very over-engineered, which makes it slow and memory-inefficient.
-- Return a function that generates the actual parameter name associated with a base param (e.g. "author", "last").
-- The actual parameter name may have an index added (an empty string for the first set of params, e.g. author=,
-- last=, or a numeric index for further sets of params, e.g. author2=, last2=, etc.).
local function make_get_full_paramname(ind)
return function(param)
return param .. ind
end
end
-- Function to fetch the actual parameter name associated with a base param (see make_get_full_paramname() above).
-- Assigned at various times below by calling make_get_full_paramname(). We do it this way so that we can have
-- wrapper functions that access params and define them only once.
local get_full_paramname
-- Return two values: the value of a parameter given the base param name (which may have a numeric index added),
-- and the parameter name from which the value was fetched (which may be an alias, i.e. you can't necessarily fetch
-- the parameter value from args[] given this name). The base parameter can be a list of such base params, which
-- are checked in turn, or nil, in which case nil is returned.
local function a_with_name(param)
if not param then
return nil
elseif type(param) ~= "table" then
local fullname = get_full_paramname(param)
return args[fullname], alias(fullname)
end
for _, par in ipairs(param) do
local val, fullname = a_with_name(par)
if val then
return val, alias(fullname)
end
end
return nil
end
-- Fetch the value of a parameter given the base param name (which may have a numeric index added). The base
-- parameter can be a list of such base params, which are checked in turn, or nil, in which case nil is returned.
local function a(param)
return (a_with_name(param))
end
-- Identical to a_with_name(param) except that it verifies that no space is present. Should be used for URL's.
local function aurl_with_name(param)
local value, fullname = a_with_name(param)
if value and value:find(" ") and not value:find("%[") then
error(("URL not allowed to contain a space, but saw |%s=%s"):format(fullname, value))
end
return value, fullname
end
-- Identical to a(param) except that it verifies that no space is present. Should be used for URL's.
local function aurl(param)
return (aurl_with_name(param))
end
-- Convenience function to fetch a parameter that may be in a foreign language or text (and may consequently have
-- a language prefix and/or inline modifiers), parse the annotations and convert the result into a formatted string.
-- This is the same as parse_and_format_annotated_text() below but also returns the full param name as the second
-- return value.
local function parse_and_format_annotated_text_with_name(param, tag_text_func, tag_gloss_func)
local val, fullname = a_with_name(param)
local obj = parse_annotated_text(val, fullname)
return format_annotated_text(obj, tag_text_func, tag_gloss_func), fullname
end
-- Convenience function to fetch a parameter that may be in a foreign language or text (and may consequently have
-- a language prefix and/or inline modifiers), parse the modifiers and convert the result into a formatted string.
-- This is a wrapper around parse_annotated_text() and format_annotated_text(). `param` is the base parameter name (see
-- a_with_name()), `tag_text_func` is an optional function to tag the parameter text after all other processing (e.g.
-- wrap in <cite>...</cite> tags), and `tag_gloss_func` is a similar function for the parameter translation/gloss.
local function parse_and_format_annotated_text(param, tag_text_func, tag_gloss_func)
return (parse_and_format_annotated_text_with_name(param, tag_text_func, tag_gloss_func))
end
-- Convenience function to fetch a multivalued parameter that may be in a foreign language or text (and may
-- consequently have a language prefix and/or inline modifiers), parse the modifiers and convert the result into a
-- formatted string. This is the multivalued analog to parse_and_format_annotated_text_with_name() and returns two
-- values, the formatted string and the full name of the parameter fetched. `delimiter` is as in
-- format_multivalued_annotated_text().
local function parse_and_format_multivalued_annotated_text_with_name(param, delimiter, tag_text_func, tag_gloss_func)
local val, fullname = a_with_name(param)
local objs = parse_multivalued_annotated_text(val, fullname)
local num_objs = objs and #objs or 0
return format_multivalued_annotated_text(objs, delimiter, tag_text_func, tag_gloss_func), fullname, num_objs
end
-- Convenience function to fetch a multivalued parameter that may be in a foreign language or text (and may
-- consequently have a language prefix and/or inline modifiers), parse the modifiers and convert the result into a
-- formatted string. This is the multivalued analog to parse_and_format_annotated_text(). `delimiter` is as in
-- format_multivalued_annotated_text().
local function parse_and_format_multivalued_annotated_text(param, delimiter, tag_text_func, tag_gloss_func)
return (parse_and_format_multivalued_annotated_text_with_name(param, delimiter, tag_text_func, tag_gloss_func))
end
-- This determines whether to display "Mary Bloggs, transl." (if there's no author preceding) or "translated by
-- Mary Bloggs" (if there's an author preceding).
local author_outputted = false
-- When formatting as a citation, the priority is to display a name and a date before the book/chapter title
-- this tracks whether or not the author/date has been displayed
local date_outputted, formatted_date, formatted_origdate = false
local function add_date(no_paren)
if not date_outputted then
if no_paren then
sep = sep_comma()
else
sep = " "
end
if formatted_date then
if no_paren then
add(formatted_date)
elseif output_mode == "zh" then
-- l10n: fullwidth parens around the date
add(ZH_LPAREN .. formatted_date .. ZH_RPAREN)
else
add("(" .. formatted_date .. ")")
end
end
if formatted_origdate then
add(SPACE_LBRAC .. formatted_origdate .. RBRAC)
end
sep = sep_comma()
date_outputted = true
end
end
local function is_anonymous(val)
return val:match("^[Aa]nonymous$") or val:match("^[Aa]non%.?$")
end
-- Add a formatted author (whose values may be specified using `author` or, for compatibility purposes, split
-- among various parameters):
-- * `author` is the value of the author param (e.g. "author", "author2" or "2ndauthor"), and `author_fullname` is
-- the full parameter name holding that value;
-- * `trans_author` is the optional value of the param holding the gloss/translation of the author, and
-- `trans_author_fullname` is the full parameter name holding that value (or nil for no such parameter);
-- * `authorlink` is the value of the authorlink param, which holds the Wikipedia link of the author(s) in `author`,
-- and `authorlink_fullname` is the full parameter name holding that value;
-- * `trans_authorlink` is the optional value of the param holding the Wikipedia link of the gloss/translation of
-- the author, and `trans_authorlink_fullname` is the full parameter name holding that value (or nil for no such
-- parameter);
-- * `first` is the value of the parameter holding the first name of the author, and `first_fullname` is the full
-- parameter name holding that value;
-- * `trans_first` is the value of the corresponding parameter holding the gloss/translation of the first name
-- (e.g. "trans-first"), and `trans_first_fullname` is the full parameter name holding that value (or nil for
-- no such parameter);
-- * `last` is the value of the parameter holding the last name of the author, and `last_fullname` is the full
-- parameter name holding that value;
-- * `trans_last` is the value of the corresponding parameter holding the gloss/translation of the last name
-- (e.g. "trans-last"), and `trans_last_fullname` is the full parameter name holding that value (or nil for
-- no such parameter).
-- * `last_first` if set, when parameters `first` and `last` are used, display the author name as "last, first"
local function add_author(
author,
author_fullname,
trans_author,
trans_author_fullname,
authorlink,
authorlink_fullname,
trans_authorlink,
trans_authorlink_fullname,
first,
first_fullname,
trans_first,
trans_first_fullname,
last,
last_fullname,
trans_last,
trans_last_fullname,
last_first
)
local function make_author_with_url(txt, txtparam, authorlink, authorlink_param)
if authorlink then
if authorlink:find("%[%[") then
error(("Can't specify links in |%s=%s"):format(authorlink_param, authorlink))
end
if txt:find("%[%[") then
error(("Can't specify links in %s=%s"):format(txtparam, txt))
end
return "[[w:" .. authorlink .. "|" .. txt .. "]]"
else
return txt
end
end
local num_authorobjs
if author then
local authorobjs =
parse_multivalued_annotated_text(author, author_fullname, trans_author, trans_author_fullname)
num_authorobjs = #authorobjs
if num_authorobjs == 1 then
if is_anonymous(authorobjs[1].text) then
authorobjs[1].text = "anonymous author"
authorobjs[1].link = "anonymous author"
end
if authorlink then
authorobjs[1].text = make_author_with_url(
authorobjs[1].text,
"|" .. author_fullname,
authorlink,
"|" .. authorlink_fullname
)
authorobjs[1].link = make_author_with_url(
authorobjs[1].link,
"|" .. author_fullname,
authorlink,
"|" .. authorlink_fullname
)
end
if authorobjs[1].gloss and trans_authorlink then
authorobjs[1].gloss = make_author_with_url(
authorobjs[1].gloss,
("<t:...> in |%s"):format(author_fullname),
trans_authorlink,
"|" .. trans_author_fullname
)
end
add(format_multivalued_annotated_text(authorobjs))
elseif trans_authorlink then
error(
(
"Can't specify |%s= along with multiple semicolon-separated entities in |%s=; use the "
.. "<t:...> inline modifier attached to the individual entities and put the link directly "
.. "in the value of the inline modifier"
):format(trans_authorlink_fullname, author_fullname)
)
else
-- Allow an authorlink with multiple authors, e.g. for use with |author=Max Mills; Harvey Mills
-- with |authorlink=Max and Harvey. For this we have to generate the entire text and link it
-- all.
local formatted_text = format_multivalued_annotated_text(authorobjs)
if authorlink then
formatted_text = make_author_with_url(
formatted_text,
"|" .. author_fullname,
authorlink,
"|" .. authorlink_fullname
)
end
add(formatted_text)
end
else
num_authorobjs = 1
-- Author separated into first name + last name. We don't currently support non-Latin-script
-- authors separated this way and probably never will.
if first then
if last_first then
author = last .. ", " .. first
else
author = first .. " " .. last
end
else
author = last
end
if authorlink then
local authorparam = first and ("|%s |%s"):format(first_fullname, last_fullname) or "|" .. last_fullname
author = make_author_with_url(author, authorparam, authorlink, authorlink_fullname)
end
local trans_author
if trans_last then
if trans_first then
trans_author = trans_first .. " " .. trans_last
else
trans_author = trans_last
end
if trans_authorlink then
local trans_authorparam = trans_first
and ("|%s |%s"):format(trans_first_fullname, trans_last_fullname)
or "|" .. trans_last_fullname
trans_author = make_author_with_url(
trans_author,
trans_authorparam,
trans_authorlink,
trans_authorlink_fullname
)
end
end
add(author)
if trans_author then
add(SPACE_LBRAC)
add(trans_author)
add(RBRAC)
end
end
author_outputted = true
return num_authorobjs
end
local function add_authorlike(
param,
prefix_with_preceding_authors,
suffix_without_preceding_authors,
suffix_if_multiple,
anonymous_suffix
)
local delimiter = author_outputted and "and" or ", "
local entities, _, num_entities = parse_and_format_multivalued_annotated_text_with_name(param, delimiter)
if not entities then
return
end
if is_anonymous(entities) then
-- If tlr=anonymous or similar given, display as "anonymous translator" or similar. If a specific
-- anonymous suffix not given, try to derive the anonymous suffix from the non-preceding-author suffix.
if not anonymous_suffix then
if output_mode == "zh" then
-- l10n: zh suffix shape is "(X)"; derive_anonymous_suffix_zh
-- maps it to a bare role noun like "譯者" / "編者" so we get
-- "佚名譯者" instead of "佚名(譯)".
anonymous_suffix = derive_anonymous_suffix_zh(suffix_without_preceding_authors)
else
local cleaned_suffix = suffix_without_preceding_authors
:gsub(" ", " ")
:gsub(" ", " ")
:gsub(" ", " ")
:gsub("[", "[")
:gsub("]", "]")
cleaned_suffix = mw.text.trim(cleaned_suffix)
if not anonymous_suffix then
anonymous_suffix = " " .. cleaned_suffix:match("^, (.*)$")
end
if not anonymous_suffix then
anonymous_suffix = " " .. cleaned_suffix:match("^%((.*)%)$")
end
if not anonymous_suffix then
anonymous_suffix = " " .. cleaned_suffix:match("^%[(.*)%]$")
end
if not anonymous_suffix then
anonymous_suffix = suffix_without_preceding_authors
end
end -- l10n: end of en branch
end
add_with_sep(L("anonymous") .. anonymous_suffix)
elseif prefix_with_preceding_authors and (author_outputted or not suffix_without_preceding_authors) then
add_with_sep(prefix_with_preceding_authors .. entities)
elseif suffix_if_multiple and num_entities > 1 then
add_with_sep(entities .. suffix_if_multiple)
else
add_with_sep(entities .. suffix_without_preceding_authors)
end
author_outputted = true
end
local function add_authorlabel()
local default_authorlabel = a("default-authorlabel")
if default_authorlabel and yesno(a("authorlabel"), true) then
sep = nil
add_with_sep(" " .. default_authorlabel)
end
end
local function has_new_title_or_author()
return args["2ndauthor"]
or args["2ndlast"]
or args.chapter2
or args.title2
or args.tlr2
or args.mainauthor2
or args.editor2
or args.editors2
or args.compiler2
or args.compilers2
or args.director2
or args.directors2
end
local function has_newversion()
return args.newversion or args.location2 or has_new_title_or_author()
end
-- Handle chapter=, section=, etc. `param` is the base name of the parameter in question, e.g. "chapter" or
-- "section". If numeric (either Arabic or Roman), add `numeric_prefix`; otherwise, parse as textual (allowing for
-- language prefixes, inline modifiers, etc.), prefix with `textual_prefix` (if given) and suffix with
-- `textual_suffix` (if given). Also checks for and handles the following (assuming param == "chapter"):
-- * chapterurl=: URL of the chapter.
-- * trans-chapter=: Chapter translation (can be given using an inline modifier <t:...>).
-- * chapter_number=: Chapter number, when chapter= is also given (otherwise put the chapter number in chapter=).
-- * chapter_plain=: Plain version of the chapter number; the "chapter " prefix isn't added.
-- * chapter_series=: Series that the chapter is within (used e.g. for journal articles part of a series).
-- * chapter_seriesvolume=: Volume of the series (compare seriesvolume=).
--
-- Returns nil if no value specified for the main parameter, otherwise the formatted value.
local function format_chapterlike(param, numeric_prefix, textual_prefix, textual_suffix)
local chap, chap_fullname = a_with_name(param)
local chap_num, chap_num_fullname = a_with_name(param .. "_number")
local chap_plain, chap_plain_fullname = parse_and_format_annotated_text_with_name(param .. "_plain")
if chap_num and chap_plain then
error(("Specify only one of |%s= or %s="):format(chap_num_fullname, chap_plain_fullname))
end
local chap_series, chap_series_fullname =
parse_and_format_annotated_text_with_name(param .. "_series", tag_with_cite, tag_with_cite)
local chap_seriesvolume, chap_seriesvolume_fullname =
parse_and_format_annotated_text_with_name(param .. "_seriesvolume")
if chap_series then
-- l10n: zh uses fullwidth ","
chap_series = sep_comma() .. chap_series
end
if chap_seriesvolume then
if not chap_series then
error(("Cannot specify |%s= without %s="):format(chap_series_fullname, chap_seriesvolume_fullname))
end
if output_mode == "zh" then
chap_series = chap_series .. ZH_LPAREN .. chap_seriesvolume .. ZH_RPAREN
else
chap_series = chap_series .. " (" .. chap_seriesvolume .. ")"
end
end
local chapterurl
local function make_chapter_with_url(chap)
if chapterurl then
return "[" .. chapterurl .. " " .. chap .. "]"
else
return chap
end
end
if not chap then
if chap_num then
error(
("Cannot specify |%s= without |%s=; put the numeric value in |%s= directly"):format(
chap_num_fullname,
chap_fullname,
chap_fullname
)
)
end
if chap_plain then
chapterurl = aurl(param .. "url")
return make_chapter_with_url(chap_plain .. (chap_series or ""))
end
return nil
end
local cleaned_chap = chap:gsub("<sup>[^<>]*</sup>", ""):gsub("[*+#]", "")
chapterurl = aurl(param .. "url")
-- l10n: zh wraps numeric-class chap as "第N章" (suffix is L(param));
-- textual chap as "「title」" (CJK corner brackets in place of "...").
local function emit_numeric(chap_with_url)
if output_mode == "zh" then
return "第" .. chap_with_url .. L(param)
end
return numeric_prefix .. chap_with_url
end
local formatted
if numeric_prefix and get_number(cleaned_chap) then
-- Arabic chapter number
formatted = emit_numeric(make_chapter_with_url(chap))
elseif
numeric_prefix
and cleaned_chap:match("^[mdclxviMDCLXVI]+$")
and roman_to_arabic(cleaned_chap, true)
and (not overrides[param] or not overrides[param].noroman)
then
-- Roman chapter number
formatted = emit_numeric(make_chapter_with_url(upper(chap)))
elseif numeric_prefix and output_mode == "zh"
and classify_numeric_value(cleaned_chap) == "chinese"
then
-- l10n: Chinese-numeral chapter number (e.g. "五"), also wraps as 第五章.
formatted = emit_numeric(make_chapter_with_url(chap))
else
-- strip leading ! (used to force text-mode for titles that look like Roman numerals like "mil" and "dill")
if chap:find("^!") then
chap = chap:gsub("^!", "")
end
-- Must be a chapter name
local chapterobj = parse_annotated_text(chap, chap_fullname, a("trans-" .. param))
chapterobj.text = make_chapter_with_url(chapterobj.text)
chapterobj.link = make_chapter_with_url(chapterobj.link)
if output_mode == "zh" then
-- l10n: textual chap name uses CJK corner brackets「」 (not "..." quotes).
formatted = ZH_LQUOTE .. format_annotated_text(chapterobj) .. ZH_RQUOTE
else
formatted = (textual_prefix or "") .. format_annotated_text(chapterobj) .. (textual_suffix or "")
end
end
if chap_num or chap_plain then
-- NOTE: Up above we throw an error if both chap_num and chap_plain are specified.
if output_mode == "zh" then
-- l10n: zh parenthesized number, e.g. 「題目」(第5章)
formatted = formatted .. ZH_LPAREN
.. (chap_plain or "第" .. chap_num .. L(param))
.. ZH_RPAREN
else
formatted = formatted .. " (" .. (chap_plain or numeric_prefix .. chap_num) .. ")"
end
end
if chap_series then
formatted = formatted .. chap_series
end
return formatted
end
-- This handles everything after displaying the author, starting with the chapter and ending with page, column,
-- line and then other=. It is currently called twice: Once to handle the main portion of the citation, and once to
-- handle a "newversion" citation. `ind` is either "" for the main portion or a number (currently only 2) for a
-- "newversion" citation. In a few places we conditionalize on `ind` to take actions depending on its value.
local function postauthor(ind, num_authors, format_as_cite)
get_full_paramname = make_get_full_paramname(ind)
if author_outputted then
add_authorlabel()
end
local coauthors = parse_and_format_multivalued_annotated_text("coauthors", "and")
if coauthors then
local with_prefix = ""
if author_outputted then
with_prefix = "with "
if num_authors == 1 then
sep = " "
end
end
add_with_sep(with_prefix .. coauthors)
author_outputted = true
end
add_authorlike("quotee", L("quoting "), L(", quotee"), L(", quotees"))
if format_as_cite and author_outputted and not date_outputted then
add_date()
sep = sep_comma()
end
add_authorlike("chapter_tlr", L("translated by "), L(", transl."), nil, L(" translator"))
local function add_sg_and_pl_authorlike(noun, verbed)
local sgparam = noun
local plparam = noun .. "s"
local sgval, sgval_fullname = a_with_name(sgparam)
local plval, plval_fullname = a_with_name(plparam)
if sgval and plval then
error(("Can't specify both |%s= and |%s="):format(sgval_fullname, plval_fullname))
end
if sgval or plval then
-- l10n: route each constructed phrase through L() so zh mode picks up
-- "由 " / "(編)" / "(編纂)" etc. from STRINGS.
local verbed_by = L(verbed .. " by ")
local comma_sgnoun = L(", " .. noun)
local comma_plnoun = L(", " .. noun .. "s")
add_authorlike(sgparam, verbed_by, comma_sgnoun, comma_plnoun)
add_authorlike(plparam, verbed_by, comma_plnoun)
end
end
local formatted_entry = format_chapterlike("entry", nil, "“", "”")
local formatted_chapter = format_chapterlike("chapter", "chapter ", "“", "”")
local function add_entry()
if formatted_entry then
add_with_sep(formatted_entry)
if not a("notitle") then
add(L("in "))
author_outputted = false
else
author_outputted = true
end
formatted_entry = nil
end
end
local function add_chapter()
add_entry()
if formatted_chapter then
add_with_sep(formatted_chapter)
if not a("notitle") then
add(L("in "))
author_outputted = false
end
formatted_chapter = nil
end
end
local function add_actor_role(format_as_cite)
local role = parse_and_format_multivalued_annotated_text("role", "and")
local actor_val, actor_fullname = a_with_name("actor")
local actor_objs = parse_multivalued_annotated_text(actor_val, actor_fullname)
local actor = format_multivalued_annotated_text(actor_objs, "and")
if format_as_cite then
if role then
if actor then
-- l10n: "John as " / "John 飾演 "
add_with_sep(build_actor_as_role(actor))
end
sep = nil
add_with_sep(role)
elseif actor then
add_with_sep(build_actor_paren(actor, #actor_objs > 1))
end
else
if role then
add_with_sep(L("spoken by ") .. role)
if actor then
sep = nil
-- l10n: parenthesized actor next to a role
if output_mode == "zh" then
add_with_sep(ZH_LPAREN .. actor .. ZH_RPAREN)
else
add_with_sep(" (" .. actor .. ")")
end
end
elseif actor then
add_with_sep(build_actor_paren(actor, #actor_objs > 1))
end
end
end
if format_as_cite then
if date_outputted then
add_chapter()
end
local output_len = #output
local mainauthor = parse_and_format_multivalued_annotated_text("mainauthor")
if mainauthor then
add_with_sep(mainauthor)
end
-- quote-* templates display "jobbed by name" after the author, controlled by the author_outputted flag
author_outputted = false
add_authorlike("tlr", L("translated by "), L(", transl."), nil, L(" translator"))
author_outputted = false
add_sg_and_pl_authorlike("editor", "edited")
add_sg_and_pl_authorlike("compiler", "compiled")
add_sg_and_pl_authorlike("director", "directed")
add_authorlike("lyricist", nil, L(" (lyrics)"), nil, L(" lyricist"))
add_authorlike("lyrics-translator", nil, L(" (translation)"), nil, L(" lyrics translator"))
add_authorlike("composer", nil, L(" (music)"), nil, L(" composer"))
add_actor_role("format_as_cite")
-- if the output length has changed, a credit name has been printed
-- and we can print the date
if output_len ~= #output then
author_outputted = true
add_date()
end
add_chapter()
else
add_chapter()
local mainauthor = parse_and_format_multivalued_annotated_text("mainauthor")
if mainauthor then
add_with_sep(mainauthor)
author_outputted = true
end
add_authorlike("tlr", L("translated by "), L(", transl."), nil, L(" translator"))
add_sg_and_pl_authorlike("editor", "edited")
add_sg_and_pl_authorlike("compiler", "compiled")
add_sg_and_pl_authorlike("director", "directed")
add_authorlike("lyricist", nil, L(" (lyrics)"), nil, L(" lyricist"))
add_authorlike("lyrics-translator", nil, L(" (translation)"), nil, L(" lyrics translator"))
add_authorlike("composer", nil, L(" (music)"), nil, L(" composer"))
end
local title, title_fullname = a_with_name("title")
local need_comma = false
if title then
local titleobj = parse_annotated_text(title, title_fullname, a("trans-title"))
add(format_annotated_text(titleobj, tag_with_cite, tag_with_cite))
local series = parse_and_format_annotated_text("series")
if series then
-- l10n: fullwidth parens around series (no leading space in zh).
add((output_mode == "zh" and ZH_LPAREN or " (") .. series)
local seriesvolume = parse_and_format_annotated_text("seriesvolume")
if seriesvolume then
add(sep_semicolon() .. seriesvolume)
end
add(output_mode == "zh" and ZH_RPAREN or ")")
end
need_comma = true
elseif ind == "" then
if not a("notitle") then
add(maintenance_line(L("Please provide the book title or journal name")))
need_comma = true
end
end
local archiveurl, archiveurl_fullname = aurl_with_name("archiveurl")
local url, url_fullname = aurl_with_name("url")
local urls, urls_fullname = aurl_with_name("urls")
if url and urls then
error(("Supply only one of |%s= and |%s="):format(url_fullname, urls_fullname))
end
local function verify_title_supplied(url_name)
-- There are too many cases of this to throw an error at this time.
-- if not title then
-- error(("If |%s= is given, |%s= must also be supplied"):format(url_name, title_fullname))
-- end
end
if archiveurl or url then
verify_title_supplied(archiveurl and archiveurl_fullname or url_fullname)
sep = nil
add("‎<sup>[" .. (archiveurl or url) .. "]</sup>")
elseif urls then
verify_title_supplied(urls_fullname)
sep = nil
add("‎<sup>" .. urls .. "</sup>")
end
-- display (in Language) if language is provided and is not English and not overriden by termlang or worklang
if format_as_cite and ind == "" and not (args.termlang or args.worklang) and (args[1] or args.lang) then
local lang = get_first_lang(args[1] or args.lang)
if lang then
local langcode = lang:getCode()
if not (langcode == "und" or langcode == "en") then
local langs = format_langs(args[1] or args.lang)
if langs then
-- l10n: cite-mode language annotation appended to the title.
add(build_annotations_paren({build_lang_annotation("in", langs)}))
end
end
end
end
if need_comma then
sep = sep_comma()
end
local edition, edition_fullname = parse_and_format_annotated_text_with_name("edition")
local edition_plain, edition_plain_fullname = parse_and_format_annotated_text_with_name("edition_plain")
if edition and edition_plain then
error(("Supply only one of |%s= and |%s="):format(edition_fullname, edition_plain_fullname))
end
if edition then
-- l10n: numeric edition → "第N版"; textual edition → "<val>版"
if output_mode == "zh" then
add_with_sep(build_zh_numeric(edition, "edition"))
else
add_with_sep(edition .. " edition")
end
end
if edition_plain then
add_with_sep(edition_plain)
end
-- Display a numeric param such as page=, volume=, column=. For each `paramname`, four params are actually
-- recognized, e.g. for paramname == "page", the params page=, pages=, page_plain= and pageurl= are recognized
-- and checked (or the same with an index, e.g. page2=, pages2=, page_plain2= and pageurl2= respectively if
-- ind == "2"). Only one of the first three can be specified; an error results if more than one are given.
-- If none are given, the return value is nil; otherwise it is a string. The numeric spec is taken directly
-- from e.g. page_plain= if given; otherwise if e.g. pages= is given, or if page= is given and looks like a
-- combination of numbers (i.e. it has a hyphen or dash in it, a comma, or the word " and "), it is prefixed
-- by `singular_desc` + "s" (e.g. "pages "), otherwise it is prefixed by just `singular_desc` (e.g. "page ").
-- (As a special case, if either e.g. page=unnumbered or pages=unnumbered is given, the numeric spec is
-- "unnumbered page".) The resulting spec is returned directly unless e.g. pageurl= is given, in which case
-- it is linked to the specified URL. Note that any of the specs can be foreign text, e.g. foreign numbers
-- (including with optional inline modifiers), and such text is handled appropriately.
local function format_numeric_param(paramname, singular_desc)
local sgval = a_with_name(paramname)
local sgobj = parse_annotated_text(sgval, paramname)
local plparamname = paramname .. "s"
local plval = a_with_name(plparamname)
local plobj = parse_annotated_text(plval, plparamname)
local plainval, plain_fullname = parse_and_format_annotated_text_with_name(paramname .. "_plain")
local numspec
if not sgval and not plval and not plainval then
return
elseif plainval and (sgval or plval) then
error(("Can't specify " .. plain_fullname .. " with " .. paramname .. " or " .. plparamname))
elseif sgval and plval then
-- if both singular and plural, display "page 1 of 1-10"
if output_mode == "zh" then
-- l10n: zh sg-of-pl range, e.g. "第1頁/共1-10頁"
numspec = "第" .. sgval .. L(paramname) .. "/共" .. plval .. L(paramname)
else
numspec = singular_desc .. " " .. sgval .. " of " .. plval
end
else
-- Merge page= and pages= and treat alike because people often mix them up in both directions.
if plainval then
numspec = plainval
else
local val = sgobj and sgobj.text or plobj.text
if val == "unnumbered" then
if output_mode == "zh" then
-- l10n: e.g. "未編號頁"
numspec = L("unnumbered") .. L(paramname)
else
numspec = "unnumbered " .. singular_desc
end
else
local desc
if val:find("^!") then
val = val:gsub("^!", "")
desc = sgval and singular_desc or pluralize(singular_desc)
else
local check_val = val
if check_val:find("%[") then
check_val = remove_links(check_val)
-- convert URL's of the form [URL DISPLAY] to the displayed value
check_val = check_val:gsub("%[[^ %[%]]* ([^%[%]]*)%]", "%1")
end
-- in case of negative page numbers (do they exist?), don't treat as multiple pages
check_val = check_val:gsub("^%-", "")
-- replace HTML entity en-dashes and em-dashes with their literal codes
check_val = check_val:gsub("–", "–")
check_val = check_val:gsub("–", "–")
check_val = check_val:gsub("—", "—")
check_val = check_val:gsub("—", "—")
-- Check for en-dash or em-dash, or two numbers (possibly with stuff after like 12a-15b)
-- separated by a hyphen or by comma a followed by a space (to avoid firing on thousands separators).
if
umatch(check_val, "[–—]")
or check_val:find(" and ")
or check_val:match("%d+[^ ]* *%- *%d+")
or check_val:match("%d+[^ ]* *, +%d+")
then
desc = pluralize(singular_desc)
else
desc = singular_desc
end
end
local obj = sgobj or plobj
obj.text = val
if obj.link:find("^!") then
obj.link = obj.link:gsub("^!", "")
end
val = format_annotated_text(obj)
if output_mode == "zh" then
-- l10n: numeric class → "第N<suffix>"; textual → "<val><suffix>"
numspec = build_zh_numeric(val, paramname)
else
numspec = desc .. " " .. val
end
end
end
end
local url = a(paramname .. "url")
if url then
return "[" .. url .. " " .. numspec .. "]"
else
return numspec
end
end
local volume = format_numeric_param("volume", a("volume_prefix") or "volume")
if volume then
add_with_sep(volume)
end
local issue = format_numeric_param("issue", a("issue_prefix") or "number")
if issue then
add_with_sep(issue)
end
-- number= is an alias for issue= (except in {{quote-av}}, where it is the episode number)
local number = format_numeric_param("number", a("number_prefix") or "number")
if number then
add_with_sep(number)
end
local annotations = {}
local genre = a("genre")
if genre then
insert(annotations, genre)
end
local format = a("format")
if format then
insert(annotations, format)
end
local medium = a("medium")
if medium then
insert(annotations, medium)
end
-- Now handle the display of language annotations like "(in French)" or
-- "(quotation in Nauruan; overall work in German)".
local quotelang = args[1] or args.lang
if not quotelang then
if ind == "" then
-- This can only happen for certain non-mainspace pages, e.g. Talk pages; otherwise an error is thrown
-- above.
insert(annotations, maintenance_line(L("Please specify the language of the quote using |1=")))
else
-- do nothing in newversion= portion
end
elseif ind == "" then
local worklang = a("worklang")
local termlang = a("termlang")
worklang = worklang or quotelang
termlang = termlang or quotelang
if worklang == quotelang then
if worklang == termlang then
-- do nothing
else
insert(annotations, build_lang_annotation("in", format_langs(quotelang)))
end
else
if quotelang ~= termlang then
insert(annotations, build_lang_annotation("quotation_in", format_langs(quotelang)))
end
insert(annotations, build_lang_annotation("overall_work_in", format_langs(worklang)))
end
else
local lang2 = a("lang2")
if lang2 then
insert(annotations, build_lang_annotation("in", format_langs(lang2)))
end
end
if #annotations > 0 then
sep = nil
add_with_sep(build_annotations_paren(annotations))
end
local artist = parse_and_format_multivalued_annotated_text("artist", "and")
if artist then
add_with_sep(L("performed by ") .. artist)
end
local feat = parse_and_format_multivalued_annotated_text("feat", "and")
if feat then
sep = " "
-- l10n: "ft." is universal in modern music citation and not translated.
add_with_sep("ft. " .. feat)
end
if not format_as_cite then
add_actor_role()
end
local others = parse_and_format_annotated_text("others")
if others then
add_with_sep(others)
end
local quoted_in = parse_and_format_annotated_text("quoted_in", tag_with_cite, tag_with_cite)
if quoted_in then
add_with_sep(L("quoted in ") .. quoted_in)
insert(tracking_categories, "Quotations using quoted-in parameter")
end
local location = parse_and_format_multivalued_annotated_text("location", "; ")
local publisher = parse_and_format_multivalued_annotated_text("publisher", "; ")
if publisher then
if location then
add_with_sep(location) -- colon
-- l10n: separator between location and publisher (colon)
sep = output_mode == "zh" and ZH_COLON or ": "
end
add_with_sep(publisher)
elseif location then
add_with_sep(location)
end
if not date_outputted then
add_date("no_paren")
end
local source = parse_and_format_multivalued_annotated_text("source", "and")
if source then
add_with_sep(L("sourced from ") .. source)
end
local original = parse_and_format_annotated_text("original", tag_with_cite, tag_with_cite)
local by = parse_and_format_multivalued_annotated_text("by", "and")
local origtype = a("deriv") or "translation"
if original or by then
-- l10n: "translation of X by Y" → "X,Y 譯" (word order shift, see build_translation_phrase)
add_with_sep(build_translation_phrase(origtype, original, by))
end
-- Handle origlang=, origworklang=. How we handle them depends on whether the original title or author are explicitly
-- given.
local origlang = a("origlang")
local origworklang = a("origworklang")
local origlangtext, origworklangtext
if origlang then
origlangtext = build_lang_annotation("in", format_langs(origlang))
end
if origworklang then
origworklangtext = build_lang_annotation("overall_work_in", format_langs(origworklang))
end
if origlang or origworklang then
if original or by then
local orig_annotations = {}
if origlangtext then
insert(orig_annotations, origlangtext)
end
if origworklangtext then
insert(orig_annotations, origworklangtext)
end
sep = nil
add_with_sep(build_annotations_paren(orig_annotations))
else
-- l10n: "translation of original (in French)" → "原文翻譯(以法語寫成)"
add_with_sep(build_translation_phrase(origtype, nil, nil)
.. (origlangtext and " " .. origlangtext or ""))
if origworklangtext then
sep = nil
add_with_sep(build_annotations_paren({origworklangtext}))
end
end
end
if ind ~= "" and has_newversion() then
local formatted_new_date = format_date_args(a, get_full_paramname, alias_map, "", "", nil, L("Please provide a date or year"), true)
if formatted_new_date then
add_with_sep(formatted_new_date)
end
end
-- Fetch date_published=/year_published=/month_published= and format appropriately.
local formatted_date_published = format_date_args(a, get_full_paramname, alias_map, "", "_published", nil, nil, true)
local platform = parse_and_format_multivalued_annotated_text("platform", "and")
if formatted_date_published then
-- l10n: "published <date> via <platform>" → "<date> 於 <platform> 出版"
add_with_sep(build_published(formatted_date_published, platform))
elseif platform then
add_with_sep(build_via(platform))
end
-- From here on out, there should always be a preceding item, so we
-- can dispense with add_with_sep() and always insert the comma.
sep = nil
local function small(txt)
-- l10n: leading comma is a separator; HTML <small> tags are untranslated.
add(sep_comma() .. "<small>")
add(txt)
add("</small>")
end
-- Add an identifier to a book or article database such as DOI, ISBN, JSTOR, etc. `param_or_params`
-- is a string identifying the base param, or a list of such strings to check in turn. If found, the value
-- of the parameter is processed using `process` (a function of one argument, defaulting to mw.uri.encode()),
-- and then the actual URL to insert is generated by preceding with `pretext`, following with `posttext`,
-- and running the resulting string through small(), which first adds a comma and then the URL in small font.
local function add_identifier(param_or_params, pretext, posttext, process)
local val = a(param_or_params)
if val then
val = (process or mw.uri.encode)(val)
small(pretext .. val .. posttext)
end
end
add_identifier("bibcode", "[https://adsabs.harvard.edu/abs/", " →Bibcode]")
add_identifier("doi", '<span class="neverexpand">[https://doi.org/', " →DOI]</span>")
add_identifier("isbn", "", "", isbn)
add_identifier("issn", "", "", issn)
add_identifier("jstor", "[https://www.jstor.org/stable/", " →JSTOR]")
add_identifier("lccn", "", "", lccn)
add_identifier("oclc", "[https://search.worldcat.org/title/", " →OCLC]")
add_identifier("ol", "[https://openlibrary.org/works/OL", "/ →OL]")
add_identifier("pmid", "[https://www.ncbi.nlm.nih.gov/pubmed/", " →PMID]")
add_identifier("pmcid", "[https://www.ncbi.nlm.nih.gov/pmc/articles/", "/ →PMCID]")
add_identifier("ssrn", "[https://ssrn.com/abstract=", " →SSRN]")
-- add_identifier("urn", "", "", urn)
local id = a("id")
if id then
small(id)
end
archiveurl, archiveurl_fullname = aurl_with_name("archiveurl")
if archiveurl then
add(L(", archived from "))
local url, url_fullname = aurl_with_name("url")
if not url then
-- attempt to infer original URL from archive URL; this works at
-- least for Wayback Machine (web.archive.org) URL's
url = archiveurl:match("/(https?:.*)$")
if not url then
error(
("When |%s= is specified, |%s= must also be included"):format(archiveurl_fullname, url_fullname)
)
end
end
add("[" .. url .. " " .. L("the original") .. "]" .. L(" on "))
local archivedate, archivedate_fullname = a_with_name("archivedate")
if archivedate then
add(format_date(archivedate))
elseif string.sub(archiveurl, 1, 28) == "https://web.archive.org/web/" then
-- If the archive is from the Wayback Machine, then it already contains the date
-- Get the date and format it
local wayback_date = string.sub(archiveurl, 29, 29 + 7)
wayback_date = string.sub(wayback_date, 1, 4)
.. "-"
.. string.sub(wayback_date, 5, 6)
.. "-"
.. string.sub(wayback_date, 7, 8)
add(format_date(wayback_date))
else
error(
("When |%s= is specified, |%s= must also be included"):format(
archiveurl_fullname,
archivedate_fullname
)
)
end
end
if a("accessdate") then
--Otherwise do not display here, as already used as a fallback for missing date= or year= earlier.
if (a("date") or a("nodate") or a("year")) and not a("archivedate") then
-- l10n: ", retrieved <date>" → ",於 <date> 擷取" (verb-final)
add(build_retrieved(format_date(a("accessdate"))))
end
end
local formatted_section = format_chapterlike("section", "section ")
if formatted_section then
add(sep_comma())
add(formatted_section)
end
-- video game stuff
local system = parse_and_format_annotated_text("system")
if system then
add(sep_comma() .. system)
end
local scene = parse_and_format_annotated_text("scene")
if scene then
add(L(", scene: ") .. scene)
end
local level = parse_and_format_annotated_text("level")
if level then
add(L(", level/area: ") .. level)
end
local note = parse_and_format_annotated_text("note")
if note then
add(sep_comma() .. note)
end
local note_plain = parse_and_format_annotated_text("note_plain")
if note_plain then
add(" " .. note_plain)
end
-- Wrapper around format_numeric_param that inserts the formatted text with optional preceding text.
local function handle_numeric_param(paramname, singular_desc, pretext)
local numspec = format_numeric_param(paramname, singular_desc)
if numspec then
add((pretext or "") .. numspec)
end
end
-- l10n: pretext is the leading separator before each piece; format_numeric_param
-- internally produces "第N頁/欄/行" or "<val>頁/欄/行" in zh mode.
handle_numeric_param("page", a("page_prefix") or "page", sep_comma())
handle_numeric_param("column", a("column_prefix") or "column", sep_comma())
handle_numeric_param("line", a("line_prefix") or "line", sep_comma())
-- FIXME: Does this make sense? What is other=?
local other = parse_and_format_annotated_text("other")
if other then
add(sep_comma() .. other)
end
end
local function add_authors(args, last_first)
-- Find maximum indexed author or last name.
local maxind = math.max(args.author.maxindex, args.last.maxindex)
-- Include max index of ancillary params so we get an error message about their use without the primary params.
local ancillary_params =
{"trans-author", "authorlink", "trans-authorlink", "first", "trans-first", "trans-last"}
for _, ancillary in ipairs(ancillary_params) do
maxind = math.max(maxind, args[ancillary].maxindex)
end
local num_authors = 0
for i = 1, maxind do
local ind = i == 1 and "" or i
local author, last = args.author[i], args.last[i]
if author or last then
local this_num_authors = add_author(
author,
"author" .. ind,
args["trans-author"][i],
"trans-author" .. ind,
args.authorlink[i],
"authorlink" .. ind,
args["trans-authorlink"][i],
"trans-authorlink" .. ind,
args.first[i],
"first" .. ind,
args["trans-first"][i],
"trans-first" .. ind,
last,
"last" .. ind,
args["trans-last"][i],
"trans-last" .. ind,
last_first
)
num_authors = num_authors + this_num_authors
sep = last_first and sep_semicolon() or sep_comma()
else
for _, cant_have in ipairs(ancillary_params) do
if args[cant_have][i] then
error(("Can't have |%s%s= without |author%s= or |last%s="):format(cant_have, ind, ind, ind))
end
end
end
end
return num_authors
end
local function add_newversion()
-- If there's a "newversion" section, add the new-version text.
if has_newversion() then
sep = nil
--Test for new version of work.
add(sep_semicolon())
if args.newversion then -- newversion= is intended for English text, e.g. "quoted in" or "republished as".
add(args.newversion)
elseif not args.edition2 then
if has_new_title_or_author() then
add(L("republished as"))
else
add(L("republished"))
end
end
add(" ")
return ""
else
return ", "
end
end
------------------- Now we start outputting text ----------------------
local need_comma = false
-- Set this now so a() works just below.
get_full_paramname = make_get_full_paramname("")
if args.brackets then
add("[")
end
bold_year = not format_as_cite
year_last = format_as_cite
formatted_date, need_date = format_date_args(
a,
get_full_paramname,
alias_map,
nil,
nil,
bold_year,
L("Can we [[:Category:Requests for date|date]] this quote?"),
year_last
)
-- Fetch origdate=/origyear=/origmonth= and format appropriately.
formatted_origdate = format_date_args(a, get_full_paramname, alias_map, "orig", nil, nil, nil, year_last)
local num_authors, need_date
if format_as_cite then
num_authors = add_authors(args, "last_first")
if author_outputted then
sep = " "
end
-- Display all the text that comes after the author, for the main portion.
postauthor("", num_authors, "format_as_cite")
author_outputted = false
sep = add_newversion()
-- Add the newversion author(s).
if args["2ndauthor"] or args["2ndlast"] then
num_authors = add_author(
args["2ndauthor"],
"2ndauthor",
nil,
nil,
args["2ndauthorlink"],
"2ndauthorlink",
nil,
nil,
args["2ndfirst"],
"2ndfirst",
nil,
nil,
args["2ndlast"],
"2ndlast",
nil,
nil,
"last_first"
)
sep = sep_comma()
else
for _, cant_have in ipairs{"2ndauthorlink", "2ndfirst"} do
if args[cant_have] then
error(("Can't have |%s= without |2ndauthor= or |2ndlast="):format(cant_have))
end
end
end
-- Display all the text that comes after the author, for the "newversion" section.
postauthor(2, num_authors, "format_as_cite")
else
if formatted_date then
need_comma = true
add(formatted_date)
end
if formatted_origdate then
need_comma = true
add(SPACE_LBRAC .. formatted_origdate .. RBRAC)
end
if need_comma then
sep = sep_comma()
end
date_outputted = true
num_authors = add_authors(args)
-- Display all the text that comes after the author, for the main portion.
postauthor("", num_authors)
author_outputted = false
sep = add_newversion()
-- Add the newversion author(s).
if args["2ndauthor"] or args["2ndlast"] then
num_authors = add_author(
args["2ndauthor"],
"2ndauthor",
nil,
nil,
args["2ndauthorlink"],
"2ndauthorlink",
nil,
nil,
args["2ndfirst"],
"2ndfirst",
nil,
nil,
args["2ndlast"],
"2ndlast",
nil,
nil
)
sep = sep_comma()
else
for _, cant_have in ipairs{"2ndauthorlink", "2ndfirst"} do
if args[cant_have] then
error(("Can't have |%s= without |2ndauthor= or |2ndlast="):format(cant_have))
end
end
end
-- Display all the text that comes after the author, for the "newversion" section.
postauthor(2, num_authors)
end
if not args.nocolon then
sep = nil
-- l10n: trailing colon — zh uses fullwidth ":" with no following space
add(output_mode == "zh" and ZH_COLON or ":")
elseif args.usenodot and not args.nodot then
-- l10n: trailing period — zh uses "。"
add(output_mode == "zh" and "。" or ".")
end
-- Concatenate output portions to form output text.
local output_text = concat(output)
-- Remainder of code handles adding categories. We add one or more of the following categories:
--
-- 1. [[Category:LANG terms with quotations]], based on the first language code in termlang= or 1=. Added to
-- mainspace, Reconstruction: and Appendix: pages as well as Citations: pages if the corresponding mainspace
-- page exists. Not added if nocat= is given. Note that [[Module:usex]] adds the same category using the same
-- logic, but we do it here too because we may not have a quotation to format. (We add in those circumstances
-- because typically when there's no quotation to format, it's because it's formatted manually underneath the
-- citation, or using {{ja-x}}, {{th-x}} or similar.)
-- 2. [[Category:Requests for date in LANG entries]], based on the first language code in 1=. Added to mainspace,
-- Reconstruction:, Appendix: and Citations: pages unless nocat= is given.
-- 3. [[Category:Quotations using nocat parameter]], if nocat= is given. Added to mainspace, Reconstruction:,
-- Appendix: and Citations: pages.
local categories = {}
local termlang = get_first_lang(args.termlang or argslang)
if args.nocat then
if format_as_cite then
insert(tracking_categories, "Citations using nocat parameter")
else
insert(tracking_categories, "Quotations using nocat parameter")
end
else
-- don't create language tracking categories for citations
if not format_as_cite then
local title
if args.pagename then -- for testing, doc pages, etc.
title = mw.title.new(args.pagename)
if not title then
error(("Bad value for `args.pagename`: '%s'"):format(args.pagename))
end
else
title = mw.title.getCurrentTitle()
end
-- Only add [[Citations:foo]] to [[:Category:LANG terms with quotations]] if [[foo]] exists.
local ok_to_add_cat
if title.nsText ~= "Citations" then
ok_to_add_cat = true
else
local mainspace_title = mw.title.new(title.text)
if mainspace_title and mainspace_title.exists then
ok_to_add_cat = true
end
end
if ok_to_add_cat then
insert(categories, termlang:getFullName() .. " terms with quotations")
end
end
if need_date then
local argslangobj = get_first_lang(argslang)
insert(categories, "Requests for date in " .. argslangobj:getCanonicalName() .. " entries")
end
end
return output_text .. (
not lang and "" or
(#categories > 0 and format_categories(categories, lang, args.sort) or "") .. (
#tracking_categories > 0
and format_categories(
tracking_categories,
lang,
args.sort,
nil,
not page_should_be_ignored(mw.title.getCurrentTitle().fullText)
)
or ""
)
)
end
-- Alias specs for type= and type2=. Each spec is `{canon, aliases, with_newversion}` where `canon` is the canonical
-- parameter (with "2" added if type2= is being handled), `aliases` is a comma-separated string of aliases (with "2"
-- added if type2= is being handled, except for numeric params), and `with_newversion` indicates whether we should
-- process this spec if type2= is being handled.
local type_alias_specs = {
av = {
{"author", "writer,writers", true},
{"chapter", "episode", true},
{"chapterurl", "episodeurl", true},
{"trans-chapter", "trans-episode", true},
{"chapter_tlr", "episode_tlr,episode_tlrs,episode_translator,episode_translators", true},
{"chapter_series", "episode_series", true},
{"chapter_seriesvolume", "episode_seriesvolume", true},
{"chapter_number", "episode_number", true},
{"chapter_plain", "episode_plain", true},
{"volume", "season", true},
{"volumes", "seasons", true},
{"volume_plain", "season_plain", true},
{"volumeurl", "seasonurl", true},
{"platform", "network", true},
},
book = {
{"author", "3"},
{"title", "4"},
{"url", "5"},
{"year", "2"},
{"page", "6"},
{"text", "7"},
{"t", "8"},
},
journal = {
{"year", "2"},
{"author", "3"},
{"chapter", "title,article,4", true},
{"chapterurl", "titleurl,articleurl", true},
{"trans-chapter", "trans-title,trans-article", true},
{"chapter_tlr", "title_tlr,title_tlrs,title_translator,title_translators,article_tlr,article_tlrs,article_translator,article_translators", true},
{"chapter_series", "title_series,article_series", true},
{"chapter_seriesvolume", "title_seriesvolume,article_seriesvolume", true},
{"chapter_number", "title_number,article_number", true},
{"chapter_plain", "title_plain,article_plain", true},
{"title", "journal,magazine,newspaper,work,5", true},
{"trans-title", "trans-journal,trans-magazine,trans-newspaper,trans-work", true},
{"tlr", "journal_tlr,journal_tlrs,journal_translator,journal_translators,magazine_tlr,magazine_tlrs,magazine_translator,magazine_translators,newspaper_tlr,newspaper_tlrs,newspaper_translator,newspaper_translators,work_tlr,work_tlrs,work_translator,work_translators", true},
{"url", "6,journalurl,magazineurl,newspaperurl,workurl", true},
{"page", "7"},
{"source", "newsagency,news_agency", true},
{"text", "8"},
{"t", "9"},
},
}
-- Process interally-handled aliases related to type= or type2=. `args` is a table of arguments; `typ` is the value of
-- type= or type2=; newversion=true if we're dealing with type2=; alias_map is used to keep track of alias mappings
-- seen.
local function process_type_aliases(args, typ, newversion, alias_map)
local ind = newversion and "2" or ""
local deprecated = ine(args.lang)
if not type_alias_specs[typ] then
local possible_values = {}
for possible, _ in pairs(type_alias_specs) do
insert(possible_values, possible)
end
sort(possible_values)
error(
("Unrecognized value '%s' for type%s=; possible values are %s"):format(
typ,
ind,
concat(possible_values, ",")
)
)
end
for _, alias_spec in ipairs(type_alias_specs[typ]) do
local canon, aliases, with_newversion = unpack(alias_spec)
if with_newversion or not newversion then
canon = canon .. ind
aliases = split(aliases, ",", true)
local saw_alias = nil
for _, alias in ipairs(aliases) do
if alias:match("^%d+$") then
alias = tonumber(alias)
if deprecated then
alias = alias - 1
end
else
alias = alias .. ind
end
if args[alias] then
if saw_alias == nil then
saw_alias = alias
else
error(("|%s= and |%s= are aliases; cannot specify a value for both"):format(saw_alias, alias))
end
end
end
if saw_alias and (not newversion or type(saw_alias) == "string") then
if args[canon] then
error(("|%s= is an alias of |%s=; cannot specify a value for both"):format(saw_alias, canon))
end
args[canon] = args[saw_alias]
-- Wipe out the original after copying. This is important in case of a param that has general significance
-- but has been redefined (e.g. {{quote-av}} redefines number= for the episode number, and
-- {{quote-journal}} redefines title= for the chapter= (article). It's also important due to unhandled
-- parameter checking.
args[saw_alias] = nil
alias_map[canon] = saw_alias
end
end
end
end
-- Clone and combine frame's and parent's args while also assigning nil to empty strings. Handle aliases and ignores.
local function clone_args(direct_args, parent_args)
local args = {}
-- Processing parent args must come first so that direct args override parent args. Note that if a direct arg is
-- specified but is blank, it will still override the parent arg (with nil).
for pname, param in pairs(parent_args) do
-- [[Special:WhatLinksHere/Wiktionary:Tracking/quote/param/PARAM]]
track("param/" .. pname)
args[pname] = ine(param)
end
-- Process ignores. The value of `ignore` is a comma-separated list of parameter names to ignore (erase). We need to
-- do this before aliases due to {{quote-song}}, which sets chapter= to the value of title= in the direct params and
-- sets title= to the value of album= using an alias. If we do the ignores after aliases, we get an error during alias
-- processing, saying that title= and its alias album= are both present.
local ignores = ine(direct_args.ignore)
if ignores then
for ignore in gsplit(ignores, "%s*,%s*") do
args[ignore] = nil
end
end
local alias_map = {}
local other_controls = {}
-- noroman
local noroman = ine(direct_args.noroman)
if noroman then
other_controls.overrides = other_controls.overrides or {}
for param in gsplit(noroman, "%s*,%s*") do
other_controls.overrides[param] = (other_controls.overrides[param] or {})
other_controls.overrides[param].noroman = true
end
end
-- Process internally-specified aliases using type= or type2=.
local typ = args.type or direct_args.type
if typ then
process_type_aliases(args, typ, false, alias_map)
end
local typ2 = args.type2 or direct_args.type2
if typ2 then
process_type_aliases(args, typ2, true, alias_map)
end
-- Process externally-specified aliases. The value of `alias` is a list of semicolon-separated specs, each of which
-- is of the form DEST:SOURCE,SOURCE,... where DEST is the canonical name of a parameter and SOURCE refers to an
-- alias. Whitespace is allowed between all delimiters. The order of aliases may be important. For example, for
-- {{quote-journal}}, title= contains the article name and is an alias of underlying chapter=, while journal= or
-- work= contains the journal name and is an alias of underlying title=. As a result, the title -> chapter alias
-- must be specified before the journal/work -> title alias.
--
-- Whenever we copy a value from argument SOURCE to argument DEST, we record an entry for the pair in alias_map, so
-- that when we would display an error message about DEST, we display SOURCE instead.
--
-- Do alias processing (and ignore and error_if processing) before processing direct_args so that e.g. we can set up
-- an alias of title -> chapter and then set title= to something else in the direct args ({{quote-hansard}} does
-- this).
--
-- FIXME: Delete this once we've converted all alias processing to internal.
local aliases = ine(direct_args.alias)
if aliases then
-- Allow and discard a trailing semicolon, to make managing multiple aliases easier.
aliases = ugsub(aliases, "%s*;$", "")
for alias_spec in gsplit(aliases, "%s*;%s*") do
local alias_spec_parts = split(alias_spec, "%s*:%s*")
if #alias_spec_parts ~= 2 then
error(("Alias spec '%s' should have one colon in it"):format(alias_spec))
end
local dest, sources = unpack(alias_spec_parts)
sources = split(sources, "%s*,%s*")
local saw_source = nil
for _, source in ipairs(sources) do
if source:match("^%d+$") then
source = tonumber(source)
end
if args[source] then
if saw_source == nil then
saw_source = source
else
error(("|%s= and |%s= are aliases; cannot specify a value for both"):format(saw_source, source))
end
end
end
if saw_source then
if args[dest] then
error(("|%s= is an alias of |%s=; cannot specify a value for both"):format(saw_source, dest))
end
args[dest] = args[saw_source]
-- Wipe out the original after copying. This important in case of a param that has general significance
-- but has been redefined (e.g. {{quote-av}} redefines number= for the episode number, and
-- {{quote-journal}} redefines title= for the chapter= (article). It's also important due to unhandled
-- parameter checking.
args[saw_source] = nil
alias_map[dest] = saw_source
end
end
end
-- Process error_if. The value of `error_if` is a comma-separated list of parameter names to throw an error if seen
-- in parent_args (they are params we overwrite in the direct args).
local error_ifs = ine(direct_args.error_if)
if error_ifs then
for error_if in gsplit(error_ifs, "%s*,%s*") do
if ine(parent_args[error_if]) then
error(
("Cannot specify a value |%s=%s as it would be overwritten or ignored"):format(
error_if,
ine(parent_args[error_if])
)
)
end
end
end
for pname, param in pairs(direct_args) do
-- ignore control params
if pname ~= "ignore" and pname ~= "alias" and pname ~= "error_if" and pname ~= "noroman" then
args[pname] = ine(param)
end
end
return args, alias_map, other_controls
end
local function get_args(frame_args, parent_args, require_lang)
-- FIXME: We are processing arguments twice, once in clone_args() and then again in [[Module:parameters]]. This is
-- wasteful of memory.
local cloned_args, alias_map, other_controls = clone_args(frame_args, parent_args)
local deprecated = ine(parent_args.lang)
local alias_of_t = {alias_of = "t"}
local boolean = {type = "boolean"}
local language_sublist = {type = "language", sublist = true}
local list_allow_holes = {list = true, allow_holes = true}
local script = {type = "script"}
-- First, the "single" params that don't have FOO2 or FOOn versions.
local params = {
[deprecated and "lang" or 1] = {required = require_lang, type = "language", sublist = true, default = "und"},
["lang2"] = language_sublist,
["newversion"] = true,
["author"] = list_allow_holes,
["2ndauthor"] = true,
["trans-author"] = list_allow_holes,
["authorlink"] = list_allow_holes,
["2ndauthorlink"] = true,
["trans-authorlink"] = list_allow_holes,
["first"] = list_allow_holes,
["2ndfirst"] = true,
["trans-first"] = list_allow_holes,
["last"] = list_allow_holes,
["2ndlast"] = true,
["trans-last"] = list_allow_holes,
["nocat"] = boolean,
["nocolon"] = boolean,
-- quote params
text = true,
passage = {alias_of = "text"},
tr = true,
transliteration = {alias_of = "tr"},
ts = true,
transcription = {alias_of = "ts"},
norm = true,
normalization = {alias_of = "norm"},
sc = script,
normsc = script,
sort = true,
subst = true,
footer = true,
lit = true,
t = true,
translation = alias_of_t,
gloss = alias_of_t,
lb = true,
brackets = boolean,
-- original quote params
origtext = true,
origtr = true,
origts = true,
orignorm = true,
origsc = script,
orignormsc = script,
origsubst = true,
origlb = true,
usenodot = boolean,
nodot = boolean,
inline = boolean,
asquote = boolean,
ascite = boolean,
}
-- Most params have PARAM2 variants for use with `newversion`. FIXME: We should generalize this to
-- allow PARAMN variants for any N.
local function add_with_2(param, value)
params[param] = value
params[param .. "2"] = value
end
local function alias_with_2(alias, canon)
params[alias] = {alias_of = canon}
params[alias .. "2"] = {alias_of = canon .. "2"}
end
for _, param12 in ipairs{
"worklang",
"termlang",
"origlang",
"origworklang"
} do
add_with_2(param12, language_sublist)
end
-- Then the newversion params (which have FOO2 versions).
for _, param12 in ipairs{
-- author-like params; author params themselves are either list params (author=, last=, etc.) or single params
-- (2ndauthor=, 2ndlast=, etc.)
"coauthors",
"quotee",
"tlr",
"editor",
"editors",
"mainauthor",
"compiler",
"compilers",
"director",
"directors",
"lyricist",
"lyrics-translator",
"composer",
"role",
"actor",
"artist",
"feat",
-- author control params
"default-authorlabel",
"authorlabel",
-- title
"title",
"trans-title",
"series",
"seriesvolume",
"notitle",
-- entry
"entry",
"entryurl",
"trans-entry",
-- chapter
"chapter",
"chapterurl",
"chapter_number",
"chapter_plain",
"chapter_series",
"chapter_seriesvolume",
"trans-chapter",
"chapter_tlr",
-- section
"section",
"sectionurl",
"section_number",
"section_plain",
"section_series",
"section_seriesvolume",
"trans-section",
-- other video-game params
"system",
"scene",
"level",
-- URL
"url",
"urls",
"archiveurl",
-- edition
"edition",
"edition_plain",
-- ID params
"bibcode",
"doi",
"isbn",
"issn",
"jstor",
"lccn",
"oclc",
"ol",
"pmid",
"pmcid",
"ssrn",
"urn",
"id",
-- misc date params; most date params handled below
"archivedate",
"accessdate",
"nodate",
-- numeric params handled below
-- other params
"type",
"genre",
"format",
"medium",
"others",
"quoted_in",
"location",
"publisher",
"original",
"by",
"deriv",
"note",
"note_plain",
"other",
"source",
"platform",
} do
add_with_2(param12, true)
end
-- Then the aliases of newversion params (which have FOO2 versions).
for _, param12_aliased in ipairs{
{"role", "roles"},
{"role", "speaker"},
{"tlr", "tlrs"},
{"tlr", "translator"},
{"tlr", "translators"},
{"chapter_tlr", "chapter_tlrs"},
{"chapter_tlr", "chapter_translator"},
{"chapter_tlr", "chapter_translators"},
{"doi", "DOI"},
{"isbn", "ISBN"},
{"issn", "ISSN"},
{"jstor", "JSTOR"},
{"lccn", "LCCN"},
{"oclc", "OCLC"},
{"ol", "OL"},
{"pmid", "PMID"},
{"pmcid", "PMCID"},
{"ssrn", "SSRN"},
{"urn", "URN"},
} do
local canon, alias = unpack(param12_aliased)
alias_with_2(alias, canon)
end
-- Then the date params.
for _, datelike in ipairs{{"", ""}, {"orig", ""}, {"", "_published"}} do
local pref, suf = unpack(datelike)
for _, arg in ipairs{"date", "year", "month", "start_date", "start_year", "start_month"} do
add_with_2(pref .. arg .. suf, true)
end
end
local numeric_param_suffixes = {"", "s", "_plain", "url", "_prefix"}
-- Then the numeric params.
for _, numeric in ipairs{"volume", "issue", "number", "line", "page", "column"} do
for _, suf in ipairs(numeric_param_suffixes) do
add_with_2(numeric .. suf, true)
end
end
-- And the aliases of numeric params.
for _, numeric_aliased in ipairs{{"volume", "vol"}} do
local canon, alias = unpack(numeric_aliased)
for _, suf in ipairs(numeric_param_suffixes) do
alias_with_2(alias .. suf, canon .. suf)
end
end
return process_params(cloned_args, params), alias_map, other_controls
end
local function get_origtext_params(args)
local origtext, origtextlang, origsc, orignormsc
if args.origtext then
-- Wiktionary language codes have at least two lowercase letters followed possibly by lowercase letters and/or
-- hyphens (there are more restrictions but this is close enough). Also check for nonstandard Latin etymology
-- language codes (e.g. VL. or LL.). (There used to be more nonstandard codes but they have all been
-- eliminated.)
origtextlang, origtext = args.origtext:match("^(%l%l[%l-]*):([^ ].*)$")
if not origtextlang then
-- Special hack for Latin variants, which can have nonstandard etym codes, e.g. VL., LL.
origtextlang, origtext = args.origtext:match("^(%uL%.):([^ ].*)$")
end
if not origtextlang then
error("origtext= should begin with a language code prefix")
end
origtextlang = get_lang(origtextlang, nil, "allow etym") or
error("origtext= should begin with a language code prefix")
origsc = args.origsc
orignormsc = args.orignormsc
else
for _, noparam in ipairs{"origtr", "origts", "origsc", "orignorm", "orignormsc", "origsubst", "origlb"} do
if args[noparam] then
error(("Cannot specify %s= without origtext="):format(noparam))
end
end
end
return origtext, origtextlang, origsc, orignormsc
end
local function get_quote(args, is_cite)
local text = args.text
local gloss = args.t
local tr = args.tr
local ts = args.ts
local norm = args.norm
local sc = args.sc
local normsc = args.normsc
-- Fetch original-text parameters.
local origtext, origtextlang, origsc, orignormsc = get_origtext_params(args)
-- If any quote-related args are present, display the actual quote; otherwise, display nothing.
if text or gloss or tr or ts or norm or args.origtext then
-- Pass "und" here rather than cause an error; there will be an error on mainspace, Citations, etc. pages
-- in any case in source() if the language is omitted.
local lang = get_first_lang(args[1] or args.lang)
local termlang = args.termlang and get_first_lang(args.termlang) or lang
local usex_data = {
lang = lang,
termlang = termlang,
usex = text,
sc = sc,
translation = gloss,
normalization = norm,
normsc = normsc,
transliteration = tr,
transcription = ts,
brackets = args.brackets,
subst = args.subst,
lit = args.lit,
footer = args.footer,
qq = parse_and_format_labels(args.lb, lang),
quote = "quote-meta",
orig = origtext,
origlang = origtextlang,
origsc = origsc,
orignorm = args.orignorm,
orignormsc = orignormsc,
origtr = args.origtr,
origts = args.origts,
origsubst = args.origsubst,
origqq = parse_and_format_labels(args.origlb, lang),
noreq = args.noreq,
nocat = is_cite or args.nocat,
}
if args.inline then
-- don't let usex format the footer, otherwise it gets inlined with the rest of the quoted text
usex_data.footer = nil
usex_data.inline = 1
text = format_usex(usex_data)
if text then
text = " “" .. text .. "”"
else
text = ""
end
if args.footer then
text = text .. "<dl><dd>" .. args.footer .. "</dd></dl>"
end
else
text = "<dl><dd>" .. format_usex(usex_data) .. "</dd></dl>"
end
elseif args.footer then
text = "<dl><dd>" .. args.footer .. "</dd></dl>"
end
return text
end
-- External interface, meant to be called from a template. Replaces {{quote-meta}} and meant to be the primary
-- interface for {{quote-*}} templates.
function export.quote_t(frame)
local args, alias_map, other_controls = get_args(frame.args, frame:getParent().args, "require_lang")
if args.ascite then
return export.cite_t(frame)
end
return show_quote(args, alias_map, other_controls)
end
function show_quote(args, alias_map, other_controls)
local parts = {}
insert(parts, '<div class="citation-whole"><span class="cited-source">')
insert(parts, export.source(args, alias_map, nil, other_controls))
insert(parts, "</span>")
insert(parts, get_quote(args))
insert(parts, "</div>")
local retval = concat(parts)
return deprecated and frame:expandTemplate({
title = "check deprecated lang param usage",
args = {retval, lang = args.lang},
}) or retval
end
-- External interface, meant to be called from a template. Replaces {{cite-meta}} and meant to be the primary
-- interface for {{cite-*}} templates.
function export.cite_t(frame)
local parent_args = {}
for k, v in pairs(frame:getParent().args) do
parent_args[k] = v
end
-- use "und" as lang if none provided
if parent_args[1] == nil then
parent_args[1] = "und"
end
local args, alias_map, other_controls = get_args(frame.args, parent_args)
if args.asquote then
return show_quote(args, alias_map, other_controls)
end
return show_cite(args, alias_map, other_controls)
end
function show_cite(args, alias_map, other_controls)
local parts = {}
-- don't nag for translations
if args.text and not args.t then
args.noreq = 1
end
local len_visible = args.text and ulen((args.text:gsub("<[^<>]+>", ""))) or 0
if len_visible == 0 then
if not args.t or args.t == "-" then
args.nocolon = true
end
elseif args.inline == nil then
args.inline = not (
args.block_text
or len_visible > 300
or (args.t and not args.t == "-" and len_visible < 80)
or string.match(args.text, "<br>")
)
end
insert(parts, '<span class="citation-whole"><span class="cited-source">')
insert(parts, export.source(args, alias_map, "format_as_cite", other_controls))
insert(parts, "</span>")
insert(parts, get_quote(args, "is_cite"))
insert(parts, "</span>")
local retval = concat(parts)
return deprecated
and frame:expandTemplate({
title = "check deprecated lang param usage",
args = {retval, lang = args.lang},
})
or retval
end
-- External interface, meant to be called from a template.
function export.call_quote_template(frame)
return export.call_template(frame)
end
-- External interface, for calling a template with overloaded parameters.
function export.overload(frame)
local iargs, overloaded_args = process_params(frame.args, {
[1] = {required = true}
}, true)
local parent_args = frame:getParent().args
for k, v in pairs(parent_args) do
overloaded_args[k] = v
end
return frame:expandTemplate{title = iargs[1], args = overloaded_args}
end
-- External interface, meant to be called from a template.
function export.call_template(frame)
local parameter_sublist = {type = "parameter", sublist = true}
local iargs, other_direct_args = process_params(frame.args, {
["template"] = true,
["textparam"] = parameter_sublist,
["pageparam"] = parameter_sublist,
["propagateparams"] = parameter_sublist,
["allowparams"] = {sublist = true}, -- Doesn't use type = "parameter", because any that end in :list get processed differently.
}, true)
local function fetch_param(source, params)
for _, param in ipairs(params) do
if source[param] then
return source[param]
end
end
return nil
end
local params = {
["text"] = true,
["passage"] = true,
["footer"] = true, -- always propagates, but gets special formatting
}
-- paramaters that can be used during template declaration or included in template calls
-- if the template is called with param=- it will set any declared value to nil
local always_propagate = {
["brackets"] = true,
["usenodot"] = true,
["nodot"] = true,
["ascite"] = true,
["asquote"] = true,
}
for k,v in pairs(always_propagate) do
params[k] = v
end
local textparam = iargs.textparam or {}
for _, param in ipairs(textparam) do
params[param] = true
end
local pageparam = iargs.pageparam or {}
local pageparam1 = pageparam[1]
if pageparam1 ~= nil then
params["page"], params["pages"] = true, true
for _, param in ipairs(pageparam) do
params[param] = true
end
end
local allowparams, allow_all, list = iargs.allowparams, false
if allowparams ~= nil then
for _, allow in ipairs(allowparams) do
local param = allow:match("^(.*):list$")
if param then
if list == nil then
list = {list = true}
end
params[scribunto_parameter_key(param)] = list
elseif allow == "*" then
track("no parameter checking")
allow_all = true
else
params[scribunto_parameter_key(allow)] = true
end
end
else
local parent = frame:getParent()
local template_name = parent:getTitle()
local template_title = new_title(template_name)
local content = template_title:getContent()
local allowed_params, seen = {}, {}
-- Detect all params used by the parent template. param:get_name() takes the
-- parent frame arg table as an argument so that preprocessing will take
-- them into account, since it will matter if the name contains another
-- parameter (e.g. the outer param in "{{{foo{{{bar}}}baz}}}" will change
-- depending on the value for bar=). `seen` memoizes results based on the
-- raw parameter text (which is stored as a string in the parameter object),
-- which avoids unnecessary param:get_name() calls, which are non-trivial.
for param in find_parameters(content) do
local raw = param.raw
if not seen[raw] then
allow = param:get_name(template_args)
params[scribunto_parameter_key(allow)] = true
seen[raw] = true
end
end
end
local propagateparams = iargs.propagateparams or {}
for _, param in ipairs(propagateparams) do
params[param] = true
end
local parent_args = frame:getParent().args
local args = process_params(parent_args, params, allow_all)
parent_args = shallow_copy(parent_args)
if textparam[1] ~= "-" then
other_direct_args.passage = args.text or args.passage or fetch_param(args, textparam)
end
if not (pageparam1 == nil or pageparam1 == "-") then
other_direct_args.page = fetch_param(args, pageparam) or args.page or other_direct_args.page or nil
other_direct_args.pages = args.pages or other_direct_args.pages or nil
if other_direct_args.page == "-" then
other_direct_args.page = nil
end
if other_direct_args.pages == "-" then
other_direct_args.pages = nil
end
end
if args.footer then
other_direct_args.footer = frame:expandTemplate{title = "small", args = {args.footer}}
end
for param, _ in pairs(always_propagate) do
if args[param] == "-" then
other_direct_args[param] = nil
else
other_direct_args[param] = args[param] or other_direct_args[param] or nil
end
end
-- authorlink=- can be used to prevent copying of author= to authorlink= but we don't want to propagate this to
-- the actual {{quote-*}} code.
if other_direct_args.authorlink == "-" then
other_direct_args.authorlink = nil
end
for _, param in ipairs(propagateparams) do
if args[param] then
other_direct_args[param] = args[param]
end
end
return frame:expandTemplate{title = iargs.template or "quote-book", args = other_direct_args}
end
local paramdoc_param_replacements = {
passage = {
param_with_synonym = "<<synonym>>, {{para|text}}, or {{para|passage}}",
param_no_synonym = "{{para|text}} or {{para|passage}}",
text = [=[
* <<params>> – the passage to be quoted.]=],
},
page = {
param_with_synonym = "<<synonym>> or {{para|page}}, or {{para|pages}}",
param_no_synonym = "{{para|page}} or {{para|pages}}",
text = [=[
* <<params>> – '''mandatory in some cases''': the page number(s) quoted from. When quoting a range of pages, note the following:
** Separate the first and last pages of the range with an [[en dash]], like this: {{para|pages|10–11}}.
** You must also use {{para|pageref}} to indicate the page to be linked to (usually the page on which the Wiktionary entry appears).
: This parameter must be specified to have the template link to the online version of the work.]=],
},
page_with_roman_preface = {
param_with_synonym = {"inherit", "page"},
param_no_synonym = {"inherit", "page"},
text = [=[
* <<params>> – '''mandatory in some cases''': the page number(s) quoted from. If quoting from the preface, specify the page number(s) in lowercase Roman numerals. When quoting a range of pages, note the following:
** Separate the first and last page number of the range with an [[en dash]], like this: {{para|pages|10–11}} or {{para|pages|iii–iv}}.
** You must also use {{para|pageref}} to indicate the page to be linked to (usually the page on which the Wiktionary entry appears).
: This parameter must be specified to have the template link to the online version of the work.]=],
},
chapter = {
param_with_synonym = "<<synonym>> or {{para|chapter}}",
param_no_synonym = "{{para|chapter}}",
text = [=[
* <<params>> – the name of the chapter quoted from.]=],
},
roman_chapter = {
param_with_synonym = {"inherit", "chapter"},
param_no_synonym = {"inherit", "chapter"},
text = [=[
* <<params>> – the chapter number quoted from in uppercase Roman numerals.]=],
},
arabic_chapter = {
param_with_synonym = {"inherit", "chapter"},
param_no_synonym = {"inherit", "chapter"},
text = [=[
* <<params>> – the chapter number quoted from in Arabic numerals.]=],
},
trailing_params = {
text = [=[
* {{para|footer}} – a comment on the passage quoted.
* {{para|brackets}} – use {{para|brackets|on}} to surround a quotation with [[bracket#Noun|brackets]]. This indicates that the quotation either contains a mere mention of a term (for example, “some people find the word '''''manoeuvre''''' hard to spell”) rather than an actual use of it (for example, “we need to '''manoeuvre''' carefully to avoid causing upset”), or does not provide an actual instance of a term but provides information about related terms.]=],
},
}
function export.paramdoc(frame)
local parargs = frame:getParent().args
local args = process_params(parargs, {
[1] = true,
})
local text = args[1]
local function do_param_with_optional_synonym(param, text_to_sub, paramtext_synonym, paramtext_no_synonym)
local function sub_param(synonym)
local subbed_paramtext
if synonym then
subbed_paramtext = paramtext_synonym:gsub("<<synonym>>", "{{para|" .. replacement_escape(synonym) .. "}}")
else
subbed_paramtext = paramtext_no_synonym
end
return frame:preprocess((text_to_sub:gsub("<<params>>", replacement_escape(subbed_paramtext))))
end
text = text:gsub("<<" .. pattern_escape(param) .. ">>", function()
return sub_param()
end)
text = text:gsub("<<" .. pattern_escape(param) .. ":(.-)>>", sub_param)
end
local function fetch_text(param_to_replace, key)
local spec = paramdoc_param_replacements[param_to_replace]
local val = spec[key]
if type(val) == "string" then
return val
end
if type(val) == "table" and val[1] == "inherit" then
return fetch_text(val[2], key)
end
error(
"Internal error: Unrecognized value for param '"
.. param_to_replace
.. "', key '"
.. key
.. "': "
.. mw.dumpObject(val)
)
end
for param_to_replace, spec in pairs(paramdoc_param_replacements) do
if not spec.param_no_synonym then
-- Text to substitute directly.
text = text:gsub("<<" .. pattern_escape(param_to_replace) .. ">>", function()
return frame:preprocess(fetch_text(param_to_replace, "text"))
end)
else
do_param_with_optional_synonym(
param_to_replace,
fetch_text(param_to_replace, "text"),
fetch_text(param_to_replace, "param_with_synonym"),
fetch_text(param_to_replace, "param_no_synonym")
)
end
end
-- Remove final newline so template code can add a newline after invocation
text = text:gsub("\n$", "")
return text
end
return export
dl11tb8qxwzgrnca6emtondq1vy7qop
9787516
9787515
2026-05-24T16:17:34Z
TongcyDai
53191
9787516
Scribunto
text/plain
--[=[
This module contains functions to implement quote-* templates.
Author: Benwing2; conversion into Lua of {{quote-meta/source}} template,
written by Sgconlaw with some help from Erutuon and Benwing2.
The main interface is quote_t(). Note that the source display is handled by source(), which reads both the
arguments passed to it *and* the arguments passed to the parent template, with the former overriding the latter.
]=]
local export = {}
--[=[
FIXME:
1. Dates like `1 march 2025` with the day of the month being 1 and the month lowercased are treated as month-year-only.
The relevant code checks for a capitalized word; it should probably instead check for the actual month names or
abbrevs.
]=]
-- Named constants for all modules used, to make it easier to swap out sandbox versions.
local check_isxn_module = "Module:check isxn"
local debug_track_module = "Module:debug/track"
local en_utilities_module = "Module:en-utilities"
local italics_module = "Module:italics"
local labels_module = "Module:labels"
local languages_module = "Module:languages"
local languages_error_module = "Module:languages/error"
local links_module = "Module:links"
local number_utilities_module = "Module:number utilities"
local parameters_module = "Module:parameters"
local parse_utilities_module = "Module:parse utilities"
local qualifier_module = "Module:qualifier"
local roman_numerals_module = "Module:roman numerals"
local scribunto_module = "Module:Scribunto"
local script_utilities_module = "Module:script utilities"
local scripts_module = "Module:scripts"
local string_pattern_escape_module = "Module:string/patternEscape"
local string_replacement_escape_module = "Module:string/replacementEscape"
local string_utilities_module = "Module:string utilities"
local table_module = "Module:table"
local template_parser_module = "Module:template parser"
local usex_module = "Module:usex"
local usex_templates_module = "Module:usex/templates"
local utilities_module = "Module:utilities"
local yesno_module = "Module:yesno"
local concat = table.concat
local insert = table.insert
local new_title = mw.title.new
local remove = table.remove
local require = require
local sort = table.sort
local u = mw.ustring.char
local ugsub = mw.ustring.gsub
local umatch = mw.ustring.match
local unpack = unpack or table.unpack -- Lua 5.2 compatibility
-- Use HTML entities here to avoid parsing issues (esp. with brackets)
local SEMICOLON_SPACE = "; "
local SPACE_LBRAC = " ["
local RBRAC = "]"
local TEMP_LT = u(0xFFF1)
local TEMP_GT = u(0xFFF2)
local TEMP_LBRAC = u(0xFFF3)
local TEMP_RBRAC = u(0xFFF4)
local TEMP_SEMICOLON = u(0xFFF5)
-- ============================================================
-- l10n: Chinese localization infrastructure (zhwikt fork).
--
-- output_mode is detected once per export.source() invocation by
-- scanning every args value for CJK characters. If any value
-- contains CJK script, the module switches to "zh" mode and
-- substitutes Chinese framing at every print site; otherwise it
-- stays in "en" mode and behaves byte-for-byte identically to
-- enwikt. This avoids awkward half-translated output like
-- "第second版" when an editor copies an English template verbatim.
--
-- All localization touchpoints below this block are marked with
-- "-- l10n:" comments. To audit, grep for "l10n:". Simple word
-- substitutions go through L(); word-order shifts go through
-- build_* helper functions.
-- ============================================================
-- l10n: output mode, set per-invocation by detect_output_mode().
local output_mode = "en"
-- l10n: full-width punctuation constants for zh mode.
local ZH_COMMA = ","
local ZH_SEMICOLON = ";"
local ZH_COLON = ":"
local ZH_LPAREN = "("
local ZH_RPAREN = ")"
local ZH_LQUOTE = "「"
local ZH_RQUOTE = "」"
-- l10n: CJK script ranges used by has_cjk(). Covers Han ideographs,
-- kana and Hangul but deliberately excludes fullwidth punctuation
-- so a stray "," in an otherwise-English value doesn't trip zh mode.
local CJK_PATTERN = "[" ..
u(0x3400) .. "-" .. u(0x4DBF) .. -- CJK Unified Ideographs Extension A
u(0x4E00) .. "-" .. u(0x9FFF) .. -- CJK Unified Ideographs
u(0x3040) .. "-" .. u(0x309F) .. -- Hiragana
u(0x30A0) .. "-" .. u(0x30FF) .. -- Katakana
u(0xAC00) .. "-" .. u(0xD7AF) .. -- Hangul Syllables
"]"
local function has_cjk(s)
return type(s) == "string" and umatch(s, CJK_PATTERN) ~= nil
end
-- l10n: scan all args values (including list-typed params) for CJK.
-- trans-* params are exempt: they exist to provide display translations
-- of titles/chapters/etc., not to indicate the source work is in CJK.
-- So a Chinese trans-title on an otherwise-English template keeps the
-- output in en mode.
local function detect_output_mode(args)
for k, v in pairs(args) do
if type(k) == "string" and k:find("^trans%-") then
-- l10n: skip trans-* params (see comment above).
elseif type(v) == "string" then
if has_cjk(v) then return "zh" end
elseif type(v) == "table" then
for _, vv in pairs(v) do
if type(vv) == "string" and has_cjk(vv) then return "zh" end
end
end
end
return "en"
end
-- l10n: bilingual lookup table. Keys are the exact English literals
-- used at enwikt print sites. L() returns the key unchanged in en
-- mode; in zh mode it returns the value, falling back to the key on
-- a miss so the module stays functional under unexpected inputs.
local STRINGS = {
-- newversion verbs
["republished"] = "再版",
["republished as"] = "再版為",
-- author-like roles, prefix form (used when other authors precede)
["translated by "] = "由 ",
["edited by "] = "由 ",
["compiled by "] = "由 ",
["directed by "] = "由 ",
["performed by "] = "由 ",
["spoken by "] = "由 ",
["quoting "] = "引用 ",
-- author-like roles, suffix form (used when role-bearer comes first)
[", transl."] = "(譯)",
[", editor"] = "(編)",
[", editors"] = "(編)",
[", compiler"] = "(編纂)",
[", compilers"] = "(編纂)",
[", director"] = "(導演)",
[", directors"] = "(導演)",
[", quotee"] = "(被引用者)",
[", quotees"] = "(被引用者)",
-- bare-noun anonymous suffixes (used when role-bearer is anonymous)
[" translator"] = "譯者",
[" lyricist"] = "作詞者",
[" lyrics translator"] = "譯詞者",
[" composer"] = "作曲者",
-- music role suffixes
[" (lyrics)"] = "(作詞)",
[" (translation)"] = "(譯詞)",
[" (music)"] = "(作曲)",
-- chapter → containing title connector ("Chapter X, in Book Title")
["in "] = "收錄於 ",
-- quoting / sourcing
["sourced from "] = "來源 ",
["quoted in "] = "引述自 ",
-- archive
[", archived from "] = ",原始內容存檔自 ",
["the original"] = "原始內容",
[" on "] = ",存檔時間 ", -- between [URL label] and the archive date
-- video game / misc
[", scene: "] = ",幕:",
[", level/area: "] = ",關卡/區域:",
[" (last accessed)"] = "(最後存取)",
-- generics
["anonymous"] = "佚名",
["actor"] = "演員",
["actors"] = "演員",
["original"] = "原文",
["translation"] = "翻譯",
["unnumbered"] = "未編號",
-- numeric-field suffixes (used by format_numeric_param / format_chapterlike)
["page"] = "頁",
["pages"] = "頁",
["column"] = "-{zh-hans:列;zh-hant:欄}-",
["columns"] = "-{zh-hans:列;zh-hant:欄}-",
["line"] = "行",
["lines"] = "行",
["volume"] = "卷",
["volumes"] = "卷",
["issue"] = "期",
["issues"] = "期",
["number"] = "號",
["numbers"] = "號",
["chapter"] = "章",
["section"] = "節",
["entry"] = "條",
["edition"] = "版",
-- maintenance lines
["Please provide the book title or journal name"] =
"請提供書名或期刊名",
["Please specify the language of the quote using |1="] =
"請以 |1= 指明引文語言",
["Can we [[:Category:Requests for date|date]] this quote?"] =
"能否為此引文加上[[:Category:Requests for date|日期]]?",
["Please provide a date or year"] =
"請提供日期或年份",
}
-- l10n: simple bilingual lookup. Returns the en key unchanged in en mode.
local function L(s)
if output_mode == "en" then return s end
return STRINGS[s] or s
end
-- l10n: mode-aware separators. Read these instead of writing literal
-- ", " / "; " at print sites that need to round-trip both modes.
local function sep_comma()
return output_mode == "zh" and ZH_COMMA or ", "
end
local function sep_semicolon()
return output_mode == "zh" and ZH_SEMICOLON or SEMICOLON_SPACE
end
-- l10n: classify a numeric-field value so the zh formatter can decide
-- between "第N章" (numeric prefix) and "<val>章" / "「<val>」" (textual).
-- CHINESE_NUMERALS covers vernacular (一二...), formal (壹貳...), and
-- shorthand (兩, 廿, 卅, 〇).
local CHINESE_NUMERALS =
"零〇一二三四五六七八九十百千萬億兩两廿卅壹貳贰參叁肆伍陸陆柒捌玖拾佰仟"
local function classify_numeric_value(val)
if not val or val == "" then return "empty" end
local clean = mw.text.trim((val:gsub("<[^>]*>", "")))
if clean == "" then return "empty" end
if umatch(clean, "^[%d%s,%-–—/%.]+$") then return "arabic" end
if clean:match("^[mdclxviMDCLXVI]+$") then return "roman" end
if umatch(clean, "^[" .. CHINESE_NUMERALS .. "%s,/%-–—]+$") then
return "chinese"
end
return "text"
end
local function is_numeric_class(cls)
return cls == "arabic" or cls == "roman" or cls == "chinese"
end
-- l10n: zh-mode rendering for page/column/line/volume/issue/section/etc.
-- Numeric values (Arabic/Roman/Chinese) → "第N<suffix>";
-- textual values → "<val><suffix>" (no leading 第).
local function build_zh_numeric(val, suffix_key)
local cls = classify_numeric_value(val)
local suffix = L(suffix_key)
if is_numeric_class(cls) then
return "第" .. val .. suffix
end
return val .. suffix
end
-- l10n: zh-mode rendering for chapter/section/entry text. Numeric →
-- "第N章"; textual → "「<val>」" (drops the 第N章 wrapper because the
-- value is a chapter NAME, mirroring enwikt's textual_prefix/suffix
-- branch).
local function build_zh_chapterlike(val, suffix_key)
local cls = classify_numeric_value(val)
if is_numeric_class(cls) then
return "第" .. val .. L(suffix_key)
end
return ZH_LQUOTE .. val .. ZH_RQUOTE
end
-- l10n: "translation of X by Y" → "X(Y 譯)".
-- Variants: no by → "X 之翻譯"; no original → "原文翻譯(Y 譯)".
local function build_translation_phrase(origtype, original, by)
if output_mode == "en" then
return origtype .. " of " .. (original or "original")
.. (by and " by " .. by or "")
end
local zh_type = L(origtype)
if original and by then
return original .. ZH_LPAREN .. by .. " " .. zh_type .. ZH_RPAREN
elseif original then
return original .. " 之" .. zh_type
elseif by then
-- l10n: same shape as the main "X(Y 譯)" pattern with X = "原文"
return L("original") .. ZH_LPAREN .. by .. " " .. zh_type .. ZH_RPAREN
end
return L("original") .. zh_type
end
-- l10n: " (in French)" / " (quotation in X; overall work in Y)".
local function build_annotations_paren(annotations)
if output_mode == "en" then
return " (" .. concat(annotations, SEMICOLON_SPACE) .. ")"
end
return ZH_LPAREN .. concat(annotations, ZH_SEMICOLON) .. ZH_RPAREN
end
-- l10n: language-of-work annotation snippets used inside the paren block.
-- zh templates have no inner spaces around lang_name; lang_name is always
-- a Chinese language name in zh mode (resolved via format_langs).
local function build_lang_annotation(kind, lang_name)
if output_mode == "en" then
if kind == "in" then return "in " .. lang_name end
if kind == "quotation_in" then return "quotation in " .. lang_name end
if kind == "overall_work_in" then return "overall work in " .. lang_name end
else
if kind == "in" then return "以" .. lang_name .. "寫成" end
if kind == "quotation_in" then return "引文以" .. lang_name .. "寫成" end
if kind == "overall_work_in" then return "整體作品以" .. lang_name .. "寫成" end
end
end
-- l10n: actor / role phrases.
local function build_actor_as_role(actor)
if output_mode == "en" then return actor .. " as " end
return actor .. " 飾演 "
end
local function build_actor_paren(actor, is_plural)
local label = is_plural and L("actors") or L("actor")
if output_mode == "en" then
return actor .. " (" .. label .. ")"
end
return actor .. ZH_LPAREN .. label .. ZH_RPAREN
end
-- l10n: "published <date> via <platform>" / "published <date>" / "via <platform>".
local function build_published(date, platform)
if output_mode == "en" then
return "published " .. date .. (platform and " via " .. platform or "")
end
if platform then
return date .. " 於 " .. platform .. " 出版"
end
return date .. " 出版"
end
local function build_via(platform)
if output_mode == "en" then return "via " .. platform end
return "透過 " .. platform
end
-- l10n: ", retrieved <date>" → ",於 <date> 擷取" (verb-final shift).
local function build_retrieved(date_str)
if output_mode == "en" then return ", retrieved " .. date_str end
return ZH_COMMA .. "於 " .. date_str .. " 擷取"
end
-- l10n: derive an anonymous-role suffix. enwikt strips leading
-- punctuation/parens out of suffix_without_preceding_authors to get
-- e.g. "transl." → " translator"; we mirror that by recognising our
-- own zh suffix shapes and mapping them to bare role nouns.
local ZH_ANONYMOUS_ROLE_FROM_PAREN = {
["譯"] = "譯者",
["編"] = "編者",
["編纂"] = "編纂者",
["導演"] = "導演者",
["被引用者"] = "被引用者",
["作詞"] = "作詞者",
["譯詞"] = "譯詞者",
["作曲"] = "作曲者",
}
local function derive_anonymous_suffix_zh(zh_suffix)
local inside = umatch(zh_suffix, "^%s*((.-))%s*$")
if inside then
return ZH_ANONYMOUS_ROLE_FROM_PAREN[inside] or inside
end
return mw.text.trim(zh_suffix)
end
-- l10n: zh-mode formatter for the top-level format_date() helper used
-- by archivedate / accessdate / wayback dates. Falls back to the raw
-- timestamp on parse error.
local _zh_lang
local function zh_lang()
if not _zh_lang then _zh_lang = mw.language.new("zh") end
return _zh_lang
end
local function format_zh_date(text)
local lang = zh_lang()
local ok, date = pcall(lang.formatDate, lang, "Y年n月j日", text)
if ok then return date end
return text
end
-- l10n: zh serial join — "A、B和C" / "A、B或C" (no Oxford comma, no
-- spaces around the conjunction since CJK text doesn't use inter-word
-- spacing; mixed Latin items are an acceptable edge case).
local function zh_serial_join(parts, conj)
local n = #parts
if n == 0 then return "" end
if n == 1 then return parts[1] end
local conj_word = (conj == "or") and "或" or "和"
if n == 2 then
return parts[1] .. conj_word .. parts[2]
end
return table.concat(parts, "、", 1, n - 1) .. conj_word .. parts[n]
end
-- ============================================================
-- l10n: end of localization infrastructure block.
-- ============================================================
local function apply_subst(...)
apply_subst = require(usex_module).apply_subst
return apply_subst(...)
end
local function check_isbn(...)
check_isbn = require(check_isxn_module).check_isbn
return check_isbn(...)
end
local function check_issn(...)
check_issn = require(check_isxn_module).check_issn
return check_issn(...)
end
local function debug_track(...)
debug_track = require(debug_track_module)
return debug_track(...)
end
local function decode_entities(...)
decode_entities = require(string_utilities_module).decode_entities
return decode_entities(...)
end
local function embedded_language_links(...)
embedded_language_links = require(links_module).embedded_language_links
return embedded_language_links(...)
end
local function escape_wikicode(...)
escape_wikicode = require(parse_utilities_module).escape_wikicode
return escape_wikicode(...)
end
local function find_best_script_without_lang(...)
find_best_script_without_lang = require(scripts_module).findBestScriptWithoutLang
return find_best_script_without_lang(...)
end
local function find_parameters(...)
find_parameters = require(template_parser_module).find_parameters
return find_parameters(...)
end
local function format_categories(...)
format_categories = require(utilities_module).format_categories
return format_categories(...)
end
local function format_processed_labels(...)
format_processed_labels = require(labels_module).format_processed_labels
return format_processed_labels(...)
end
local function format_qualifier(...)
format_qualifier = require(qualifier_module).format_qualifier
return format_qualifier(...)
end
local function format_usex(...)
format_usex = require(usex_module).format_usex
return format_usex(...)
end
local function get_lang(...)
get_lang = require(languages_module).getByCode
return get_lang(...)
end
local function get_number(...)
get_number = require(number_utilities_module).get_number
return get_number(...)
end
local function get_script(...)
get_script = require(scripts_module).getByCode
return get_script(...)
end
local function gsplit(...)
gsplit = require(string_utilities_module).gsplit
return gsplit(...)
end
local function page_should_be_ignored(...)
page_should_be_ignored = require(usex_templates_module).page_should_be_ignored
return page_should_be_ignored(...)
end
local function parse_inline_modifiers(...)
parse_inline_modifiers = require(parse_utilities_module).parse_inline_modifiers
return parse_inline_modifiers(...)
end
local function parse_inline_modifiers_from_segments(...)
parse_inline_modifiers_from_segments = require(parse_utilities_module).parse_inline_modifiers_from_segments
return parse_inline_modifiers_from_segments(...)
end
local function parse_multi_delimiter_balanced_segment_run(...)
parse_multi_delimiter_balanced_segment_run = require(parse_utilities_module).parse_multi_delimiter_balanced_segment_run
return parse_multi_delimiter_balanced_segment_run(...)
end
local function parse_term_with_lang(...)
parse_term_with_lang = require(parse_utilities_module).parse_term_with_lang
return parse_term_with_lang(...)
end
local function pattern_escape(...)
pattern_escape = require(string_pattern_escape_module)
return pattern_escape(...)
end
local function pluralize(...)
pluralize = require(en_utilities_module).pluralize
return pluralize(...)
end
local function process_params(...)
process_params = require(parameters_module).process
return process_params(...)
end
local function remove_links(...)
remove_links = require(links_module).remove_links
return remove_links(...)
end
local function roman_to_arabic(...)
roman_to_arabic = require(roman_numerals_module).roman_to_arabic
return roman_to_arabic(...)
end
local function replacement_escape(...)
replacement_escape = require(string_replacement_escape_module)
return replacement_escape(...)
end
local function scribunto_parameter_key(...)
scribunto_parameter_key = require(scribunto_module).scribunto_parameter_key
return scribunto_parameter_key(...)
end
local function serial_comma_join(...)
serial_comma_join = require(table_module).serialCommaJoin
return serial_comma_join(...)
end
local function shallow_copy(...)
shallow_copy = require(table_module).shallowCopy
return shallow_copy(...)
end
local function split(...)
split = require(string_utilities_module).split
return split(...)
end
local function split_alternating_runs(...)
split_alternating_runs = require(parse_utilities_module).split_alternating_runs
return split_alternating_runs(...)
end
local function split_and_process_raw_labels(...)
split_and_process_raw_labels = require(labels_module).split_and_process_raw_labels
return split_and_process_raw_labels(...)
end
local function split_on_comma(...)
split_on_comma = require(parse_utilities_module).split_on_comma
return split_on_comma(...)
end
local function tag_text(...)
tag_text = require(script_utilities_module).tag_text
return tag_text(...)
end
local function tag_transcription(...)
tag_transcription = require(script_utilities_module).tag_transcription
return tag_transcription(...)
end
local function tag_translit(...)
tag_translit = require(script_utilities_module).tag_translit
return tag_translit(...)
end
local function ulen(...)
ulen = require(string_utilities_module).len
return ulen(...)
end
local function unitalicize_brackets(...)
unitalicize_brackets = require(italics_module).unitalicize_brackets
return unitalicize_brackets(...)
end
local function upper(...)
upper = require(string_utilities_module).upper
return upper(...)
end
local function usub(...)
usub = require(string_utilities_module).sub
return usub(...)
end
local function yesno(...)
yesno = require(yesno_module)
return yesno(...)
end
local function track(page)
debug_track("quote/" .. page)
end
local function maintenance_line(text)
return '<span class="maintenance-line">(' .. text .. ")</span>"
end
local function isbn(text)
return "[[Special:BookSources/"
.. text
.. "|→ISBN]]"
.. check_isbn(
text,
' <span class="error" style="font-size:88%">Invalid ISBN</span>[[Category:Pages with ISBN errors]]'
)
end
local function issn(text)
return "[https://www.worldcat.org/issn/"
.. text
.. " →ISSN]"
.. check_issn(
text,
' <span class="error" style="font-size:88%">Invalid ISSN</span>[[Category:Pages with ISSN errors]]'
)
end
local function lccn(text)
text = text:gsub(" ", "")
if text:find("-") then
-- old-style LCCN; reformat per request by [[User:The Editor's Apprentice]]
local prefix, part1, part2 = text:match("^(.-)(%d+)%-(%d+)$")
if prefix then
if ulen(part2) < 6 then
part2 = ("0"):rep(6 - ulen(part2)) .. part2
end
text = prefix .. part1 .. part2
end
end
return "[https://lccn.loc.gov/" .. mw.uri.encode(text) .. " →LCCN]"
end
local function format_date(text)
-- l10n: zh mode → "Y年n月j日"; en mode → enwikt #formatdate dmy.
if output_mode == "zh" then
return format_zh_date(text)
end
return mw.getCurrentFrame():callParserFunction("#formatdate", text, "dmy")
end
-- Parse a raw lb= param (or nil) to individual label info objects and then concatenate them appropriately into a
-- qualifier input, respecting flags like `omit_preComma` and `omit_postSpace` in the label specs.
local function parse_and_format_labels(raw_lb, lang)
if not raw_lb then
return nil
end
local labels = split_and_process_raw_labels{labels = raw_lb, lang = lang, nocat = true}
labels = format_processed_labels{labels = labels, lang = lang, no_ib_content = true}
if labels ~= "" then -- not sure labels can be an empty string but it seems possible in some circumstances
return {labels}
end
end
-- Convert a comma-separated list of language codes to a comma-separated list of language names. `fullname` is the
-- name of the parameter from which the list of language codes was fetched.
local function format_langs(langs)
local names = {}
for i, lang in ipairs(langs) do
names[i] = lang:getCanonicalName()
end
if #names == 1 then
return names[1]
end
-- l10n: language list joiner — zh uses 、 + 和 (no Oxford comma).
if output_mode == "zh" then
return zh_serial_join(names, "and")
end
return serial_comma_join(names)
end
local function get_first_lang(langs)
return langs[1] or get_lang("und")
end
--[=[
Normally we parse off inline modifiers and language code prefixes in various places, e.g. he:מרים<tr:Miryem>. But we
exclude HTML entries with <span ...>, <i ...>, <br/> or similar in it, caused by wrapping an argument in {{l|...}},
{{lang|...}} or similar. Basically, all tags of the sort we parse here should consist of a less-than sign, plus letters,
plus a colon, e.g. <tr:...>, so if we see a tag on the outer level that isn't in this format, we don't try to parse it.
The restriction to the outer level is to allow generated HTML inside of e.g. qualifier modifiers, such as
foo<q:similar to {{m|fr|bar}}> (if we end up supporting such modifiers).
Also exclude things that look like URL's from being parsed as having language code prefixes.
]=]
local function val_should_not_be_parsed_for_annotations(val)
return val:find("^[^<]*<%l*[^%l:]") or val:find("^%l+://")
end
local param_mods = {
t = {
-- <t:...> and <gloss:...> are aliases.
item_dest = "gloss",
},
gloss = {},
alt = {},
tr = {},
ts = {},
subst = {},
sc = {type = "script"},
f = {
convert = function(arg, parse_err)
local prefix, val = arg:match("^(.-):([^ ].*)$")
if not prefix then
prefix = ""
val = arg
end
local tags, sc_code, sc = prefix:match("^(.*)/(.-)$")
if sc_code then
sc = get_script(sc_code) or
require(languages_error_module)(sc_code, parse_err, "script code", nil, "not real lang")
else
tags = prefix
end
local quals
if tags ~= "" then
quals = split_on_comma(tags)
for i, qual in ipairs(quals) do
local obj = get_lang(qual, nil, "allow etym") or get_script(qual)
quals[i] = obj or qual
end
end
return {
quals = quals,
sc = sc,
val = val,
}
end,
store = "insert",
},
q = {},
qq = {},
}
local function generate_obj_annotated_text(text, parse_err, paramname)
local obj = {}
if text:find(":[^ ]") or text:find("%[%[") then
local display, is_wikipedia_wikisource
obj.text, obj.lang, obj.link, display, is_wikipedia_wikisource =
parse_term_with_lang {
term = text,
parse_err = parse_err,
paramname = paramname
}
-- HACK: If object is a Wikipedia or Wikisource link, we need to convert it to a two-part link
-- to avoid the w: or s: prefix showing. We should probably avoid this by calling
-- language_link() (in [[Module:links]]) in format_annotated_text() instead of the hacky stuff
-- that we currently do; but we need to test that carefully to make sure it doesn't do things like
-- munge % signs.
if is_wikipedia_wikisource and not obj.text:find("%[%[") and not obj.text:find("%]%]") then
-- Don't directly set .alt, because then if the user specifies <alt:...>, it will cause an error in
-- parse_inline_modifiers().
obj.display = display
end
else
obj.text = text
obj.link = text
end
return obj
end
--[=[
Parse a textual property that may be in a foreign language or script and may be annotated with a language prefix and/or
inline modifiers. `val` is the value of the parameter and `fullname` is the name of the parameter from which the value
was retrieved. `explicit_gloss`, if specified and non-nil, overrides any gloss specified using the <t:...> or
<gloss:...> inline modifier.
If `val` is nil, the return value of this function is nil. Otherwise it is parsed for a language prefix (e.g.
'ar:مُؤَلِّف') and inline modifiers (e.g. 'ar:مُؤَلِّف<t:Author>'), and the return value is an object with the following
fields:
`lang`: The language object corresponding to the language prefix, if specified, or nil if no language prefix is
given.
`text`: The text after stripping off any language prefix and inline modifiers.
`link`: The link part of the text if it consists of a two-part link; otherwise, same as `text`.
`alt`: Display text specified using the <alt:...> modifier, if given; otherwise, nil.
`subst`: Substitutions used to generate the transliteration, in the same format as the subst= parameter.
`sc`: The script object corresponding to the <sc:...> modifier, if given; otherwise nil.
`tr`: The transliteration corresponding to the <tr:...> modifier, if given; otherwise nil.
`ts`: The transcription corresponding to the <ts:...> modifier, if given; otherwise nil.
`gloss`: The gloss/translation corresponding to the `explicit_gloss` parameter (if given and non-nil), otherwise
the <t:...> or <gloss:...> modifiers if given, otherwise nil.
`f`: Foreign versions of the text.
`q`: Left qualifiers.
`qq`: Right qualifiers.
Note that as a special case, if `val` contains HTML tags at the top level (e.g. '<span class="Arab">...</span>', as
might be generated by specifying {{lang|ar|مُؤَلِّف}}), no language prefix or inline modifiers are parsed, and the return
value has the `noscript` field set to true, which tells format_annotated_text() not to try to identify the script of
the text and CSS-tag the text accordingly, but to leave the text untagged.
This object can be passed to format_annotated_text() to format a string displaying the text (appropriately
script-tagged, unless `noscript` is set, as described above) and modifiers.
]=]
local function parse_annotated_text(val, fullname, explicit_gloss)
if not val then
return nil
end
-- When checking for inline modifiers, exclude HTML entry with <span ...>, <i ...>, <br/> or similar in it, caused
-- by wrapping an argument in {{l|...}}, {{lang|...}} or similar. Also exclude URL's from being parsed as having
-- language code prefixes. See val_should_not_be_parsed_for_annotations() for more information. If we find a
-- parameter value with top-level HTML in it, add 'noscript = true' to indicate that we should not try to do script
-- inference and tagging. (Otherwise, e.g. if you specify {{lang|ar|مُؤَلِّف}} as the author, you'll get an extra big
-- font coming from the fact that {{lang|...}} wraps the Arabic text in CSS that increases the size from the
-- default, and then we do script detection and again wrap the text in the same CSS, which increases the size even
-- more.)
if val_should_not_be_parsed_for_annotations(val) then
return {text = val, link = val, noscript = true, gloss = explicit_gloss}
end
local obj
if val:find("<") then
-- Check for inline modifier.
obj = parse_inline_modifiers(val, {
paramname = fullname,
param_mods = param_mods,
generate_obj = generate_obj_annotated_text,
})
else
obj = generate_obj_annotated_text(val, nil, fullname)
end
if explicit_gloss then
obj.gloss = explicit_gloss
end
return obj
end
local html_entity_char_to_replacement = {
["<"] = TEMP_LT,
[">"] = TEMP_GT,
["["] = TEMP_LBRAC,
["]"] = TEMP_RBRAC,
}
local function html_entity_replacement(entity, code_without_semicolon, hash, xcode, x, code)
-- Try to decode the entity. If successful, Replace certain special HTML entities (those that are bracket-like)
-- with single Unicode characters; otherwise, replace the semicolon with a special character so it won't get
-- interpreted as a delimiter.
local ch = decode_entities(entity)
if ch ~= entity then
return html_entity_char_to_replacement[ch] or code_without_semicolon .. TEMP_SEMICOLON
end
-- If the entity doesn't decode, escape it anyway iff it follows a valid format.
if hash == "" then
-- Any nonstandard MediaWiki-only entities have now been filtered off, so treat any non-ASCII characters as
-- invalid.
return xcode:match("^[^\128-\255]+$") and code_without_semicolon .. TEMP_SEMICOLON or entity
elseif x == "" then
return xcode:match("^%d+$") and code_without_semicolon .. TEMP_SEMICOLON or entity
end
return code:match("^%x+$") and code_without_semicolon .. TEMP_SEMICOLON or entity
end
local html_entity_replacement_to_char = {
[TEMP_LT] = "<",
[TEMP_GT] = ">",
[TEMP_LBRAC] = "[",
[TEMP_RBRAC] = "]",
[TEMP_SEMICOLON] = ";",
}
local function undo_html_entity_replacement(txt)
-- Pattern covers everything in html_entity_replacement_to_char.
return (txt:gsub("\239\191[\177-\181]", html_entity_replacement_to_char))
end
-- NOTE: We try hard to optimize this function for the common cases and avoid loading [[Module:parse utilities]]
-- in such cases. The cases we can handle without loading [[Module:parse utilities]] are single values (no
-- semicolons present) without inline modifiers or language prefixes, and multi-entity values (semicolons present)
-- without (a) brackets of any kind (including parens, braces and angle brackets; angle brackets typically indicate
-- inline modifiers and other brackets may protect a semicolon from being interpreted as a delimiter);
-- (b) ampersands (which may indicate HTML entities, which protect a semicolon from being interpreted as a
-- delimiter); and (c) colons not followed by a space (which may indicate a language prefix).
local function generate_obj_multivalued_annotated_text(text, parse_err, paramname, no_undo_html_entity_replacement)
local obj = generate_obj_annotated_text(text, parse_err, paramname)
if not no_undo_html_entity_replacement then
obj.text = undo_html_entity_replacement(obj.text)
obj.link = undo_html_entity_replacement(obj.link)
end
return obj
end
--[=[
Similar to parse_annotated_text() but the parameter value may contain multiple semicolon-separated entities, each with
their own inline modifiers. Some examples:
* mainauthor=Paula Pattengale; Terea Sonsthagen
* author=Katie Brick; J. Cody Nielsen; Greg Jao; Eric Paul Rogers; John A. Monson
* author=Suzanne Brockmann; Patrick G. Lawlor (Patrick Girard); Melanie Ewbank
* author=G Ristori; et al.
* author=Jason Scott; zh:王晰宁<t:Wang Xining>
* editors=zh:包文俊; zh:金心雯
* quotee=zh:張福運<t:Chang Fu-yun>; zh:張景文<t:Chang Ching-wen>
There may be embedded semicolons within brackets, braces or parens that should not be treated as delimiters, e.g.:
* author=Oliver Optic [pseudonym; {{w|William Taylor Adams}}]
* author=author=Shannon Drake (pen name; {{w|Heather Graham Pozzessere}})
* author=James (the Elder;) Humphrys
There may also be HTML entities with semicolons in them:
* author=[{{w|Gilbert Clerke}}]
* 2ndauthor=Martin Biddle & Sally Badham
* author=Peter Christen Asbjørnsen
There may be both embedded semicolons and HTML entities with semicolons in them:
* author=[{{w|Voltaire}} [pseudonym; François-Marie Arouet]]
In general we want to treat [ like an opening bracket and ] like a closing bracket. Beware that they may be
mismatched:
* author=Anonymous [{{w|Karl Maria Kertbeny}}]
Here, `val` is the value of the parameter and `fullname` is the name of the parameter from which the value was
retrieved. `explicit_gloss`, if specified and non-nil, overrides any gloss specified using the <t:...> or <gloss:...>
inline modifier, and `explicit_gloss_fullname` is the name of the parameter from which this value was retrieved. (If
`explicit_gloss` is specified and multiple values were seen, an error results.)
Return value is a list of objects of the same sort as returned by parse_annotated_text().
]=]
local function parse_multivalued_annotated_text(val, fullname, explicit_gloss, explicit_gloss_fullname)
if not val then
return nil
end
-- NOTE: In the code that follows, we use `entity` most of the time to refer to one of the semicolon-separated
-- values in the multivalued param. Entities are most commonly people (typically authors, editors, translators or
-- the like), but may be the names of publishers, locations, or other entities. "Entity" can also refer to HTML
-- entities; in the places where this occurs, the variable name contains 'html' in it.
local splitchar, english_delim
if val:find("^,") then
splitchar = ","
english_delim = "comma"
val = val:gsub("^,", "")
else
splitchar = ";"
english_delim = "semicolon"
end
-- Optimization #1: No semicolons/commas or angle brackets (indicating inline modifiers).
if not val:find("[<" .. splitchar .. "]") then
if val_should_not_be_parsed_for_annotations(val) then
return {{text = val, link = val, noscript = true}}
else
return {generate_obj_multivalued_annotated_text(val, nil, fullname, "no undo html entity replacement")}
end
end
-- Optimization #2: Semicolons/commas but no angle brackets (indicating inline modifiers), braces, brackets, or
-- parens (any of which would protect the semicolon/comma from interpretation as a delimiter), and no ampersand
-- (which might indicate an HTML entity with a terminating semicolon, which should not be interpreted as a
-- delimiter).
if not val:find("[<>%[%](){}&]") then
local entity_objs = {}
for entity in gsplit(val, "%s*" .. splitchar .. "%s*") do
if val_should_not_be_parsed_for_annotations(entity) then
insert(entity_objs, {
text = entity,
link = entity,
noscript = true
})
else
insert(entity_objs, generate_obj_multivalued_annotated_text(entity, nil, fullname, "no undo html entity replacement"))
end
end
return entity_objs
end
-- Escape HTML entities, and get rid of directionality markers.
local amp = val:find("&", nil, true)
if amp then
-- The pattern is more permissive than the usual entity pattern, as MediaWiki has some nonstandard entities
-- that have non-ASCII characters in their codes.
val = val:gsub("((&(#?)(([xX]?)([%w\128-\255]+)));)", html_entity_replacement)
end
-- Pattern covers left-to-right (U+200E) and right-to-left (U+200F).
val = val:gsub("\226\128[\142\143]", "")
-- Parse balanced segment runs, treating HTML entities for left and right bracket and left and right angle bracket
-- as matching literal versions of the same characters.
local entity_runs = parse_multi_delimiter_balanced_segment_run(
val,
{{"[" .. TEMP_LBRAC, "]" .. TEMP_RBRAC}, {"(", ")"}, {"{", "}"}, {"<" .. TEMP_LT, ">" .. TEMP_GT}},
true
)
if type(entity_runs) == "string" then
local undo_val = undo_html_entity_replacement(val)
-- Parse error due to unbalanced delimiters. Don't throw an error here; instead, don't attempt to parse off
-- any annotations, but return the value directly, maybe allowing script tagging (not allowing it if it appears
-- the text is already script-tagged).
return {{text = undo_val, link = undo_val, noscript = not not val_should_not_be_parsed_for_annotations(val)}}
end
-- Split on semicolon (or comma), possibly surrounded by whitespace.
local separated_groups = split_alternating_runs(entity_runs, "%s*" .. splitchar .. "%s*")
-- Process each value.
local entity_objs = {}
for _, entity_group in ipairs(separated_groups) do
-- Rejoin runs that don't involve <...>.
local j = 2
while j <= #entity_group do
if not entity_group[j]:find("^<.*>$") then
entity_group[j - 1] = entity_group[j - 1] .. entity_group[j] .. entity_group[j + 1]
remove(entity_group, j)
remove(entity_group, j)
else
j = j + 2
end
end
local oneval = undo_html_entity_replacement(concat(entity_group))
-- When checking for inline modifiers, exclude HTML entry with <span ...>, <i ...>, <br/> or similar in it,
-- caused by wrapping an argument in {{l|...}}, {{lang|...}} or similar. Also exclude URL's from being parsed
-- as having language code prefixes. This works analogously to parse_annotated_text(); see there for more.
if val_should_not_be_parsed_for_annotations(oneval) then
insert(entity_objs, {
text = oneval,
link = oneval,
noscript = true
})
else
local obj
if #entity_group > 1 then
-- Check for inline modifier.
obj = parse_inline_modifiers_from_segments({
group = entity_group,
arg = oneval,
props = {
paramname = fullname,
param_mods = param_mods,
generate_obj = generate_obj_multivalued_annotated_text,
},
})
else
obj = generate_obj_multivalued_annotated_text(entity_group[1], nil, fullname)
end
insert(entity_objs, obj)
end
end
if explicit_gloss then
if #entity_objs > 1 then
error(
(
"Can't specify |%s= along with multiple %s-separated entities in |%s=; use the <t:...> "
.. "inline modifier attached to the individual entities"
):format(explicit_gloss_fullname, english_delim, fullname)
)
end
entity_objs[1].gloss = explicit_gloss
end
return entity_objs
end
--[=[
Format a text property that may be in a foreign language or script, along with annotations. This is conceptually
similar to the full_link() function in [[Module:links]], but displays the annotations in a different format that is
more appropriate for bibliographic entries. The output looks like this:
TEXT [TRANSLIT /TRANSCRIPTION/, GLOSS]
`textobj` is as returned by parse_annotated_text(). `tag_text_func`, if supplied, is a function of one argument to further
wrap the text after it has been processed and CSS-tagged appropriately, directly before insertion. `tag_gloss_func` is a
similar function for the gloss.
]=]
local function format_annotated_text(textobj, tag_text_func, tag_gloss_func)
if not textobj then
return nil
end
local text, link = textobj.text, textobj.link
local subst, tr, ts, f, gloss = textobj.subst, textobj.tr, textobj.ts, textobj.f, textobj.gloss
-- Retrieve the display text, either specified by the user (.alt) or by parse_annotated_text() (.display) when a
-- Wikipedia link is given.
local alt = textobj.alt or textobj.display
if alt then
if link:find("%[%[") or link:find("%]%]") then
local errmsg = ("Can't currently handle embedded links in '%s', with <alt:...> text '%s'"):format(link, alt)
error(escape_wikicode(errmsg))
end
text = ("[[%s|%s]]"):format(link, alt)
end
-- See above for `noscript`, meaning HTML was found in the text value, probably generated using {{lang|...}}.
-- {{lang}} already script-tags the text and processes embedded language links, so we don't want to do it again (in
-- fact, the code below within the if-clause is similar to what {{lang}} does). In such a case, an explicit language
-- won't be available and find_best_script_without_lang() may not be accurate, so we can't do automatic transliteration.
if not textobj.noscript then
local lang = textobj.lang
-- As an optimization, don't do script detection on an argument that contains only ASCII.
local sc = textobj.sc
or lang and lang:findBestScript(text)
or not text:find("^[ -~]$") and find_best_script_without_lang(text)
or nil
-- As an optimization, don't do any of the following if there's no language, script, translit or transcription,
-- as will be the case with simple ASCII values.
if lang or sc or tr or ts then
if not lang then
lang = get_lang("und")
end
if tr == "-" then
tr = nil
elseif not tr and sc and not sc:getCode():find("Lat") then -- Latn, Latf, Latg, pjt-Latn
-- might return nil
local text_for_tr = text
if subst then
text_for_tr = apply_subst(text_for_tr, subst)
else
text_for_tr = remove_links(text)
end
tr = (lang:transliterate(text_for_tr, sc))
end
-- l10n: in zh mode, Han-script text is in the wiki's host
-- language — skip lang/script tagging so the wiki's CJK font
-- CSS doesn't get applied inside citations (which would make
-- titles, locations etc. visually clash with surrounding
-- text). Triggers only when (a) we're in zh mode, (b) the
-- detected script is Han-family (Hani/Hans/Hant), and (c) no
-- explicit non-zh language was given — so foreign scripts
-- (Arab, Hebr, …) and explicit non-zh languages on Han text
-- (e.g. `ja:狂人日記`) still get tagged for their native font.
local skip_host_tagging = output_mode == "zh"
and sc and sc:getCode():find("^Han")
and (lang:getCode() == "und" or lang:getCode() == "zh")
if text:find("%[%[") then
-- FIXME: embedded_language_links() replaces % signs with their URL-encoded equivalents,
-- which messes up URL's that may be present (e.g. if chapterurl= is given). IMO this
-- should not happen, and embedded_language_links() should do nothing if no embedded links
-- are present. To work around this, only call embedded_language_links() when there are
-- embedded links present.
if skip_host_tagging then
-- l10n: Module:links requires a lang object (nil lang
-- triggers an index error). Pass und to avoid the
-- lang="zh" / :lang(zh) CSS rules, and drop sc so the
-- link-segment wrappers aren't tagged with .Hani.
local und_lang = lang:getCode() == "und" and lang or get_lang("und")
text = embedded_language_links({
term = text,
lang = und_lang,
})
else
text = embedded_language_links({
term = text,
lang = lang,
sc = sc,
})
end
end
if not skip_host_tagging and (lang:getCode() ~= "und" or sc:getCode() ~= "Latn") then
text = tag_text(text, lang, sc)
end
if tr then
-- Should we link to the transliteration of languages with lang:link_tr()? Probably not because `text` is not
-- likely to be a term that has an entry.
tr = tag_translit(tr, lang, "usex")
end
if ts then
ts = tag_transcription(ts, lang, "usex")
end
end
end
-- l10n: per-value CJK check — symmetric with the gloss path below.
-- tag_text_func (e.g. tag_with_cite → <cite>) renders italic, which
-- looks poor on CJK. Skip the wrap when text contains CJK; Latin
-- titles in any mode retain italics. has_cjk works on post-tag_text
-- output because HTML attribute strings (class, lang, …) don't
-- contain CJK code points.
local text_has_cjk = has_cjk(text)
text = unitalicize_brackets(text)
if tag_text_func and not text_has_cjk then
text = tag_text_func(text)
end
local parts = {}
if textobj.q then
insert(parts, format_qualifier(textobj.q) .. " ")
end
insert(parts, text)
if tr or ts or f or gloss then
insert(parts, SPACE_LBRAC)
local subparts = {}
if tr or ts then
local tr_ts
if ts then
ts = "/" .. ts .. "/"
end
if tr and ts then
tr_ts = tr .. " " .. ts
else
tr_ts = tr or ts
end
insert(subparts, tr_ts)
end
if f then
for _, ff in ipairs(f) do
local sc = ff.sc
local lang
if not sc and ff.quals then
local qual = ff.quals[1]
if type(qual) == "string" then
-- do nothing; we'll do script detection farther down
elseif qual:hasType("script") then
sc = qual
else -- language
sc = qual:findBestScript(ff.val)
lang = qual
end
end
if not lang then
lang = get_lang("und")
end
sc = sc or find_best_script_without_lang(ff.val)
local val = embedded_language_links({
term = ff.val,
lang = lang,
sc = sc,
})
if lang:getCode() ~= "und" or sc:getCode() ~= "Latn" then
val = tag_text(val, lang, sc)
end
local qual_prefix
if ff.quals then
for i, qual in ipairs(ff.quals) do
if type(qual) ~= "string" and (qual:hasType("script") or qual:hasType("language")) then
ff.quals[i] = qual:getCanonicalName()
end
end
qual_prefix = concat(ff.quals, "/") .. ": "
else
qual_prefix = ""
end
insert(subparts, qual_prefix .. val)
end
end
if gloss then
-- l10n: per-value CJK check on gloss content. tag_gloss_func
-- (e.g. tag_with_cite → <cite>) renders italic in browsers,
-- which looks poor on CJK characters. Skip the tag wrap when
-- gloss contains CJK; English glosses retain italics in both
-- output modes. The check happens before HTML wrapping so the
-- <span> tags don't interfere with detection.
local gloss_has_cjk = has_cjk(gloss)
gloss = '<span class="e-translation">' .. gloss .. "</span>"
gloss = unitalicize_brackets(gloss)
if tag_gloss_func and not gloss_has_cjk then
gloss = tag_gloss_func(gloss)
end
insert(subparts, gloss)
end
insert(parts, concat(subparts, ", "))
insert(parts, RBRAC)
end
if textobj.qq then
insert(parts, " " .. format_qualifier(textobj.qq))
end
return concat(parts)
end
--[=[
Format a multivalued text property that may be in a foreign language or script, along with annotations. This is the
multivalued analog to format_annotated_text(), and formats each individual entity using format_annotated_text(),
joining the results with `delimiter`, which defaults to ", ". It `delimiter` is "and" or "or", join the results using
serial_comma_join() with the specified conjunction.
`textobjs` is as returned by parse_multivalued_annotated_text(). `tag_text_func` and `tag_gloss_func` are as in
format_annotated_text().
]=]
local function format_multivalued_annotated_text(textobjs, delimiter, tag_text_func, tag_gloss_func)
if not textobjs then
return nil
end
if #textobjs == 1 then
return format_annotated_text(textobjs[1], tag_text_func, tag_gloss_func)
end
local parts = {}
for _, textobj in ipairs(textobjs) do
insert(parts, format_annotated_text(textobj, tag_text_func, tag_gloss_func))
end
-- Change delimiter to semicolon if the items themselves contain commas (e.g., in ", Jr.")
local use_semicolon = false
for _, obj in ipairs(textobjs) do
-- Use remove_links to ignore commas in links
if obj.text and remove_links(obj.text):find(", ") then
use_semicolon = true
break
end
end
local n = #parts
if n > 0 and parts[n]:match("^'*et al[.']*$") then
-- Special handling for 'et al.' (Latin abbreviation, kept verbatim in zh too)
parts[n] = "''et al.''"
if n == 2 then
-- author et al.
return concat(parts, " ")
else
-- l10n: enumeration separator switches to fullwidth in zh mode.
if output_mode == "zh" then
return concat(parts, use_semicolon and ZH_SEMICOLON or "、")
end
-- author 1, author 2, et al.
return concat(parts, (use_semicolon and "; ") or ", ")
end
if delimiter == "and" or delimiter == "or" then
delimiter = ", "
end
return concat(parts, delimiter)
end
if delimiter == "and" or delimiter == "or" then
-- l10n: zh uses 、 + 和/或 (no Oxford comma) instead of serialCommaJoin.
if output_mode == "zh" then
return zh_serial_join(parts, delimiter)
end
return serial_comma_join(parts, {conj = delimiter})
end
if output_mode == "zh" then
-- l10n: zh-mode delimiter substitution (no trailing space on fullwidth marks).
if delimiter == "; " then return concat(parts, ZH_SEMICOLON) end
if delimiter == ", " or delimiter == nil then return concat(parts, ZH_COMMA) end
end
return concat(parts, delimiter or ((use_semicolon and "; ") or ", "))
end
-- Fancy version of ine() (if-not-empty). Converts empty string to nil, but also strips leading/trailing space.
local function ine(arg)
if not arg then
return nil
elseif type(arg) ~= "string" then
return arg
end
arg = mw.text.trim(arg)
if arg == "" then
return nil
end
return arg
end
local abbrs = {
["a."] = {anchor = "a.", full = "ante"},
["c."] = {anchor = "c.", full = "circa"},
["p."] = {anchor = "p.", full = "post"},
}
-- Process prefixes 'a.' (ante), 'c.' (circa) and 'p.' (post) at the beginning of an arbitrary date or year spec.
-- Returns two values, the formatted version of the prefix and the date spec minus the prefix. If no prefix is found,
-- returns an empty string and the full date.
local function process_ante_circa_post(date)
local prefix = usub(date, 1, 2)
local abbr = abbrs[prefix]
local abbr_prefix = ""
if abbr then
abbr_prefix = "''[[Appendix:Glossary#"
.. abbr.anchor
.. '|<abbr title="'
.. abbr.full
.. '">'
.. abbr.anchor
.. "</abbr>]]'' "
-- Remove lowercase letter, period, and space from beginning of date parameter.
date = ugsub(date, "^%l%.%s*", "")
end
return abbr_prefix, date
end
-- Format the arguments that specify the date of the quotation. These include the following:
-- |date=: The date. If |start_date= is given, this is the end date.
-- |year=, |month=: Year and month of quotation date or end of range, if |date= isn't given.
-- |start_date=: The start date, to specify a range.
-- |start_year=, |start_month=: Year and month of start of range, if |start_date= isn't given.
-- |accessdate=: Date a website was accessed; processed if no other date was given.
-- |nodate=: Indicate that no date is present; otherwise a maintenance line will be displayed if there is no date.
--
-- If `parampref` and/or `paramsuf` are given, this modifies all the date arguments accordingly. For example, if
-- `parampref` == "orig" and `paramsuf` is omitted, the date is specified using |origdate= or |origyear=/|origmonth=,
-- and the start of the range is |origstart_date=, etc. Similarly, if `parampref` is omitted and `paramsuf` is
-- "_published", the date is specified using |date_published= or |year_published=/|month_published=, and the start of
-- the range is |start_date_published=, etc.
--
-- `a` and `get_full_paramname` are functions with the same interpretation as the local functions of the same name in
-- source(). These are used to fetch parameters and get their full names. Note that this may cause all arguments to
-- have an index added to them (|date2=, |year2=, |month2=, etc.).
--
-- `alias_map` is as in source() and is used to map canonical arguments to their aliases when aliases were used.
--
-- If `bold_year` is given, displayed years are boldfaced unless boldface is present in the parameter value.
--
-- If `maintenance_line_no_date` is specified, it should be a string that will be returned if no date is found (i.e.
-- neither |date= nor |year=, or their appropriate equivalents per `parampref` and `paramsuf`, are specified, and
-- neither |nodate= is given to indicate that there is no date, or |accessdate= is given).
--
-- Returns two values: the formatted date and a boolean indicating whether to add a maintenance category
-- [[:Category:Requests for date in LANG entries]]. The first return value will be nil if nothing is to be added
-- (in which case the scond return value will always be nil).
local function format_date_args(
a,
get_full_paramname,
alias_map,
parampref,
paramsuf,
bold_year,
maintenance_line_no_date,
year_last
)
local output = {}
parampref = parampref or ""
paramsuf = paramsuf or ""
local function getp(param)
return a(parampref .. param .. paramsuf)
end
local function pname(param)
local fullname = get_full_paramname(parampref .. param .. paramsuf)
return alias_map[fullname] or fullname
end
-- Format `timestamp` (a timestamp referencing a date) according to the spec in `code`. `param` is the base name of
-- the parameter from which the timestamp was fetched, for error messages.
local function format_date_with_code(code, timestamp, param)
-- l10n: force the locale to match output_mode rather than the wiki's
-- content language, so behaviour is deterministic regardless of
-- where the module is deployed (enwikt vs zhwikt sandbox vs test).
local language = output_mode == "zh" and zh_lang() or mw.language.new("en")
local ok, date = pcall(language.formatDate, language, code, timestamp)
if ok then
return date
else
-- All the formats used in format_date_args() are fine, so the timestamp must be at fault.
error(
(
"Timestamp |%s=%s (possibly canonicalized from its original format) could not be parsed; see the "
.. "[[mw:Help:Extension:ParserFunctions##time|documentation for the #time parser function]]"
):format(pname(param), tostring(timestamp))
)
end
end
-- Try to figure out if the given timestamp has the day of the month explicitly given. We use the following
-- algorithm:
-- 1. Format as year-month-day; if the day is not 1, the day was explicitly given, since if only the year/month are
-- given, the day shows up as 1.
-- 2. If the day shows up as 1 and there isn't a 1 or 01 in the timestamp, the day wasn't explicitly given.
-- 3. Otherwise, if there are three separate numbers (e.g. 2022-07-01), or two separate numbers plus a capitalized
-- letter (taken as an English month, e.g. 2022 July 1), the day was explicitly given, otherwise not.
--
-- `param` is the base name of the parameter from which the timestamp was fetched.
local function date_has_day_specified(timestamp, param)
local day = format_date_with_code("j", timestamp, param)
if day ~= "1" then
return true
end
local english_month = timestamp:find("%u")
local canon_timestamp = mw.text.trim((timestamp:gsub("%D+", " ")))
local seen_nums = split(canon_timestamp, " ", true)
local saw_one = false
for _, num in ipairs(seen_nums) do
if num == "1" or num == "01" then
saw_one = true
break
end
end
if not saw_one then
return false
end
return #seen_nums >= 3 or english_month and #seen_nums >= 2
end
-- Format a date with boldfaced year, as e.g. '''2023''' August 3. `explicit_day_given` indicates whether to include
-- the day; if false, the return value will be e.g. '''2023''' August. `date_param` is the base name of the param
-- from which the date was fetched, for error messages.
local function format_bold_date(date, explicit_day_given, date_param)
-- l10n: zh mode → always year-first, native "Y年n月j日" (or short
-- forms when day/month missing). year_last is ignored because
-- Chinese conventionally writes the year first regardless of
-- citation style.
if output_mode == "zh" then
local zh_code
if bold_year then
zh_code = explicit_day_given and "'''Y年''' n月j日" or "'''Y年''' n月"
else
zh_code = explicit_day_given and "Y年n月j日" or "Y年n月"
end
return format_date_with_code(zh_code, date, date_param)
end
local day_month_code = explicit_day_given and "j F" or "F"
local month_day_code = explicit_day_given and "F j" or "F"
if year_last then
if bold_year then
-- This formats like "3 August '''2023'''" (or "August '''2023'''" if day not explicitly given).
return format_date_with_code(day_month_code .. " '''Y'''", date, date_param)
else
-- This formats like "3 August 2023" (or "August 2023" if day not explicitly given).
return format_date_with_code(day_month_code .. " Y", date, date_param)
end
else
if bold_year then
-- This formats like "'''2023''' August 3" (or "'''2023''' August" if day not explicitly given).
return format_date_with_code("'''Y''' " .. month_day_code, date, date_param)
else
-- This formats like "2023 August 3" (or "2023 August" if day not explicitly given).
return format_date_with_code("Y " .. month_day_code, date, date_param)
end
end
end
-- The formatDate method of the mw.language object behaves like the {{#time:}} parser function, which doesn't
-- accept the formats "monthday monthname, year" or "year monthname monthday", but outputs garbage when it receives
-- them, behavior inherited from PHP. {{#formatdate:}} magic word is more forgiving. Fix dates so that, for
-- instance, the |date= parameter of {{quote-journal}} (which uses this code) and the |accessdate= parameter (which
-- uses {{#formatdate:}}) accept similar date formats. See:
-- * [[mw:Extension:Scribunto/Lua_reference_manual#mw.language:formatDate]]
-- * [[mw:Help:Extension:ParserFunctions##time]]
-- * [[mw:Help:Magic_words#Formatting]]
-- `date` is the date spec from the user, which is assumed to come from a parameter whose base name ends in "date";
-- `parampref` is the prefix added to "date" to get the parameter name.
local function fix_date(date, param_pref)
if tonumber(date) ~= nil then
error(
("|%s= should contain a full date (year, month, day of month); use |%s= for year"):format(
pname(param_pref .. "date"),
pname(param_pref .. "year")
)
)
elseif date and date:find("%s*%a+,%s*%d+%s*$") then
error(
("|%s= should contain a full date (year, month, day of month); use |%s=, |%s= for month and year"):format(
pname(param_pref .. "date"),
pname(param_pref .. "month"),
pname(param_pref .. "year")
)
)
end
if date then
-- Commas are replaced with spaces to prevent parsing issues
local fixed_date = ugsub(date, ", *", " ")
return (ugsub(ugsub(fixed_date or date, "(%d+ %a+),", "%1"), "^(%d%d%d%d) (%a+ %d%d?)$", "%2 %1"))
end
end
local start_date, date = fix_date(getp("start_date"), "start_"), fix_date(getp("date"), "")
local year = getp("year")
local month = getp("month")
local start_year = getp("start_year")
local start_month = getp("start_month")
if date and year then
error(("Only one of |%s= or |%s= should be specified"):format(pname("date"), pname("year")))
end
if date and month then
error(
("|%s= should only be specified in conjunction with |%s=, not with |%s="):format(
pname("month"),
pname("year"),
pname("date")
)
)
end
if start_date and start_year then
error(("Only one of |%s= or |%s= should be specified"):format(pname("start_date"), pname("start_year")))
end
if start_date and start_month then
error(
("|%s= should only be specified in conjunction with |%s=, not with |%s="):format(
pname("start_month"),
pname("start_year"),
pname("start_date")
)
)
end
if (start_date or start_year) and not (date or year) then
error(
("|%s= or |%s=/|%s= cannot be specified without specifying |%s= or |%s=/|%s="):format(
pname("start_date"),
pname("start_year"),
pname("start_month"),
pname("date"),
pname("year"),
pname("month")
)
)
end
local dash = " – "
local day_explicitly_given = date and date_has_day_specified(date, "date")
local start_day_explicitly_given = start_date and date_has_day_specified(start_date, "start_date")
-- Format a date with boldfaced year, as e.g. '''2023''' August 3 (if `explicit_day_given` specified) or
-- '''2023''' August (if `explicit_day_given` not specified). If no date specified, fall back to formatting based
-- on the year and (optionally) month params given in `yearobj` and `monthobj`, boldfacing the year if not already.
-- `date_param` is the base name of the param from which the date was fetched, for error messages.
local function format_date_or_year_month(date, yearobj, monthobj, explicit_day_given, date_param)
if date then
return format_bold_date(date, explicit_day_given, date_param)
else
-- Boldface a year spec if it's not already boldface.
if bold_year and not yearobj.text:find("'''") then
-- Clone the year object before modifying it because we may use it later to check against the current
-- year (if we're dealing with start_year).
yearobj = shallow_copy(yearobj)
yearobj.text = "'''" .. yearobj.text .. "'''"
if yearobj.alt then
yearobj.alt = "'''" .. yearobj.alt .. "'''"
end
end
if year_last then
return (monthobj and format_annotated_text(monthobj) .. " " or "") .. format_annotated_text(yearobj)
else
return format_annotated_text(yearobj) .. (monthobj and " " .. format_annotated_text(monthobj) or "")
end
end
end
local yearobj = parse_annotated_text(year, pname("year"))
local monthobj = parse_annotated_text(month, pname("month"))
local start_yearobj = parse_annotated_text(start_year, pname("start_year"))
local start_monthobj = parse_annotated_text(start_month, pname("start_month"))
if start_yearobj then
local abbr_prefix
abbr_prefix, start_yearobj.text = process_ante_circa_post(start_yearobj.text)
start_yearobj.link = select(2, process_ante_circa_post(start_yearobj.link))
insert(output, abbr_prefix)
elseif yearobj then
local abbr_prefix
abbr_prefix, yearobj.text = process_ante_circa_post(yearobj.text)
yearobj.link = select(2, process_ante_circa_post(yearobj.link))
insert(output, abbr_prefix)
end
if start_date or start_year then
-- l10n: zh mode short-circuit — render both endpoints fully ("Y年n月j日")
-- and join with a dash. We deliberately skip enwikt's elide-common-parts
-- optimization because "2026年5月24日 – 2026年5月26日" reads fine in zh
-- and avoids reconstructing partial Chinese date fragments by hand.
if output_mode == "zh" then
insert(output, format_date_or_year_month(
start_date, start_yearobj, start_monthobj,
start_day_explicitly_given, "start_date"
))
insert(output, dash)
insert(output, format_date_or_year_month(
date, yearobj, monthobj, day_explicitly_given, "date"
))
else
local cur_year = yearobj and yearobj.text or format_date_with_code("Y", date, "date")
local cur_month = monthobj and monthobj.text or date and format_date_with_code("F", date, "date") or nil
local cur_day = date and day_explicitly_given and format_date_with_code("j", date, "date") or nil
local beg_year = start_yearobj and start_yearobj.text or format_date_with_code("Y", start_date, "start_date")
local beg_month = start_monthobj and start_monthobj.text
or start_date and format_date_with_code("F", start_date, "start_date")
or nil
local beg_day = start_date
and start_day_explicitly_given
and format_date_with_code("j", start_date, "start_date")
or nil
if year_last then
if beg_day then
insert(output, beg_day .. " " .. beg_month)
else
insert(output, beg_month)
end
if beg_year ~= cur_year then
insert(output, " " .. beg_year)
end
else
insert(output, format_date_or_year_month(
start_date,
start_yearobj,
start_monthobj,
start_day_explicitly_given,
"start_date"
))
end
if cur_year ~= beg_year then
-- Different years; insert current date in full.
if beg_month or cur_month then
insert(output, dash)
else
insert(output, "–")
end
insert(output, format_date_or_year_month(date, yearobj, monthobj, day_explicitly_given, "date"))
elseif cur_month and cur_month ~= beg_month then
local month_ins = monthobj and format_annotated_text(monthobj) or cur_month
-- Same year but different months; insert current month and (if available) current day.
if cur_day then
insert(output, dash)
if year_last then
insert(output, cur_day .. " " .. month_ins)
else
insert(output, month_ins .. " " .. cur_day)
end
else
if beg_day then
insert(output, dash)
else
insert(output, "–")
end
insert(output, month_ins)
end
elseif cur_day and cur_day ~= beg_day then
-- Same year and month but different days; insert current day.
insert(output, "–")
insert(output, cur_day)
else
-- Same year, month and day; or same year and month, and day not available; or same year, and month and
-- day not available. Do nothing. FIXME: Should we throw an error?
end
if year_last and beg_year == cur_year then
if cur_month then
insert(output, " " .. cur_year)
else
insert(output, " " .. cur_year)
end
end
end -- l10n: end of en-mode range branch (matches the if output_mode=="zh" above)
elseif date or yearobj then
insert(output, format_date_or_year_month(date, yearobj, monthobj, day_explicitly_given, "date"))
elseif not maintenance_line_no_date then
-- Not main quote date. Return nil, caller will handle.
return nil, nil
elseif not getp("nodate") then
local accessdate = getp("accessdate")
if accessdate then
local explicit_day_given = date_has_day_specified(accessdate, "accessdate")
insert(output, format_bold_date(accessdate, explicit_day_given, "accessdate") .. L(" (last accessed)"))
else
if mw.title.getCurrentTitle().namespace ~= 10 then
return maintenance_line(maintenance_line_no_date), true
end
return nil, nil
end
end
return ine(concat(output)), nil
end
local function tag_with_cite(txt)
return "<cite>" .. txt .. "</cite>"
end
-- Display the source line of the quote, above the actual quote text. This contains the majority of the logic of this
-- module (formerly contained in {{quote-meta/source}}).
function export.source(args, alias_map, format_as_cite, other_controls)
-- l10n: detect output mode at the entry of every source() invocation.
-- Mode is a module-level upvalue read by L(), format_date(), and the
-- build_* helpers; we reset it each call so two transclusions on the
-- same page can independently land in en vs zh mode.
output_mode = detect_output_mode(args)
local tracking_categories = {}
local argslang = args[1] or args.lang
if not argslang then
-- For the moment, only trigger an error on mainspace pages and
-- other pages that are not user pages or pages containing discussions.
-- These are the same pages that appear in the appropriate tracking
-- categories. User and discussion pages have not generally been
-- fixed up to include a language code and so it's more helpful
-- to use a maintenance line than signal an error.
local current_title = mw.title.getCurrentTitle()
if not (current_title.namespace == 10 or page_should_be_ignored(current_title.fullText)) then
require(languages_error_module)(nil, 1)
end
end
-- Given a canonical param, convert it to the original parameter specified by the user (which may have been an
-- alias).
local function alias(param)
return alias_map[param] or param
end
local output, sep = {}
local overrides = other_controls and other_controls.overrides or {}
-- Add text to the output. The text goes into a list, and we concatenate all the list components together at the
-- end. To make it easier to handle comma-separated items, we keep track (in `sep`) of the separator (if any) that
-- needs to be inserted before the next item added. For example, if we're in the "newversion" code (ind ~= ""), and
-- there's no title and no URL, then the first time we add anything after the title, we don't want to add a
-- separating comma because the preceding text will say "republished " or "republished as " or "translated as " or
-- similar. In all- other cases, we do want to add a separating comma. The bare add() function reset the separator
-- to be nothing, while the add_with_sep() function resets the separator to be the value of `next_sep` (defaulting
-- to ", "), so the next time around we do add a comma to separate `text` from the preceding piece of text.
local function add(text)
if sep then
insert(output, sep)
end
insert(output, text)
sep = nil
end
local function add_with_sep(text, next_sep)
add(text)
-- l10n: default separator follows output_mode (zh → ",", en → ", ")
sep = next_sep or sep_comma()
end
-- FIXME: This is all very over-engineered, which makes it slow and memory-inefficient.
-- Return a function that generates the actual parameter name associated with a base param (e.g. "author", "last").
-- The actual parameter name may have an index added (an empty string for the first set of params, e.g. author=,
-- last=, or a numeric index for further sets of params, e.g. author2=, last2=, etc.).
local function make_get_full_paramname(ind)
return function(param)
return param .. ind
end
end
-- Function to fetch the actual parameter name associated with a base param (see make_get_full_paramname() above).
-- Assigned at various times below by calling make_get_full_paramname(). We do it this way so that we can have
-- wrapper functions that access params and define them only once.
local get_full_paramname
-- Return two values: the value of a parameter given the base param name (which may have a numeric index added),
-- and the parameter name from which the value was fetched (which may be an alias, i.e. you can't necessarily fetch
-- the parameter value from args[] given this name). The base parameter can be a list of such base params, which
-- are checked in turn, or nil, in which case nil is returned.
local function a_with_name(param)
if not param then
return nil
elseif type(param) ~= "table" then
local fullname = get_full_paramname(param)
return args[fullname], alias(fullname)
end
for _, par in ipairs(param) do
local val, fullname = a_with_name(par)
if val then
return val, alias(fullname)
end
end
return nil
end
-- Fetch the value of a parameter given the base param name (which may have a numeric index added). The base
-- parameter can be a list of such base params, which are checked in turn, or nil, in which case nil is returned.
local function a(param)
return (a_with_name(param))
end
-- Identical to a_with_name(param) except that it verifies that no space is present. Should be used for URL's.
local function aurl_with_name(param)
local value, fullname = a_with_name(param)
if value and value:find(" ") and not value:find("%[") then
error(("URL not allowed to contain a space, but saw |%s=%s"):format(fullname, value))
end
return value, fullname
end
-- Identical to a(param) except that it verifies that no space is present. Should be used for URL's.
local function aurl(param)
return (aurl_with_name(param))
end
-- Convenience function to fetch a parameter that may be in a foreign language or text (and may consequently have
-- a language prefix and/or inline modifiers), parse the annotations and convert the result into a formatted string.
-- This is the same as parse_and_format_annotated_text() below but also returns the full param name as the second
-- return value.
local function parse_and_format_annotated_text_with_name(param, tag_text_func, tag_gloss_func)
local val, fullname = a_with_name(param)
local obj = parse_annotated_text(val, fullname)
return format_annotated_text(obj, tag_text_func, tag_gloss_func), fullname
end
-- Convenience function to fetch a parameter that may be in a foreign language or text (and may consequently have
-- a language prefix and/or inline modifiers), parse the modifiers and convert the result into a formatted string.
-- This is a wrapper around parse_annotated_text() and format_annotated_text(). `param` is the base parameter name (see
-- a_with_name()), `tag_text_func` is an optional function to tag the parameter text after all other processing (e.g.
-- wrap in <cite>...</cite> tags), and `tag_gloss_func` is a similar function for the parameter translation/gloss.
local function parse_and_format_annotated_text(param, tag_text_func, tag_gloss_func)
return (parse_and_format_annotated_text_with_name(param, tag_text_func, tag_gloss_func))
end
-- Convenience function to fetch a multivalued parameter that may be in a foreign language or text (and may
-- consequently have a language prefix and/or inline modifiers), parse the modifiers and convert the result into a
-- formatted string. This is the multivalued analog to parse_and_format_annotated_text_with_name() and returns two
-- values, the formatted string and the full name of the parameter fetched. `delimiter` is as in
-- format_multivalued_annotated_text().
local function parse_and_format_multivalued_annotated_text_with_name(param, delimiter, tag_text_func, tag_gloss_func)
local val, fullname = a_with_name(param)
local objs = parse_multivalued_annotated_text(val, fullname)
local num_objs = objs and #objs or 0
return format_multivalued_annotated_text(objs, delimiter, tag_text_func, tag_gloss_func), fullname, num_objs
end
-- Convenience function to fetch a multivalued parameter that may be in a foreign language or text (and may
-- consequently have a language prefix and/or inline modifiers), parse the modifiers and convert the result into a
-- formatted string. This is the multivalued analog to parse_and_format_annotated_text(). `delimiter` is as in
-- format_multivalued_annotated_text().
local function parse_and_format_multivalued_annotated_text(param, delimiter, tag_text_func, tag_gloss_func)
return (parse_and_format_multivalued_annotated_text_with_name(param, delimiter, tag_text_func, tag_gloss_func))
end
-- This determines whether to display "Mary Bloggs, transl." (if there's no author preceding) or "translated by
-- Mary Bloggs" (if there's an author preceding).
local author_outputted = false
-- When formatting as a citation, the priority is to display a name and a date before the book/chapter title
-- this tracks whether or not the author/date has been displayed
local date_outputted, formatted_date, formatted_origdate = false
local function add_date(no_paren)
if not date_outputted then
if no_paren then
sep = sep_comma()
else
sep = " "
end
if formatted_date then
if no_paren then
add(formatted_date)
elseif output_mode == "zh" then
-- l10n: fullwidth parens around the date
add(ZH_LPAREN .. formatted_date .. ZH_RPAREN)
else
add("(" .. formatted_date .. ")")
end
end
if formatted_origdate then
add(SPACE_LBRAC .. formatted_origdate .. RBRAC)
end
sep = sep_comma()
date_outputted = true
end
end
local function is_anonymous(val)
return val:match("^[Aa]nonymous$") or val:match("^[Aa]non%.?$")
end
-- Add a formatted author (whose values may be specified using `author` or, for compatibility purposes, split
-- among various parameters):
-- * `author` is the value of the author param (e.g. "author", "author2" or "2ndauthor"), and `author_fullname` is
-- the full parameter name holding that value;
-- * `trans_author` is the optional value of the param holding the gloss/translation of the author, and
-- `trans_author_fullname` is the full parameter name holding that value (or nil for no such parameter);
-- * `authorlink` is the value of the authorlink param, which holds the Wikipedia link of the author(s) in `author`,
-- and `authorlink_fullname` is the full parameter name holding that value;
-- * `trans_authorlink` is the optional value of the param holding the Wikipedia link of the gloss/translation of
-- the author, and `trans_authorlink_fullname` is the full parameter name holding that value (or nil for no such
-- parameter);
-- * `first` is the value of the parameter holding the first name of the author, and `first_fullname` is the full
-- parameter name holding that value;
-- * `trans_first` is the value of the corresponding parameter holding the gloss/translation of the first name
-- (e.g. "trans-first"), and `trans_first_fullname` is the full parameter name holding that value (or nil for
-- no such parameter);
-- * `last` is the value of the parameter holding the last name of the author, and `last_fullname` is the full
-- parameter name holding that value;
-- * `trans_last` is the value of the corresponding parameter holding the gloss/translation of the last name
-- (e.g. "trans-last"), and `trans_last_fullname` is the full parameter name holding that value (or nil for
-- no such parameter).
-- * `last_first` if set, when parameters `first` and `last` are used, display the author name as "last, first"
local function add_author(
author,
author_fullname,
trans_author,
trans_author_fullname,
authorlink,
authorlink_fullname,
trans_authorlink,
trans_authorlink_fullname,
first,
first_fullname,
trans_first,
trans_first_fullname,
last,
last_fullname,
trans_last,
trans_last_fullname,
last_first
)
local function make_author_with_url(txt, txtparam, authorlink, authorlink_param)
if authorlink then
if authorlink:find("%[%[") then
error(("Can't specify links in |%s=%s"):format(authorlink_param, authorlink))
end
if txt:find("%[%[") then
error(("Can't specify links in %s=%s"):format(txtparam, txt))
end
return "[[w:" .. authorlink .. "|" .. txt .. "]]"
else
return txt
end
end
local num_authorobjs
if author then
local authorobjs =
parse_multivalued_annotated_text(author, author_fullname, trans_author, trans_author_fullname)
num_authorobjs = #authorobjs
if num_authorobjs == 1 then
if is_anonymous(authorobjs[1].text) then
authorobjs[1].text = "anonymous author"
authorobjs[1].link = "anonymous author"
end
if authorlink then
authorobjs[1].text = make_author_with_url(
authorobjs[1].text,
"|" .. author_fullname,
authorlink,
"|" .. authorlink_fullname
)
authorobjs[1].link = make_author_with_url(
authorobjs[1].link,
"|" .. author_fullname,
authorlink,
"|" .. authorlink_fullname
)
end
if authorobjs[1].gloss and trans_authorlink then
authorobjs[1].gloss = make_author_with_url(
authorobjs[1].gloss,
("<t:...> in |%s"):format(author_fullname),
trans_authorlink,
"|" .. trans_author_fullname
)
end
add(format_multivalued_annotated_text(authorobjs))
elseif trans_authorlink then
error(
(
"Can't specify |%s= along with multiple semicolon-separated entities in |%s=; use the "
.. "<t:...> inline modifier attached to the individual entities and put the link directly "
.. "in the value of the inline modifier"
):format(trans_authorlink_fullname, author_fullname)
)
else
-- Allow an authorlink with multiple authors, e.g. for use with |author=Max Mills; Harvey Mills
-- with |authorlink=Max and Harvey. For this we have to generate the entire text and link it
-- all.
local formatted_text = format_multivalued_annotated_text(authorobjs)
if authorlink then
formatted_text = make_author_with_url(
formatted_text,
"|" .. author_fullname,
authorlink,
"|" .. authorlink_fullname
)
end
add(formatted_text)
end
else
num_authorobjs = 1
-- Author separated into first name + last name. We don't currently support non-Latin-script
-- authors separated this way and probably never will.
if first then
if last_first then
author = last .. ", " .. first
else
author = first .. " " .. last
end
else
author = last
end
if authorlink then
local authorparam = first and ("|%s |%s"):format(first_fullname, last_fullname) or "|" .. last_fullname
author = make_author_with_url(author, authorparam, authorlink, authorlink_fullname)
end
local trans_author
if trans_last then
if trans_first then
trans_author = trans_first .. " " .. trans_last
else
trans_author = trans_last
end
if trans_authorlink then
local trans_authorparam = trans_first
and ("|%s |%s"):format(trans_first_fullname, trans_last_fullname)
or "|" .. trans_last_fullname
trans_author = make_author_with_url(
trans_author,
trans_authorparam,
trans_authorlink,
trans_authorlink_fullname
)
end
end
add(author)
if trans_author then
add(SPACE_LBRAC)
add(trans_author)
add(RBRAC)
end
end
author_outputted = true
return num_authorobjs
end
local function add_authorlike(
param,
prefix_with_preceding_authors,
suffix_without_preceding_authors,
suffix_if_multiple,
anonymous_suffix
)
local delimiter = author_outputted and "and" or ", "
local entities, _, num_entities = parse_and_format_multivalued_annotated_text_with_name(param, delimiter)
if not entities then
return
end
if is_anonymous(entities) then
-- If tlr=anonymous or similar given, display as "anonymous translator" or similar. If a specific
-- anonymous suffix not given, try to derive the anonymous suffix from the non-preceding-author suffix.
if not anonymous_suffix then
if output_mode == "zh" then
-- l10n: zh suffix shape is "(X)"; derive_anonymous_suffix_zh
-- maps it to a bare role noun like "譯者" / "編者" so we get
-- "佚名譯者" instead of "佚名(譯)".
anonymous_suffix = derive_anonymous_suffix_zh(suffix_without_preceding_authors)
else
local cleaned_suffix = suffix_without_preceding_authors
:gsub(" ", " ")
:gsub(" ", " ")
:gsub(" ", " ")
:gsub("[", "[")
:gsub("]", "]")
cleaned_suffix = mw.text.trim(cleaned_suffix)
if not anonymous_suffix then
anonymous_suffix = " " .. cleaned_suffix:match("^, (.*)$")
end
if not anonymous_suffix then
anonymous_suffix = " " .. cleaned_suffix:match("^%((.*)%)$")
end
if not anonymous_suffix then
anonymous_suffix = " " .. cleaned_suffix:match("^%[(.*)%]$")
end
if not anonymous_suffix then
anonymous_suffix = suffix_without_preceding_authors
end
end -- l10n: end of en branch
end
add_with_sep(L("anonymous") .. anonymous_suffix)
elseif prefix_with_preceding_authors and (author_outputted or not suffix_without_preceding_authors) then
add_with_sep(prefix_with_preceding_authors .. entities)
elseif suffix_if_multiple and num_entities > 1 then
add_with_sep(entities .. suffix_if_multiple)
else
add_with_sep(entities .. suffix_without_preceding_authors)
end
author_outputted = true
end
local function add_authorlabel()
local default_authorlabel = a("default-authorlabel")
if default_authorlabel and yesno(a("authorlabel"), true) then
sep = nil
add_with_sep(" " .. default_authorlabel)
end
end
local function has_new_title_or_author()
return args["2ndauthor"]
or args["2ndlast"]
or args.chapter2
or args.title2
or args.tlr2
or args.mainauthor2
or args.editor2
or args.editors2
or args.compiler2
or args.compilers2
or args.director2
or args.directors2
end
local function has_newversion()
return args.newversion or args.location2 or has_new_title_or_author()
end
-- Handle chapter=, section=, etc. `param` is the base name of the parameter in question, e.g. "chapter" or
-- "section". If numeric (either Arabic or Roman), add `numeric_prefix`; otherwise, parse as textual (allowing for
-- language prefixes, inline modifiers, etc.), prefix with `textual_prefix` (if given) and suffix with
-- `textual_suffix` (if given). Also checks for and handles the following (assuming param == "chapter"):
-- * chapterurl=: URL of the chapter.
-- * trans-chapter=: Chapter translation (can be given using an inline modifier <t:...>).
-- * chapter_number=: Chapter number, when chapter= is also given (otherwise put the chapter number in chapter=).
-- * chapter_plain=: Plain version of the chapter number; the "chapter " prefix isn't added.
-- * chapter_series=: Series that the chapter is within (used e.g. for journal articles part of a series).
-- * chapter_seriesvolume=: Volume of the series (compare seriesvolume=).
--
-- Returns nil if no value specified for the main parameter, otherwise the formatted value.
local function format_chapterlike(param, numeric_prefix, textual_prefix, textual_suffix)
local chap, chap_fullname = a_with_name(param)
local chap_num, chap_num_fullname = a_with_name(param .. "_number")
local chap_plain, chap_plain_fullname = parse_and_format_annotated_text_with_name(param .. "_plain")
if chap_num and chap_plain then
error(("Specify only one of |%s= or %s="):format(chap_num_fullname, chap_plain_fullname))
end
local chap_series, chap_series_fullname =
parse_and_format_annotated_text_with_name(param .. "_series", tag_with_cite, tag_with_cite)
local chap_seriesvolume, chap_seriesvolume_fullname =
parse_and_format_annotated_text_with_name(param .. "_seriesvolume")
if chap_series then
-- l10n: zh uses fullwidth ","
chap_series = sep_comma() .. chap_series
end
if chap_seriesvolume then
if not chap_series then
error(("Cannot specify |%s= without %s="):format(chap_series_fullname, chap_seriesvolume_fullname))
end
if output_mode == "zh" then
chap_series = chap_series .. ZH_LPAREN .. chap_seriesvolume .. ZH_RPAREN
else
chap_series = chap_series .. " (" .. chap_seriesvolume .. ")"
end
end
local chapterurl
local function make_chapter_with_url(chap)
if chapterurl then
return "[" .. chapterurl .. " " .. chap .. "]"
else
return chap
end
end
if not chap then
if chap_num then
error(
("Cannot specify |%s= without |%s=; put the numeric value in |%s= directly"):format(
chap_num_fullname,
chap_fullname,
chap_fullname
)
)
end
if chap_plain then
chapterurl = aurl(param .. "url")
return make_chapter_with_url(chap_plain .. (chap_series or ""))
end
return nil
end
local cleaned_chap = chap:gsub("<sup>[^<>]*</sup>", ""):gsub("[*+#]", "")
chapterurl = aurl(param .. "url")
-- l10n: zh wraps numeric-class chap as "第N章" (suffix is L(param));
-- textual chap as "「title」" (CJK corner brackets in place of "...").
local function emit_numeric(chap_with_url)
if output_mode == "zh" then
return "第" .. chap_with_url .. L(param)
end
return numeric_prefix .. chap_with_url
end
local formatted
if numeric_prefix and get_number(cleaned_chap) then
-- Arabic chapter number
formatted = emit_numeric(make_chapter_with_url(chap))
elseif
numeric_prefix
and cleaned_chap:match("^[mdclxviMDCLXVI]+$")
and roman_to_arabic(cleaned_chap, true)
and (not overrides[param] or not overrides[param].noroman)
then
-- Roman chapter number
formatted = emit_numeric(make_chapter_with_url(upper(chap)))
elseif numeric_prefix and output_mode == "zh"
and classify_numeric_value(cleaned_chap) == "chinese"
then
-- l10n: Chinese-numeral chapter number (e.g. "五"), also wraps as 第五章.
formatted = emit_numeric(make_chapter_with_url(chap))
else
-- strip leading ! (used to force text-mode for titles that look like Roman numerals like "mil" and "dill")
if chap:find("^!") then
chap = chap:gsub("^!", "")
end
-- Must be a chapter name
local chapterobj = parse_annotated_text(chap, chap_fullname, a("trans-" .. param))
chapterobj.text = make_chapter_with_url(chapterobj.text)
chapterobj.link = make_chapter_with_url(chapterobj.link)
if output_mode == "zh" then
-- l10n: textual chap name uses CJK corner brackets「」 (not "..." quotes).
formatted = ZH_LQUOTE .. format_annotated_text(chapterobj) .. ZH_RQUOTE
else
formatted = (textual_prefix or "") .. format_annotated_text(chapterobj) .. (textual_suffix or "")
end
end
if chap_num or chap_plain then
-- NOTE: Up above we throw an error if both chap_num and chap_plain are specified.
if output_mode == "zh" then
-- l10n: zh parenthesized number, e.g. 「題目」(第5章)
formatted = formatted .. ZH_LPAREN
.. (chap_plain or "第" .. chap_num .. L(param))
.. ZH_RPAREN
else
formatted = formatted .. " (" .. (chap_plain or numeric_prefix .. chap_num) .. ")"
end
end
if chap_series then
formatted = formatted .. chap_series
end
return formatted
end
-- This handles everything after displaying the author, starting with the chapter and ending with page, column,
-- line and then other=. It is currently called twice: Once to handle the main portion of the citation, and once to
-- handle a "newversion" citation. `ind` is either "" for the main portion or a number (currently only 2) for a
-- "newversion" citation. In a few places we conditionalize on `ind` to take actions depending on its value.
local function postauthor(ind, num_authors, format_as_cite)
get_full_paramname = make_get_full_paramname(ind)
if author_outputted then
add_authorlabel()
end
local coauthors = parse_and_format_multivalued_annotated_text("coauthors", "and")
if coauthors then
local with_prefix = ""
if author_outputted then
with_prefix = "with "
if num_authors == 1 then
sep = " "
end
end
add_with_sep(with_prefix .. coauthors)
author_outputted = true
end
add_authorlike("quotee", L("quoting "), L(", quotee"), L(", quotees"))
if format_as_cite and author_outputted and not date_outputted then
add_date()
sep = sep_comma()
end
add_authorlike("chapter_tlr", L("translated by "), L(", transl."), nil, L(" translator"))
local function add_sg_and_pl_authorlike(noun, verbed)
local sgparam = noun
local plparam = noun .. "s"
local sgval, sgval_fullname = a_with_name(sgparam)
local plval, plval_fullname = a_with_name(plparam)
if sgval and plval then
error(("Can't specify both |%s= and |%s="):format(sgval_fullname, plval_fullname))
end
if sgval or plval then
-- l10n: route each constructed phrase through L() so zh mode picks up
-- "由 " / "(編)" / "(編纂)" etc. from STRINGS.
local verbed_by = L(verbed .. " by ")
local comma_sgnoun = L(", " .. noun)
local comma_plnoun = L(", " .. noun .. "s")
add_authorlike(sgparam, verbed_by, comma_sgnoun, comma_plnoun)
add_authorlike(plparam, verbed_by, comma_plnoun)
end
end
local formatted_entry = format_chapterlike("entry", nil, "“", "”")
local formatted_chapter = format_chapterlike("chapter", "chapter ", "“", "”")
local function add_entry()
if formatted_entry then
add_with_sep(formatted_entry)
if not a("notitle") then
add(L("in "))
author_outputted = false
else
author_outputted = true
end
formatted_entry = nil
end
end
local function add_chapter()
add_entry()
if formatted_chapter then
add_with_sep(formatted_chapter)
if not a("notitle") then
add(L("in "))
author_outputted = false
end
formatted_chapter = nil
end
end
local function add_actor_role(format_as_cite)
local role = parse_and_format_multivalued_annotated_text("role", "and")
local actor_val, actor_fullname = a_with_name("actor")
local actor_objs = parse_multivalued_annotated_text(actor_val, actor_fullname)
local actor = format_multivalued_annotated_text(actor_objs, "and")
if format_as_cite then
if role then
if actor then
-- l10n: "John as " / "John 飾演 "
add_with_sep(build_actor_as_role(actor))
end
sep = nil
add_with_sep(role)
elseif actor then
add_with_sep(build_actor_paren(actor, #actor_objs > 1))
end
else
if role then
add_with_sep(L("spoken by ") .. role)
if actor then
sep = nil
-- l10n: parenthesized actor next to a role
if output_mode == "zh" then
add_with_sep(ZH_LPAREN .. actor .. ZH_RPAREN)
else
add_with_sep(" (" .. actor .. ")")
end
end
elseif actor then
add_with_sep(build_actor_paren(actor, #actor_objs > 1))
end
end
end
if format_as_cite then
if date_outputted then
add_chapter()
end
local output_len = #output
local mainauthor = parse_and_format_multivalued_annotated_text("mainauthor")
if mainauthor then
add_with_sep(mainauthor)
end
-- quote-* templates display "jobbed by name" after the author, controlled by the author_outputted flag
author_outputted = false
add_authorlike("tlr", L("translated by "), L(", transl."), nil, L(" translator"))
author_outputted = false
add_sg_and_pl_authorlike("editor", "edited")
add_sg_and_pl_authorlike("compiler", "compiled")
add_sg_and_pl_authorlike("director", "directed")
add_authorlike("lyricist", nil, L(" (lyrics)"), nil, L(" lyricist"))
add_authorlike("lyrics-translator", nil, L(" (translation)"), nil, L(" lyrics translator"))
add_authorlike("composer", nil, L(" (music)"), nil, L(" composer"))
add_actor_role("format_as_cite")
-- if the output length has changed, a credit name has been printed
-- and we can print the date
if output_len ~= #output then
author_outputted = true
add_date()
end
add_chapter()
else
add_chapter()
local mainauthor = parse_and_format_multivalued_annotated_text("mainauthor")
if mainauthor then
add_with_sep(mainauthor)
author_outputted = true
end
add_authorlike("tlr", L("translated by "), L(", transl."), nil, L(" translator"))
add_sg_and_pl_authorlike("editor", "edited")
add_sg_and_pl_authorlike("compiler", "compiled")
add_sg_and_pl_authorlike("director", "directed")
add_authorlike("lyricist", nil, L(" (lyrics)"), nil, L(" lyricist"))
add_authorlike("lyrics-translator", nil, L(" (translation)"), nil, L(" lyrics translator"))
add_authorlike("composer", nil, L(" (music)"), nil, L(" composer"))
end
local title, title_fullname = a_with_name("title")
local need_comma = false
if title then
local titleobj = parse_annotated_text(title, title_fullname, a("trans-title"))
add(format_annotated_text(titleobj, tag_with_cite, tag_with_cite))
local series = parse_and_format_annotated_text("series")
if series then
-- l10n: fullwidth parens around series (no leading space in zh).
add((output_mode == "zh" and ZH_LPAREN or " (") .. series)
local seriesvolume = parse_and_format_annotated_text("seriesvolume")
if seriesvolume then
add(sep_semicolon() .. seriesvolume)
end
add(output_mode == "zh" and ZH_RPAREN or ")")
end
need_comma = true
elseif ind == "" then
if not a("notitle") then
add(maintenance_line(L("Please provide the book title or journal name")))
need_comma = true
end
end
local archiveurl, archiveurl_fullname = aurl_with_name("archiveurl")
local url, url_fullname = aurl_with_name("url")
local urls, urls_fullname = aurl_with_name("urls")
if url and urls then
error(("Supply only one of |%s= and |%s="):format(url_fullname, urls_fullname))
end
local function verify_title_supplied(url_name)
-- There are too many cases of this to throw an error at this time.
-- if not title then
-- error(("If |%s= is given, |%s= must also be supplied"):format(url_name, title_fullname))
-- end
end
if archiveurl or url then
verify_title_supplied(archiveurl and archiveurl_fullname or url_fullname)
sep = nil
add("‎<sup>[" .. (archiveurl or url) .. "]</sup>")
elseif urls then
verify_title_supplied(urls_fullname)
sep = nil
add("‎<sup>" .. urls .. "</sup>")
end
-- display (in Language) if language is provided and is not English and not overriden by termlang or worklang
if format_as_cite and ind == "" and not (args.termlang or args.worklang) and (args[1] or args.lang) then
local lang = get_first_lang(args[1] or args.lang)
if lang then
local langcode = lang:getCode()
if not (langcode == "und" or langcode == "en") then
local langs = format_langs(args[1] or args.lang)
if langs then
-- l10n: cite-mode language annotation appended to the title.
add(build_annotations_paren({build_lang_annotation("in", langs)}))
end
end
end
end
if need_comma then
sep = sep_comma()
end
local edition, edition_fullname = parse_and_format_annotated_text_with_name("edition")
local edition_plain, edition_plain_fullname = parse_and_format_annotated_text_with_name("edition_plain")
if edition and edition_plain then
error(("Supply only one of |%s= and |%s="):format(edition_fullname, edition_plain_fullname))
end
if edition then
-- l10n: numeric edition → "第N版"; textual edition → "<val>版"
if output_mode == "zh" then
add_with_sep(build_zh_numeric(edition, "edition"))
else
add_with_sep(edition .. " edition")
end
end
if edition_plain then
add_with_sep(edition_plain)
end
-- Display a numeric param such as page=, volume=, column=. For each `paramname`, four params are actually
-- recognized, e.g. for paramname == "page", the params page=, pages=, page_plain= and pageurl= are recognized
-- and checked (or the same with an index, e.g. page2=, pages2=, page_plain2= and pageurl2= respectively if
-- ind == "2"). Only one of the first three can be specified; an error results if more than one are given.
-- If none are given, the return value is nil; otherwise it is a string. The numeric spec is taken directly
-- from e.g. page_plain= if given; otherwise if e.g. pages= is given, or if page= is given and looks like a
-- combination of numbers (i.e. it has a hyphen or dash in it, a comma, or the word " and "), it is prefixed
-- by `singular_desc` + "s" (e.g. "pages "), otherwise it is prefixed by just `singular_desc` (e.g. "page ").
-- (As a special case, if either e.g. page=unnumbered or pages=unnumbered is given, the numeric spec is
-- "unnumbered page".) The resulting spec is returned directly unless e.g. pageurl= is given, in which case
-- it is linked to the specified URL. Note that any of the specs can be foreign text, e.g. foreign numbers
-- (including with optional inline modifiers), and such text is handled appropriately.
local function format_numeric_param(paramname, singular_desc)
local sgval = a_with_name(paramname)
local sgobj = parse_annotated_text(sgval, paramname)
local plparamname = paramname .. "s"
local plval = a_with_name(plparamname)
local plobj = parse_annotated_text(plval, plparamname)
local plainval, plain_fullname = parse_and_format_annotated_text_with_name(paramname .. "_plain")
local numspec
if not sgval and not plval and not plainval then
return
elseif plainval and (sgval or plval) then
error(("Can't specify " .. plain_fullname .. " with " .. paramname .. " or " .. plparamname))
elseif sgval and plval then
-- if both singular and plural, display "page 1 of 1-10"
if output_mode == "zh" then
-- l10n: zh sg-of-pl range, e.g. "第1頁/共1-10頁"
numspec = "第" .. sgval .. L(paramname) .. "/共" .. plval .. L(paramname)
else
numspec = singular_desc .. " " .. sgval .. " of " .. plval
end
else
-- Merge page= and pages= and treat alike because people often mix them up in both directions.
if plainval then
numspec = plainval
else
local val = sgobj and sgobj.text or plobj.text
if val == "unnumbered" then
if output_mode == "zh" then
-- l10n: e.g. "未編號頁"
numspec = L("unnumbered") .. L(paramname)
else
numspec = "unnumbered " .. singular_desc
end
else
local desc
if val:find("^!") then
val = val:gsub("^!", "")
desc = sgval and singular_desc or pluralize(singular_desc)
else
local check_val = val
if check_val:find("%[") then
check_val = remove_links(check_val)
-- convert URL's of the form [URL DISPLAY] to the displayed value
check_val = check_val:gsub("%[[^ %[%]]* ([^%[%]]*)%]", "%1")
end
-- in case of negative page numbers (do they exist?), don't treat as multiple pages
check_val = check_val:gsub("^%-", "")
-- replace HTML entity en-dashes and em-dashes with their literal codes
check_val = check_val:gsub("–", "–")
check_val = check_val:gsub("–", "–")
check_val = check_val:gsub("—", "—")
check_val = check_val:gsub("—", "—")
-- Check for en-dash or em-dash, or two numbers (possibly with stuff after like 12a-15b)
-- separated by a hyphen or by comma a followed by a space (to avoid firing on thousands separators).
if
umatch(check_val, "[–—]")
or check_val:find(" and ")
or check_val:match("%d+[^ ]* *%- *%d+")
or check_val:match("%d+[^ ]* *, +%d+")
then
desc = pluralize(singular_desc)
else
desc = singular_desc
end
end
local obj = sgobj or plobj
obj.text = val
if obj.link:find("^!") then
obj.link = obj.link:gsub("^!", "")
end
val = format_annotated_text(obj)
if output_mode == "zh" then
-- l10n: numeric class → "第N<suffix>"; textual → "<val><suffix>"
numspec = build_zh_numeric(val, paramname)
else
numspec = desc .. " " .. val
end
end
end
end
local url = a(paramname .. "url")
if url then
return "[" .. url .. " " .. numspec .. "]"
else
return numspec
end
end
local volume = format_numeric_param("volume", a("volume_prefix") or "volume")
if volume then
add_with_sep(volume)
end
local issue = format_numeric_param("issue", a("issue_prefix") or "number")
if issue then
add_with_sep(issue)
end
-- number= is an alias for issue= (except in {{quote-av}}, where it is the episode number)
local number = format_numeric_param("number", a("number_prefix") or "number")
if number then
add_with_sep(number)
end
local annotations = {}
local genre = a("genre")
if genre then
insert(annotations, genre)
end
local format = a("format")
if format then
insert(annotations, format)
end
local medium = a("medium")
if medium then
insert(annotations, medium)
end
-- Now handle the display of language annotations like "(in French)" or
-- "(quotation in Nauruan; overall work in German)".
local quotelang = args[1] or args.lang
if not quotelang then
if ind == "" then
-- This can only happen for certain non-mainspace pages, e.g. Talk pages; otherwise an error is thrown
-- above.
insert(annotations, maintenance_line(L("Please specify the language of the quote using |1=")))
else
-- do nothing in newversion= portion
end
elseif ind == "" then
local worklang = a("worklang")
local termlang = a("termlang")
worklang = worklang or quotelang
termlang = termlang or quotelang
if worklang == quotelang then
if worklang == termlang then
-- do nothing
else
insert(annotations, build_lang_annotation("in", format_langs(quotelang)))
end
else
if quotelang ~= termlang then
insert(annotations, build_lang_annotation("quotation_in", format_langs(quotelang)))
end
insert(annotations, build_lang_annotation("overall_work_in", format_langs(worklang)))
end
else
local lang2 = a("lang2")
if lang2 then
insert(annotations, build_lang_annotation("in", format_langs(lang2)))
end
end
if #annotations > 0 then
sep = nil
add_with_sep(build_annotations_paren(annotations))
end
local artist = parse_and_format_multivalued_annotated_text("artist", "and")
if artist then
add_with_sep(L("performed by ") .. artist)
end
local feat = parse_and_format_multivalued_annotated_text("feat", "and")
if feat then
sep = " "
-- l10n: "ft." is universal in modern music citation and not translated.
add_with_sep("ft. " .. feat)
end
if not format_as_cite then
add_actor_role()
end
local others = parse_and_format_annotated_text("others")
if others then
add_with_sep(others)
end
local quoted_in = parse_and_format_annotated_text("quoted_in", tag_with_cite, tag_with_cite)
if quoted_in then
add_with_sep(L("quoted in ") .. quoted_in)
insert(tracking_categories, "Quotations using quoted-in parameter")
end
local location = parse_and_format_multivalued_annotated_text("location", "; ")
local publisher = parse_and_format_multivalued_annotated_text("publisher", "; ")
if publisher then
if location then
add_with_sep(location) -- colon
-- l10n: separator between location and publisher (colon)
sep = output_mode == "zh" and ZH_COLON or ": "
end
add_with_sep(publisher)
elseif location then
add_with_sep(location)
end
if not date_outputted then
add_date("no_paren")
end
local source = parse_and_format_multivalued_annotated_text("source", "and")
if source then
add_with_sep(L("sourced from ") .. source)
end
local original = parse_and_format_annotated_text("original", tag_with_cite, tag_with_cite)
local by = parse_and_format_multivalued_annotated_text("by", "and")
local origtype = a("deriv") or "translation"
if original or by then
-- l10n: "translation of X by Y" → "X,Y 譯" (word order shift, see build_translation_phrase)
add_with_sep(build_translation_phrase(origtype, original, by))
end
-- Handle origlang=, origworklang=. How we handle them depends on whether the original title or author are explicitly
-- given.
local origlang = a("origlang")
local origworklang = a("origworklang")
local origlangtext, origworklangtext
if origlang then
origlangtext = build_lang_annotation("in", format_langs(origlang))
end
if origworklang then
origworklangtext = build_lang_annotation("overall_work_in", format_langs(origworklang))
end
if origlang or origworklang then
if original or by then
local orig_annotations = {}
if origlangtext then
insert(orig_annotations, origlangtext)
end
if origworklangtext then
insert(orig_annotations, origworklangtext)
end
sep = nil
add_with_sep(build_annotations_paren(orig_annotations))
else
-- l10n: "translation of original (in French)" → "原文翻譯(以法語寫成)"
add_with_sep(build_translation_phrase(origtype, nil, nil)
.. (origlangtext and " " .. origlangtext or ""))
if origworklangtext then
sep = nil
add_with_sep(build_annotations_paren({origworklangtext}))
end
end
end
if ind ~= "" and has_newversion() then
local formatted_new_date = format_date_args(a, get_full_paramname, alias_map, "", "", nil, L("Please provide a date or year"), true)
if formatted_new_date then
add_with_sep(formatted_new_date)
end
end
-- Fetch date_published=/year_published=/month_published= and format appropriately.
local formatted_date_published = format_date_args(a, get_full_paramname, alias_map, "", "_published", nil, nil, true)
local platform = parse_and_format_multivalued_annotated_text("platform", "and")
if formatted_date_published then
-- l10n: "published <date> via <platform>" → "<date> 於 <platform> 出版"
add_with_sep(build_published(formatted_date_published, platform))
elseif platform then
add_with_sep(build_via(platform))
end
-- From here on out, there should always be a preceding item, so we
-- can dispense with add_with_sep() and always insert the comma.
sep = nil
local function small(txt)
-- l10n: leading comma is a separator; HTML <small> tags are untranslated.
add(sep_comma() .. "<small>")
add(txt)
add("</small>")
end
-- Add an identifier to a book or article database such as DOI, ISBN, JSTOR, etc. `param_or_params`
-- is a string identifying the base param, or a list of such strings to check in turn. If found, the value
-- of the parameter is processed using `process` (a function of one argument, defaulting to mw.uri.encode()),
-- and then the actual URL to insert is generated by preceding with `pretext`, following with `posttext`,
-- and running the resulting string through small(), which first adds a comma and then the URL in small font.
local function add_identifier(param_or_params, pretext, posttext, process)
local val = a(param_or_params)
if val then
val = (process or mw.uri.encode)(val)
small(pretext .. val .. posttext)
end
end
add_identifier("bibcode", "[https://adsabs.harvard.edu/abs/", " →Bibcode]")
add_identifier("doi", '<span class="neverexpand">[https://doi.org/', " →DOI]</span>")
add_identifier("isbn", "", "", isbn)
add_identifier("issn", "", "", issn)
add_identifier("jstor", "[https://www.jstor.org/stable/", " →JSTOR]")
add_identifier("lccn", "", "", lccn)
add_identifier("oclc", "[https://search.worldcat.org/title/", " →OCLC]")
add_identifier("ol", "[https://openlibrary.org/works/OL", "/ →OL]")
add_identifier("pmid", "[https://www.ncbi.nlm.nih.gov/pubmed/", " →PMID]")
add_identifier("pmcid", "[https://www.ncbi.nlm.nih.gov/pmc/articles/", "/ →PMCID]")
add_identifier("ssrn", "[https://ssrn.com/abstract=", " →SSRN]")
-- add_identifier("urn", "", "", urn)
local id = a("id")
if id then
small(id)
end
archiveurl, archiveurl_fullname = aurl_with_name("archiveurl")
if archiveurl then
add(L(", archived from "))
local url, url_fullname = aurl_with_name("url")
if not url then
-- attempt to infer original URL from archive URL; this works at
-- least for Wayback Machine (web.archive.org) URL's
url = archiveurl:match("/(https?:.*)$")
if not url then
error(
("When |%s= is specified, |%s= must also be included"):format(archiveurl_fullname, url_fullname)
)
end
end
add("[" .. url .. " " .. L("the original") .. "]" .. L(" on "))
local archivedate, archivedate_fullname = a_with_name("archivedate")
if archivedate then
add(format_date(archivedate))
elseif string.sub(archiveurl, 1, 28) == "https://web.archive.org/web/" then
-- If the archive is from the Wayback Machine, then it already contains the date
-- Get the date and format it
local wayback_date = string.sub(archiveurl, 29, 29 + 7)
wayback_date = string.sub(wayback_date, 1, 4)
.. "-"
.. string.sub(wayback_date, 5, 6)
.. "-"
.. string.sub(wayback_date, 7, 8)
add(format_date(wayback_date))
else
error(
("When |%s= is specified, |%s= must also be included"):format(
archiveurl_fullname,
archivedate_fullname
)
)
end
end
if a("accessdate") then
--Otherwise do not display here, as already used as a fallback for missing date= or year= earlier.
if (a("date") or a("nodate") or a("year")) and not a("archivedate") then
-- l10n: ", retrieved <date>" → ",於 <date> 擷取" (verb-final)
add(build_retrieved(format_date(a("accessdate"))))
end
end
local formatted_section = format_chapterlike("section", "section ")
if formatted_section then
add(sep_comma())
add(formatted_section)
end
-- video game stuff
local system = parse_and_format_annotated_text("system")
if system then
add(sep_comma() .. system)
end
local scene = parse_and_format_annotated_text("scene")
if scene then
add(L(", scene: ") .. scene)
end
local level = parse_and_format_annotated_text("level")
if level then
add(L(", level/area: ") .. level)
end
local note = parse_and_format_annotated_text("note")
if note then
add(sep_comma() .. note)
end
local note_plain = parse_and_format_annotated_text("note_plain")
if note_plain then
add(" " .. note_plain)
end
-- Wrapper around format_numeric_param that inserts the formatted text with optional preceding text.
local function handle_numeric_param(paramname, singular_desc, pretext)
local numspec = format_numeric_param(paramname, singular_desc)
if numspec then
add((pretext or "") .. numspec)
end
end
-- l10n: pretext is the leading separator before each piece; format_numeric_param
-- internally produces "第N頁/欄/行" or "<val>頁/欄/行" in zh mode.
handle_numeric_param("page", a("page_prefix") or "page", sep_comma())
handle_numeric_param("column", a("column_prefix") or "column", sep_comma())
handle_numeric_param("line", a("line_prefix") or "line", sep_comma())
-- FIXME: Does this make sense? What is other=?
local other = parse_and_format_annotated_text("other")
if other then
add(sep_comma() .. other)
end
end
local function add_authors(args, last_first)
-- Find maximum indexed author or last name.
local maxind = math.max(args.author.maxindex, args.last.maxindex)
-- Include max index of ancillary params so we get an error message about their use without the primary params.
local ancillary_params =
{"trans-author", "authorlink", "trans-authorlink", "first", "trans-first", "trans-last"}
for _, ancillary in ipairs(ancillary_params) do
maxind = math.max(maxind, args[ancillary].maxindex)
end
local num_authors = 0
for i = 1, maxind do
local ind = i == 1 and "" or i
local author, last = args.author[i], args.last[i]
if author or last then
local this_num_authors = add_author(
author,
"author" .. ind,
args["trans-author"][i],
"trans-author" .. ind,
args.authorlink[i],
"authorlink" .. ind,
args["trans-authorlink"][i],
"trans-authorlink" .. ind,
args.first[i],
"first" .. ind,
args["trans-first"][i],
"trans-first" .. ind,
last,
"last" .. ind,
args["trans-last"][i],
"trans-last" .. ind,
last_first
)
num_authors = num_authors + this_num_authors
sep = last_first and sep_semicolon() or sep_comma()
else
for _, cant_have in ipairs(ancillary_params) do
if args[cant_have][i] then
error(("Can't have |%s%s= without |author%s= or |last%s="):format(cant_have, ind, ind, ind))
end
end
end
end
return num_authors
end
local function add_newversion()
-- If there's a "newversion" section, add the new-version text.
if has_newversion() then
sep = nil
--Test for new version of work.
add(sep_semicolon())
if args.newversion then -- newversion= is intended for English text, e.g. "quoted in" or "republished as".
add(args.newversion)
elseif not args.edition2 then
if has_new_title_or_author() then
add(L("republished as"))
else
add(L("republished"))
end
end
add(" ")
return ""
else
return ", "
end
end
------------------- Now we start outputting text ----------------------
local need_comma = false
-- Set this now so a() works just below.
get_full_paramname = make_get_full_paramname("")
if args.brackets then
add("[")
end
bold_year = not format_as_cite
year_last = format_as_cite
formatted_date, need_date = format_date_args(
a,
get_full_paramname,
alias_map,
nil,
nil,
bold_year,
L("Can we [[:Category:Requests for date|date]] this quote?"),
year_last
)
-- Fetch origdate=/origyear=/origmonth= and format appropriately.
formatted_origdate = format_date_args(a, get_full_paramname, alias_map, "orig", nil, nil, nil, year_last)
local num_authors, need_date
if format_as_cite then
num_authors = add_authors(args, "last_first")
if author_outputted then
sep = " "
end
-- Display all the text that comes after the author, for the main portion.
postauthor("", num_authors, "format_as_cite")
author_outputted = false
sep = add_newversion()
-- Add the newversion author(s).
if args["2ndauthor"] or args["2ndlast"] then
num_authors = add_author(
args["2ndauthor"],
"2ndauthor",
nil,
nil,
args["2ndauthorlink"],
"2ndauthorlink",
nil,
nil,
args["2ndfirst"],
"2ndfirst",
nil,
nil,
args["2ndlast"],
"2ndlast",
nil,
nil,
"last_first"
)
sep = sep_comma()
else
for _, cant_have in ipairs{"2ndauthorlink", "2ndfirst"} do
if args[cant_have] then
error(("Can't have |%s= without |2ndauthor= or |2ndlast="):format(cant_have))
end
end
end
-- Display all the text that comes after the author, for the "newversion" section.
postauthor(2, num_authors, "format_as_cite")
else
if formatted_date then
need_comma = true
add(formatted_date)
end
if formatted_origdate then
need_comma = true
add(SPACE_LBRAC .. formatted_origdate .. RBRAC)
end
if need_comma then
sep = sep_comma()
end
date_outputted = true
num_authors = add_authors(args)
-- Display all the text that comes after the author, for the main portion.
postauthor("", num_authors)
author_outputted = false
sep = add_newversion()
-- Add the newversion author(s).
if args["2ndauthor"] or args["2ndlast"] then
num_authors = add_author(
args["2ndauthor"],
"2ndauthor",
nil,
nil,
args["2ndauthorlink"],
"2ndauthorlink",
nil,
nil,
args["2ndfirst"],
"2ndfirst",
nil,
nil,
args["2ndlast"],
"2ndlast",
nil,
nil
)
sep = sep_comma()
else
for _, cant_have in ipairs{"2ndauthorlink", "2ndfirst"} do
if args[cant_have] then
error(("Can't have |%s= without |2ndauthor= or |2ndlast="):format(cant_have))
end
end
end
-- Display all the text that comes after the author, for the "newversion" section.
postauthor(2, num_authors)
end
if not args.nocolon then
sep = nil
-- l10n: trailing colon — zh uses fullwidth ":" with no following space
add(output_mode == "zh" and ZH_COLON or ":")
elseif args.usenodot and not args.nodot then
-- l10n: trailing period — zh uses "。"
add(output_mode == "zh" and "。" or ".")
end
-- Concatenate output portions to form output text.
local output_text = concat(output)
-- Remainder of code handles adding categories. We add one or more of the following categories:
--
-- 1. [[Category:LANG terms with quotations]], based on the first language code in termlang= or 1=. Added to
-- mainspace, Reconstruction: and Appendix: pages as well as Citations: pages if the corresponding mainspace
-- page exists. Not added if nocat= is given. Note that [[Module:usex]] adds the same category using the same
-- logic, but we do it here too because we may not have a quotation to format. (We add in those circumstances
-- because typically when there's no quotation to format, it's because it's formatted manually underneath the
-- citation, or using {{ja-x}}, {{th-x}} or similar.)
-- 2. [[Category:Requests for date in LANG entries]], based on the first language code in 1=. Added to mainspace,
-- Reconstruction:, Appendix: and Citations: pages unless nocat= is given.
-- 3. [[Category:Quotations using nocat parameter]], if nocat= is given. Added to mainspace, Reconstruction:,
-- Appendix: and Citations: pages.
local categories = {}
local termlang = get_first_lang(args.termlang or argslang)
if args.nocat then
if format_as_cite then
insert(tracking_categories, "Citations using nocat parameter")
else
insert(tracking_categories, "Quotations using nocat parameter")
end
else
-- don't create language tracking categories for citations
if not format_as_cite then
local title
if args.pagename then -- for testing, doc pages, etc.
title = mw.title.new(args.pagename)
if not title then
error(("Bad value for `args.pagename`: '%s'"):format(args.pagename))
end
else
title = mw.title.getCurrentTitle()
end
-- Only add [[Citations:foo]] to [[:Category:LANG terms with quotations]] if [[foo]] exists.
local ok_to_add_cat
if title.nsText ~= "Citations" then
ok_to_add_cat = true
else
local mainspace_title = mw.title.new(title.text)
if mainspace_title and mainspace_title.exists then
ok_to_add_cat = true
end
end
if ok_to_add_cat then
insert(categories, termlang:getFullName() .. " terms with quotations")
end
end
if need_date then
local argslangobj = get_first_lang(argslang)
insert(categories, "Requests for date in " .. argslangobj:getCanonicalName() .. " entries")
end
end
return output_text .. (
not lang and "" or
(#categories > 0 and format_categories(categories, lang, args.sort) or "") .. (
#tracking_categories > 0
and format_categories(
tracking_categories,
lang,
args.sort,
nil,
not page_should_be_ignored(mw.title.getCurrentTitle().fullText)
)
or ""
)
)
end
-- Alias specs for type= and type2=. Each spec is `{canon, aliases, with_newversion}` where `canon` is the canonical
-- parameter (with "2" added if type2= is being handled), `aliases` is a comma-separated string of aliases (with "2"
-- added if type2= is being handled, except for numeric params), and `with_newversion` indicates whether we should
-- process this spec if type2= is being handled.
local type_alias_specs = {
av = {
{"author", "writer,writers", true},
{"chapter", "episode", true},
{"chapterurl", "episodeurl", true},
{"trans-chapter", "trans-episode", true},
{"chapter_tlr", "episode_tlr,episode_tlrs,episode_translator,episode_translators", true},
{"chapter_series", "episode_series", true},
{"chapter_seriesvolume", "episode_seriesvolume", true},
{"chapter_number", "episode_number", true},
{"chapter_plain", "episode_plain", true},
{"volume", "season", true},
{"volumes", "seasons", true},
{"volume_plain", "season_plain", true},
{"volumeurl", "seasonurl", true},
{"platform", "network", true},
},
book = {
{"author", "3"},
{"title", "4"},
{"url", "5"},
{"year", "2"},
{"page", "6"},
{"text", "7"},
{"t", "8"},
},
journal = {
{"year", "2"},
{"author", "3"},
{"chapter", "title,article,4", true},
{"chapterurl", "titleurl,articleurl", true},
{"trans-chapter", "trans-title,trans-article", true},
{"chapter_tlr", "title_tlr,title_tlrs,title_translator,title_translators,article_tlr,article_tlrs,article_translator,article_translators", true},
{"chapter_series", "title_series,article_series", true},
{"chapter_seriesvolume", "title_seriesvolume,article_seriesvolume", true},
{"chapter_number", "title_number,article_number", true},
{"chapter_plain", "title_plain,article_plain", true},
{"title", "journal,magazine,newspaper,work,5", true},
{"trans-title", "trans-journal,trans-magazine,trans-newspaper,trans-work", true},
{"tlr", "journal_tlr,journal_tlrs,journal_translator,journal_translators,magazine_tlr,magazine_tlrs,magazine_translator,magazine_translators,newspaper_tlr,newspaper_tlrs,newspaper_translator,newspaper_translators,work_tlr,work_tlrs,work_translator,work_translators", true},
{"url", "6,journalurl,magazineurl,newspaperurl,workurl", true},
{"page", "7"},
{"source", "newsagency,news_agency", true},
{"text", "8"},
{"t", "9"},
},
}
-- Process interally-handled aliases related to type= or type2=. `args` is a table of arguments; `typ` is the value of
-- type= or type2=; newversion=true if we're dealing with type2=; alias_map is used to keep track of alias mappings
-- seen.
local function process_type_aliases(args, typ, newversion, alias_map)
local ind = newversion and "2" or ""
local deprecated = ine(args.lang)
if not type_alias_specs[typ] then
local possible_values = {}
for possible, _ in pairs(type_alias_specs) do
insert(possible_values, possible)
end
sort(possible_values)
error(
("Unrecognized value '%s' for type%s=; possible values are %s"):format(
typ,
ind,
concat(possible_values, ",")
)
)
end
for _, alias_spec in ipairs(type_alias_specs[typ]) do
local canon, aliases, with_newversion = unpack(alias_spec)
if with_newversion or not newversion then
canon = canon .. ind
aliases = split(aliases, ",", true)
local saw_alias = nil
for _, alias in ipairs(aliases) do
if alias:match("^%d+$") then
alias = tonumber(alias)
if deprecated then
alias = alias - 1
end
else
alias = alias .. ind
end
if args[alias] then
if saw_alias == nil then
saw_alias = alias
else
error(("|%s= and |%s= are aliases; cannot specify a value for both"):format(saw_alias, alias))
end
end
end
if saw_alias and (not newversion or type(saw_alias) == "string") then
if args[canon] then
error(("|%s= is an alias of |%s=; cannot specify a value for both"):format(saw_alias, canon))
end
args[canon] = args[saw_alias]
-- Wipe out the original after copying. This is important in case of a param that has general significance
-- but has been redefined (e.g. {{quote-av}} redefines number= for the episode number, and
-- {{quote-journal}} redefines title= for the chapter= (article). It's also important due to unhandled
-- parameter checking.
args[saw_alias] = nil
alias_map[canon] = saw_alias
end
end
end
end
-- Clone and combine frame's and parent's args while also assigning nil to empty strings. Handle aliases and ignores.
local function clone_args(direct_args, parent_args)
local args = {}
-- Processing parent args must come first so that direct args override parent args. Note that if a direct arg is
-- specified but is blank, it will still override the parent arg (with nil).
for pname, param in pairs(parent_args) do
-- [[Special:WhatLinksHere/Wiktionary:Tracking/quote/param/PARAM]]
track("param/" .. pname)
args[pname] = ine(param)
end
-- Process ignores. The value of `ignore` is a comma-separated list of parameter names to ignore (erase). We need to
-- do this before aliases due to {{quote-song}}, which sets chapter= to the value of title= in the direct params and
-- sets title= to the value of album= using an alias. If we do the ignores after aliases, we get an error during alias
-- processing, saying that title= and its alias album= are both present.
local ignores = ine(direct_args.ignore)
if ignores then
for ignore in gsplit(ignores, "%s*,%s*") do
args[ignore] = nil
end
end
local alias_map = {}
local other_controls = {}
-- noroman
local noroman = ine(direct_args.noroman)
if noroman then
other_controls.overrides = other_controls.overrides or {}
for param in gsplit(noroman, "%s*,%s*") do
other_controls.overrides[param] = (other_controls.overrides[param] or {})
other_controls.overrides[param].noroman = true
end
end
-- Process internally-specified aliases using type= or type2=.
local typ = args.type or direct_args.type
if typ then
process_type_aliases(args, typ, false, alias_map)
end
local typ2 = args.type2 or direct_args.type2
if typ2 then
process_type_aliases(args, typ2, true, alias_map)
end
-- Process externally-specified aliases. The value of `alias` is a list of semicolon-separated specs, each of which
-- is of the form DEST:SOURCE,SOURCE,... where DEST is the canonical name of a parameter and SOURCE refers to an
-- alias. Whitespace is allowed between all delimiters. The order of aliases may be important. For example, for
-- {{quote-journal}}, title= contains the article name and is an alias of underlying chapter=, while journal= or
-- work= contains the journal name and is an alias of underlying title=. As a result, the title -> chapter alias
-- must be specified before the journal/work -> title alias.
--
-- Whenever we copy a value from argument SOURCE to argument DEST, we record an entry for the pair in alias_map, so
-- that when we would display an error message about DEST, we display SOURCE instead.
--
-- Do alias processing (and ignore and error_if processing) before processing direct_args so that e.g. we can set up
-- an alias of title -> chapter and then set title= to something else in the direct args ({{quote-hansard}} does
-- this).
--
-- FIXME: Delete this once we've converted all alias processing to internal.
local aliases = ine(direct_args.alias)
if aliases then
-- Allow and discard a trailing semicolon, to make managing multiple aliases easier.
aliases = ugsub(aliases, "%s*;$", "")
for alias_spec in gsplit(aliases, "%s*;%s*") do
local alias_spec_parts = split(alias_spec, "%s*:%s*")
if #alias_spec_parts ~= 2 then
error(("Alias spec '%s' should have one colon in it"):format(alias_spec))
end
local dest, sources = unpack(alias_spec_parts)
sources = split(sources, "%s*,%s*")
local saw_source = nil
for _, source in ipairs(sources) do
if source:match("^%d+$") then
source = tonumber(source)
end
if args[source] then
if saw_source == nil then
saw_source = source
else
error(("|%s= and |%s= are aliases; cannot specify a value for both"):format(saw_source, source))
end
end
end
if saw_source then
if args[dest] then
error(("|%s= is an alias of |%s=; cannot specify a value for both"):format(saw_source, dest))
end
args[dest] = args[saw_source]
-- Wipe out the original after copying. This important in case of a param that has general significance
-- but has been redefined (e.g. {{quote-av}} redefines number= for the episode number, and
-- {{quote-journal}} redefines title= for the chapter= (article). It's also important due to unhandled
-- parameter checking.
args[saw_source] = nil
alias_map[dest] = saw_source
end
end
end
-- Process error_if. The value of `error_if` is a comma-separated list of parameter names to throw an error if seen
-- in parent_args (they are params we overwrite in the direct args).
local error_ifs = ine(direct_args.error_if)
if error_ifs then
for error_if in gsplit(error_ifs, "%s*,%s*") do
if ine(parent_args[error_if]) then
error(
("Cannot specify a value |%s=%s as it would be overwritten or ignored"):format(
error_if,
ine(parent_args[error_if])
)
)
end
end
end
for pname, param in pairs(direct_args) do
-- ignore control params
if pname ~= "ignore" and pname ~= "alias" and pname ~= "error_if" and pname ~= "noroman" then
args[pname] = ine(param)
end
end
return args, alias_map, other_controls
end
local function get_args(frame_args, parent_args, require_lang)
-- FIXME: We are processing arguments twice, once in clone_args() and then again in [[Module:parameters]]. This is
-- wasteful of memory.
local cloned_args, alias_map, other_controls = clone_args(frame_args, parent_args)
local deprecated = ine(parent_args.lang)
local alias_of_t = {alias_of = "t"}
local boolean = {type = "boolean"}
local language_sublist = {type = "language", sublist = true}
local list_allow_holes = {list = true, allow_holes = true}
local script = {type = "script"}
-- First, the "single" params that don't have FOO2 or FOOn versions.
local params = {
[deprecated and "lang" or 1] = {required = require_lang, type = "language", sublist = true, default = "und"},
["lang2"] = language_sublist,
["newversion"] = true,
["author"] = list_allow_holes,
["2ndauthor"] = true,
["trans-author"] = list_allow_holes,
["authorlink"] = list_allow_holes,
["2ndauthorlink"] = true,
["trans-authorlink"] = list_allow_holes,
["first"] = list_allow_holes,
["2ndfirst"] = true,
["trans-first"] = list_allow_holes,
["last"] = list_allow_holes,
["2ndlast"] = true,
["trans-last"] = list_allow_holes,
["nocat"] = boolean,
["nocolon"] = boolean,
-- quote params
text = true,
passage = {alias_of = "text"},
tr = true,
transliteration = {alias_of = "tr"},
ts = true,
transcription = {alias_of = "ts"},
norm = true,
normalization = {alias_of = "norm"},
sc = script,
normsc = script,
sort = true,
subst = true,
footer = true,
lit = true,
t = true,
translation = alias_of_t,
gloss = alias_of_t,
lb = true,
brackets = boolean,
-- original quote params
origtext = true,
origtr = true,
origts = true,
orignorm = true,
origsc = script,
orignormsc = script,
origsubst = true,
origlb = true,
usenodot = boolean,
nodot = boolean,
inline = boolean,
asquote = boolean,
ascite = boolean,
}
-- Most params have PARAM2 variants for use with `newversion`. FIXME: We should generalize this to
-- allow PARAMN variants for any N.
local function add_with_2(param, value)
params[param] = value
params[param .. "2"] = value
end
local function alias_with_2(alias, canon)
params[alias] = {alias_of = canon}
params[alias .. "2"] = {alias_of = canon .. "2"}
end
for _, param12 in ipairs{
"worklang",
"termlang",
"origlang",
"origworklang"
} do
add_with_2(param12, language_sublist)
end
-- Then the newversion params (which have FOO2 versions).
for _, param12 in ipairs{
-- author-like params; author params themselves are either list params (author=, last=, etc.) or single params
-- (2ndauthor=, 2ndlast=, etc.)
"coauthors",
"quotee",
"tlr",
"editor",
"editors",
"mainauthor",
"compiler",
"compilers",
"director",
"directors",
"lyricist",
"lyrics-translator",
"composer",
"role",
"actor",
"artist",
"feat",
-- author control params
"default-authorlabel",
"authorlabel",
-- title
"title",
"trans-title",
"series",
"seriesvolume",
"notitle",
-- entry
"entry",
"entryurl",
"trans-entry",
-- chapter
"chapter",
"chapterurl",
"chapter_number",
"chapter_plain",
"chapter_series",
"chapter_seriesvolume",
"trans-chapter",
"chapter_tlr",
-- section
"section",
"sectionurl",
"section_number",
"section_plain",
"section_series",
"section_seriesvolume",
"trans-section",
-- other video-game params
"system",
"scene",
"level",
-- URL
"url",
"urls",
"archiveurl",
-- edition
"edition",
"edition_plain",
-- ID params
"bibcode",
"doi",
"isbn",
"issn",
"jstor",
"lccn",
"oclc",
"ol",
"pmid",
"pmcid",
"ssrn",
"urn",
"id",
-- misc date params; most date params handled below
"archivedate",
"accessdate",
"nodate",
-- numeric params handled below
-- other params
"type",
"genre",
"format",
"medium",
"others",
"quoted_in",
"location",
"publisher",
"original",
"by",
"deriv",
"note",
"note_plain",
"other",
"source",
"platform",
} do
add_with_2(param12, true)
end
-- Then the aliases of newversion params (which have FOO2 versions).
for _, param12_aliased in ipairs{
{"role", "roles"},
{"role", "speaker"},
{"tlr", "tlrs"},
{"tlr", "translator"},
{"tlr", "translators"},
{"chapter_tlr", "chapter_tlrs"},
{"chapter_tlr", "chapter_translator"},
{"chapter_tlr", "chapter_translators"},
{"doi", "DOI"},
{"isbn", "ISBN"},
{"issn", "ISSN"},
{"jstor", "JSTOR"},
{"lccn", "LCCN"},
{"oclc", "OCLC"},
{"ol", "OL"},
{"pmid", "PMID"},
{"pmcid", "PMCID"},
{"ssrn", "SSRN"},
{"urn", "URN"},
} do
local canon, alias = unpack(param12_aliased)
alias_with_2(alias, canon)
end
-- Then the date params.
for _, datelike in ipairs{{"", ""}, {"orig", ""}, {"", "_published"}} do
local pref, suf = unpack(datelike)
for _, arg in ipairs{"date", "year", "month", "start_date", "start_year", "start_month"} do
add_with_2(pref .. arg .. suf, true)
end
end
local numeric_param_suffixes = {"", "s", "_plain", "url", "_prefix"}
-- Then the numeric params.
for _, numeric in ipairs{"volume", "issue", "number", "line", "page", "column"} do
for _, suf in ipairs(numeric_param_suffixes) do
add_with_2(numeric .. suf, true)
end
end
-- And the aliases of numeric params.
for _, numeric_aliased in ipairs{{"volume", "vol"}} do
local canon, alias = unpack(numeric_aliased)
for _, suf in ipairs(numeric_param_suffixes) do
alias_with_2(alias .. suf, canon .. suf)
end
end
return process_params(cloned_args, params), alias_map, other_controls
end
local function get_origtext_params(args)
local origtext, origtextlang, origsc, orignormsc
if args.origtext then
-- Wiktionary language codes have at least two lowercase letters followed possibly by lowercase letters and/or
-- hyphens (there are more restrictions but this is close enough). Also check for nonstandard Latin etymology
-- language codes (e.g. VL. or LL.). (There used to be more nonstandard codes but they have all been
-- eliminated.)
origtextlang, origtext = args.origtext:match("^(%l%l[%l-]*):([^ ].*)$")
if not origtextlang then
-- Special hack for Latin variants, which can have nonstandard etym codes, e.g. VL., LL.
origtextlang, origtext = args.origtext:match("^(%uL%.):([^ ].*)$")
end
if not origtextlang then
error("origtext= should begin with a language code prefix")
end
origtextlang = get_lang(origtextlang, nil, "allow etym") or
error("origtext= should begin with a language code prefix")
origsc = args.origsc
orignormsc = args.orignormsc
else
for _, noparam in ipairs{"origtr", "origts", "origsc", "orignorm", "orignormsc", "origsubst", "origlb"} do
if args[noparam] then
error(("Cannot specify %s= without origtext="):format(noparam))
end
end
end
return origtext, origtextlang, origsc, orignormsc
end
local function get_quote(args, is_cite)
local text = args.text
local gloss = args.t
local tr = args.tr
local ts = args.ts
local norm = args.norm
local sc = args.sc
local normsc = args.normsc
-- Fetch original-text parameters.
local origtext, origtextlang, origsc, orignormsc = get_origtext_params(args)
-- If any quote-related args are present, display the actual quote; otherwise, display nothing.
if text or gloss or tr or ts or norm or args.origtext then
-- Pass "und" here rather than cause an error; there will be an error on mainspace, Citations, etc. pages
-- in any case in source() if the language is omitted.
local lang = get_first_lang(args[1] or args.lang)
local termlang = args.termlang and get_first_lang(args.termlang) or lang
local usex_data = {
lang = lang,
termlang = termlang,
usex = text,
sc = sc,
translation = gloss,
normalization = norm,
normsc = normsc,
transliteration = tr,
transcription = ts,
brackets = args.brackets,
subst = args.subst,
lit = args.lit,
footer = args.footer,
qq = parse_and_format_labels(args.lb, lang),
quote = "quote-meta",
orig = origtext,
origlang = origtextlang,
origsc = origsc,
orignorm = args.orignorm,
orignormsc = orignormsc,
origtr = args.origtr,
origts = args.origts,
origsubst = args.origsubst,
origqq = parse_and_format_labels(args.origlb, lang),
noreq = args.noreq,
nocat = is_cite or args.nocat,
}
if args.inline then
-- don't let usex format the footer, otherwise it gets inlined with the rest of the quoted text
usex_data.footer = nil
usex_data.inline = 1
text = format_usex(usex_data)
if text then
text = " “" .. text .. "”"
else
text = ""
end
if args.footer then
text = text .. "<dl><dd>" .. args.footer .. "</dd></dl>"
end
else
text = "<dl><dd>" .. format_usex(usex_data) .. "</dd></dl>"
end
elseif args.footer then
text = "<dl><dd>" .. args.footer .. "</dd></dl>"
end
return text
end
-- External interface, meant to be called from a template. Replaces {{quote-meta}} and meant to be the primary
-- interface for {{quote-*}} templates.
function export.quote_t(frame)
local args, alias_map, other_controls = get_args(frame.args, frame:getParent().args, "require_lang")
if args.ascite then
return export.cite_t(frame)
end
return show_quote(args, alias_map, other_controls)
end
function show_quote(args, alias_map, other_controls)
local parts = {}
insert(parts, '<div class="citation-whole"><span class="cited-source">')
insert(parts, export.source(args, alias_map, nil, other_controls))
insert(parts, "</span>")
insert(parts, get_quote(args))
insert(parts, "</div>")
local retval = concat(parts)
return deprecated and frame:expandTemplate({
title = "check deprecated lang param usage",
args = {retval, lang = args.lang},
}) or retval
end
-- External interface, meant to be called from a template. Replaces {{cite-meta}} and meant to be the primary
-- interface for {{cite-*}} templates.
function export.cite_t(frame)
local parent_args = {}
for k, v in pairs(frame:getParent().args) do
parent_args[k] = v
end
-- use "und" as lang if none provided
if parent_args[1] == nil then
parent_args[1] = "und"
end
local args, alias_map, other_controls = get_args(frame.args, parent_args)
if args.asquote then
return show_quote(args, alias_map, other_controls)
end
return show_cite(args, alias_map, other_controls)
end
function show_cite(args, alias_map, other_controls)
local parts = {}
-- don't nag for translations
if args.text and not args.t then
args.noreq = 1
end
local len_visible = args.text and ulen((args.text:gsub("<[^<>]+>", ""))) or 0
if len_visible == 0 then
if not args.t or args.t == "-" then
args.nocolon = true
end
elseif args.inline == nil then
args.inline = not (
args.block_text
or len_visible > 300
or (args.t and not args.t == "-" and len_visible < 80)
or string.match(args.text, "<br>")
)
end
insert(parts, '<span class="citation-whole"><span class="cited-source">')
insert(parts, export.source(args, alias_map, "format_as_cite", other_controls))
insert(parts, "</span>")
insert(parts, get_quote(args, "is_cite"))
insert(parts, "</span>")
local retval = concat(parts)
return deprecated
and frame:expandTemplate({
title = "check deprecated lang param usage",
args = {retval, lang = args.lang},
})
or retval
end
-- External interface, meant to be called from a template.
function export.call_quote_template(frame)
return export.call_template(frame)
end
-- External interface, for calling a template with overloaded parameters.
function export.overload(frame)
local iargs, overloaded_args = process_params(frame.args, {
[1] = {required = true}
}, true)
local parent_args = frame:getParent().args
for k, v in pairs(parent_args) do
overloaded_args[k] = v
end
return frame:expandTemplate{title = iargs[1], args = overloaded_args}
end
-- External interface, meant to be called from a template.
function export.call_template(frame)
local parameter_sublist = {type = "parameter", sublist = true}
local iargs, other_direct_args = process_params(frame.args, {
["template"] = true,
["textparam"] = parameter_sublist,
["pageparam"] = parameter_sublist,
["propagateparams"] = parameter_sublist,
["allowparams"] = {sublist = true}, -- Doesn't use type = "parameter", because any that end in :list get processed differently.
}, true)
local function fetch_param(source, params)
for _, param in ipairs(params) do
if source[param] then
return source[param]
end
end
return nil
end
local params = {
["text"] = true,
["passage"] = true,
["footer"] = true, -- always propagates, but gets special formatting
}
-- paramaters that can be used during template declaration or included in template calls
-- if the template is called with param=- it will set any declared value to nil
local always_propagate = {
["brackets"] = true,
["usenodot"] = true,
["nodot"] = true,
["ascite"] = true,
["asquote"] = true,
}
for k,v in pairs(always_propagate) do
params[k] = v
end
local textparam = iargs.textparam or {}
for _, param in ipairs(textparam) do
params[param] = true
end
local pageparam = iargs.pageparam or {}
local pageparam1 = pageparam[1]
if pageparam1 ~= nil then
params["page"], params["pages"] = true, true
for _, param in ipairs(pageparam) do
params[param] = true
end
end
local allowparams, allow_all, list = iargs.allowparams, false
if allowparams ~= nil then
for _, allow in ipairs(allowparams) do
local param = allow:match("^(.*):list$")
if param then
if list == nil then
list = {list = true}
end
params[scribunto_parameter_key(param)] = list
elseif allow == "*" then
track("no parameter checking")
allow_all = true
else
params[scribunto_parameter_key(allow)] = true
end
end
else
local parent = frame:getParent()
local template_name = parent:getTitle()
local template_title = new_title(template_name)
local content = template_title:getContent()
local allowed_params, seen = {}, {}
-- Detect all params used by the parent template. param:get_name() takes the
-- parent frame arg table as an argument so that preprocessing will take
-- them into account, since it will matter if the name contains another
-- parameter (e.g. the outer param in "{{{foo{{{bar}}}baz}}}" will change
-- depending on the value for bar=). `seen` memoizes results based on the
-- raw parameter text (which is stored as a string in the parameter object),
-- which avoids unnecessary param:get_name() calls, which are non-trivial.
for param in find_parameters(content) do
local raw = param.raw
if not seen[raw] then
allow = param:get_name(template_args)
params[scribunto_parameter_key(allow)] = true
seen[raw] = true
end
end
end
local propagateparams = iargs.propagateparams or {}
for _, param in ipairs(propagateparams) do
params[param] = true
end
local parent_args = frame:getParent().args
local args = process_params(parent_args, params, allow_all)
parent_args = shallow_copy(parent_args)
if textparam[1] ~= "-" then
other_direct_args.passage = args.text or args.passage or fetch_param(args, textparam)
end
if not (pageparam1 == nil or pageparam1 == "-") then
other_direct_args.page = fetch_param(args, pageparam) or args.page or other_direct_args.page or nil
other_direct_args.pages = args.pages or other_direct_args.pages or nil
if other_direct_args.page == "-" then
other_direct_args.page = nil
end
if other_direct_args.pages == "-" then
other_direct_args.pages = nil
end
end
if args.footer then
other_direct_args.footer = frame:expandTemplate{title = "small", args = {args.footer}}
end
for param, _ in pairs(always_propagate) do
if args[param] == "-" then
other_direct_args[param] = nil
else
other_direct_args[param] = args[param] or other_direct_args[param] or nil
end
end
-- authorlink=- can be used to prevent copying of author= to authorlink= but we don't want to propagate this to
-- the actual {{quote-*}} code.
if other_direct_args.authorlink == "-" then
other_direct_args.authorlink = nil
end
for _, param in ipairs(propagateparams) do
if args[param] then
other_direct_args[param] = args[param]
end
end
return frame:expandTemplate{title = iargs.template or "quote-book", args = other_direct_args}
end
local paramdoc_param_replacements = {
passage = {
param_with_synonym = "<<synonym>>, {{para|text}}, or {{para|passage}}",
param_no_synonym = "{{para|text}} or {{para|passage}}",
text = [=[
* <<params>> – the passage to be quoted.]=],
},
page = {
param_with_synonym = "<<synonym>> or {{para|page}}, or {{para|pages}}",
param_no_synonym = "{{para|page}} or {{para|pages}}",
text = [=[
* <<params>> – '''mandatory in some cases''': the page number(s) quoted from. When quoting a range of pages, note the following:
** Separate the first and last pages of the range with an [[en dash]], like this: {{para|pages|10–11}}.
** You must also use {{para|pageref}} to indicate the page to be linked to (usually the page on which the Wiktionary entry appears).
: This parameter must be specified to have the template link to the online version of the work.]=],
},
page_with_roman_preface = {
param_with_synonym = {"inherit", "page"},
param_no_synonym = {"inherit", "page"},
text = [=[
* <<params>> – '''mandatory in some cases''': the page number(s) quoted from. If quoting from the preface, specify the page number(s) in lowercase Roman numerals. When quoting a range of pages, note the following:
** Separate the first and last page number of the range with an [[en dash]], like this: {{para|pages|10–11}} or {{para|pages|iii–iv}}.
** You must also use {{para|pageref}} to indicate the page to be linked to (usually the page on which the Wiktionary entry appears).
: This parameter must be specified to have the template link to the online version of the work.]=],
},
chapter = {
param_with_synonym = "<<synonym>> or {{para|chapter}}",
param_no_synonym = "{{para|chapter}}",
text = [=[
* <<params>> – the name of the chapter quoted from.]=],
},
roman_chapter = {
param_with_synonym = {"inherit", "chapter"},
param_no_synonym = {"inherit", "chapter"},
text = [=[
* <<params>> – the chapter number quoted from in uppercase Roman numerals.]=],
},
arabic_chapter = {
param_with_synonym = {"inherit", "chapter"},
param_no_synonym = {"inherit", "chapter"},
text = [=[
* <<params>> – the chapter number quoted from in Arabic numerals.]=],
},
trailing_params = {
text = [=[
* {{para|footer}} – a comment on the passage quoted.
* {{para|brackets}} – use {{para|brackets|on}} to surround a quotation with [[bracket#Noun|brackets]]. This indicates that the quotation either contains a mere mention of a term (for example, “some people find the word '''''manoeuvre''''' hard to spell”) rather than an actual use of it (for example, “we need to '''manoeuvre''' carefully to avoid causing upset”), or does not provide an actual instance of a term but provides information about related terms.]=],
},
}
function export.paramdoc(frame)
local parargs = frame:getParent().args
local args = process_params(parargs, {
[1] = true,
})
local text = args[1]
local function do_param_with_optional_synonym(param, text_to_sub, paramtext_synonym, paramtext_no_synonym)
local function sub_param(synonym)
local subbed_paramtext
if synonym then
subbed_paramtext = paramtext_synonym:gsub("<<synonym>>", "{{para|" .. replacement_escape(synonym) .. "}}")
else
subbed_paramtext = paramtext_no_synonym
end
return frame:preprocess((text_to_sub:gsub("<<params>>", replacement_escape(subbed_paramtext))))
end
text = text:gsub("<<" .. pattern_escape(param) .. ">>", function()
return sub_param()
end)
text = text:gsub("<<" .. pattern_escape(param) .. ":(.-)>>", sub_param)
end
local function fetch_text(param_to_replace, key)
local spec = paramdoc_param_replacements[param_to_replace]
local val = spec[key]
if type(val) == "string" then
return val
end
if type(val) == "table" and val[1] == "inherit" then
return fetch_text(val[2], key)
end
error(
"Internal error: Unrecognized value for param '"
.. param_to_replace
.. "', key '"
.. key
.. "': "
.. mw.dumpObject(val)
)
end
for param_to_replace, spec in pairs(paramdoc_param_replacements) do
if not spec.param_no_synonym then
-- Text to substitute directly.
text = text:gsub("<<" .. pattern_escape(param_to_replace) .. ">>", function()
return frame:preprocess(fetch_text(param_to_replace, "text"))
end)
else
do_param_with_optional_synonym(
param_to_replace,
fetch_text(param_to_replace, "text"),
fetch_text(param_to_replace, "param_with_synonym"),
fetch_text(param_to_replace, "param_no_synonym")
)
end
end
-- Remove final newline so template code can add a newline after invocation
text = text:gsub("\n$", "")
return text
end
return export
3i7j7hnke035912nd95mf6wj0e695p0
Ispaña
0
1396277
9787640
5702922
2026-05-24T18:11:34Z
TongcyDai
53191
9787640
wikitext
text/x-wiki
{{also|ispana}}
==克丘亞語==
===詞源===
{{bor+|qu|es|España}}。
===專有名詞===
{{head|qu|專有名詞}}
# {{tcl|qu|西班牙|id=Q29}}
5mmuuwbk290tdvpos18vfsa4o1y5cik
Szpańskô
0
1397443
9787525
5704214
2026-05-24T17:38:49Z
TongcyDai
53191
9787525
wikitext
text/x-wiki
==卡舒比語==
{{Wiktionary:圖片詞典/csb:map/Europe}}
===詞源===
{{rfe|csb}}
===發音===
{{csb-pr}}
===專有名詞===
{{csb-proper noun|f}}
# {{tcl|csb|西班牙|id=Q29}}
===延伸閱讀===
* {{R:csb:SPK|Hiszpania}}
mamfju9xgdnda368dc7rkj8s7bh6dni
Ispanija
0
1398685
9787650
9776079
2026-05-24T18:15:57Z
TongcyDai
53191
9787650
wikitext
text/x-wiki
{{also|Ispaniją}}
==立陶宛語==
{{wp|lt:}}
[[File:LocationSpain.png|thumb|250px|Ispãnija]]
===詞源===
源自 {{suf|lt|ispãnas|ija}}。
===發音===
{{lt-pr|Ispãnija}}
===專有名詞===
{{lt-proper noun|f|head=Ispãnija|pl=-|adj=ispãniškas|dem=ispãnas|fdem=ispãnė|1}}
# {{tcl|lt|西班牙|id=Q29|place_official=Ispãnijos Karalỹstė}}
====變格====
{{lt-noun-f-a-unc|Ispanij}}
====相關詞彙====
{{col3|lt|title=形容詞|ispanakal̃bis}}
{{col3|lt|title=名詞|ispanakal̃bis}}
====參見====
{{list:countries in Europe/lt}}
===延伸閱讀===
* {{R:lt:VLE}}
jqxc8u7dkhovpqfb9ps65yfvz11c0vi
teknősbéka
0
1405227
9788112
7585962
2026-05-24T20:02:42Z
TongcyDai
53191
9788112
wikitext
text/x-wiki
==匈牙利語==
{{was fwotd|hu|2026|5月|26日}}
{{swp|hu:[[teknősök|teknősbéka]]}}
[[File:Turtles-Tortoises-Terrapins.jpg|thumb|'''teknősbékák''']]
===詞源===
{{etydate|1395}}。源自 {{af|hu|teknős|béka|t1=有殼動物|t2=蛙|pos=名詞}}。<ref>{{R:UESz}}</ref><ref>{{R:Zaicz 2006}}</ref>對照{{ncog|de|Schildkröte}}與{{ncog|ro|broască-țestoasă}}。
===發音===
* {{hu-IPA}}
* {{rhymes|hu|kɒ|s=4}}
* {{hyph|hu|tek|nős|bé|ka}}
* {{hu-syll|tek|nős|bé|ka}}
===名詞===
{{hu-noun|pl=teknősbékák}}
# {{lb|hu|口語|proscribed}} [[龜]]{{gl|{{w|龜鱉目}}的任何陸生或海生爬行動物,特徵為身體被保護性的[[甲殼]]包覆}}
#: {{syn|hu|teknőc<q:過時>|teknős}}
#* {{quote-web|hu|author=|title=Teknősbéka leves és pezsgő a lovaknak – így lakmároztak a Festeticsek a Balatonnál|work=likebalaton.hu|url=https://likebalaton.hu/telepules/keszthely/hireink/festetics-lakoma-luxus-gasztronomia-teknosbeka-leves-384275/|archiveurl=https://web.archive.org/web/20260505052631/https://likebalaton.hu/telepules/keszthely/hireink/festetics-lakoma-luxus-gasztronomia-teknosbeka-leves-384275/|archivedate=5 May 2026|date=29 Oct 2024|accessdate=5 May 2026|text=Képzeld el, ahogy a Festetics család pompás lakomáin ülve '''teknősbéka''' leves kerül az asztalra – nem akármilyen formában, hanem stílusosan, a teknős páncéljában tálalva! Ez a különleges fogás, ami ma már elképesztőnek tűnhet, egykor mindennapos volt a keszthelyi kastély konyháján. De itt nem állt meg a luxus! A család nemcsak saját pezsgőt készített, hanem még a győztes versenylovaikat is pezsgővel itatták meg a győzelmek után – igazi arisztokrata fényűzés.|t=想像一下,坐在費什泰蒂奇家族奢華的宴席上,端上了一道'''龜'''湯——不僅僅是普通的做法,而是非常講究地直接在龜殼中端上來!這道在今天看來可能令人驚訝的獨特菜餚,曾經是凱斯特海伊城堡廚房裡的家常便飯。但奢華並不止於此!這個家族不僅自己釀造香檳,甚至在賽馬獲勝後還讓牠們喝香檳——這才是真正的貴族奢華。}}
#* {{quote-web|hu|author=|title=Simicskó István: Teknősbéka lassúsággal reagál Brüsszel a kihívásokra (VIDEÓ)|work=vasarnap.hu|url=https://vasarnap.hu/2025/04/08/simicsko-istvan-teknosbeka-lassusaggal-reagal-brusszel-a-kihivasokra-video/|archiveurl=https://web.archive.org/web/20260505052955/https://vasarnap.hu/2025/04/08/simicsko-istvan-teknosbeka-lassusaggal-reagal-brusszel-a-kihivasokra-video/|archivedate=5 May 2026|date=8 Apr 2025|accessdate=5 May 2026|text=„'''Teknősbéka''' lassúsággal reagál Brüsszel a kihívásokra, veszélyekre, fenyegetésekre, a magyar kormány azonban helyesen jár el, amikor minden válsághelyzet időszakában megkérdezi az emberek véleményét” – erről beszélt napirend előtti felszólalásában kedden a KDNP frakcióvezetője.|t=「布魯塞爾對挑戰、危險和威脅的反應有如'''烏龜'''般緩慢,但匈牙利政府在每次危機中徵求民眾意見的做法是正確的」——這就是基民黨議會黨團領袖週二在議程前的發言中所說的。}}
#* {{quote-web|hu|author=|title=Hüllő garázdálkodik Debrecen víztározójában|work=civishir.hu|url=https://civishir.hu/hir/hullo-garazdalkodik-debrecen-viztarozojaban#morztoxadnfjj2iy6nr|archiveurl=https://web.archive.org/web/20260505022031/https://civishir.hu/hir/hullo-garazdalkodik-debrecen-viztarozojaban#morztoxadnfjj2iy6nr|archivedate=5 May 2026|date=17 Jan 2026|accessdate=5 May 2026|text=A Látóképi-tározó közösségi oldal számolt be arról, hogy ősszel két horgásznak is egy '''teknősbéka''' akadt a horgára. A meglepetés és a döbbenet után szabadon eresztették, de a jó szándék ezúttal nem volt jó döntés, az állatot hiba volt visszaengedni – írják.|t=拉托凱皮水庫的社群媒體頁面報導稱,今年秋天有兩名釣客的魚鉤上都釣到了'''烏龜'''。在最初的驚訝與震驚之後,他們將其放生,但這次的好意被誤導了——他們寫道,把這隻動物放走是個錯誤。}}
## [[海龜]]{{gl|棲息於海洋的龜類,尤指{{w|海龜|海龜總科}}動物}}
##: {{syn|hu|tengeri teknős}}
## [[陸龜]]{{gl|多種陸生爬行動物,屬於{{w|陸龜科}}或{{w|龜鱉目}},其身體被封閉在[[背甲]]與[[腹甲]]中}}
##: {{syn|hu|szárazföldi teknős}}
## [[澤龜]]{{gl|原產於北美洲、生活在半鹹水或淡水中的幾種小型龜類}}
##: {{syn|hu|mocsáriteknős}}
====用法說明====
這個詞雖然常見,但經常不建議使用<ref>[http://www.nyest.hu/hirek/helytelen-e-a-teknosbeka Helytelen-e a teknősbéka?]</ref><ref>[https://index.hu/tudomany/2022/01/01/teknosbeka-mitoszok-bolcsesseg-halhatatlansag-evolucio/ Teknős-e a béka?]</ref>,理由是龜是爬行動物,與作為兩棲動物的青蛙親緣關係並不密切。規範的術語僅為 {{m|hu|teknős}}(與 {{m|hu|teknősbéka}} 的非正式省略形式一致)。
====變格====
{{hu-infl-nom|teknősbéká|o}}{{hu-pos-tok|teknősbéká}}
====派生詞彙====
{{col4|hu|title=以本詞開頭的複合詞
|teknősbékaleves
|teknősbékapáncél
|Teknősbéka-szigetek
}}
===參考資料===
{{reflist}}
===延伸閱讀===
* {{R:ErtSz}}
* {{R:HES}}
{{C|hu|澤龜科|海龜|龜}}
rzayxhmhlgu72zsjrysa8lua5gv1am0
9788114
9788112
2026-05-24T20:03:15Z
TongcyDai
53191
9788114
wikitext
text/x-wiki
==匈牙利語==
{{was fwotd|hu|2026|5月|26日}}
{{swp|hu:[[teknősök|teknősbéka]]}}
[[File:Turtles-Tortoises-Terrapins.jpg|thumb|'''teknősbékák''']]
===詞源===
{{etydate|1395}}。源自 {{af|hu|teknős|béka|t1=有殼動物|t2=蛙|pos=名詞}}。<ref>{{R:UESz}}</ref><ref>{{R:Zaicz 2006}}</ref>對照{{ncog|de|Schildkröte}}與{{ncog|ro|broască-țestoasă}}。
===發音===
* {{hu-IPA}}
* {{rhymes|hu|kɒ|s=4}}
* {{hyph|hu|tek|nős|bé|ka}}
* {{hu-syll|tek|nős|bé|ka}}
===名詞===
{{hu-noun|pl=teknősbékák}}
# {{lb|hu|口語|proscribed}} [[龜]]{{gl|{{w|龜鱉目}}的任何陸生或海生爬行動物,特徵為身體被保護性的[[甲殼]]包覆}}
#: {{syn|hu|teknőc<q:過時>|teknős}}
#* {{quote-web|hu|author=|title=Teknősbéka leves és pezsgő a lovaknak – így lakmároztak a Festeticsek a Balatonnál|work=likebalaton.hu|url=https://likebalaton.hu/telepules/keszthely/hireink/festetics-lakoma-luxus-gasztronomia-teknosbeka-leves-384275/|archiveurl=https://web.archive.org/web/20260505052631/https://likebalaton.hu/telepules/keszthely/hireink/festetics-lakoma-luxus-gasztronomia-teknosbeka-leves-384275/|archivedate=5 May 2026|date=29 Oct 2024|accessdate=5 May 2026|text=Képzeld el, ahogy a Festetics család pompás lakomáin ülve '''teknősbéka''' leves kerül az asztalra – nem akármilyen formában, hanem stílusosan, a teknős páncéljában tálalva! Ez a különleges fogás, ami ma már elképesztőnek tűnhet, egykor mindennapos volt a keszthelyi kastély konyháján. De itt nem állt meg a luxus! A család nemcsak saját pezsgőt készített, hanem még a győztes versenylovaikat is pezsgővel itatták meg a győzelmek után – igazi arisztokrata fényűzés.|t=想像一下,坐在費什泰蒂奇家族奢華的宴席上,端上了一道'''龜'''湯——不僅僅是普通的做法,而是非常講究地直接在龜殼中端上來!這道在今天看來可能令人驚訝的獨特菜餚,曾經是凱斯特海伊城堡廚房裡的家常便飯。但奢華並不止於此!這個家族不僅自己釀造香檳,甚至在賽馬獲勝後還讓牠們喝香檳——這才是真正的貴族奢華。}}
#* {{quote-web|hu|author=|title=Simicskó István: Teknősbéka lassúsággal reagál Brüsszel a kihívásokra (VIDEÓ)|work=vasarnap.hu|url=https://vasarnap.hu/2025/04/08/simicsko-istvan-teknosbeka-lassusaggal-reagal-brusszel-a-kihivasokra-video/|archiveurl=https://web.archive.org/web/20260505052955/https://vasarnap.hu/2025/04/08/simicsko-istvan-teknosbeka-lassusaggal-reagal-brusszel-a-kihivasokra-video/|archivedate=5 May 2026|date=8 Apr 2025|accessdate=5 May 2026|text=„'''Teknősbéka''' lassúsággal reagál Brüsszel a kihívásokra, veszélyekre, fenyegetésekre, a magyar kormány azonban helyesen jár el, amikor minden válsághelyzet időszakában megkérdezi az emberek véleményét” – erről beszélt napirend előtti felszólalásában kedden a KDNP frakcióvezetője.|t=「布魯塞爾對挑戰、危險和威脅的反應有如'''烏龜'''般緩慢,但匈牙利政府在每次危機中徵求民眾意見的做法是正確的」——這就是基民黨議會黨團領袖週二在議程前的發言中所說的。}}
#* {{quote-web|hu|author=|title=Hüllő garázdálkodik Debrecen víztározójában|work=civishir.hu|url=https://civishir.hu/hir/hullo-garazdalkodik-debrecen-viztarozojaban#morztoxadnfjj2iy6nr|archiveurl=https://web.archive.org/web/20260505022031/https://civishir.hu/hir/hullo-garazdalkodik-debrecen-viztarozojaban#morztoxadnfjj2iy6nr|archivedate=5 May 2026|date=17 Jan 2026|accessdate=5 May 2026|text=A Látóképi-tározó közösségi oldal számolt be arról, hogy ősszel két horgásznak is egy '''teknősbéka''' akadt a horgára. A meglepetés és a döbbenet után szabadon eresztették, de a jó szándék ezúttal nem volt jó döntés, az állatot hiba volt visszaengedni – írják.|t=拉托凱皮水庫的社群媒體頁面報導稱,今年秋天有兩名釣客的魚鉤上都釣到了'''烏龜'''。在最初的驚訝與震驚之後,他們將其放生,但這次的好意被誤導了——他們寫道,把這隻動物放走是個錯誤。}}
## [[海龜]]{{gl|棲息於海洋的龜類,尤指{{w|海龜|海龜總科}}動物}}
##: {{syn|hu|tengeri teknős}}
## [[陸龜]]{{gl|多種陸生爬行動物,屬於{{w|陸龜科}}或{{w|龜鱉目}},其身體被封閉在[[背甲]]與[[腹甲]]中}}
##: {{syn|hu|szárazföldi teknős}}
## [[澤龜]]{{gl|原產於[[北美洲]]、生活在半[[鹹水]]或[[淡水]]中的幾種小型龜類}}
##: {{syn|hu|mocsáriteknős}}
====用法說明====
這個詞雖然常見,但經常不建議使用<ref>[http://www.nyest.hu/hirek/helytelen-e-a-teknosbeka Helytelen-e a teknősbéka?]</ref><ref>[https://index.hu/tudomany/2022/01/01/teknosbeka-mitoszok-bolcsesseg-halhatatlansag-evolucio/ Teknős-e a béka?]</ref>,理由是龜是爬行動物,與作為兩棲動物的青蛙親緣關係並不密切。規範的術語僅為 {{m|hu|teknős}}(與 {{m|hu|teknősbéka}} 的非正式省略形式一致)。
====變格====
{{hu-infl-nom|teknősbéká|o}}{{hu-pos-tok|teknősbéká}}
====派生詞彙====
{{col4|hu|title=以本詞開頭的複合詞
|teknősbékaleves
|teknősbékapáncél
|Teknősbéka-szigetek
}}
===參考資料===
{{reflist}}
===延伸閱讀===
* {{R:ErtSz}}
* {{R:HES}}
{{C|hu|澤龜科|海龜|龜}}
exk7upbnvm7nkyo8bosoz8w10g67qio
déployer
0
1414055
9788187
8350443
2026-05-25T01:59:03Z
Sayonzei
40728
9788187
wikitext
text/x-wiki
{{also|deployer}}
==法語==
===詞源===
{{inh+|fr|frm|desployer}},{{inh+|fr|fro|desploier}}、{{m|fro|desploiier}},源自 {{m|fro|des-}} + {{m|fro|ploiier}},或可能{{inh+|fr|la-lat|displicō|displicāre}},或{{inh+|fr|la|dēplicō|dēplicāre|展開,鋪開}}。
===發音===
* {{fr-IPA}}
* {{audio|fr|Fr-déployer.ogg}}
* {{audio|fr|LL-Q150 (fra)-Jérémy-Günther-Heinz Jähnick-déployer.wav|a=索曼}}
===動詞===
{{fr-verb}}
# [[展開]],[[鋪開]]
# {{lb|fr|軍事}} [[部署]]
# {{lb|fr|比喻}} [[展現]],[[顯示]],[[表現]];[[炫耀]];[[發揮]],[[發揚]]
====變位====
{{fr-conj-auto}}
====派生詞彙====
* {{l|fr|rire à gorge déployée}}
====相關詞彙====
* {{l|fr|déplier}}
===延伸閱讀===
* {{R:fr:TLFi}}
===異序詞===
* {{l|fr|polyèdre}}
3yht5pg5rjgfkldlic2iipv4ce2v2zr
Espanya
0
1414912
9787582
8356607
2026-05-24T17:55:03Z
TongcyDai
53191
9787582
wikitext
text/x-wiki
==阿拉貢語==
{{wp|an:}}
===詞源===
源自{{der|an|la|Hispānia}}。
===發音===
{{an-pr}}
===專有名詞===
{{head|an|專有名詞}}
# {{tcl|an|西班牙|id=Q29}}
==加泰羅尼亞語==
{{wp|ca:}}
===詞源===
{{inh+|ca|la|Hispānia}}。
===發音===
* {{ca-IPA}}
* {{audio|ca|LL-Q7026 (cat)-Millars-Espanya.wav|a=Valencia}}
* {{rhymes|ca|aɲa|s=3}}
===專有名詞===
{{ca-proper noun|f}}
# {{tcl|ca|西班牙|id=Q29}}
====相關詞彙====
* {{l|ca|espanyol}}
===參考資料===
* {{R:ca:DCVB}}
==希利蓋農語==
===詞源===
{{bor+|hil|es|España}},源自{{der|hil|la|Hispānia}}。
===專有名詞===
{{hil-noun|Espánya}}
# {{tcl|hil|西班牙|id=Q29}}
==拉蒂諾語==
{{wp|lad:}}
===其他形式===
* {{alt|lad|España|Spanya}}
===詞源===
{{inh+|lad|osp|Espanna||伊比利亞半島}},{{inh+|lad|la|Hispānia}},可能源自{{der|lad|xpu||אי שפן|tr=I-Shaphan|sc=Hebr|蹄兔海岸}}。
===專有名詞===
{{lad-proper noun|g=f|heb=איספאנייה}}
# {{tcl|lad|西班牙|id=Q29}}
#: {{syn|lad|Reyno de Espanya|q=正式}}
#: {{holo|lad|Iberia}}
#* {{quote-book|lad|author=Matilda Koén-Sarano|title=Por el plazer de kontar|url=https://books.google.com/books?id=fY1iAAAAMAAJ|year=2006|page=370|pageurl=https://books.google.com/books?id=fY1iAAAAMAAJ&q=Paltzur|text=Al prinsipio se topava Mordehay Paltzur, ke es el shefe de la Divizión del Protokolo del Ministero, i después el Embasador espanyol, el Rey, el Prezidente del Estado, Ezer Weizman, su dama, i a la fin la Reyna de '''Espanya'''.|t=首先找到了部長禮賓司司長莫德海·帕爾祖爾,然後又找到了西班牙大使,以及國王、國家總統埃澤爾·魏茨曼、他的妻子,最後找到了'''西班牙'''王后。}}
==他加祿語==
===其他形式===
* {{alt|tl|España}}
===詞源===
{{bor+|tl|es|España}},源自{{der|tl|la|Hispānia}}。
===發音===
{{tl-pr}}
===專有名詞===
{{tl-proper noun|b=+}}
# {{tcl|tl|西班牙|id=Q29}}
====相關詞彙====
* {{l|tl|Espanyol}}
* {{l|tl|Espanyola}}
mecfquo8owak8hu9y92tvn21ijy19zo
Module:Foreign numerals
828
1419795
9788138
7373753
2026-05-24T20:13:51Z
Xiplus
25402
已保护“[[Module:Foreign numerals]]”:高風險模板:617引用([编辑权限=仅允许自动确认用户](无限期)[移动权限=仅允许自动确认用户](无限期))
7373753
Scribunto
text/plain
local export = {}
-- Roman numerals
local from_Roman_tab = {
M = 1000; CM = 900; D = 500; CD = 400;
C = 100; XC = 90; L = 50; XL = 40;
X = 10; IX = 9; V = 5; IV = 4;
I = 1;
}
local to_Roman_tab = {
{ 1000, "M" }; { 900, "CM" }; { 500, "D" }; { 400, "CD" };
{ 100, "C" }; { 90, "XC" }; { 50, "L" }; { 40, "XL" };
{ 10, "X" }; { 9, "IX" }; { 5, "V" }; { 4, "IV" };
{ 1, "I" };
}
local new_to_Roman_tab = {}
local overline = mw.ustring.char(0x305)
local double_overline = mw.ustring.char(0x33F)
for _, v in ipairs(to_Roman_tab) do
local number, symbol = unpack(v)
if number > 1 then
table.insert(new_to_Roman_tab, { number * 1000, (symbol:gsub(".", "%1" .. overline)) })
table.insert(new_to_Roman_tab, { number * 1000000, (symbol:gsub(".", "%1" .. double_overline)) })
end
end
for _, v in ipairs(to_Roman_tab) do
table.insert(new_to_Roman_tab, v)
end
to_Roman_tab = new_to_Roman_tab
function export.to_Roman(numeral)
if type(numeral) == 'table' then
numeral = tonumber(numeral.args[1])
else
-- accept strings for use by [[Module:number list/data/la]], which is invoked from [[Module:number list]]
-- with the number in string format to allow for very large numbers
numeral = tonumber(numeral)
end
local output = {}
for _, item in ipairs(to_Roman_tab) do
local limit, letter = item[1], item[2]
while numeral >= limit do
table.insert(output, letter)
numeral = numeral - limit
end
end
return table.concat(output)
end
function export.from_Roman(numeral)
if type(numeral) == 'table' then
numeral = numeral.args[1]
end
if tonumber(numeral) then
return tonumber(numeral)
end
local accum = 0
-- shame on Lua for having no regex alternations...
while numeral ~= "" do
local l2, l1 = numeral:sub(1, 2), numeral:sub(1, 1)
if from_Roman_tab[l2] then
accum = accum + from_Roman_tab[l2]
numeral = numeral:sub(3)
elseif from_Roman_tab[l1] then
accum = accum + from_Roman_tab[l1]
numeral = numeral:sub(2)
else
return nil
end
end
return accum
end
-- Armenian numerals
local from_Armenian_tab = {
["Ա"] = 1; ["Բ"] = 2; ["Գ"] = 3; ["Դ"] = 4; ["Ե"] = 5; ["Զ"] = 6; ["Է"] = 7; ["Ը"] = 8; ["Թ"] = 9;
["Ժ"] = 10; ["Ի"] = 20; ["Լ"] = 30; ["Խ"] = 40; ["Ծ"] = 50; ["Կ"] = 60; ["Հ"] = 70; ["Ձ"] = 80; ["Ղ"] = 90;
["Ճ"] = 100; ["Մ"] = 200; ["Յ"] = 300; ["Ն"] = 400; ["Շ"] = 500; ["Ո"] = 600; ["Չ"] = 700; ["Պ"] = 800; ["Ջ"] = 900;
["Ռ"] = 1000; ["Ս"] = 2000; ["Վ"] = 3000; ["Տ"] = 4000; ["Ր"] = 5000; ["Ց"] = 6000; ["Ւ"] = 7000; ["Փ"] = 8000; ["Ք"] = 9000;
}
function export.from_Armenian(numeral)
if type(numeral) == 'table' then
numeral = numeral.args[1]
end
if tonumber(numeral) then
return tonumber(numeral)
end
local accum = 0
for cp in mw.ustring.gcodepoint(numeral) do
local value = from_Armenian_tab[mw.ustring.char(cp)]
if value then
accum = accum + value
else
return nil
end
end
return accum
end
-- Hebrew numerals
local from_Hebrew_tab = {
['א'] = 1,
['ב'] = 2,
['ג'] = 3,
['ד'] = 4,
['ה'] = 5,
['ו'] = 6,
['ז'] = 7,
['ח'] = 8,
['ט'] = 9,
['י'] = 10,
['כ'] = 20,
['ך'] = 20,
['ל'] = 30,
['מ'] = 40,
['ם'] = 40,
['נ'] = 50,
['ן'] = 50,
['ס'] = 60,
['ע'] = 70,
['פ'] = 80,
['ף'] = 80,
['צ'] = 90,
['ץ'] = 90,
['ק'] = 100,
['ר'] = 200,
['ש'] = 300,
['ת'] = 400,
}
local to_Hebrew_ones = {[0] = '', 'א', 'ב', 'ג', 'ד', 'ה', 'ו', 'ז', 'ח', 'ט'}
local to_Hebrew_tens = {[0] = '', 'י', 'כ', 'ל', 'מ', 'נ', 'ס', 'ע', 'פ', 'צ'}
local to_Hebrew_hundreds = {[0] = '', 'ק', 'ר', 'ש', 'ת', 'תק', 'תר', 'תש', 'תת', 'תתק'}
local to_Hebrew_special = {
[15] = 'טו',
[16] = 'טז',
}
-- This only works for numbers such that 0 < value < 1000, because beyond that the logic gets complicated
function export.from_Hebrew(numeral)
if type(numeral) == 'table' then
numeral = numeral.args[1]
end
if tonumber(numeral) then
return tonumber(numeral)
end
local value = 0
for c in mw.ustring.gmatch(numeral, '[א-ת]') do
value = value + (from_Hebrew_tab[c] or 0)
end
if value == 0 then
return nil
end
return value
end
-- This only works for numbers such that 0 < value < 1000, because beyond that the logic gets complicated
function export.to_Hebrew(value, use_gershayim)
if type(value) == 'table' then
use_gershayim = value.args[2] ~= '' and value.args[2]
value = value.args[1]
end
if type(value) ~= 'number' then
if tonumber(value) then
value = tonumber(value)
else
return nil
end
end
if value <= 0 or value >= 1000 then
return nil
end
local tens_and_ones = value % 100
local hundreds = to_Hebrew_hundreds[(value - tens_and_ones) / 100]
if to_Hebrew_special[tens_and_ones] then
tens_and_ones = to_Hebrew_special[tens_and_ones]
else
local ones = tens_and_ones % 10
local tens = (tens_and_ones - ones) / 10
tens_and_ones = to_Hebrew_tens[tens] .. to_Hebrew_ones[ones]
end
local numeral = hundreds .. tens_and_ones
if use_gershayim then
if mw.ustring.match(numeral, '^.$') then
numeral = numeral .. '׳'
else
numeral = mw.ustring.gsub(numeral, '.$', '״%0')
end
end
return numeral
end
-- Indian numerals
function export.from_Indian(numeral)
if type(numeral) == 'table' then
value = numeral.args[1]
else
value = numeral
end
text = mw.ustring.gsub(
tostring(value),
'.',
{
['०'] = '0',
['१'] = '1',
['२'] = '2',
['३'] = '3',
['४'] = '4',
['५'] = '5',
['६'] = '6',
['७'] = '7',
['८'] = '8',
['९'] = '9',
}
)
return text
end
function export.to_Indian(numeral)
if type(numeral) == 'table' then
value = numeral.args[1]
else
value = numeral
end
text = mw.ustring.gsub(
tostring(value),
'.',
{
[0] = '०',
[1] = '१',
[2] = '२',
[3] = '३',
[4] = '४',
[5] = '५',
[6] = '६',
[7] = '७',
[8] = '८',
[9] = '९',
}
)
return text
end
return export
5f0dpuz0utyn7j87r2gtwhsx5o3c1rf
에스파냐
0
1481136
9787596
8664482
2026-05-24T17:58:19Z
TongcyDai
53191
9787596
wikitext
text/x-wiki
==朝鮮語==
===詞源===
{{bor+|ko|es|España}}。
===發音===
{{ko-IPA|cap=y}}
===專有名詞===
{{ko-pos|專有名詞}}
# {{lb|ko|韓國|Yanbian}} {{tcl|ko|西班牙|id=Q29}}
====近義詞====
* {{qualifier|韓國|延邊朝鮮語}} {{ko-l|^스페인}}
* {{qualifier|朝鮮|延邊朝鮮語}} {{ko-l|^에스빠냐}}
owqgcbj0ppj3rc07ggpf9yl8q0idoke
에스빠냐
0
1481137
9787597
8664475
2026-05-24T17:58:23Z
TongcyDai
53191
9787597
wikitext
text/x-wiki
==朝鮮語==
===詞源===
{{bor+|ko|es|España}}。
===發音===
{{ko-IPA|cap=y}}
===專有名詞===
{{ko-pos|專有名詞}}
# {{lb|ko|朝鮮|Yanbian}} {{tcl|ko|西班牙|id=Q29}}
====近義詞====
* {{qualifier|韓國}} {{ko-l|^에스파냐}}、{{ko-l|^스페인}}
syj0sh8rvkw1tmwzmhvv9h6rnxr40qf
dvojhláska
0
1484625
9788153
8079124
2026-05-25T01:20:57Z
Sayonzei
40728
9788153
wikitext
text/x-wiki
==捷克語==
{{wp|cs:}}
===詞源===
源自 {{prefix|cs|dvoj|hláska|t2=語音}}。
===發音===
* {{cs-IPA}}
* {{audio|cs|LL-Q9056 (ces)-Ghost4Man-dvojhláska.wav}}
* {{rhymes|cs|aːska|s=3}}
* {{hyphenation|cs|dvoj|hlá|s|ka}}
===名詞===
{{cs-noun|f}}
# [[雙元音]]
#: {{syn|cs|diftong}}
====變格====
{{cs-ndecl|f}}
====相關詞彙====
{{col|cs|hlas|hláska|přehláska|samohláska|souhláska|trojhláska}}
===延伸閱讀===
* {{R:cs:PSJC}}
* {{R:cs:SSJC}}
* {{R:cs:IJP}}
{{C|cs|語音學|二}}
==斯洛伐克語==
{{wp|sk:}}
===詞源===
源自 {{affix|sk|dvoj-|hláska}}。
===發音===
* {{sk-IPA}}
===名詞===
{{sk-noun|f|adj=dvojhláskový}}
# [[雙元音]]
====變格====
{{sk-ndecl|f}}
===延伸閱讀===
* {{R:sk:SDK}}
{{C|sk|語音學|二}}
7oacaoy1a2clrd8g0imnv3drze2s9f7
Template:R:lt:Martsinkyavitshute1993
10
1496377
9787473
5999806
2026-05-24T14:43:43Z
TongcyDai
53191
9787473
wikitext
text/x-wiki
{{#if:{{{1|}}}|“{{{1}}}” in }}Martsinkyavitshute, Victoria ('''1993'''), ''Hippocrene Concise Dictionary: Lithuanian-English/English-Lithuanian''. New York: {{w|Hippocrene Books}}. {{ISBN|978-0-7818-0151-5}}<noinclude>{{documentation}}{{refcat}}</noinclude>
pin208nq1dkw85pybqykltu6h2mwdn1
Sihbanhyaz
0
1503887
9787671
7458127
2026-05-24T18:22:55Z
TongcyDai
53191
9787671
wikitext
text/x-wiki
==壯語==
{{wp|za:}}
===詞源===
{{bor+|za|cmn|-}} {{zh-l|西班牙}}。
===發音===
* {{za-pron}}
===專有名詞===
{{za-head|專有名詞|西班牙}}
# {{tcl|za|西班牙|id=Q29}}
ftn11qw56qza256wpfpvv59bbfm77l9
Template:R:lt:LKŽ
10
1524976
9787422
6063678
2026-05-24T13:13:25Z
TongcyDai
53191
9787422
wikitext
text/x-wiki
{{#invoke:quote|call_template
|template=cite-web
|entryurl=http://www.lkz.lt/Visas.asp?zodis={{urlencode:{{{1|{{pagename}}}}}}}
|entry={{lang|lt|{{{2|{{{1|{{pagename}}}}}}}}}}
|work=[[w:Academic Dictionary of Lithuanian|Lietuvių kalbos žodynas]]
|trans-work=立陶宛語詞典
|year=1941–{{CURRENTYEAR}}
|publisher=lkz.lt
|allowparams=1,2
}}<noinclude>{{reference template cat|lt}}{{documentation}}</noinclude>
jwgdg1hdmseq10mprws3qrrctuxwlqb
9787423
9787422
2026-05-24T13:13:52Z
TongcyDai
53191
x
9787423
wikitext
text/x-wiki
{{#invoke:quote|call_template
|template=cite-web
|entryurl=http://www.lkz.lt/Visas.asp?zodis={{urlencode:{{{1|{{pagename}}}}}}}
|entry={{lang|lt|{{{2|{{{1|{{pagename}}}}}}}}}}
|work=[[w:en:Academic Dictionary of Lithuanian|Lietuvių kalbos žodynas]]
|trans-work=立陶宛語詞典
|year=1941–{{CURRENTYEAR}}
|publisher=lkz.lt
|allowparams=1,2
}}<noinclude>{{reference template cat|lt}}{{documentation}}</noinclude>
8uie358jv76sgbp6rqa0sivhyh4uu6e
Template:R:LKZ
10
1525131
9787421
6064202
2026-05-24T13:12:59Z
TongcyDai
53191
重定向页面至[[Template:R:lt:LKŽ]]
9787421
wikitext
text/x-wiki
#REDIRECT [[Template:R:lt:LKŽ]]
sppflaln64fuxw1ed3ohsi0s9f0axqs
Template:R:bat:EDBIL
10
1544531
9787424
6089976
2026-05-24T13:14:50Z
TongcyDai
53191
9787424
wikitext
text/x-wiki
{{#invoke:quote|call_template
|template=cite-book
|last=Derksen
|first=Rick
|authorlink=Rick Derksen
|entry={{{head|{{{2|}}}}}}
|title=Etymological Dictionary of the Baltic Inherited Lexicon
|series=Leiden Indo-European Etymological Dictionary Series
|seriesvolume=13
|location=Leiden, Boston
|publisher=Brill
|year=2015
|pageparam=1
|pageurl=https://archive.org/details/etymological-dictionary-of-the-baltic-inherited-lexicon/page/{{#if:{{{1|}}}|{{{1|}}}|{{{page|{{{p|}}}}}}}}?view=theater
|textparam=3
|isbn=978 90 04 27898 1
|allowparams=head,2,p
}}<noinclude>{{documentation}}{{refcat|ine-bsl-pro|lt|lv}}</noinclude>
8unlx1wmhbgmqr76cjqj74ke9ne1qwc
Spānija
0
1567642
9787647
6115470
2026-05-24T18:15:30Z
TongcyDai
53191
9787647
wikitext
text/x-wiki
{{also|Španija|Spānijā}}
==拉脫維亞語==
{{swp|lv:}}
[[File:LocationSpainInEurope.png|thumb|175px|Spānija (Eiropā)]]
[[File:Flag of Spain.svg|thumb|130px|Spānijas karogs]]
===詞源===
源自 {{suffix|lv|spānis|ija|gloss1=西班牙人}}。
===發音===
{{rfap|lv}}
===專有名詞===
{{lv-proper noun|f|4th}}
# {{tcl|lv|西班牙|id=Q29}}
#: {{ux|lv|'''Spānijas''' karogs|'''西班牙'''旗幟|inline=1}}
#: {{ux|lv|'''Spānijas''' karalis|'''西班牙'''國王|inline=1}}
#: {{ux|lv|2010. gadā '''Spānijā''' dzīvoja 46,03 miljoni iedzīvotāji|2010年,'''西班牙'''人口為4,603萬人|inline=1}}
====變格====
{{lv-decl-noun|Spānij|a|4th|no-pl||||proper}}
====近義詞====
* {{l|lv|Spānijas Karaliste}}
====相關詞彙====
* {{l|lv|spānis}}、{{l|lv|spāniete}}
* {{l|lv|spānisks}}
* {{l|lv|spāņu valoda}}
===參見===
{{list:countries in Europe/lv}}
2avdbgt3xdbm3t96v36sovq4x3jbpd1
Espanha
0
1582041
9787631
9486136
2026-05-24T18:09:58Z
TongcyDai
53191
9787631
wikitext
text/x-wiki
==加利西亞語==
===專有名詞===
{{gl-proper noun|f}}
# {{gl-reinteg sp|España}}
===參考資料===
* {{R:gl:Estraviz}}
==奧克語==
{{wp|oc:}}
===詞源===
{{inh+|oc|pro|Espanha}},源自{{der|oc|la|Hispānia}}。
===專有名詞===
{{head|oc|專有名詞|g=f}}
# {{tcl|oc|西班牙|id=Q29}}
#: {{syn|oc|Espanh}}
====派生詞彙====
{{col|oc|lillac d'Espanha}}
===延伸閱讀===
* {{R:oc-lan:DGLO|291}}
* {{R:oc-lan:Cantalausa}}
==古葡萄牙語==
===其他形式===
* {{alter|roa-opt|Espanna}}
===詞源===
{{inh+|roa-opt|la|Hispānia}},可能源自{{der|roa-opt|xpu||אי שפן|tr=I-Shaphan|t=蹄兔海岸}}。
===發音===
* {{IPA|roa-opt|/es̺ˈpa.ɲa/}}
===專有名詞===
{{head|roa-opt|專有名詞|g=f}}
# {{place|roa-opt|半島|r/南歐|t=[[伊比利亞半島]]}}
====相關詞彙====
* {{l|roa-opt|espanhol}}
====派生語彙====
* {{desc|fax|España}}
* {{desc|gl|España}}
* {{desc|pt|Espanha}}
===延伸閱讀===
* [https://universocantigas.gal/glosario/termo/1446 Universo Cantigas - "Espanha<sub>1</sub>"]
==古奧克語==
===詞源===
源自{{der|pro|la|Hispānia}}。對照{{cog|osp|Espanna}}、{{cog|roa-opt|Espanna}}。
===專有名詞===
{{pro-proper noun|f}}
# {{place|pro|半島|r/南歐|t=[[伊比利亞半島]]}}
====派生語彙====
* {{desc|oc|Espanha}}
==葡萄牙語==
[[Image:España-loc.svg|thumb|Espanha]]
===其他形式===
* {{alt|pt|Hespanha||pre-1911}}
===詞源===
源自{{inh|pt|roa-opt|Espanna||伊比利亞半島}},源自{{der|pt|la|Hispānia}},可能派生自{{der|pt|xpu||אי שפן|tr=I-Shaphan|sc=Hebr|蹄兔海岸}}。{{doublet|pt|Hispânia}}。
===發音===
{{pt-IPA}}
* {{rhymes|pt|ɐ̃ɲɐ<a:Brazil>|ɐɲɐ<a:Portugal>|s=3}}
* {{hyph|pt|Es|pa|nha}}
===專有名詞===
{{pt-proper noun|f|+}}
# {{tcl|pt|西班牙|id=Q29|place_caplc=Madrid|place_official=Reino de Espanha}}
# {{lb|pt|古舊|or|poetic|usually|in plural}} [[伊比利亞半島]]
====用法說明====
在歐洲的用法中,{{m|pt|Espanha}} 屬於一小類地名(與 {{m|pt|França}}、{{m|pt|Inglaterra}} 以及 {{m|pt|Itália}} 同屬一類),當其後接介詞時,可省略定冠詞:{{m|pt||Viveu muito tempo '''em Espanha'''.}}。
====派生詞彙====
{{col4|pt|Nova Espanha}}
====相關詞彙====
{{col4|pt|espanhol|hispânico|hispano}}
====派生語彙====
* {{desc|bn|ইস্পানীয়া|bor=1}}
* {{desc|ja|イスパニャ|tr=Isupanya|bor=1}}
===參見===
{{list:countries in Europe/pt}}
===延伸閱讀===
* {{R:pt:Dicionário informal}}
* {{R:pt:DAN|espanha}}
{{cln|pt|外名}}
n501c67v0v11ys3mie9qcof7l81c2ve
Template:R:lt:LKEŽDUB
10
1592535
9787430
6180363
2026-05-24T13:28:43Z
TongcyDai
53191
9787430
wikitext
text/x-wiki
{{#invoke:checkparams|warn}}<!-- Validate template parameters
-->{{cite-web
|entryurl=https://etimologija.baltnexus.lt/?w={{urlencode:{{{1|{{pagename}}}}}}}
|entry=lt:{{{1|{{pagename}}}}}
|work=Lietuvių kalbos etimologinio žodyno duomenų bazė
|trans-work=立陶宛語詞源詞典資料庫
|year=2007–2012
|passage={{{passage|}}}
}}<noinclude>{{refcat|lt|sla-pro|ine-bsl-pro}}</noinclude>
mug0c3qmta9m4o5ntpxjv6zujx94l62
postuleras
0
1592781
9788196
6180773
2026-05-25T02:03:33Z
Sayonzei
40728
/* 瑞典語 */
9788196
wikitext
text/x-wiki
==法語==
===發音===
* {{fr-IPA|pos=v}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|postuler||2|s|simple|futr}}
==瑞典語==
===動詞===
{{head|sv|動詞變位形式}}
# {{verb form of|sv|postulera||pass|inf}}
# {{verb form of|sv|postulera||pres|pass}}
phna2ib4twpcxfavyebgaad50ocvzkf
ئىسپانىيە
0
1617700
9787606
6217054
2026-05-24T18:01:44Z
TongcyDai
53191
9787606
wikitext
text/x-wiki
==維吾爾語==
===專有名詞===
{{head|ug|專有名詞}}
# {{tcl|ug|西班牙|id=Q29}}
nbl16568qigrg0ilcbvgn9t88vx989r
Шпанија
0
1643605
9787623
9359973
2026-05-24T18:04:50Z
TongcyDai
53191
9787623
wikitext
text/x-wiki
==馬其頓語==
===發音===
* {{mk-IPA}}
* {{rhymes|mk|ani(j)a|s=3}}
===專有名詞===
{{mk-proper noun|f|adj=шпански}}
# {{tcl|mk|西班牙|id=Q29}}
====變格====
{{mk-decl-noun-fp|Шпаниј|n=sg}}
====相關詞彙====
* {{l|mk|Шпанец|g=m}}、{{l|mk|Шпанка|g=f}}
* {{l|mk|шпански}}
==塞爾維亞-克羅地亞語==
{{wp|sh:,sr:}}
===詞源===
{{bor+|sh|de|Spanien}}。
===發音===
* {{IPA|sh|/ʃpâːnija/}}
* {{hyph|sh|Шпа|ни|ја}}
* {{rhymes|sh|ija|s=3}}
===專有名詞===
{{sh-propn|Шпа̑нија|f|adj=шпа̑нскӣ|dem=Шпа́нац|fdem=Шпа̑нкиња}}
# {{lb|sh|Bosnia|塞爾維亞}} {{tcl|sh|西班牙|id=Q29}}
#: {{uxi|sh|'''Шпанија''' се налази у неодговарајућој временској зони.|'''西班牙'''位於不合適的時區。}}
====變格====
{{sh-decl-noun-unc
|Шпанија
|Шпаније
|Шпанији
|Шпанију
|Шпанијо
|Шпанији
|Шпанијом
}}
====近義詞====
* {{l|sh|Шпа̀њо̄лска̄}} {{qualifier|Croatian}}
o1fhekpevp9ez3histgdyad57l2io65
9787624
9787623
2026-05-24T18:05:02Z
TongcyDai
53191
9787624
wikitext
text/x-wiki
==馬其頓語==
===發音===
* {{mk-IPA}}
* {{rhymes|mk|ani(j)a|s=3}}
===專有名詞===
{{mk-proper noun|f|adj=шпански}}
# {{tcl|mk|西班牙|id=Q29}}
====變格====
{{mk-decl-noun-fp|Шпаниј|n=sg}}
====相關詞彙====
* {{l|mk|Шпанец|g=m}}、{{l|mk|Шпанка|g=f}}
* {{l|mk|шпански}}
==塞爾維亞-克羅地亞語==
{{wp|sh:,sr:}}
===詞源===
{{bor+|sh|de|Spanien}}。
===發音===
* {{IPA|sh|/ʃpâːnija/}}
* {{hyph|sh|Шпа|ни|ја}}
* {{rhymes|sh|ija|s=3}}
===專有名詞===
{{sh-propn|Шпа̑нија|f|adj=шпа̑нскӣ|dem=Шпа́нац|fdem=Шпа̑нкиња}}
# {{lb|sh|Bosnia|塞爾維亞}} {{tcl|sh|西班牙|id=Q29}}
#: {{uxi|sh|'''Шпанија''' се налази у неодговарајућој временској зони.|'''西班牙'''位於不合適的時區。}}
====變格====
{{sh-decl-noun-unc
|Шпанија
|Шпаније
|Шпанији
|Шпанију
|Шпанијо
|Шпанији
|Шпанијом
}}
====近義詞====
* {{l|sh|Шпа̀њо̄лска̄}} {{qualifier|克羅地亞}}
dmevqjziux3spihaxdkntkblxiybudr
бесилка
0
1644382
9788643
6253430
2026-05-25T11:11:01Z
TongcyDai
53191
9788643
wikitext
text/x-wiki
==保加利亞語==
===詞源===
{{surf|bg|беси́ло|-ка}}。
===發音===
* {{bg-pr|беси́лка|a=[KK]}}
===名詞===
{{bg-noun|беси́лка|f}}
# [[絞刑架]],[[絞刑台]]
#: {{syn|bg|беси́ло}}
====變格====
{{bg-ndecl|беси́лка<>}}
===參考資料===
* {{R:bg:RBE}}
* {{R:bg:RBE2}}
==馬其頓語==
===發音===
* {{mk-IPA}}
* {{rhymes|mk|iɫka|s=3}}
===名詞===
{{mk-noun|f}}
# [[絞刑架]],[[絞刑台]]
# [[hangman]],{{w|猜單詞遊戲}}
====變格====
{{mk-decl-noun-f-e|бесилк}}
4wq4crodxm20pwxqk0bawgsu210hgs1
врколак
0
1655976
9788642
6265067
2026-05-25T11:08:35Z
TongcyDai
53191
9788642
wikitext
text/x-wiki
==馬其頓語==
===詞源===
{{inh+|mk|sla-pro|*vьlkolakъ}}。
===發音===
* {{mk-IPA}}
* {{audio|mk|LL-Q9296 (mkd)-Bjankuloski06-врколак.wav}}
===名詞===
{{mk-noun|m}}
# [[狼人]]
====變格====
{{mk-decl-noun-m||врколац|p=1}}
{{C|mk|民間傳說|神話生物}}
r0ck8c6ave4g9gwwe3tgzevf95vjnm9
Sbaen
0
1698759
9787604
8440325
2026-05-24T18:01:33Z
TongcyDai
53191
9787604
wikitext
text/x-wiki
==威爾士語==
{{wp|cy:}}
===其他形式===
* {{alt|cy|[[Ysbaen|yr Ysbaen]]}}
===詞源===
最终源自{{der|cy|la|Hispania}},現代形式可能受到了{{cog|en|Spain}} 的影響。
===發音===
* {{IPA|cy|/sbaːɨ̯n/|[spaːɨ̯n]|a=cy-N}}
* {{IPA|cy|/sbai̯n/|[spai̯n]|a=cy-S}}
* {{audio|cy|Cy-Sbaen.ogg}}
* {{rhymes|cy|aːɨ̯n|s=1}}
===專有名詞===
{{cy-proper noun|f}}
# {{tcl|cy|西班牙|id=Q29}}
====同類詞彙====
{{list:countries in Europe/cy}}
====派生詞彙====
* {{l|cy|Sbaeneg}}
* {{l|cy|Sbaenwr}}
* {{l|cy|Sbaenes}}
* {{l|cy|Teyrnas Sbaen||西班牙王國}}
{{cln|cy|外名}}
r8g5s7rung85eqi1zsye00atanxlh16
İspaniya
0
1699888
9787577
6329717
2026-05-24T17:53:33Z
TongcyDai
53191
9787577
wikitext
text/x-wiki
{{also|Ispaniýa}}
==阿塞拜疆語==
===專有名詞===
{{head|az|專有名詞}}
# {{tcl|az|西班牙|id=Q29}}
====變格====
{{az-ndecl/Latn|v|a}}
==克里米亞韃靼語==
{{wp|crh:}}
{{crh-scripts|ar=اسپانیا|sl=Ispanija|cy=Испания|ml=İspaniya}}
===發音===
* {{hyph|crh|İs|pa|ni|ya}}
===專有名詞===
{{head|crh|專有名詞}}
# {{tcl|crh|西班牙|id=Q29}}
===參考資料===
* {{R:crh:Luğatçıq}}
==加告茲語==
{{wp|gag:}}
===專有名詞===
{{head|gag|專有名詞}}
# {{tcl|gag|西班牙|id=Q29}}
nrl1jotv8rgjbihx20oi9s9z1a3qtai
Ispaniýa
0
1699890
9787580
6329720
2026-05-24T17:53:54Z
TongcyDai
53191
9787580
wikitext
text/x-wiki
{{also|İspaniya}}
==土庫曼語==
{{wp|tk:}}
{{tk-variant|l=Ispaniýa|c=Испания|a=اسپانیا}}
===專有名詞===
{{head|tk|專有名詞}}
# {{tcl|tk|西班牙|id=Q29}}
====變格====
{{tk-decl-noun-auto|a|v|noplural=yes}}
====派生詞彙====
* {{l|tk|ispaniýaly}}
l3ffpt6sgoommixxo5wscryxw4gx9e3
Ισπανία
0
1701240
9787590
6331805
2026-05-24T17:56:12Z
TongcyDai
53191
9787590
wikitext
text/x-wiki
==希臘語==
{{wp|el:}}
===詞源===
{{inh+|el|grc-koi|Ἱσπανία}}。
===發音===
* {{IPA|el|/ispaˈnia/}}
* {{hyphenation|el|Ι|σπα|νί|α}}
===專有名詞===
{{el-noun-proper|f}}
# {{tcl|el|西班牙|id=Q29}}
====變格====
{{el-nF-α-2a|Ισπανί}}
====派生詞彙====
{{col|el
|Ισπανή<t:西班牙人><g:f>
|Ισπανίδα<t:西班牙人><g:f>
|Σπανιόλα<t:西班牙人><g:f><l:口語>
|Ισπανός<t:西班牙人><g:m>
|Σπανιόλος<t:西班牙人><g:m><l:口語>
|ισπανικός<t:西班牙的><pos:adj>
|σπανιόλικος<t:西班牙的><pos:adj><l:口語>
|ισπανικά<t西班牙語><g:n,p>
|σπανιόλικα<t:t西班牙語><g:n,p><l:口語>
}}
===參見===
{{list:countries in Europe/el}}
{{cln|el|外名}}
mp9waavm05vosd124ytk5miiuzb7gbx
9787591
9787590
2026-05-24T17:56:31Z
TongcyDai
53191
/* 派生詞彙 */ // Edit via Wikiplus
9787591
wikitext
text/x-wiki
==希臘語==
{{wp|el:}}
===詞源===
{{inh+|el|grc-koi|Ἱσπανία}}。
===發音===
* {{IPA|el|/ispaˈnia/}}
* {{hyphenation|el|Ι|σπα|νί|α}}
===專有名詞===
{{el-noun-proper|f}}
# {{tcl|el|西班牙|id=Q29}}
====變格====
{{el-nF-α-2a|Ισπανί}}
====派生詞彙====
{{col|el
|Ισπανή<t:西班牙人><g:f>
|Ισπανίδα<t:西班牙人><g:f>
|Σπανιόλα<t:西班牙人><g:f><l:口語>
|Ισπανός<t:西班牙人><g:m>
|Σπανιόλος<t:西班牙人><g:m><l:口語>
|ισπανικός<t:西班牙的><pos:adj>
|σπανιόλικος<t:西班牙的><pos:adj><l:口語>
|ισπανικά<t:西班牙語><g:n,p>
|σπανιόλικα<t:t:西班牙語><g:n,p><l:口語>
}}
===參見===
{{list:countries in Europe/el}}
{{cln|el|外名}}
29mbprw9ng2v3x584zvjlcqtflq2h4n
9787592
9787591
2026-05-24T17:56:42Z
TongcyDai
53191
9787592
wikitext
text/x-wiki
==希臘語==
{{wp|el:}}
===詞源===
{{inh+|el|grc-koi|Ἱσπανία}}。
===發音===
* {{IPA|el|/ispaˈnia/}}
* {{hyphenation|el|Ι|σπα|νί|α}}
===專有名詞===
{{el-noun-proper|f}}
# {{tcl|el|西班牙|id=Q29}}
====變格====
{{el-nF-α-2a|Ισπανί}}
====派生詞彙====
{{col|el
|Ισπανή<t:西班牙人><g:f>
|Ισπανίδα<t:西班牙人><g:f>
|Σπανιόλα<t:西班牙人><g:f><l:口語>
|Ισπανός<t:西班牙人><g:m>
|Σπανιόλος<t:西班牙人><g:m><l:口語>
|ισπανικός<t:西班牙的><pos:adj>
|σπανιόλικος<t:西班牙的><pos:adj><l:口語>
|ισπανικά<t:西班牙語><g:n,p>
|σπανιόλικα<t:西班牙語><g:n,p><l:口語>
}}
===參見===
{{list:countries in Europe/el}}
{{cln|el|外名}}
8m86391pw15s0tmfw6d0vn5pjn8e4ec
ܐܣܦܢܝܐ
0
1709499
9787569
6341930
2026-05-24T17:48:34Z
TongcyDai
53191
9787569
wikitext
text/x-wiki
==亞述新亞拉姆語==
[[File:LocationSpain.png|thumb|175px|{{lang|ajp|ܐܸܣܦܵܢܝܼܵܐ}}]]
[[File:Flag of Spain.svg|thumb|130px|{{lang|ajp|ܐܵܬܵܐ ܕܐܸܦܣܵܢܝܼܵܐ}}]]
===替代形式===
* {{alter|aii|ܗܝܼܣܦܵܢܝܼܵܐ|tr1=hīspaniya}} {{qualifier|古舊}}
===詞源===
{{lbor|aii|syc|-}},源自{{der|aii|grc|Ἱσπανία}},源自{{der|aii|la|Hispānia}}。
===發音===
* {{IPA|aii|[ʔəs.paː.ni.jaː]}}
===專有名詞===
{{head|aii|專有名詞|g=f|head=ܐܸܣܦܵܢܝܼܵܐ|tr=ispaniya}}
# {{tcl|aii|西班牙|id=Q29}}
#* 羅馬書 15:24
#*: {{ux|aii|ܐܝܼܡܲܢ ܕܐܵܙܹܠ݇ܢ ܠ'''ܐܸܣܦܵܢܝܼܵܐ'''، ܒܵܥܹܝܢ ܕܐܵܬܹܝܢ ܠܟܸܣܠܵܘܟ݂ܘܿܢ. ܐܝܼܬ ܠܝܼ ܗܹܒ݂ܝܼ ܕܚܵܙܹܢܵܘܟ݂ܘܿܢ ܒܐܘܼܪܚܝܼ، ܘܡܲܦܫܸܛܝܼܬܘܿܢ ܠܝܼ ܠܬܵܡܵܐ، ܡ̣ܢ ܒܵܬܪ ܕܚܵܕܹܝܢ ܒܚܙܵܝܬܵܘܟ݂ܘܿܢ ܩܵܐ ܚܲܕ ܡܸܬܚܵܐ ܟܸܪܝܵܐ|就是說,當我去'''西班牙'''的時候,我希望能順路看你們;先與你們相聚,使我稍得滿足;然後由你們在那裡送我上路。}}
===名詞===
{{head|aii|名詞|g=m|head=ܐܸܣܦܵܢܵܝܵܐ|tr=ispanaya|}}
{{head|aii|名詞|g=f|head=ܐܸܣܦܵܢܵܝܬܵܐ|tr=ispanayta|}}
{{head|aii|名詞|g=p|head=ܐܸܣܦܵܢܵܝܹ̈ܐ|tr=ispanaye|}}
# [[西班牙人]]
# [[西班牙語]]
===形容詞===
{{head|aii|形容詞|g=m|head=ܐܸܣܦܵܢܵܝܵܐ|tr=ispanaya|}}
{{head|aii|形容詞|g=f|head=ܐܸܣܦܵܢܵܝܬܵܐ|tr=ispanayta|}}
{{head|aii|形容詞|g=p|head=ܐܸܣܦܵܢܵܝܹ̈ܐ|tr=ispanaye|}}
# [[西班牙]]的
====相關詞彙====
* {{l|aii|ܐܸܣܦܵܢܝܼܬ|tr=ispanīt|t=西班牙語}}
9v51s7oqxi2uejipa63yrvjqv305n8y
ესპანეთი
0
1709505
9787593
6341936
2026-05-24T17:57:43Z
TongcyDai
53191
9787593
wikitext
text/x-wiki
==格魯吉亞語==
{{wp|ka:}}
{{Wiktionary:圖片詞典/ka:map/Europe}}
===詞源===
源自{{suffix|ka|*ესპან|-ეთი}},源自{{der|ka|grc|Ἑσπᾱνῐ́ᾱ}}、{{m|grc|Ἱσπανία}}。代替了{{cog|oge|სპანიაჲ}}。
===發音===
* {{ka-IPA}}
* {{ka-hyphen}}
===專有名詞===
{{ka-proper noun}}
# {{tcl|ka|西班牙|id=Q29}}
====變格====
{{ka-decl-noun|-}}
====相關詞彙====
* {{l|ka|ესპანური}}
* {{l|ka|ესპანელი}}
* {{l|ka|ესპანური ენა}}
{{cln|ka|含有後綴-ეთი的詞}}
rb650f1cxbzxfflhqjc8qeg08vqm7qm
Espay
0
1767625
9787599
7075011
2026-05-24T17:59:24Z
TongcyDai
53191
9787599
wikitext
text/x-wiki
==海地克里奧爾語==
===詞源===
源自{{der|ht|fr|Espagne}}。
===發音===
* {{IPA|ht|/espaj/}}
===專有名詞===
{{head|ht|專有名詞}}
# {{tcl|ht|西班牙|id=Q29}}
====相關詞彙====
* {{l|ht|panyòl}}
0gx9ru08n4wwogjunqwwkn1j3unuvi3
স্পেইন
0
1776269
9787571
9533595
2026-05-24T17:50:17Z
TongcyDai
53191
9787571
wikitext
text/x-wiki
==阿薩姆語==
{{wp|as:}}
===其他形式===
*{{l|as|ইস্পেইন}}
===詞源===
{{bor+|as|en|西班牙}}。
===專有名詞===
{{as-prpn}}
# {{tcl|as|西班牙|id=Q29}}
====變格====
{{as-proper noun-onoun-o|spein}}
===參見===
{{list:countries in Europe/as}}
sqncm7a78hjwfgu2mwo3efzmqdcwhnz
Ispania
0
1778469
9787628
7658671
2026-05-24T18:06:35Z
TongcyDai
53191
9787628
wikitext
text/x-wiki
{{also|Իսպանիա}}
==阿羅馬尼亞語==
{{wp|rup:}}
===專有名詞===
{{head|rup|專有名詞|g=f}}
# {{tcl|rup|西班牙|id=Q29}}
====近義詞====
* {{l|rup|Vãsilia di Ispania}}
==古英語==
{{Wiktionary:圖片詞典/ang:map/Europe}}
{{wp|ang:}}
===詞源===
{{bor+|ang|la|Hispānia}}。
===發音===
* {{ang-IPA|I-spānia}}
===專有名詞===
{{ang-proper noun|f|head=Ispānia}}
# {{tcl|ang|西班牙|id=Q29}}
# [[伊比利亞半島]]
====變格====
{{ang-decl-noun|type=indeclinable|Ispānia||Ispānia||Ispānia||Ispānia|}}
====派生詞彙====
* {{l|ang|Ispānisċ}}
===參考資料===
* {{R:ang:BT|Ispania|ref=020833}}
4pjxzfcbx1sxrbuem3em4v7dx5zaws4
postulas
0
1785604
9788195
7097982
2026-05-25T02:03:29Z
Sayonzei
40728
/* 世界語 */
9788195
wikitext
text/x-wiki
{{also|postulás}}
==世界語==
===發音===
{{eo-pr}}
===動詞===
{{eo-head}}
# {{eo-form of|postul|as}}
==法語==
===發音===
* {{fr-IPA|pos=v}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|postuler||2|s|phis}}
==拉丁語==
===發音===
* {{la-IPA|postulās}}
===動詞===
{{head|la|動詞變位形式|head=postulās}}
# {{inflection of|la|postulō||2|s|pres|actv|indc}}
==葡萄牙語==
===發音===
{{pt-IPA}}
* {{rhymes|pt|ulɐs|ulɐʃ|s=3}}
* {{hyph|pt|pos|tu|las}}
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|postular}}
==西班牙語==
===發音===
{{es-pr}}
===動詞===
{{head|es|動詞變位形式}}
# {{es-verb form of|postular}}
p2lit22w0yw5zjrwvd2bksik110ifn2
Іспанія
0
1806403
9787535
7123194
2026-05-24T17:40:33Z
TongcyDai
53191
9787535
wikitext
text/x-wiki
{{also|Испанія|Испания}}
==白俄羅斯語==
{{wp|be:}}
===其他形式===
* {{alter|be|Гішпа́нія||Taraškievica}}
===發音===
* {{be-IPA|Іспа́нія}}
===專有名詞===
{{be-proper noun|Іспа́нія<sg>|adj=іспа́нскі}}
# {{tcl|be|西班牙|id=Q29}}
====變格====
{{be-ndecl|Іспа́нія<sg>}}
===參見===
* {{l|be|іспа́нец}}、{{l|be|іспа́нка}}
* {{l|be|іспа́нскі}}
==盧森尼亞語==
{{wp|rue:}}
===專有名詞===
{{head|rue|專有名詞|g=n|head=Іспа́нія}}
# {{place|rue|國家|cont/歐洲|t=Spain}}
====相關詞彙====
* {{l|rue|іспанськый}}
==烏克蘭語==
{{Wiktionary:圖片詞典/uk:map/Europe}}
{{wp|uk:}}
===其他形式===
* {{alter|uk|Гишпа́нія||過時}}
* {{alter|uk|Еспа́нія||1928-1933 spelling}}
===詞源===
{{bor+|uk|la|Hispānia}}
===發音===
* {{uk-IPA|Іспа́нія}}
* {{audio|uk|LL-Q8798 (ukr)-Tohaomg-Іспанія.wav}}
* {{hyphenation|uk|Іспа|нія}}
===專有名詞===
{{uk-proper noun|Іспа́нія<sg>|adj=іспа́нський|dem=іспане́ць|fdem=іспа́нка}}
# {{tcl|uk|西班牙|id=Q29|place_official=Королі́вство Іспа́нія}}
====變格====
{{uk-ndecl|Іспа́нія<sg>}}
===參見===
* {{l|uk|іспа́нець}}、{{l|uk|іспа́нка}}
* {{l|uk|іспа́нський}}
{{list:countries in Europe/uk}}
===參考資料===
* {{R:uk:Horokh}}
6c5i5kz0u1nvalvjbmcbhg22ajaqq4v
9787641
9787535
2026-05-24T18:11:51Z
TongcyDai
53191
9787641
wikitext
text/x-wiki
{{also|Испанія|Испания}}
==白俄羅斯語==
{{wp|be:}}
===其他形式===
* {{alter|be|Гішпа́нія||Taraškievica}}
===發音===
* {{be-IPA|Іспа́нія}}
===專有名詞===
{{be-proper noun|Іспа́нія<sg>|adj=іспа́нскі}}
# {{tcl|be|西班牙|id=Q29}}
====變格====
{{be-ndecl|Іспа́нія<sg>}}
===參見===
* {{l|be|іспа́нец}}、{{l|be|іспа́нка}}
* {{l|be|іспа́нскі}}
==盧森尼亞語==
{{wp|rue:}}
===專有名詞===
{{head|rue|專有名詞|g=n|head=Іспа́нія}}
# {{tcl|rue|西班牙|id=Q29}}
====相關詞彙====
* {{l|rue|іспанськый}}
==烏克蘭語==
{{Wiktionary:圖片詞典/uk:map/Europe}}
{{wp|uk:}}
===其他形式===
* {{alter|uk|Гишпа́нія||過時}}
* {{alter|uk|Еспа́нія||1928-1933 spelling}}
===詞源===
{{bor+|uk|la|Hispānia}}
===發音===
* {{uk-IPA|Іспа́нія}}
* {{audio|uk|LL-Q8798 (ukr)-Tohaomg-Іспанія.wav}}
* {{hyphenation|uk|Іспа|нія}}
===專有名詞===
{{uk-proper noun|Іспа́нія<sg>|adj=іспа́нський|dem=іспане́ць|fdem=іспа́нка}}
# {{tcl|uk|西班牙|id=Q29|place_official=Королі́вство Іспа́нія}}
====變格====
{{uk-ndecl|Іспа́нія<sg>}}
===參見===
* {{l|uk|іспа́нець}}、{{l|uk|іспа́нка}}
* {{l|uk|іспа́нський}}
{{list:countries in Europe/uk}}
===參考資料===
* {{R:uk:Horokh}}
2wldd5tnhz78boskx0tn646x096d5rg
Испания
0
1817847
9787530
9535319
2026-05-24T17:39:17Z
TongcyDai
53191
9787530
wikitext
text/x-wiki
{{also|Испанія|Іспанія}}
==保加利亞語==
{{wp|bg:}}
[[File:Escudo de España ajunstado a la norma heráldica.svg|thumb|Испания]]
===發音===
* {{bg-pr|Испа́ния|a=[KK]}}
===專有名詞===
{{bg-proper noun|Испа́ния|f|adj=испа́нски|dem=испа́нец|fdem=испа́нка}}
# {{tcl|bg|西班牙|id=Q29}}
====屈折====
{{bg-ndecl|Испа́ния<(v)/n:sg>}}
====派生詞彙====
{{col|bg|title=形容詞|испа́нски}}
{{col|bg|title=名詞|испа́нец|испа́нка|испа́нски|испа́нче}}
===參見===
{{list:countries in Europe/bg}}
===參考資料===
* {{R:bg:LexIt}}
* {{R:bg:PONS}}
* {{R:bg:RBE}}
===異序詞===
* {{anagrams|bg|a=аиинпся|писания|сипания}}
==哈薩克語==
{{kk-alt}}
{{wp|kk:}}
===發音===
* {{IPA|kk|[ɪˈspanʲɪjə]}}
===專有名詞===
{{kk-proper noun}}
# {{tcl|kk|西班牙|id=Q29}}
==俄語==
{{wp|ru:}}
===其他形式===
* {{alter|ru|Испа́нія||ru-PRO}}
* {{alter|ru|Гишпа́ния|q=dated}}
* {{alter|ru|Гишпа́нія|q=dated||ru-PRO}}
===發音===
* {{IPA|ru|[ɪˈspanʲɪjɐ]}}
* {{audio|ru|Ru-Испания.ogg}}
* {{rhymes|ru|anʲɪja|s=4}}
===專有名詞===
{{ru-proper noun+|Испа́ния|adj=испа́нский}}
# {{tcl|ru|西班牙|id=Q29}}
====變格====
{{ru-noun-table|Испа́ния|n=sg}}
====相關詞彙====
* {{l|ru|испа́нец}}、{{l|ru|испа́нка}}
* {{l|ru|испа́нский}}
====派生語彙====
* {{desc|hy|Իսպանիա|bor=1}}
* {{desc|mn|der=1}}
** {{desc|mn|Испани|sclang=1}}
** {{desc|mn|ᠢᠰᠫᠠᠨ᠋ᠢ|sclang=1}}
* {{desc|tg|Испания|bor=1}}
===參見===
{{list:countries in Europe/ru}}
{{cln|ru|外名}}
==塔吉克語==
{{wp|tg:}}
{{Wiktionary:圖片詞典/tg:map/Europe}}
===詞源===
{{bor+|tg|ru|Испания}}。
===發音===
{{tg-IPA}}
===專有名詞===
{{tg-proper noun}}
# {{tcl|tg|西班牙|id=Q29}}
===延伸閱讀===
* {{R:tg:Vozhaju}}
bs7yj80snmczof0mbk4hphbpe2igkz6
Hispaania
0
1864435
9787568
9293881
2026-05-24T17:48:08Z
TongcyDai
53191
9787568
wikitext
text/x-wiki
{{also|hispaania}}
==愛沙尼亞語==
{{wp|et:}}
===詞源===
源自{{der|et|la|Hispānia}}。
===發音===
* {{et-IPA|hisˈpaania}}
* {{rhymes|et|ɑːniɑ|s=3}}
* {{hyph|et|His|paa|nia}}
===專有名詞===
{{et-proper noun|Hispaania|Hispaaniat}}
# {{tcl|et|西班牙|id=Q29}}
====變格====
{{et-decl-ohutu|Hispaania|n=sg}}
===參見===
{{list:countries in Europe/et}}
===參考資料===
* {{R:Sõnaveeb}}
* {{R:et:EKSS}}
ecqfcy8rvpqzivz8nmcm5kmwxf96ehr
外送茶
0
1886090
9787455
9054336
2026-05-24T14:13:39Z
~2026-31146-33
133539
9787455
wikitext
text/x-wiki
==漢語==
{{zh-forms|type=21}}
===發音===
{{zh-pron
|m=wàisòngchá
|cat=n
}}
===名詞===
{{head|zh|名詞}}
# {{lb|zh|euphemistic|Taiwan}} 到家裡或指定場所提供[[性服務]]的[[性工作者]]
#* {{zh-x|一般來說,「茶」泛指 與 經紀 公司、經紀人 合作,非 個體戶 的 性工作者。「茶行」指 的 是 應召 站,「外送茶」意味 性交易 不在 店 裡 進行||ref='''2021年'''5月20日,陶曉嫚,[https://web.archive.org/web/20210531102601/https://theinitium.com/article/20210520-taiwan-sexy-tea-covid19 一杯台灣的Sexy Tea:「茶室」裡究竟喝的是什麼茶?] }}
#* {{zh-x|女 網友 回家 和 家人 去 掃墓,沒想到 前 男友 居然 背 著 她 偷 叫 外送茶||ref='''2018年'''4月10日,東森新聞,[https://news.ebc.net.tw/news/article/107359 趁掃墓…男友叫3千元外送茶!她怒放生 自爆超猛「酒店過往」]}}
{{zh-cat|賣淫}}
123
eljky34fzcm11xr0aznk1klcuv91mnv
9788109
9787455
2026-05-24T19:55:20Z
TongcyDai
53191
取消[[Special:Contributions/~2026-31146-33|~2026-31146-33]] ([[User talk:~2026-31146-33|对话]])的编辑;更改回[[Special:Contributions/Fglffer|Fglffer]]的最后一个版本
9054336
wikitext
text/x-wiki
==漢語==
{{zh-forms|type=21}}
===發音===
{{zh-pron
|m=wàisòngchá
|cat=n
}}
===名詞===
{{head|zh|名詞}}
# {{lb|zh|euphemistic|Taiwan}} 到家裡或指定場所提供[[性服務]]的[[性工作者]]
#* {{zh-x|一般來說,「茶」泛指 與 經紀 公司、經紀人 合作,非 個體戶 的 性工作者。「茶行」指 的 是 應召 站,「外送茶」意味 性交易 不在 店 裡 進行||ref='''2021年'''5月20日,陶曉嫚,[https://web.archive.org/web/20210531102601/https://theinitium.com/article/20210520-taiwan-sexy-tea-covid19 一杯台灣的Sexy Tea:「茶室」裡究竟喝的是什麼茶?] }}
#* {{zh-x|女 網友 回家 和 家人 去 掃墓,沒想到 前 男友 居然 背 著 她 偷 叫 外送茶||ref='''2018年'''4月10日,東森新聞,[https://news.ebc.net.tw/news/article/107359 趁掃墓…男友叫3千元外送茶!她怒放生 自爆超猛「酒店過往」]}}
{{zh-cat|賣淫}}
g6z439x7svfb42eon8vgz8yzs957jty
9788110
9788109
2026-05-24T19:56:32Z
TongcyDai
53191
9788110
wikitext
text/x-wiki
==漢語==
{{zh-forms|type=21}}
===發音===
{{zh-pron
|m=wàisòngchá
|cat=n
}}
===名詞===
{{head|zh|名詞}}
# {{lb|zh|euphemistic|Taiwan}} 到家裡或指定場所提供[[性服務]]的[[性工作者]]
#* {{zh-x|一般來說,「茶」泛指 與 經紀 公司、經紀人 合作,非 個體戶 的 性工作者。「茶行{háng}」指 的 是 應召 站,「外送茶」意味 性交易 不在 店 裡 進行||ref='''2021年'''5月20日,陶曉嫚,[https://web.archive.org/web/20210531102601/https://theinitium.com/article/20210520-taiwan-sexy-tea-covid19 一杯台灣的Sexy Tea:「茶室」裡究竟喝的是什麼茶?] }}
#* {{zh-x|女 網友 回家 和 家人 去 掃墓,沒想到 前 男友 居然 背 著 她 偷 叫 外送茶||ref='''2018年'''4月10日,東森新聞,[https://news.ebc.net.tw/news/article/107359 趁掃墓…男友叫3千元外送茶!她怒放生 自爆超猛「酒店過往」]}}
{{C|zh|賣淫}}
4chrmm8bs4qz4pv6od2nd43xcw5torz
Template:R:sla:Lauchute
10
1892226
9787425
7237142
2026-05-24T13:18:22Z
TongcyDai
53191
9787425
wikitext
text/x-wiki
{{#invoke:quote|call_template
|template=cite-book
|ru
|last=Лаучюте
|first=Ю. А.
|authorlink=lt:Jūratė Sofija Laučiūtė
|title=Словарь балтизмов в славянских языках
|trans-title=斯拉夫語中的波羅的語族詞彙詞典
|entry={{{1|}}}
|location=Leningrad
|publisher=Nauka
|year=1982
|pageparam=page
|allowparams=1
}}<noinclude>{{refcat|be|ru|uk|pl|cs|lv|lt|prg}}</noinclude>
buzjnv0dghwuohv3xp4n7o29pyigazl
Template:R:lt:DŽ
10
1991370
9787420
9381058
2026-05-24T13:11:46Z
TongcyDai
53191
9787420
wikitext
text/x-wiki
{{#invoke:quote|call_template
|template=cite-web
|entryurl=https://ekalba.lt/dabartines-lietuviu-kalbos-zodynas/?paieska={{urlencode:{{{1|{{pagename}}}}}}}
|entry={{lang|lt|{{{2|{{{1|{{pagename}}}}}}}}}}
|work=Dabartinės lietuvių kalbos žodynas
|trans-work=當代立陶宛語詞典
|year=1954–{{CURRENTYEAR}}
|publisher=ekalba.lt
|allowparams=1,2
}}<noinclude>{{reference template cat|lt}}{{documentation}}</noinclude>
180m8o7wiysys1p21gzmwsxbyatxrzm
盲盒
0
1997117
9788493
7459942
2026-05-25T06:40:26Z
Fglffer
55252
9788493
wikitext
text/x-wiki
==漢語==
{{zh-forms}}
===發音===
{{zh-pron
|m=mánghé
|c=maang4 hap6-2
|mn-t=mang5 ab8
|cat=n
}}
===名詞===
{{head|zh|名詞}}
# {{lb|zh|countable}} [[消費者]]不能提前得知[[具體]][[產品]][[款式]]的[[隨機]]盒裝[[商品]]{{zh-mw|m:個}}
====翻譯====
{{trans-top|隨機盒裝商品}}
* 英語:{{t+|en|blind box}}
* 芬蘭語:{{t+|fi|yllätyslaatikko}}
* 法語:{{t|fr|boîte aveugle|f}}
* 泰語:{{t|th|กล่องสุ่ม}}
{{trans-bottom}}
dtpulc262e7zflu5wm7y1042r5tafm9
Template:Lez-noun
10
2040643
9787416
7421205
2026-05-24T13:00:43Z
Hiyuune
119685
9787416
wikitext
text/x-wiki
<includeonly><onlyinclude>{{safesubst:<noinclude/>#invoke:cau-nec-headword|show|lez|名詞}}</onlyinclude>
</includeonly>{{lez-noun}}{{documentation}}
2i35fu6u0esjdy0qmoqgnczwg3pm9c9
Španjolska
0
2068730
9787644
9360065
2026-05-24T18:14:25Z
TongcyDai
53191
9787644
wikitext
text/x-wiki
==塞爾維亞-克羅地亞語==
{{wp|sh:,hr:}}
===詞源===
源自 {{af|sh|it:spagnolo|-skā}}。
===發音===
* {{IPA|sh|/ʃpǎɲoːlskaː/}}
* {{hyph|sh|Špa|njol|ska}}
===專有名詞===
{{sh-propn|Špànjōlskā|f}}
# {{lb|sh|克羅地亞}} {{tcl|sh|西班牙|id=Q29}}
#: {{uxi|sh|'''Španjolska''' se nalazi u neodgovarajućoj vremenskoj zoni.|'''西班牙'''位處不合適的時區。}}
====變格====
{{sh-decl-noun-unc
|Špànjōlskā
|Španjolske
|Špànjōlskōj
|Španjolsku
|Španjolska
|Špànjōlskōj
|Španjolskom
}}
====近義詞====
* {{l|sh|Špȃnija}} {{qualifier|Bosnian|Serbian}}
===參考資料===
* {{R:sh:HJP|d1diXxQ%3D}}
t4gltj7i705nf6pyu2spllatbksa7gu
9787645
9787644
2026-05-24T18:14:38Z
TongcyDai
53191
9787645
wikitext
text/x-wiki
==塞爾維亞-克羅地亞語==
{{wp|sh:,hr:}}
===詞源===
源自 {{af|sh|it:spagnolo|-skā}}。
===發音===
* {{IPA|sh|/ʃpǎɲoːlskaː/}}
* {{hyph|sh|Špa|njol|ska}}
===專有名詞===
{{sh-propn|Špànjōlskā|f}}
# {{lb|sh|克羅地亞}} {{tcl|sh|西班牙|id=Q29}}
#: {{uxi|sh|'''Španjolska''' se nalazi u neodgovarajućoj vremenskoj zoni.|'''西班牙'''位處不合適的時區。}}
====變格====
{{sh-decl-noun-unc
|Špànjōlskā
|Španjolske
|Špànjōlskōj
|Španjolsku
|Španjolska
|Špànjōlskōj
|Španjolskom
}}
====近義詞====
* {{l|sh|Špȃnija}} {{qualifier|波士尼亞|塞爾維亞}}
===參考資料===
* {{R:sh:HJP|d1diXxQ%3D}}
t1s6whnmocc0amu4o637p97ctg6752b
9787646
9787645
2026-05-24T18:14:46Z
TongcyDai
53191
9787646
wikitext
text/x-wiki
==塞爾維亞-克羅地亞語==
{{wp|sh:,hr:}}
===詞源===
源自{{af|sh|it:spagnolo|-skā}}。
===發音===
* {{IPA|sh|/ʃpǎɲoːlskaː/}}
* {{hyph|sh|Špa|njol|ska}}
===專有名詞===
{{sh-propn|Špànjōlskā|f}}
# {{lb|sh|克羅地亞}} {{tcl|sh|西班牙|id=Q29}}
#: {{uxi|sh|'''Španjolska''' se nalazi u neodgovarajućoj vremenskoj zoni.|'''西班牙'''位處不合適的時區。}}
====變格====
{{sh-decl-noun-unc
|Špànjōlskā
|Španjolske
|Špànjōlskōj
|Španjolsku
|Španjolska
|Špànjōlskōj
|Španjolskom
}}
====近義詞====
* {{l|sh|Špȃnija}} {{qualifier|波士尼亞|塞爾維亞}}
===參考資料===
* {{R:sh:HJP|d1diXxQ%3D}}
5jfbxnu3krndx4coszgwmehn9ai1eq3
Španija
0
2068731
9787643
9360085
2026-05-24T18:13:59Z
TongcyDai
53191
9787643
wikitext
text/x-wiki
{{also|Spānija|Spānijā}}
==塞爾維亞-克羅地亞語==
{{wp|sh:,sr:,bs:}}
===詞源===
{{bor+|sh|de|Spanien}}。
===發音===
* {{IPA|sh|/ʃpâːnija/}}
* {{hyph|sh|Špa|ni|ja}}
* {{rhymes|sh|ija|s=3}}
===專有名詞===
{{sh-propn|Špȃnija|f|adj=špȃnskī|dem=Špánac|fdem=Špȃnkinja}}
# {{lb|sh|Bosnia|塞爾維亞}} {{tcl|sh|西班牙|id=Q29}}
#: {{uxi|sh|'''Španija''' se nalazi u neodgovarajućoj vremenskoj zoni.|'''西班牙'''位處不合適的時區。}}
====變格====
{{sh-decl-noun-unc
|Španija
|Španije
|Španiji
|Španiju
|Španijo
|Španiji
|Španijom
}}
====近義詞====
* {{l|sh|Špànjōlskā}} {{qualifier|克羅地亞}}
==斯洛文尼亞語==
{{wp|sl:}}
===發音===
* {{sl-IPA|Špánija}}
===專有名詞===
{{sl-proper noun|Špánija|f}}
# {{tcl|sl|西班牙|id=Q29}}
====變格====
{{sl-decl-noun-f|Špánij|n=sg}}
====相關詞彙====
* {{l|sl|Špȃnec}}、{{l|sl|Špȃnka}}
* {{l|sl|špȃnski}}
* {{l|sl|špȃnščina}}
===參見===
{{list:countries in Europe/sl}}
===延伸閱讀===
{{R:sl:FR}}
s3zpssqi0llr9w6qxt5x9l6iqkd8xy2
Шпањолска
0
2068732
9787625
9360074
2026-05-24T18:05:26Z
TongcyDai
53191
9787625
wikitext
text/x-wiki
==塞爾維亞-克羅地亞語==
{{wp|sh:}}
===詞源===
源自 {{af|sh|it:spagnolo|-ска}}。
===發音===
* {{IPA|sh|/ʃpǎɲoːlskaː/}}
* {{hyph|sh|Шпа|њол|ска}}
===專有名詞===
{{sh-propn|Шпа̀њо̄лска̄|f}}
# {{lb|sh|克羅地亞}} {{tcl|sh|西班牙|id=Q29}}
#: {{uxi|sh|'''Шпањолска''' се налази у неодговарајућој временској зони.|'''西班牙'''位於不合適的時區。}}
====變格====
{{sh-decl-noun-unc
|Шпа̀њо̄лска̄
|Шпањолске
|Шпа̀њо̄лско̄ј
|Шпањолску
|Шпањолска
|Шпа̀њо̄лско̄ј
|Шпањолском
}}
====近義詞====
* {{l|sh|Шпа̑нија}} {{qualifier|Bosnian|Serbian}}
===參考資料===
* {{R:sh:HJP|d1diXxQ%3D}}
3n7uhe81s0d8sp70aqgzyvov9xey69z
9787627
9787625
2026-05-24T18:05:36Z
TongcyDai
53191
9787627
wikitext
text/x-wiki
==塞爾維亞-克羅地亞語==
{{wp|sh:}}
===詞源===
源自{{af|sh|it:spagnolo|-ска}}。
===發音===
* {{IPA|sh|/ʃpǎɲoːlskaː/}}
* {{hyph|sh|Шпа|њол|ска}}
===專有名詞===
{{sh-propn|Шпа̀њо̄лска̄|f}}
# {{lb|sh|克羅地亞}} {{tcl|sh|西班牙|id=Q29}}
#: {{uxi|sh|'''Шпањолска''' се налази у неодговарајућој временској зони.|'''西班牙'''位於不合適的時區。}}
====變格====
{{sh-decl-noun-unc
|Шпа̀њо̄лска̄
|Шпањолске
|Шпа̀њо̄лско̄ј
|Шпањолску
|Шпањолска
|Шпа̀њо̄лско̄ј
|Шпањолском
}}
====近義詞====
* {{l|sh|Шпа̑нија}} {{qualifier|Bosnian|Serbian}}
===參考資料===
* {{R:sh:HJP|d1diXxQ%3D}}
aonqbcvqqgzyc2liywzztffwwfj7o6v
Spania
0
2069240
9787651
7669482
2026-05-24T18:17:49Z
TongcyDai
53191
9787651
wikitext
text/x-wiki
{{also|Spánia}}
==跨语言==
===词源===
{{rfe|mul}}
===专有名词===
{{taxoninfl|i=1|g=f}}
# {{taxon|屬|鷸虻|科|[[鷸虻]]}}
====上义词====
* {{sense|屬}} {{Diptera Hypernyms}}; [[Brachycera]] - 亞目; {{taxlink|Tabanomorpha|infraorder|ver=190504}} - 下目; {{taxlink|Rhagionoidea|superfamily|ver=190504}} - 總科; [[Rhagionidae]] - 科; {{taxlink|Rhagioninae|tribe}} - 族
===参见===
* {{taxlink|Rhagio|genus}}
===参考资料===
* {{pedia|lang=en|Spania (genus)|''Spania'' (genus)}}
* {{specieslite|Spaniinae}}
* {{comcatlite|Genera of Rhagionidae}}
==法羅語==
{{wp|fo:}}
===詞源===
最终源自{{der|fo|la|Hispānia}}。
===專有名詞===
{{head|fo|專有名詞|g=n}}
# {{tcl|fo|西班牙|id=Q29}}
====相關詞彙====
* {{l|fo|spaniari}}、{{l|fo|spanióli||西班牙人}}
* {{l|fo|spanskur||西班牙語}}
==格陵蘭語==
===詞源===
最终源自{{der|kl|la|Hispānia}}。
===專有名詞===
{{head|kl|專有名詞}}
# {{tcl|kl|西班牙|id=Q29}}
==拉丁語==
===發音===
* {{la-IPA|Spānia}}
===專有名詞===
{{la-proper noun|Spānia<1>}}
# {{lb|la|Medieval Latin}} {{alternative spelling of|la|Hispānia}}
====變格====
{{la-ndecl|Spānia<1>}}
==書面挪威語==
{{wp|no:}}
===詞源===
最终源自{{der|nb|la|Hispānia}}。
===專有名詞===
{{head|nb|專有名詞}}
# {{tcl|nb|西班牙|id=Q29}}
====相關詞彙====
* {{l|nb|spanjol}}、{{l|nb|spanier}}
* {{l|nb|spansk}}
==新挪威語==
{{wp|nn:}}
[[File:Flag of Spain.svg|thumb|160px|Flag of Spain]]
===詞源===
最终源自{{der|nn|la|Hispānia}}。
===專有名詞===
{{head|nn|專有名詞}}
# {{tcl|nn|西班牙|id=Q29}}
====相關詞彙====
* {{l|nn|spanjol}}、{{l|nn|spaniar}}
* {{l|nn|spansk}}
==古高地德語==
===其他形式===
* {{alt|goh|Spanna}}
===詞源===
{{etymon|goh|:bor|la:Hispānia<id:伊比利亞半島>|id=伊比利亞半島|text=+}}
===專有名詞===
{{head|goh|專有名詞|g=f|head=Spānia}}
# {{place|goh|半島|r/南歐|t=伊比利亞半島|t2=伊比利半島}}
====派生語彙====
* {{desctree|gmh|Spāne}}
===參考資料===
* {{R:goh:Kobler|Spania}}
==羅馬尼亞語==
{{wp|ro:}}
===詞源===
源自{{der|ro|es|España}} or {{der|ro|it|Spagna}}, see there for more information.
===發音===
* {{IPA|ro|[ˈspa.ni.a]}}
* {{audio|ro|LL-Q7913 (ron)-KlaudiuMihaila-Spania.wav}}
===專有名詞===
{{ro-proper noun|f}}
# {{tcl|ro|西班牙|id=Q29}}
====變格====
{{ro-noun-f-ie|Spani|n=sg}}
====相關詞彙====
* {{l|ro|spaniol}}
* {{l|ro|spaniolă}}
* {{l|ro|spaniolesc}}
===參見===
{{list:countries in Europe/ro}}
78h1tdh679y1xn5jphoxmy1v6r1eqcp
9787659
9787651
2026-05-24T18:20:51Z
TongcyDai
53191
9787659
wikitext
text/x-wiki
{{also|Spánia}}
==跨语言==
===词源===
{{rfe|mul}}
===专有名词===
{{taxoninfl|i=1|g=f}}
# {{taxon|屬|鷸虻|科|[[鷸虻]]}}
====上义词====
* {{sense|屬}} {{Diptera Hypernyms}}; [[Brachycera]] - 亞目; {{taxlink|Tabanomorpha|infraorder|ver=190504}} - 下目; {{taxlink|Rhagionoidea|superfamily|ver=190504}} - 總科; [[Rhagionidae]] - 科; {{taxlink|Rhagioninae|tribe}} - 族
===参见===
* {{taxlink|Rhagio|genus}}
===参考资料===
* {{pedia|lang=en|Spania (genus)|''Spania'' (genus)}}
* {{specieslite|Spaniinae}}
* {{comcatlite|Genera of Rhagionidae}}
==法羅語==
{{wp|fo:}}
===詞源===
最终源自{{der|fo|la|Hispānia}}。
===專有名詞===
{{head|fo|專有名詞|g=n}}
# {{tcl|fo|西班牙|id=Q29}}
====相關詞彙====
* {{l|fo|spaniari}}、{{l|fo|spanióli||西班牙人}}
* {{l|fo|spanskur||西班牙語}}
==格陵蘭語==
===詞源===
最终源自{{der|kl|la|Hispānia}}。
===專有名詞===
{{head|kl|專有名詞}}
# {{tcl|kl|西班牙|id=Q29}}
==拉丁語==
===發音===
* {{la-IPA|Spānia}}
===專有名詞===
{{la-proper noun|Spānia<1>}}
# {{lb|la|Medieval Latin}} {{alternative spelling of|la|Hispānia}}
====變格====
{{la-ndecl|Spānia<1>}}
==書面挪威語==
{{wp|no:}}
===詞源===
最终源自{{der|nb|la|Hispānia}}。
===專有名詞===
{{head|nb|專有名詞}}
# {{tcl|nb|西班牙|id=Q29}}
====相關詞彙====
* {{l|nb|spanjol}}、{{l|nb|spanier}}
* {{l|nb|spansk}}
==新挪威語==
{{wp|nn:}}
[[File:Flag of Spain.svg|thumb|160px|Flag of Spain]]
===詞源===
最终源自{{der|nn|la|Hispānia}}。
===專有名詞===
{{head|nn|專有名詞}}
# {{tcl|nn|西班牙|id=Q29}}
====相關詞彙====
* {{l|nn|spanjol}}、{{l|nn|spaniar}}
* {{l|nn|spansk}}
==古高地德語==
===其他形式===
* {{alt|goh|Spanna}}
===詞源===
{{etymon|goh|:bor|la:Hispānia<id:伊比利亞半島>|id=伊比利亞半島|text=+}}
===專有名詞===
{{head|goh|專有名詞|g=f|head=Spānia}}
# {{place|goh|半島|r/南歐|t=伊比利亞半島|t2=伊比利半島}}
====派生語彙====
* {{desctree|gmh|Spāne}}
===參考資料===
* {{R:goh:Kobler|Spania}}
==羅馬尼亞語==
{{wp|ro:}}
===詞源===
源自{{der|ro|es|España}} 或{{der|ro|it|Spagna}}。
===發音===
* {{IPA|ro|[ˈspa.ni.a]}}
* {{audio|ro|LL-Q7913 (ron)-KlaudiuMihaila-Spania.wav}}
===專有名詞===
{{ro-proper noun|f}}
# {{tcl|ro|西班牙|id=Q29}}
====變格====
{{ro-noun-f-ie|Spani|n=sg}}
====相關詞彙====
* {{l|ro|spaniol}}
* {{l|ro|spaniolă}}
* {{l|ro|spaniolesc}}
===參見===
{{list:countries in Europe/ro}}
2xxws5q399mz24w0dfd2fbfk1ezq9w1
Spánia
0
2069244
9787621
7468866
2026-05-24T18:04:19Z
TongcyDai
53191
9787621
wikitext
text/x-wiki
{{also|Spania}}
==北萨米语==
===发音===
{{rfp|se}}
===专有名词===
{{head|se|專有名詞}}
# {{tcl|se|西班牙|id=Q29}}
====延伸阅读====
* {{R:Álgu|}}
n8xzlnxiwqzmr00yt3hlfoofkz67e61
Čechy
0
2069418
9788502
8994662
2026-05-25T07:38:42Z
Chihunglu83
87715
/* 發音 */
9788502
wikitext
text/x-wiki
{{also|cechy}}
==捷克語==
{{wikipedia|lang=cs}}
===詞源===
{{rfe|cs}}
===發音===
* {{cs-IPA}}
* {{audio|cs|LL-Q9056 (ces)-Ghost4Man-{{PAGENAME}}.wav}}
===專有名詞===
{{cs-proper noun|f-p}}
# [[波希米亞]]
# {{lb|cs|口語}} [[捷克共和國]]
====變格====
{{cs-ndecl|f.pl}}
====參見====
* {{l|cs|Česko}}
===名詞===
{{head|cs|名詞變格形}}
# {{inflection of|cs|Čech||acc//ins|p}}
===延伸閱讀===
* {{R:PSJC}}
* {{R:SSJC}}
==斯洛伐克語==
{{wikipedia|lang=sk}}
===發音===
* {{sk-IPA}}
===專有名詞===
{{sk-proper noun|f-p|gen=Čiech|decl=žena}}
# [[波希米亞]]
# [[捷克共和國]]
====變格====
{{sk-decl-noun-pl|Čechy|Čiech|Čechám|Čechy|Čechách|Čechami}}
====相關詞彙====
{{col3|sk|title=形容詞|český}}
{{col3|sk|title=名詞|Čech|Česko|Češka|čeština|Československo}}
===參考資料===
* {{R:SDK}}
tcy59pymc27no2ofql21vrm2cmzm9ih
Template:R:lt:ALEW
10
2089708
9787418
7499358
2026-05-24T13:07:01Z
TongcyDai
53191
9787418
wikitext
text/x-wiki
{{#invoke:checkparams|error}}<!-- Validate template parameters
-->“<span lang="lt">[https://alew.hu-berlin.de/dict/{{{id|{{{2}}}}}} {{{head|{{{1|{{pagename}}}}}}}}]</span>” <!--
-->in Hock et al., ''Altlitauisches etymologisches Wörterbuch 2.0'' [古立陶宛語詞源詞典] (online, 2020–)<!--
-->{{#if:{{{p1.0|<noinclude>42</noinclude>}}}|<nowiki>;</nowiki> p. {{{p1.0|<noinclude>42</noinclude>}}} in ''ALEW'' {{#if:{{{v1.0|}}}|vol. {{{v1.0}}}|}} ({{ISBN|9783935536745}}, 2015)|}}<!--
-->{{#if:{{{p1.1|<noinclude>42</noinclude>}}}|<nowiki>;</nowiki> p. {{{p1.1|<noinclude>42</noinclude>}}} in ''[https://edoc.hu-berlin.de/handle/18452/20614?locale-attribute=en ALEW 1.1]'' (online, 2019)|}}<!--
-->{{#if:{{{passage|{{{quote|<noinclude>passage example</noinclude>}}}}}}|<nowiki>:</nowiki> “{{{passage|{{{quote|<noinclude>passage example</noinclude>}}}}}}”|}}.<noinclude>
{{documentation}}{{refcat|olt|lt}}
</noinclude>
eqn4lwnfbk07fu4dts1lai7bjquawcd
User:Sayonzei/Kotori
2
2129326
9788144
9786626
2026-05-24T20:19:14Z
TongcyDai
53191
9788144
wikitext
text/x-wiki
精製鳥飼料:[[User:KotoriBot]]
==列表==
===法語===
*一個-er結尾的第一類法語動詞(連同本體)理論上可產出'''40'''個新詞條。<br>
:{{col3|fr|léser|lessiver|limoger}}<!--明日:
;需自行創建
:{{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|}}
658fq2b3upfh8f6jdkk4y3atetdr9k7
9788200
9788144
2026-05-25T02:05:00Z
Sayonzei
40728
9788200
wikitext
text/x-wiki
精製鳥飼料:[[User:KotoriBot]]
==列表==
===法語===
*一個-er結尾的第一類法語動詞(連同本體)理論上可產出'''40'''個新詞條。<br>
:{{col3|fr|léser|lessiver|limoger|baliverner|amariner|couronner|déployer|postuler}}<!--明日:
;需自行創建
:{{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|}}
9gnhoaflxl0quevlj8zvbke2t34zbvi
Sepania
0
2177131
9787637
7645220
2026-05-24T18:10:48Z
TongcyDai
53191
9787637
wikitext
text/x-wiki
==夏威夷語==
===其他形式===
* {{l|haw|Kepania}}
===發音===
* {{haw-IPA}}
===專有名詞===
{{head|haw|專有名詞}}
# {{tcl|haw|西班牙|id=Q29}}
# [[西班牙語]]
# [[西班牙人]]
===動詞===
{{head|haw|動詞}}
# {{lb|haw|stative}} 是[[西班牙]]的
===參見===
* {{l|haw|Paniolo}}
==薩摩亞語==
===詞源===
源自{{der|sm|en|西班牙}}。
===專有名詞===
{{head|sm|專有名詞}}
# {{tcl|sm|西班牙|id=Q29}}
l50b1njtxl5so5vljl5o2vfuiuizzqm
9787638
9787637
2026-05-24T18:10:58Z
TongcyDai
53191
9787638
wikitext
text/x-wiki
==夏威夷語==
===其他形式===
* {{l|haw|Kepania}}
===發音===
* {{haw-IPA}}
===專有名詞===
{{head|haw|專有名詞}}
# {{tcl|haw|西班牙|id=Q29}}
# [[西班牙語]]
# [[西班牙人]]
===動詞===
{{head|haw|動詞}}
# {{lb|haw|stative}} 是[[西班牙]]的
===參見===
* {{l|haw|Paniolo}}
==薩摩亞語==
===詞源===
源自{{der|sm|en|Spain}}。
===專有名詞===
{{head|sm|專有名詞}}
# {{tcl|sm|西班牙|id=Q29}}
oi3da5ils3py75lz5l3di0o5b5ol933
স্পেন
0
2338904
9787566
7990349
2026-05-24T17:47:44Z
TongcyDai
53191
9787566
wikitext
text/x-wiki
==孟加拉語==
{{wp|bn:}}
===專有名詞===
{{head|bn|專有名詞}}
# {{tcl|bn|西班牙|id=Q29}}
jjsg5f590b086ja0p6lh8il2ef3hnqm
Dibé diníí bikéyah
0
2341097
9787619
7993975
2026-05-24T18:04:06Z
TongcyDai
53191
9787619
wikitext
text/x-wiki
==納瓦霍語==
{{wp|nv:}}
===詞源===
{{m|nv|dibé||羊}} + {{m|nv|diniih||疼痛}} + {{m|nv|bikéyah||他們的國度}}。直譯自英語裏對納瓦霍人來說與“西班牙”(Spain)發音相似的“羊痛”(sheep-pain)。
===專有名詞===
{{head|nv|專有名詞|head=[[dibé|Dibé]] [[diniih|diníí]] [[bikéyah]]}}
# {{tcl|nv|西班牙|id=Q29}}
====近義詞====
* {{l|nv|Naakáí Łibáʼí bikéyah}}
lohbwqg0ax7uzmag3rrcz7j0s4qjpxk
Template:R:lt:LEW
10
2343730
9787428
7998777
2026-05-24T13:19:53Z
TongcyDai
53191
9787428
wikitext
text/x-wiki
{{#invoke:checkparams|warn}}<!-- Validate template parameters
-->{{cite-book<!--
-->|last=Fraenkel<!--
-->|first=Ernst<!--
-->|authorlink=en:Ernst Fraenkel (linguist)<!--
-->|entry={{{head|{{{1|}}}}}}<!--
-->|title=Litauisches etymologisches Wörterbuch<!--
-->|trans-title=立陶宛語詞源詞典<!--
-->|url={{#if:{{{2|}}}||{{#if:{{{page|}}}||{{#if:{{{pages|}}}||https://archive.org/details/fraenkel-litauisches-etymologisches-woerterbuch-bd.-1-2-1962-1965}}}}}}<!--
-->|location=Heidelberg-Göttingen<!--
-->|publisher=Carl Winter and Vandenhoeck & Ruprecht<!--
-->|volume={{#if:{{{page|{{{2|{{{pages|}}}}}}}}}|{{#ifexpr:{{#invoke:string/templates|match|{{{page|{{{2|{{{pages|}}}}}}}}}|[0-9]+|}}>656|II|I}}|I–II}}<!--
-->|year=1955, 1962–1965<!--
-->|page={{{page|{{{2|}}}}}}<!--
-->|pages={{{pages|}}}<!--
-->|pageurl={{archivedotorg|fraenkel-litauisches-etymologisches-woerterbuch-bd.-1-2-1962-1965|n{{#expr:{{#invoke:string/templates|match|{{{page|{{{2|{{{pages|}}}}}}}}}|[0-9]+|}}+23+{{#ifexpr:{{#invoke:string/templates|match|{{{page|{{{2|{{{pages|}}}}}}}}}|[0-9]+|}}>656|2|0}}}}|fraenkel-litauisches-etymologisches-woerterbuch-bd.-1-2-1962-1965}}<!--
-->|passage={{{passage|}}}<!--
-->}}<noinclude>{{refcat}}{{documentation}}</noinclude>
j0yiww310026etm1d7zadm6d73ikbrq
Template:R:zh:cbgycdxdb
10
2374591
9788627
9120601
2026-05-25T10:43:20Z
TongcyDai
53191
9788627
wikitext
text/x-wiki
{{#invoke:quote|call_template
|template=cite-web
|zh|entry={{lang|zh|{{{entry|{{pagename}}}}}}}|entryurl=https://dict.revised.moe.edu.tw/dictView.jsp?ID={{{1|<noinclude>1234</noinclude>}}}|work={{w|zh|重編國語辭典修訂本}}|publisher={{w|國家教育研究院}}|year=2021
|allowparams=entry,1
|usenodot=1
}}<noinclude>{{refcat}}</noinclude>
lup7oziadbirufix2zqbtdzrsngih0l
9788628
9788627
2026-05-25T10:44:10Z
TongcyDai
53191
9788628
wikitext
text/x-wiki
{{#invoke:quote|call_template
|template=cite-web
|zh|entry={{lang|zh|{{{entry|{{pagename}}}}}}}|entryurl=https://dict.revised.moe.edu.tw/dictView.jsp?ID={{{1|<noinclude>1234</noinclude>}}}|work={{w|重編國語辭典修訂本}}|publisher={{w|國家教育研究院}}|year=2021
|allowparams=entry,1
|usenodot=1
}}<noinclude>{{refcat}}</noinclude>
tszfl6rvvgzxtiiqnl1o1sas77u7w12
Category:岡比亞
14
2551208
9787765
8416290
2026-05-24T18:34:51Z
TongcyDai
53191
TongcyDai移动页面[[Category:甘比亞]]至[[Category:岡比亞]],不留重定向
8416290
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:格林納達
14
2551211
9787737
8416293
2026-05-24T18:30:53Z
TongcyDai
53191
TongcyDai移动页面[[Category:格瑞那達]]至[[Category:格林納達]],不留重定向
8416293
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
ruhige
0
2658066
9787448
8573995
2026-05-24T14:10:33Z
TongcyDai
53191
9787448
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈʁuːɪɡə/}}
* {{audio|de|De-ruhige.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞變格形}}
# {{de-adj form of|ruhig}}
0g4xz4jjwpsw8o5jsbyjr9exavyfzcg
ruhigem
0
2658067
9787447
8573996
2026-05-24T14:10:32Z
TongcyDai
53191
9787447
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈʁuːɪɡəm/}}
* {{audio|de|De-ruhigem.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞變格形}}
# {{de-adj form of|ruhig}}
pzbp2fkfavs3erqyf0ny7l1o2bf0qzp
ruhigen
0
2658068
9787444
8573997
2026-05-24T14:10:31Z
TongcyDai
53191
9787444
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈʁuːɪɡn̩/}}
* {{audio|de|De-ruhigen.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞變格形}}
# {{de-adj form of|ruhig}}
d70wc8zi5ykuql6qmsykq6654j00jfw
ruhiger
0
2658069
9787445
8573998
2026-05-24T14:10:32Z
TongcyDai
53191
9787445
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈʁuːɪɡɐ/}}
* {{audio|de|De-ruhiger.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞比較級}}
# {{comparative of|de|ruhig}}
===形容詞===
{{head|de|形容詞變格形}}
# {{de-adj form of|ruhig}}
0dlvvakvw2mhgqev9hj1ob650kh3s9g
ruhigere
0
2658070
9787441
8573999
2026-05-24T14:10:30Z
TongcyDai
53191
9787441
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈʁuːɪɡəʁə/}}
* {{audio|de|De-ruhigere.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞比較級變格形}}
# {{de-adj form of|ruhig}}
k5zye8f8g0ieqvdlsq8clb1q55p2ae4
ruhigerem
0
2658071
9787449
8574000
2026-05-24T14:10:33Z
TongcyDai
53191
9787449
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈʁuːɪɡəʁəm/}}
* {{audio|de|De-ruhigerem.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞比較級變格形}}
# {{de-adj form of|ruhig}}
nkov18us4jpcuj9olr7wt8dbv1l0zhn
ruhigeren
0
2658072
9787440
8574001
2026-05-24T14:10:28Z
TongcyDai
53191
9787440
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈʁuːɪɡəʁən/}}
* {{audio|de|De-ruhigeren.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞比較級變格形}}
# {{de-adj form of|ruhig}}
jo8ucif66e4mjcu6j78v8m22ipigo9f
ruhigerer
0
2658073
9787443
8574002
2026-05-24T14:10:31Z
TongcyDai
53191
9787443
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈʁuːɪɡəʁɐ/}}
* {{audio|de|De-ruhigerer.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞比較級變格形}}
# {{de-adj form of|ruhig}}
4kryw3dr2lsvpn55rkq9ujl784d6va5
ruhigeres
0
2658074
9787442
8574003
2026-05-24T14:10:31Z
TongcyDai
53191
9787442
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈʁuːɪɡəʁəs/}}
* {{audio|de|De-ruhigeres.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞比較級變格形}}
# {{de-adj form of|ruhig}}
1k3qvkt5t3fj21xdjza8kh4x6mtvbxr
ruhiges
0
2658075
9787446
8574004
2026-05-24T14:10:32Z
TongcyDai
53191
9787446
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈʁuːɪɡəs/}}
* {{audio|de|De-ruhiges.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞變格形}}
# {{de-adj form of|ruhig}}
1o56sh7gnzo1uvi7nij3fehmbnmp7j7
ruhigste
0
2658076
9787452
8574005
2026-05-24T14:10:35Z
TongcyDai
53191
9787452
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈʁuːɪçstə/|/ˈʁuːɪkstə/}}
* {{audio|de|De-ruhigste2.ogg|a=柏林}}
* {{audio|de|De-ruhigste.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞最高級變格形}}
# {{de-adj form of|ruhig}}
nrx6ax1tcj4d1ikrw03x1blsq5yrws4
ruhigstem
0
2658077
9787453
8574006
2026-05-24T14:10:35Z
TongcyDai
53191
9787453
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈʁuːɪçstəm/|/ˈʁuːɪkstəm/}}
* {{audio|de|De-ruhigstem2.ogg|a=柏林}}
* {{audio|de|De-ruhigstem.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞最高級變格形}}
# {{de-adj form of|ruhig}}
a17115dg9hkrbf9a8bl2x2hm4r82ozx
ruhigsten
0
2658078
9787451
8574007
2026-05-24T14:10:34Z
TongcyDai
53191
9787451
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈʁuːɪçstn̩/|/ˈʁuːɪkstn̩/}}
* {{audio|de|De-ruhigsten2.ogg|a=柏林}}
* {{audio|de|De-ruhigsten.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞最高級}}
# {{superlative of|de|ruhig}}
===形容詞===
{{head|de|形容詞最高級變格形}}
# {{de-adj form of|ruhig}}
ng2zoe8z5ygxxxkr621gzvbfr0qoqd9
ruhigster
0
2658079
9787450
8574008
2026-05-24T14:10:34Z
TongcyDai
53191
9787450
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈʁuːɪçstɐ/|/ˈʁuːɪkstɐ/}}
* {{audio|de|De-ruhigster2.ogg|a=柏林}}
* {{audio|de|De-ruhigster.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞最高級變格形}}
# {{de-adj form of|ruhig}}
owgf5l3tmqps2xmaym7xkgl9ovibxbx
ruhigstes
0
2658080
9787454
8574009
2026-05-24T14:10:35Z
TongcyDai
53191
9787454
wikitext
text/x-wiki
==德語==
===發音===
* {{IPA|de|/ˈʁuːɪçstəs/|/ˈʁuːɪkstəs/}}
* {{audio|de|De-ruhigstes2.ogg|a=柏林}}
* {{audio|de|De-ruhigstes.ogg|a=柏林}}
===形容詞===
{{head|de|形容詞最高級變格形}}
# {{de-adj form of|ruhig}}
2hfj0s0v4gezo8vrb6lgkmv3h8lthju
Template:R:lt:SEJL
10
2679657
9787478
8601040
2026-05-24T15:01:02Z
TongcyDai
53191
9787478
wikitext
text/x-wiki
{{#invoke:quote|call_template
|template=cite-book
|pl
|last=Smoczyński
|first=Wojciech
|authorlink=en:Wojciech Smoczyński
|title=Słownik etymologiczny języka litewskiego
|trans-title=立陶宛語詞源詞典
|entry={{#if:{{{1|}}}|{{lang|lt|{{{1}}}}}}}
|url=https://rromanes.org/pub/alii/Smoczy%C5%84ski%20W.%20S%C5%82ownik%20etymologiczny%20j%C4%99zyka%20litewskiego.pdf#{{#if:{{{2|}}}|page={{#expr:{{{2}}}+54}}}}
|location={{w|維爾紐斯}}
|publisher={{w|維爾紐斯大學}}
|year=2007
|pageparam=2
|allowparams=1
}}<noinclude>{{refcat|ine-bsl-pro}}</noinclude>
nq86abrinfiq0ka56kokk3ovoz09rjf
Template:R:lt:BŽ
10
2723741
9787419
8655089
2026-05-24T13:09:52Z
TongcyDai
53191
9787419
wikitext
text/x-wiki
{{#invoke:quote|call_template
|template=cite-web
|entryurl=https://ekalba.lt/bendrines-lietuviu-kalbos-zodynas/?paieska={{urlencode:{{{1|{{pagename}}}}}}}
|entry={{lang|lt|{{{2|{{{1|{{pagename}}}}}}}}}}
|work=Bendrinės lietuvių kalbos žodynas
|trans-work=通用立陶宛語詞典
|year=n.d.
|publisher=ekalba.lt
|allowparams=1,2
}}<noinclude>{{reference template cat|lt}}{{documentation}}</noinclude>
9sw2uyh0rqzky2k4qqsxl3r4xbf0zx0
Category:北坎卡奈語
14
2792597
9788611
8793299
2026-05-25T09:03:20Z
TongcyDai
53191
9788611
wikitext
text/x-wiki
{{auto cat|lect=1}}
ertee7cys9kcm61xm19ibbz6xr74sxz
掌柜的
0
2806338
9788492
8771235
2026-05-25T06:31:15Z
Fglffer
55252
重定向页面至[[掌櫃的]]
9788492
wikitext
text/x-wiki
#REDIRECT [[掌櫃的]]
nc6ilnqmk5wyt3tkxh1r0gz7vd9fsaj
Template:Sce-IPA
10
2830115
9788121
8803869
2026-05-24T20:07:59Z
TongcyDai
53191
TongcyDai移动页面[[Template:Sce-pron]]至[[Template:Sce-IPA]]
8803869
wikitext
text/x-wiki
<includeonly>{{#invoke:sce-pron|show}}</includeonly><noinclude>{{documentation}}[[Category:東鄉語發音模板]]</noinclude>
gfdqxjsafcgxu2aufqzihgx74zrah1j
Template:R:zh:Hanyu Da Cidian
10
2901791
9788636
9233187
2026-05-25T10:48:30Z
TongcyDai
53191
9788636
wikitext
text/x-wiki
{{#invoke:quote|call_template
|template=cite-book
|zh
|entry={{lang|zh|{{{entry|{{pagename}}}}}}}
|url=
|pageparam= page
|textparam= quote
|year=1986–1994
|title={{w|漢語大詞典}}
|edition=1
|editor={{w|羅竹風}}
|location=上海
|publisher=上海辭書出版社
|isbn=7-5432-0013-9
|propagateparams=volume
|allowparams=entry
}}<!--
--><noinclude>{{documentation}}</noinclude>
2gk03tlhdxbdbatp4dfkrwb11t43j2g
Template:R:zh:Hanyu Da Cidian/doc
10
2907195
9788637
9187040
2026-05-25T10:48:57Z
TongcyDai
53191
9788637
wikitext
text/x-wiki
{{documentation subpage}}
{{shortcut|Template:R:zh:HYDCD}}
==用法==
該模板用於簡化 {{R:zh:Hanyu Da Cidian}}。
===參數===
; {{para|entry}}
: 詞典中詞條的標題,特別是當詞典中的條目標題與維基詞典標題不一致時必須填寫;不填寫的情況下默認爲維基詞條的標題。
; {{para|page}}, {{para|pages}}
: 詞條所在的頁碼或頁數。
; {{para|quote}}
: 引文。
<includeonly>
{{refcat}}
</includeonly>
b4tgg6fje62x4uo29y4s0mk8byae2w0
스페인
0
2944748
9787595
9534767
2026-05-24T17:58:14Z
TongcyDai
53191
9787595
wikitext
text/x-wiki
==朝鮮語==
{{wikipedia|lang=ko}}
===詞源===
{{bor+|ko|en|Spain}}。
===發音===
{{ko-IPA|cap=y}}
===專有名詞===
{{ko-pos|專有名詞}}
# {{tcl|ko|西班牙|id=Q29}}
====近義詞====
* {{ko-l|^에스파냐}}
* {{qualifier|棄用}} {{ko-l|^서반아|西班牙}}
===參見===
{{list:countries of Europe/ko}}
knuod59slkyx70hl1ugki8uvxw76uid
Template:R:lt:LKND
10
3140514
9787431
9286539
2026-05-24T13:29:03Z
TongcyDai
53191
9787431
wikitext
text/x-wiki
{{#invoke:quote|call_template
|template=cite-web
|entryurl=https://ekalba.lt/naujazodziai/?paieska={{urlencode:{{{1|{{pagename}}}}}}}
|entry={{lang|lt|{{{2|{{{1|{{pagename}}}}}}}}}}
|work=[https://ekalba.lt/naujazodziai/apie/ND%20Įvadas%20EN Lietuvių kalbos naujažodžių duomenynas]
|trans-work=立陶宛語新詞資料庫
|year=2011–{{CURRENTYEAR}}
|publisher=ekalba.lt
|allowparams=1,2
}}<noinclude>{{reference template cat|lt}}{{documentation}}</noinclude>
thylme1sq5lwazsun8r42707r5l5skx
Template:R:lt:SEJL2
10
3146163
9787479
9293167
2026-05-24T15:01:48Z
TongcyDai
53191
9787479
wikitext
text/x-wiki
{{#invoke:quote|call_template
|template=cite-book
|pl
|last=Smoczyński
|first=Wojciech
|authorlink=en:Wojciech Smoczyński
|title=Słownik etymologiczny języka litewskiego
|trans-title=立陶宛語詞源詞典
|entry={{#if:{{{1|}}}|{{lang|lt|{{{1}}}}}}}
|entryurl=https://archive.org/details/SEJL_29.5.2025/page/{{{page|{{{2|}}}}}}/mode/1up
|location=克拉科夫
|year=2025
|edition=2nd
|pageparam=2
|allowparams=1
}}<noinclude>{{refcat|ine-bsl-pro}}{{documentation}}</noinclude>
jaq3af40eb74jeewaru02rcstgt5zgb
Template:R:lt:PDB
10
3161600
9787486
9314610
2026-05-24T15:21:05Z
TongcyDai
53191
9787486
wikitext
text/x-wiki
{{#invoke:quote|call_template
|template=cite-web
|entryurl=https://ekalba.lt/pavardziu-duomenu-baze/{{urlencode:{{{1|{{pagename}}}}}|PATH}}
|entry={{lang|lt|{{{2|{{{1|{{pagename}}}}}}}}}}
|work=[https://ekalba.lt/pavardziu-duomenu-baze/apie/Pavard.%20db.%20Bendroji%20informacija Pavardžių duomenų bazė]
|trans-work=姓氏資料庫
|year=2011–{{CURRENTYEAR}}
|publisher=ekalba.lt
|allowparams=1,2
}}<noinclude>{{reference template cat|lt}}{{documentation}}</noinclude>
pifoov4lop38u72oibfpikr8y7ecnk7
Template:R:lt:LAKŽ
10
3383105
9787436
9682721
2026-05-24T13:55:16Z
TongcyDai
53191
9787436
wikitext
text/x-wiki
{{#invoke:quote|call_template
|template=cite-web
|entryurl=https://ekalba.lt/lietuviu-anglu-kalbu-zodynas/?paieska={{urlencode:{{{1|{{pagename}}}}}}}
|entry={{lang|lt|{{{2|{{{1|{{pagename}}}}}}}}}}
|work=Lietuvių–anglų kalbų žodynas
|trans-work=立陶宛語-英語詞典
|year=n.d.
|publisher=ekalba.lt
|editors=M. Paura & M. Tverijonas
|author=V. Dadurkevičius & D. Ralys
|allowparams=1,2
}}<noinclude>{{reference template cat|lt}}{{documentation}}</noinclude>
jakii2lsl9yfsa84ivf8ysa7pf6n5ad
Template:R:lt:LRTB
10
3383145
9787433
9682842
2026-05-24T13:49:06Z
TongcyDai
53191
9787433
wikitext
text/x-wiki
{{#invoke:quote|call_template
|template=cite-web
|publisher=[[w:立陶宛國家語言委員會|VLKK]]
|entry={{lang|lt|{{{1|{{pagename}}}}}}}
|work=[[w:lt:Lietuvos terminų bankas|Lietuvos Respublikos terminų bankas]]
|trans-work=立陶宛共和國術語庫
|entryurl=http://terminai.vlkk.lt/paieska?search={{urlencode:{{{1|{{pagename}}}}}}}
|year=2005–{{CURRENTYEAR}}
|allowparams=1
}}<noinclude>{{refcat}}{{documentation}}</noinclude>
dg9xdkuqmlanjv73j0gexinfezf5cko
xnn
0
3408840
9788610
9719499
2026-05-25T08:59:37Z
TongcyDai
53191
9788610
wikitext
text/x-wiki
==跨語言==
===符號===
{{mul-symbol}}
# {{ISO 639|3}}
===參見===
* {{langcat}}
==漢語==
===詞源===
{{m|zh|[[小]][[男娘]]}} 的拼音首字母。
===發音===
{{zh-pron
|m=xiǎonánniáng
|cat=n
}}
===名詞===
{{head|zh|名詞}}
# {{lb|zh|中國大陸|_|Mandarin|網路用語}} [[偽娘]];男變女[[異裝癖]]
{{C|zh|異性裝扮}}
2tlbyqao2khh8wbow0yhfx2k00k4j0d
Template:R:ht:Targète
10
3414211
9788148
9730011
2026-05-24T20:25:21Z
TongcyDai
53191
9788148
wikitext
text/x-wiki
{{#invoke:quote|call_template
|template=cite-book
|last=Targète
|first=Jean
|last2=Urciolo
|first2=Raphael
|publisher=Dunwoody Press
|year=1993
|title=Haitian Creole-English Dictionary
|url=https://hopeforhaitischildren.org/wp-content/uploads/Haitian_Creole_English_Dictionary_2nd_printing.pdf
|pageparam=page
|isbn=9780931745751}}<noinclude>
{{reference template cat|ht}}{{documentation}}</noinclude>
qlmc1pkqy5psk5kmpeqhruo2mp6d9mh
9788149
9788148
2026-05-24T20:25:40Z
TongcyDai
53191
// Edit via Wikiplus
9788149
wikitext
text/x-wiki
{{#invoke:quote|call_template
|template=cite-book
|last=Targète
|first=Jean
|last2=Urciolo
|first2=Raphael
|publisher=Dunwoody Press
|year=1993
|title=Haitian Creole-English Dictionary
|trans-title=海地克里奧爾語-英語詞典
|url=https://hopeforhaitischildren.org/wp-content/uploads/Haitian_Creole_English_Dictionary_2nd_printing.pdf
|pageparam=page
|isbn=9780931745751}}<noinclude>
{{reference template cat|ht}}{{documentation}}</noinclude>
h4slpt50ogva4yyvkcg0dwvv8wpghq9
Espainia
0
3443003
9787565
9764825
2026-05-24T17:47:31Z
TongcyDai
53191
9787565
wikitext
text/x-wiki
==巴斯克語==
{{wp|eu:}}
===發音===
{{eu-pr|+<audio:LL-Q8752 (eus)-Xabier Cañas-Espainia.wav>}}
===專有名詞===
{{eu-proper noun|in}}
# {{tcl|eu|西班牙|id=Q29}}
====變格====
{{eu-ndecl|in.pr}}
====派生詞彙====
{{col|eu|espainiar<t:西班牙人>}}
===參見===
{{list:countries in Europe/eu}}
===延伸閱讀===
* {{R:eu:Arau|38}}
36knz1wfidgwhk1tevhz9ze8pcubnwx
Template:R:lt:Piročkinas:2000
10
3458934
9787413
2026-05-24T12:40:35Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「{{#invoke:quote|call_template |template=cite-journal |lt |last=Piročkinas |first=Arnoldas |title=Jonas Jablonskis - naujų žodžių kūrėjas |trans-title=Jonas Jablonskis – Creator of New Words |article_url=https://www.lituanistika.lt/content/40455 |journal=Gimtasis žodis |issues=10-12 |location=Vilnius |publisher=Gimtasis žodis |year=2000 |pages=2-6, 47; 14-16, 46; 7-12, 47}}<noinclude>{{refcat|lt}}</noinclude>」的新頁面
9787413
wikitext
text/x-wiki
{{#invoke:quote|call_template
|template=cite-journal
|lt
|last=Piročkinas
|first=Arnoldas
|title=Jonas Jablonskis - naujų žodžių kūrėjas
|trans-title=Jonas Jablonskis – Creator of New Words
|article_url=https://www.lituanistika.lt/content/40455
|journal=Gimtasis žodis
|issues=10-12
|location=Vilnius
|publisher=Gimtasis žodis
|year=2000
|pages=2-6, 47; 14-16, 46; 7-12, 47}}<noinclude>{{refcat|lt}}</noinclude>
5nogu26x7mmso75xwmt4u6awtvoqll3
9787414
9787413
2026-05-24T12:42:08Z
TongcyDai
53191
9787414
wikitext
text/x-wiki
{{#invoke:quote|call_template
|template=cite-journal
|lt
|last=Piročkinas
|first=Arnoldas
|title=Jonas Jablonskis - naujų žodžių kūrėjas
|trans-title=約納斯‧雅布隆斯基斯 – 新詞創作者
|article_url=https://www.lituanistika.lt/content/40455
|journal=Gimtasis žodis
|issues=10-12
|location=Vilnius
|publisher=Gimtasis žodis
|year=2000
|pages=2-6, 47; 14-16, 46; 7-12, 47}}<noinclude>{{refcat|lt}}</noinclude>
dd07deefwss9rb8hijnl0h4o9bvb67x
Template:R:lt:LEI
10
3458935
9787426
2026-05-24T13:18:59Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「{{#invoke:quote|call_template |template=cite-book |last=Bender |first=Harold H. |authorlink=Harold H. Bender |entry={{{head|{{{1|}}}}}} |title=A Lithuanian Etymological Index |trans-title=立陶宛語詞源索引 |location=Princeton |publisher=Princeton University Press |year=1921 |pageparam=2 |pageurl={{archivedotorg|lithuanianetymol00bendrich|{{{page|{{{2|{{{pages|}}}}}}}}}}} |allowparams=head…」的新頁面
9787426
wikitext
text/x-wiki
{{#invoke:quote|call_template
|template=cite-book
|last=Bender
|first=Harold H.
|authorlink=Harold H. Bender
|entry={{{head|{{{1|}}}}}}
|title=A Lithuanian Etymological Index
|trans-title=立陶宛語詞源索引
|location=Princeton
|publisher=Princeton University Press
|year=1921
|pageparam=2
|pageurl={{archivedotorg|lithuanianetymol00bendrich|{{{page|{{{2|{{{pages|}}}}}}}}}}}
|allowparams=head,1
}}<noinclude>{{refcat}}{{documentation}}</noinclude>
48w5qpwh2q8uidongox20mg38vvcqsu
9787427
9787426
2026-05-24T13:19:11Z
TongcyDai
53191
9787427
wikitext
text/x-wiki
{{#invoke:quote|call_template
|template=cite-book
|last=Bender
|first=Harold H.
|authorlink=en:Harold H. Bender
|entry={{{head|{{{1|}}}}}}
|title=A Lithuanian Etymological Index
|trans-title=立陶宛語詞源索引
|location=Princeton
|publisher=Princeton University Press
|year=1921
|pageparam=2
|pageurl={{archivedotorg|lithuanianetymol00bendrich|{{{page|{{{2|{{{pages|}}}}}}}}}}}
|allowparams=head,1
}}<noinclude>{{refcat}}{{documentation}}</noinclude>
qt670ii79djonf0ip9w51yr1kjs2mtf
Template:R:lt:LitGram
10
3458936
9787429
2026-05-24T13:21:11Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「{{#invoke:quote|call_template |template=cite-book |title=Lithuanian Grammar |trans-title=立陶宛語語法 |author=w:lt:Vytautas Ambrazas |year=2006 |edition=2nd revised |pageparam=page |textparam=quote |isbn=9955230355 |propagateparams=chapter,section }}<noinclude>{{documentation}}{{refcat}}</noinclude>」的新頁面
9787429
wikitext
text/x-wiki
{{#invoke:quote|call_template
|template=cite-book
|title=Lithuanian Grammar
|trans-title=立陶宛語語法
|author=w:lt:Vytautas Ambrazas
|year=2006
|edition=2nd revised
|pageparam=page
|textparam=quote
|isbn=9955230355
|propagateparams=chapter,section
}}<noinclude>{{documentation}}{{refcat}}</noinclude>
iu6if5qya5i5dsq52iol4vbg45qldde
Template:R:lt:BūgaRR
10
3458938
9787435
2026-05-24T13:54:19Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「{{#invoke:quote|call_template |template=cite-book |title=Rinktiniai raštai |trans-title=精選著作 |author=w:en:Kazimieras Būga |location=Vilnius |year={{#switch:{{{volume|{{{vol|<noinclude>1</noinclude>}}}}}}|1=1958|2=1959|3=1961|4=1962}} |volume={{{volume|{{{vol|<noinclude>1</noinclude>}}}}}} |page={{{page|<noinclude>123</noinclude>}}} |publisher=Valstybinė politinės ir mokslinės literatūros leidykla |pageurl={{archivedoto…」的新頁面
9787435
wikitext
text/x-wiki
{{#invoke:quote|call_template
|template=cite-book
|title=Rinktiniai raštai
|trans-title=精選著作
|author=w:en:Kazimieras Būga
|location=Vilnius
|year={{#switch:{{{volume|{{{vol|<noinclude>1</noinclude>}}}}}}|1=1958|2=1959|3=1961|4=1962}}
|volume={{{volume|{{{vol|<noinclude>1</noinclude>}}}}}}
|page={{{page|<noinclude>123</noinclude>}}}
|publisher=Valstybinė politinės ir mokslinės literatūros leidykla
|pageurl={{archivedotorg|buga-rinktiniai-rastai-t.-{{{volume|{{{vol|<noinclude>1</noinclude>}}}}}}-{{#switch:{{{volume|{{{vol|<noinclude>1</noinclude>}}}}}}|1=1958|2=1959|3=1961|4=1962}}_202012|{{{page|<noinclude>1</noinclude>}}}}}
|entry={{{entry|<noinclude>example</noinclude>}}}
|allowparams=volume,vol,page,entry
}}<noinclude>{{documentation}}{{reference template cat|lt}}</noinclude>
184l78z0gxzj41zqxbiy1o92gkkatvp
Template:R:lt:Lyberis:2005
10
3458939
9787437
2026-05-24T13:56:26Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「{{#invoke:quote|call_template |template=cite-book |last=Lyberis |first=Antanas |edition=4th |title=Lietuvių-rusų kalbų žodynas / Литовско-русский словарь |trans-title=立陶宛語-俄語詞典 |worklang=lt, ru |entry={{{head|}}} |publisher=Mokslo ir enciklopedijų leidybos institutas |year=2005 |pageparam=page |allowparams=head }}<noinclude>{{documentation}}{{refcat}}</noinclude>」的新頁面
9787437
wikitext
text/x-wiki
{{#invoke:quote|call_template
|template=cite-book
|last=Lyberis
|first=Antanas
|edition=4th
|title=Lietuvių-rusų kalbų žodynas / Литовско-русский словарь
|trans-title=立陶宛語-俄語詞典
|worklang=lt, ru
|entry={{{head|}}}
|publisher=Mokslo ir enciklopedijų leidybos institutas
|year=2005
|pageparam=page
|allowparams=head
}}<noinclude>{{documentation}}{{refcat}}</noinclude>
ki4tl0vxhqq4xcc2bcczbs4qtqqghn4
基督教民主主義
0
3458940
9787456
2026-05-24T14:31:35Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「==漢語== {{zh-forms|s=基督教民主主义|type=34}} {{wp}} ===發音=== {{zh-pron |m=Jīdūjiào mínzhǔ zhǔyì |cat=n }} ===名詞=== {{head|zh|名詞}} # 一種融合了[[傳統]]的[[家庭]]和[[教會]][[價值觀]]以及[[進步]]價值觀(例如[[社會福利]])的[[政治]][[意識形態]];與[[羅馬天主教]]及其[[經濟]]和[[社會正義]]理念密切相關 ====翻譯==== {{trans-top|政治意識形態}} * 孟…」的新頁面
9787456
wikitext
text/x-wiki
==漢語==
{{zh-forms|s=基督教民主主义|type=34}}
{{wp}}
===發音===
{{zh-pron
|m=Jīdūjiào mínzhǔ zhǔyì
|cat=n
}}
===名詞===
{{head|zh|名詞}}
# 一種融合了[[傳統]]的[[家庭]]和[[教會]][[價值觀]]以及[[進步]]價值觀(例如[[社會福利]])的[[政治]][[意識形態]];與[[羅馬天主教]]及其[[經濟]]和[[社會正義]]理念密切相關
====翻譯====
{{trans-top|政治意識形態}}
* 孟加拉語:{{t|bn|খ্রীষ্টান জমহুরিয়াত}}
* 荷蘭語:{{t+|nl|christendemocratie|f}}
* 英語:{{t+|en|christeChristian Democracyndemocratie}}
* 芬蘭語:{{t+|fi|kristillisdemokratia}}
* 格魯吉亞語:{{t|ka|ქრისტიანული დემოკრატია}}、{{t|ka|ქრისტიან-დემოკრატიული მოძრაობა}}
* 德語:{{t+|de|Christdemokratie|f}}
* 希臘語:{{t+|el|χριστιανοδημοκρατία|f}}
* 匈牙利語:{{t+|hu|kereszténydemokrácia}}
* 印尼語:{{t|id|Demokrasi Kristen}}
* 意大利語:{{t|it|Democrazia Cristiana|f}}
* 日語:{{t|ja|キリスト教民主主義|tr=キリストきょうみんしゅしゅぎ, Kirisuto-kyō minshu shugi}}
* 朝鮮語:{{t|ko|기독교 민주주의(基督教民主主義)}}
* 波斯語:{{t|fa|دموکراسی مسیحی}}
* 波蘭語:{{t|pl|chrześcijańska demokracja|f}}、{{t+|pl|chadecja|f}} {{qualifier|口語}}
* 葡萄牙語:{{t|pt|democracia cristã|f}}
{{trans-bottom}}
{{c|en|基督教|民主|意識形態}}
jgdb1kvcf32aafdbt9fr39c7uvckkpz
9787457
9787456
2026-05-24T14:31:43Z
TongcyDai
53191
9787457
wikitext
text/x-wiki
==漢語==
{{zh-forms|s=基督教民主主义|type=34}}
{{wp}}
===發音===
{{zh-pron
|m=Jīdūjiào mínzhǔ zhǔyì
|cat=n
}}
===名詞===
{{head|zh|名詞}}
# 一種融合了[[傳統]]的[[家庭]]和[[教會]][[價值觀]]以及[[進步]]價值觀(例如[[社會福利]])的[[政治]][[意識形態]];與[[羅馬天主教]]及其[[經濟]]和[[社會正義]]理念密切相關
====翻譯====
{{trans-top|政治意識形態}}
* 孟加拉語:{{t|bn|খ্রীষ্টান জমহুরিয়াত}}
* 荷蘭語:{{t+|nl|christendemocratie|f}}
* 英語:{{t+|en|christeChristian Democracyndemocratie}}
* 芬蘭語:{{t+|fi|kristillisdemokratia}}
* 格魯吉亞語:{{t|ka|ქრისტიანული დემოკრატია}}、{{t|ka|ქრისტიან-დემოკრატიული მოძრაობა}}
* 德語:{{t+|de|Christdemokratie|f}}
* 希臘語:{{t+|el|χριστιανοδημοκρατία|f}}
* 匈牙利語:{{t+|hu|kereszténydemokrácia}}
* 印尼語:{{t|id|Demokrasi Kristen}}
* 意大利語:{{t|it|Democrazia Cristiana|f}}
* 日語:{{t|ja|キリスト教民主主義|tr=キリストきょうみんしゅしゅぎ, Kirisuto-kyō minshu shugi}}
* 朝鮮語:{{t|ko|기독교 민주주의(基督教民主主義)}}
* 波斯語:{{t|fa|دموکراسی مسیحی}}
* 波蘭語:{{t|pl|chrześcijańska demokracja|f}}、{{t+|pl|chadecja|f}} {{qualifier|口語}}
* 葡萄牙語:{{t|pt|democracia cristã|f}}
{{trans-bottom}}
{{c|zh|基督教|民主|意識形態}}
1hyjqgiohynzvu3oasgbnmasq8x9ig4
ქრისტიანული დემოკრატია
0
3458941
9787458
2026-05-24T14:33:07Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「==格魯吉亞語== ===發音=== * {{ka-IPA}} * {{ka-hyphen}} ===名詞=== {{ka-noun|-}} # {{lb|ka|政治}} [[基督教民主主義]] ====變格==== {{ka-decl-noun|-}} {{c|ka|基督教|民主|意識形態}}」的新頁面
9787458
wikitext
text/x-wiki
==格魯吉亞語==
===發音===
* {{ka-IPA}}
* {{ka-hyphen}}
===名詞===
{{ka-noun|-}}
# {{lb|ka|政治}} [[基督教民主主義]]
====變格====
{{ka-decl-noun|-}}
{{c|ka|基督教|民主|意識形態}}
tggar0djrnbfl61e36ppo7grsci5pxq
χριστιανοδημοκρατία
0
3458942
9787459
2026-05-24T14:33:28Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「==希臘語== {{wp|el:}} ===詞源=== 源自 {{affix|el|χριστιανός|t1=基督徒|δημοκρατία|t2=民主}}。 ===名詞=== {{el-noun|f|~|χριστιανοδημοκρατίες}} # [[基督教民主主義]] ====變格==== {{el-nF-α-ες-2b|χριστιανοδημοκρατί|χριστιανοδημοκρατι}} {{c|el|基督教|民主|意識形態}}」的新頁面
9787459
wikitext
text/x-wiki
==希臘語==
{{wp|el:}}
===詞源===
源自 {{affix|el|χριστιανός|t1=基督徒|δημοκρατία|t2=民主}}。
===名詞===
{{el-noun|f|~|χριστιανοδημοκρατίες}}
# [[基督教民主主義]]
====變格====
{{el-nF-α-ες-2b|χριστιανοδημοκρατί|χριστιανοδημοκρατι}}
{{c|el|基督教|民主|意識形態}}
k2vz0txft5darf6vwbwl51zcls9tv8n
Democrazia Cristiana
0
3458943
9787460
2026-05-24T14:35:06Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「==意大利語== [[Image:Democrazia Cristiana.svg|thumb|right|200px|''Il simbolo del partito democristiano'' – 基督教民主黨的標誌]] ===其他形式=== * {{alt|it|DC||縮寫}} ===專有名詞=== {{it-proper noun|f|head=[[democrazia|Democrazia]] [[cristiana|Cristiana]]}} # {{tlb|it|政治|historical}} {{w|天主教民主黨}},1943年至1994年存在的[[義大利]]/[[意大利]][[基督教民主主義]][[政黨]] ====相關詞…」的新頁面
9787460
wikitext
text/x-wiki
==意大利語==
[[Image:Democrazia Cristiana.svg|thumb|right|200px|''Il simbolo del partito democristiano'' – 基督教民主黨的標誌]]
===其他形式===
* {{alt|it|DC||縮寫}}
===專有名詞===
{{it-proper noun|f|head=[[democrazia|Democrazia]] [[cristiana|Cristiana]]}}
# {{tlb|it|政治|historical}} {{w|天主教民主黨}},1943年至1994年存在的[[義大利]]/[[意大利]][[基督教民主主義]][[政黨]]
====相關詞彙====
* {{l|it|democristiano}}
===參見===
* {{l|it|scudocrociato}}
===延伸閱讀===
* {{pedia|lang=it}}
j500w0gyofkjvcx8hitu5ga8dfrnbcz
christendemocratie
0
3458944
9787461
2026-05-24T14:35:29Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「==荷蘭語== ===詞源=== {{compound|nl|christen|democratie}} 的複合詞。 ===發音=== * {{IPA|nl|/ˌkrɪs.tən.deː.moː.kraːˈ(t)si/}} * {{audio|nl|Nl-christendemocratie.ogg}} * {{hyphenation|nl|chris|ten|de|mo|cra|tie}} * {{rhyme|nl|i}} ===名詞=== {{nl-noun|f|-|-}} # [[基督教民主主義]] ====相關詞彙==== * {{l|nl|christendemocraat}} * {{l|nl|christendemocratisch}} {{c|nl|基督教|民主|意識形態}}」的新頁面
9787461
wikitext
text/x-wiki
==荷蘭語==
===詞源===
{{compound|nl|christen|democratie}} 的複合詞。
===發音===
* {{IPA|nl|/ˌkrɪs.tən.deː.moː.kraːˈ(t)si/}}
* {{audio|nl|Nl-christendemocratie.ogg}}
* {{hyphenation|nl|chris|ten|de|mo|cra|tie}}
* {{rhyme|nl|i}}
===名詞===
{{nl-noun|f|-|-}}
# [[基督教民主主義]]
====相關詞彙====
* {{l|nl|christendemocraat}}
* {{l|nl|christendemocratisch}}
{{c|nl|基督教|民主|意識形態}}
th4fkxisso2slfd6guc0q0z1vrxmpm2
Category:格魯吉亞語 民主
14
3458945
9787462
2026-05-24T14:35:37Z
TongcyBot
83009
養貓
9787462
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:希臘語 民主
14
3458946
9787463
2026-05-24T14:35:45Z
TongcyBot
83009
養貓
9787463
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
kristillisdemokratia
0
3458947
9787464
2026-05-24T14:35:49Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「==芬蘭語== ===詞源=== 源自 {{compound|fi|kristillinen|demokratia}}、{{calque|fi|de|Christdemokratie|nocap=1}} ===發音=== {{fi-p|kristillis/demo"kratia}} ===名詞=== {{fi-noun}} # [[基督教民主主義]] ====變格==== {{fi-decl-kulkija|kristillisdemokrati|a}} ====相關詞彙==== * {{l|fi|kristillisdemokraatti}} * {{l|fi|kristillisdemokraatit}} * {{l|fi|Suomen Kristillisdemokraatit}} {{c|fi|基督教|民主|意識形態}}」的新頁面
9787464
wikitext
text/x-wiki
==芬蘭語==
===詞源===
源自 {{compound|fi|kristillinen|demokratia}}、{{calque|fi|de|Christdemokratie|nocap=1}}
===發音===
{{fi-p|kristillis/demo"kratia}}
===名詞===
{{fi-noun}}
# [[基督教民主主義]]
====變格====
{{fi-decl-kulkija|kristillisdemokrati|a}}
====相關詞彙====
* {{l|fi|kristillisdemokraatti}}
* {{l|fi|kristillisdemokraatit}}
* {{l|fi|Suomen Kristillisdemokraatit}}
{{c|fi|基督教|民主|意識形態}}
fjis0lzxhdhneonjdit20vbsb2o3zhv
9787466
9787464
2026-05-24T14:35:59Z
TongcyDai
53191
9787466
wikitext
text/x-wiki
==芬蘭語==
===詞源===
源自 {{compound|fi|kristillinen|demokratia}},{{calque|fi|de|Christdemokratie|nocap=1}}。
===發音===
{{fi-p|kristillis/demo"kratia}}
===名詞===
{{fi-noun}}
# [[基督教民主主義]]
====變格====
{{fi-decl-kulkija|kristillisdemokrati|a}}
====相關詞彙====
* {{l|fi|kristillisdemokraatti}}
* {{l|fi|kristillisdemokraatit}}
* {{l|fi|Suomen Kristillisdemokraatit}}
{{c|fi|基督教|民主|意識形態}}
8b2m2nr4sle4mlspm8t6ntniuzy5ruw
Category:荷蘭語 民主
14
3458948
9787465
2026-05-24T14:35:52Z
TongcyBot
83009
養貓
9787465
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:Rhymes:芬蘭語/ɑtiɑ/8音節
14
3458949
9787467
2026-05-24T14:36:01Z
TongcyBot
83009
養貓
9787467
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:芬蘭語 民主
14
3458950
9787468
2026-05-24T14:36:08Z
TongcyBot
83009
養貓
9787468
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
社會福利
0
3458951
9787469
2026-05-24T14:38:36Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「==漢語== {{zh-forms|s=社会福利|type=22}} ===發音=== {{zh-pron |m=shèhuì fúlì |c=se5 wui6-2 fuk1 lei6 |mn=qz:siǎ-hōe hok-lī/tw,xm,zz:siā-hōe hok-lī |cat=n }} ===名詞=== {{head|zh|名詞}} # 政府透過[[公共政策]]與[[資源]]重[[分配]],為缺乏基本[[生活]][[保障]][[手段]]的[[公民]]和其他符合資格的[[居民]]提供的最低限度[[福利]]和[[支持]] #: {{zh-x|社會.福利 制度}} ====…」的新頁面
9787469
wikitext
text/x-wiki
==漢語==
{{zh-forms|s=社会福利|type=22}}
===發音===
{{zh-pron
|m=shèhuì fúlì
|c=se5 wui6-2 fuk1 lei6
|mn=qz:siǎ-hōe hok-lī/tw,xm,zz:siā-hōe hok-lī
|cat=n
}}
===名詞===
{{head|zh|名詞}}
# 政府透過[[公共政策]]與[[資源]]重[[分配]],為缺乏基本[[生活]][[保障]][[手段]]的[[公民]]和其他符合資格的[[居民]]提供的最低限度[[福利]]和[[支持]]
#: {{zh-x|社會.福利 制度}}
====派生詞彙====
{{col3|zh|社會福利彩券}}
====翻譯====
{{trans-top|福利制度}}
* 丹麥語:{{t-needed|da}}
* 英語:{{t+|en|social welfare}}
* 芬蘭語:{{t+|fi|sosiaaliturva}}
* 匈牙利語:{{t|hu|szociális segély}}
* 印尼語:{{t+|id|kesejahteraan sosial}}
* 馬來語:{{t|ms|kebajikan masyarakat}}
* 馬拉雅拉姆語:{{t|ml|സാമൂഹ്യക്ഷേമം}}
* 波蘭語:{{t+|pl|zasiłek|m}}
* 葡萄牙語:{{t|pt|seguridade social|f}}、{{t|pt|segurança social|f}}
* 他加祿語:{{t|tl|kagalingang panlipunan}}
{{trans-bottom}}
{{C|en|經濟學|政府|社會}}
qmk189vf37nnlvfntmtwf94r5fqbds3
9787470
9787469
2026-05-24T14:38:44Z
TongcyDai
53191
9787470
wikitext
text/x-wiki
==漢語==
{{zh-forms|s=社会福利|type=22}}
===發音===
{{zh-pron
|m=shèhuì fúlì
|c=se5 wui6-2 fuk1 lei6
|mn=qz:siǎ-hōe hok-lī/tw,xm,zz:siā-hōe hok-lī
|cat=n
}}
===名詞===
{{head|zh|名詞}}
# 政府透過[[公共政策]]與[[資源]]重[[分配]],為缺乏基本[[生活]][[保障]][[手段]]的[[公民]]和其他符合資格的[[居民]]提供的最低限度[[福利]]和[[支持]]
#: {{zh-x|社會.福利 制度}}
====派生詞彙====
{{col3|zh|社會福利彩券}}
====翻譯====
{{trans-top|福利制度}}
* 丹麥語:{{t-needed|da}}
* 英語:{{t+|en|social welfare}}
* 芬蘭語:{{t+|fi|sosiaaliturva}}
* 匈牙利語:{{t|hu|szociális segély}}
* 印尼語:{{t+|id|kesejahteraan sosial}}
* 馬來語:{{t|ms|kebajikan masyarakat}}
* 馬拉雅拉姆語:{{t|ml|സാമൂഹ്യക്ഷേമം}}
* 波蘭語:{{t+|pl|zasiłek|m}}
* 葡萄牙語:{{t|pt|seguridade social|f}}、{{t|pt|segurança social|f}}
* 他加祿語:{{t|tl|kagalingang panlipunan}}
{{trans-bottom}}
{{C|zh|經濟學|政府|社會}}
9kh6cxt9rwjpzpocss46lvk5lc6esa2
公共政策
0
3458952
9787471
2026-05-24T14:41:02Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「==漢語== {{zh-forms|type=22}} {{wp}} ===發音=== {{zh-pron |m=gōnggòng zhèngcè |cat=n }} ===名詞=== {{head|zh|名詞}} # {{lb|zh|legal}} [[政府]][[機關]]為了解決[[公共]][[問題]]或滿足[[公眾]][[需求]],所作出的[[決策]]及相關活動之體系 ====翻譯==== {{trans-top|政府政策體系}} * 英語:{{t+|en|public policy}} * 芬蘭語:{{t|fi|yhteiskuntajärjestys}} * 法語:{{t+|fr|politique publique…」的新頁面
9787471
wikitext
text/x-wiki
==漢語==
{{zh-forms|type=22}}
{{wp}}
===發音===
{{zh-pron
|m=gōnggòng zhèngcè
|cat=n
}}
===名詞===
{{head|zh|名詞}}
# {{lb|zh|legal}} [[政府]][[機關]]為了解決[[公共]][[問題]]或滿足[[公眾]][[需求]],所作出的[[決策]]及相關活動之體系
====翻譯====
{{trans-top|政府政策體系}}
* 英語:{{t+|en|public policy}}
* 芬蘭語:{{t|fi|yhteiskuntajärjestys}}
* 法語:{{t+|fr|politique publique|f}}
* 格魯吉亞語:{{t|ka|საჯარო პოლიტიკა}}
* 冰島語:{{t|is|opinber stefna|f}}、{{t|is|allsherjarregla|f}}
* 俄語:{{t-needed|ru}}
* 西班牙語:{{t|es|política pública|f}}
* 泰語:{{t+|th|นโยบายสาธารณะ|tr=ná-yoo-baai-sǎa-taa-rá-ná}}
{{trans-bottom}}
aevgy3rr36jejirim5ubrmyzmtkp3jd
chadecja
0
3458953
9787472
2026-05-24T14:41:54Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「{{also|chadecją}} ==波蘭語== {{wp|pl:}} ===詞源=== {{sylabbr|pl|chrześcijańska demokracja}}。 ===發音=== {{pl-pr|a=Pl-chadecja.ogg}} ===名詞=== {{pl-noun|f}} # {{lb|pl|政治}} [[基督教民主主義]] ====變格==== {{pl-decl-noun-f|tantum=s}} ====派生詞彙==== {{col|pl|title=形容詞|chadecki}} {{col|pl|title=名詞|chadek}} ===延伸閱讀=== * {{R:pl:WSJP}} * {{R:pl:PWN}} {{C|pl|意識形態|基督教}}」的新頁面
9787472
wikitext
text/x-wiki
{{also|chadecją}}
==波蘭語==
{{wp|pl:}}
===詞源===
{{sylabbr|pl|chrześcijańska demokracja}}。
===發音===
{{pl-pr|a=Pl-chadecja.ogg}}
===名詞===
{{pl-noun|f}}
# {{lb|pl|政治}} [[基督教民主主義]]
====變格====
{{pl-decl-noun-f|tantum=s}}
====派生詞彙====
{{col|pl|title=形容詞|chadecki}}
{{col|pl|title=名詞|chadek}}
===延伸閱讀===
* {{R:pl:WSJP}}
* {{R:pl:PWN}}
{{C|pl|意識形態|基督教}}
mqkufg798tw5pw7rgoh42vjy9tdx3po
はくめい
0
3458954
9787475
2026-05-24T14:48:07Z
Fglffer
55252
新詞條
9787475
wikitext
text/x-wiki
{{also|ばくめい}}
==日語==
{{ja-see|薄明|薄命}}
7fadltjrw9xfdexwk6o1nqn0fa8fuww
Template:R:lt:Smoczynski
10
3458955
9787481
2026-05-24T15:02:33Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「{{#invoke:checkparams|error}}<!-- Validate template parameters -->{{cite-book<!-- -->|author=w:en:Wojciech Smoczyński<!-- -->|title=立陶宛語詞源詞典<!-- -->|doi=10.3726/b14490<!-- -->|location=Berlin, Germany<!-- -->|publisher=[[w:en:Peter Lang (publisher)|Peter Lang]]<!-- -->|year=2018<!-- -->|volume={{{1|{{{volume|}}}}}}<!-- -->|entry={{{3|{{{entry|{{pagename}}}}}}}}<!-- -->|page={{{2|{{{page|}}}}}}<!-- -->|pages={{{page…」的新頁面
9787481
wikitext
text/x-wiki
{{#invoke:checkparams|error}}<!-- Validate template parameters
-->{{cite-book<!--
-->|author=w:en:Wojciech Smoczyński<!--
-->|title=立陶宛語詞源詞典<!--
-->|doi=10.3726/b14490<!--
-->|location=Berlin, Germany<!--
-->|publisher=[[w:en:Peter Lang (publisher)|Peter Lang]]<!--
-->|year=2018<!--
-->|volume={{{1|{{{volume|}}}}}}<!--
-->|entry={{{3|{{{entry|{{pagename}}}}}}}}<!--
-->|page={{{2|{{{page|}}}}}}<!--
-->|pages={{{pages|}}}<!--
-->|isbn=9783631763636<!--
-->}}<noinclude>{{documentation}}{{refcat}}</noinclude>
dkzf2ejwckfkhyjoqzhakntlsmxi1gw
9787513
9787481
2026-05-24T16:09:21Z
TongcyDai
53191
9787513
wikitext
text/x-wiki
{{#invoke:checkparams|error}}<!-- Validate template parameters
-->{{cite-book<!--
-->|author=w:en:Wojciech Smoczyński<!--
-->|title=立陶宛語詞源詞典<!--
-->|doi=10.3726/b14490<!--
-->|location=德國[[柏林]]<!--
-->|publisher=[[w:en:Peter Lang (publisher)|Peter Lang]]<!--
-->|year=2018<!--
-->|volume={{{1|{{{volume|}}}}}}<!--
-->|entry={{{3|{{{entry|{{pagename}}}}}}}}<!--
-->|page={{{2|{{{page|}}}}}}<!--
-->|pages={{{pages|}}}<!--
-->|isbn=9783631763636<!--
-->}}<noinclude>{{documentation}}{{refcat}}</noinclude>
r3yycijvlypoj18p1vt2ejv9f516ica
ばくめい
0
3458956
9787483
2026-05-24T15:05:04Z
Fglffer
55252
新詞條
9787483
wikitext
text/x-wiki
{{also|はくめい}}
==日語==
{{ja-see|幕命|爆鳴}}
huao3oydvedrk6nh86d1o4h59lv5t11
Template:R:lt:SŽ
10
3458957
9787484
2026-05-24T15:07:53Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「{{#invoke:quote|call_template |template=cite-web |entryurl=https://ekalba.lt/sinonimu-zodynas/?paieska={{urlencode:{{{1|{{pagename}}}}}}} |entry={{lang|lt|{{{2|{{{1|{{pagename}}}}}}}}}} |work=Sinonimų žodynas |trans-work=同義詞詞典 |year=2002–{{CURRENTYEAR}} |publisher=ekalba.lt |allowparams=1,2 }}<noinclude>{{reference template cat|lt}}{{documentation}}</noinclude>」的新頁面
9787484
wikitext
text/x-wiki
{{#invoke:quote|call_template
|template=cite-web
|entryurl=https://ekalba.lt/sinonimu-zodynas/?paieska={{urlencode:{{{1|{{pagename}}}}}}}
|entry={{lang|lt|{{{2|{{{1|{{pagename}}}}}}}}}}
|work=Sinonimų žodynas
|trans-work=同義詞詞典
|year=2002–{{CURRENTYEAR}}
|publisher=ekalba.lt
|allowparams=1,2
}}<noinclude>{{reference template cat|lt}}{{documentation}}</noinclude>
skeetruno25nwds4uxispasvzc1p11x
Template:RQ:rml:RomaOralArchive:2022
10
3458958
9787485
2026-05-24T15:18:08Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「{{#invoke:quote|call_template |template=quote-book |{{{lang|lt}}} |year=2022 |author=Agnieška Avin; Kirill Kozhanov; Gopalas Michailovskis; Aušra Simoniukštytė; Vytis Vidūnas; Jolanta Zabarskaitė |title=Lietuvos romų sakytinės istorijos archyvas<t:立陶宛羅姆人口述歷史檔案館> |publisher=Romų visuomenės centras<t:羅姆人社群中心> |url=https://www.romuplatforma.lt/media/attachments/2025/05/23/lietuvos-romu-sak…」的新頁面
9787485
wikitext
text/x-wiki
{{#invoke:quote|call_template
|template=quote-book
|{{{lang|lt}}}
|year=2022
|author=Agnieška Avin; Kirill Kozhanov; Gopalas Michailovskis; Aušra Simoniukštytė; Vytis Vidūnas; Jolanta Zabarskaitė
|title=Lietuvos romų sakytinės istorijos archyvas<t:立陶宛羅姆人口述歷史檔案館>
|publisher=Romų visuomenės centras<t:羅姆人社群中心>
|url=https://www.romuplatforma.lt/media/attachments/2025/05/23/lietuvos-romu-sakytines-istorijos-archyvas.pdf
|ISBN=9786099561110
|worklang=lt
|section={{{section|{{{chapter|}}}}}}
|pageparam=page
|t={{{t|{{{translation|}}}}}}
|propagateparams=lit
|allowparams=lang,section,chapter,t,translation
}}<noinclude>{{documentation}}{{refcat|rml|lt}}</noinclude>
5lcmhi5rj67d69rdc8tbj12l29qpvqm
Template:R:lt:Vardai
10
3458959
9787487
2026-05-24T15:43:39Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「{{#invoke:quote|call_template |template=cite-web |publisher=[[w:立陶宛國家語言委員會|Valstybinė lietuvių kalbos komisija]] [Commission on the Lithuanian language] |entry={{lang|lt|{{{1|{{pagename}}}}}}} |work=Vardai |trans-work=名字 |entryurl=http://vardai.vlkk.lt/vardas/{{urlencode:{{{2|{{{1|{{pagename}}}}}}}}|PATH}} |year=2010–{{CURRENTYEAR}} |allowparams=1,2 }}<noinclude>{{refcat}}{{documentation}}</noinclude>」的新頁面
9787487
wikitext
text/x-wiki
{{#invoke:quote|call_template
|template=cite-web
|publisher=[[w:立陶宛國家語言委員會|Valstybinė lietuvių kalbos komisija]] [Commission on the Lithuanian language]
|entry={{lang|lt|{{{1|{{pagename}}}}}}}
|work=Vardai
|trans-work=名字
|entryurl=http://vardai.vlkk.lt/vardas/{{urlencode:{{{2|{{{1|{{pagename}}}}}}}}|PATH}}
|year=2010–{{CURRENTYEAR}}
|allowparams=1,2
}}<noinclude>{{refcat}}{{documentation}}</noinclude>
epcp18ai4m3fpus9v44o6z979cvbt3o
9787488
9787487
2026-05-24T15:43:59Z
TongcyDai
53191
9787488
wikitext
text/x-wiki
{{#invoke:quote|call_template
|template=cite-web
|publisher=[[w:立陶宛國家語言委員會|Valstybinė lietuvių kalbos komisija]] [立陶宛國家語言委員會]
|entry={{lang|lt|{{{1|{{pagename}}}}}}}
|work=Vardai
|trans-work=名字
|entryurl=http://vardai.vlkk.lt/vardas/{{urlencode:{{{2|{{{1|{{pagename}}}}}}}}|PATH}}
|year=2010–{{CURRENTYEAR}}
|allowparams=1,2
}}<noinclude>{{refcat}}{{documentation}}</noinclude>
isi157vgo1q8xd103dc25srayf0cxnx
Gediminas
0
3458960
9787489
2026-05-24T15:52:53Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「==立陶宛語== ===詞源=== 源自 {{affix|lt|gedáuti//gedáuja|t1=詢問|miñti//minė́ti|t2=記得;呼喊}}。 ===發音=== {{lt-pr|Gedimi̇̀nas}} ===專有名詞=== {{lt-proper noun|m|head=Gedimìnas|f=Gediminė|1}} # {{given name|lt|男性}} ====變格==== {{lt-noun-m-as-1||Gedimìn|vs=Gedimìnai|n=s}} ===專有名詞=== {{lt-proper noun|m|head=Gedimìnas|f=Gediminienė|nee=Gedimináitė|1}} # {{surname|lt|g=m}} ====變格=…」的新頁面
9787489
wikitext
text/x-wiki
==立陶宛語==
===詞源===
源自 {{affix|lt|gedáuti//gedáuja|t1=詢問|miñti//minė́ti|t2=記得;呼喊}}。
===發音===
{{lt-pr|Gedimi̇̀nas}}
===專有名詞===
{{lt-proper noun|m|head=Gedimìnas|f=Gediminė|1}}
# {{given name|lt|男性}}
====變格====
{{lt-noun-m-as-1||Gedimìn|vs=Gedimìnai|n=s}}
===專有名詞===
{{lt-proper noun|m|head=Gedimìnas|f=Gediminienė|nee=Gedimináitė|1}}
# {{surname|lt|g=m}}
====變格====
{{lt-noun-m-as-1||Gedimìn|vs=Gedimìnai}}
====派生詞彙====
{{col|lt
|Gedas<l:diminutive>,Minas
|Gediminavičius<l:patronymic>,Gediminaitis
}}
====派生語彙====
* {{desc|zle-ort|Кгедеминъ|Гедиминъ|bor=1}}<ref>ПСРЛ. Т. II. Густынская летопись. СПб., 1848</ref><ref>'''1673''', Феодосій Софонович [Feodosiy Sofonovych], Кроніка з літописців стародавніх [Chronicle from Ancient Chroniclers], Kyiv: Наукова думка [Naukova Dumka], published 1992</ref>
** {{desc|be|Гедзімін|inh=1}}
** {{desc|uk|Гедимін|inh=1}}
** {{desc|pl|Giedymin|bor=1}}
* {{desc|ru|Гедимин|bor=1}}
===參考資料===
{{reflist}}
===延伸閱讀===
* {{R:lt:Vardai}}
* {{R:lt:PDB}}
lhid75tt0p00pp4pqhv27jcnx3o3bvk
9787490
9787489
2026-05-24T15:53:15Z
TongcyDai
53191
9787490
wikitext
text/x-wiki
==立陶宛語==
===詞源===
源自 {{affix|lt|gedáuti//gedáuja|t1=詢問|miñti//minė́ti|t2=記得;呼喊}}。
===發音===
{{lt-pr|Gedimi̇̀nas}}
===專有名詞===
{{lt-proper noun|m|head=Gedimìnas|f=Gediminė|1}}
# {{given name|lt|男性}}
====變格====
{{lt-noun-m-as-1||Gedimìn|vs=Gedimìnai|n=s}}
===專有名詞===
{{lt-proper noun|m|head=Gedimìnas|f=Gediminienė|nee=Gedimináitė|1}}
# {{surname|lt|g=m}}
====變格====
{{lt-noun-m-as-1||Gedimìn|vs=Gedimìnai}}
====派生詞彙====
{{col|lt
|Gedas<l:指小>,Minas
|Gediminavičius<l:父名>,Gediminaitis
}}
====派生語彙====
* {{desc|zle-ort|Кгедеминъ|Гедиминъ|bor=1}}<ref>ПСРЛ. Т. II. Густынская летопись. СПб., 1848</ref><ref>'''1673''', Феодосій Софонович [Feodosiy Sofonovych], Кроніка з літописців стародавніх [Chronicle from Ancient Chroniclers], Kyiv: Наукова думка [Naukova Dumka], published 1992</ref>
** {{desc|be|Гедзімін|inh=1}}
** {{desc|uk|Гедимін|inh=1}}
** {{desc|pl|Giedymin|bor=1}}
* {{desc|ru|Гедимин|bor=1}}
===參考資料===
{{reflist}}
===延伸閱讀===
* {{R:lt:Vardai}}
* {{R:lt:PDB}}
37lkvjxp252u9eeri3b1t5t2nept4ti
Category:立陶宛語男性姓氏
14
3458961
9787491
2026-05-24T15:53:37Z
TongcyBot
83009
養貓
9787491
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Alijevas
0
3458962
9787492
2026-05-24T15:57:55Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「==立陶宛語== ===詞源=== 源自{{bor|lt|az|-}}姓氏 {{m|az|Əliyev}},可能經{{cog|be|Аліеў}} 和{{cog|ru|Алиев}} 借入。 ===發音=== {{lt-pr|Ali̇̀jevas}} ===專有名詞=== {{lt-proper noun|m|head=Alijevas|f=Alijevienė|nee=Alijeváitė|1}} # {{surname|lt|g=m|from=阿塞拜疆語}} ====變格==== {{lt-noun-m-as-2|Alijev|Alijev|vs=Alijevai}}」的新頁面
9787492
wikitext
text/x-wiki
==立陶宛語==
===詞源===
源自{{bor|lt|az|-}}姓氏 {{m|az|Əliyev}},可能經{{cog|be|Аліеў}} 和{{cog|ru|Алиев}} 借入。
===發音===
{{lt-pr|Ali̇̀jevas}}
===專有名詞===
{{lt-proper noun|m|head=Alijevas|f=Alijevienė|nee=Alijeváitė|1}}
# {{surname|lt|g=m|from=阿塞拜疆語}}
====變格====
{{lt-noun-m-as-2|Alijev|Alijev|vs=Alijevai}}
35svgb3yggwt0q9epv5b1tda1xblmw1
Category:Rhymes:立陶宛語/ɪjɛʋɐs/4音節
14
3458963
9787493
2026-05-24T15:58:07Z
TongcyBot
83009
養貓
9787493
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:來自阿塞拜疆語的立陶宛語姓氏
14
3458964
9787494
2026-05-24T15:58:13Z
TongcyBot
83009
養貓
9787494
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:來自突厥語族的立陶宛語姓氏
14
3458965
9787495
2026-05-24T15:58:18Z
TongcyBot
83009
養貓
9787495
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:來自阿塞拜疆語的姓氏
14
3458966
9787496
2026-05-24T15:58:24Z
TongcyBot
83009
養貓
9787496
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:派生自阿塞拜疆語的立陶宛語詞
14
3458967
9787497
2026-05-24T15:58:31Z
TongcyBot
83009
養貓
9787497
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:派生自烏古斯語支的立陶宛語詞
14
3458968
9787498
2026-05-24T15:58:37Z
TongcyBot
83009
養貓
9787498
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:派生自共同突厥語支的立陶宛語詞
14
3458969
9787499
2026-05-24T15:58:43Z
TongcyBot
83009
養貓
9787499
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:來自阿塞拜疆語的立陶宛語男性姓氏
14
3458970
9787500
2026-05-24T15:58:51Z
TongcyBot
83009
養貓
9787500
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:來自突厥語族的立陶宛語男性姓氏
14
3458971
9787501
2026-05-24T15:58:56Z
TongcyBot
83009
養貓
9787501
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:來自突厥語族的男性姓氏
14
3458972
9787502
2026-05-24T15:59:02Z
TongcyBot
83009
養貓
9787502
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:來自阿塞拜疆語的男性姓氏
14
3458973
9787503
2026-05-24T15:59:08Z
TongcyBot
83009
養貓
9787503
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:源自阿塞拜疆語的立陶宛語借詞
14
3458974
9787504
2026-05-24T15:59:14Z
TongcyBot
83009
養貓
9787504
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Čartoriskis
0
3458975
9787505
2026-05-24T16:04:49Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「==立陶宛語== ===詞源=== 源自{{affix|lt|pl:Czartoryski|-is}}。 對照{{cog|be|Чартарыйскі}}、{{cog|uk|Чорторийські}}。 ===發音=== * {{lt-pr|Čarto^rìskis}} ===專有名詞=== {{lt-proper noun|m|head=Čartorìskis|f=Čartoriskienė|nee=Čartoriskáitė|2}} # {{surname|lt|from=波蘭語,古盧森尼亞語}} ====變格==== {{lt-noun-m-is-1|Čartorisk|Čartorìsk}}」的新頁面
9787505
wikitext
text/x-wiki
==立陶宛語==
===詞源===
源自{{affix|lt|pl:Czartoryski|-is}}。
對照{{cog|be|Чартарыйскі}}、{{cog|uk|Чорторийські}}。
===發音===
* {{lt-pr|Čarto^rìskis}}
===專有名詞===
{{lt-proper noun|m|head=Čartorìskis|f=Čartoriskienė|nee=Čartoriskáitė|2}}
# {{surname|lt|from=波蘭語,古盧森尼亞語}}
====變格====
{{lt-noun-m-is-1|Čartorisk|Čartorìsk}}
0hgf2nqmcg6tvq9mn41z1vj6o4tbey3
Category:Rhymes:立陶宛語/ɪsʲkʲɪs
14
3458976
9787506
2026-05-24T16:04:56Z
TongcyBot
83009
養貓
9787506
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:Rhymes:立陶宛語/ɪsʲkʲɪs/4音節
14
3458977
9787507
2026-05-24T16:05:02Z
TongcyBot
83009
養貓
9787507
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Četvertinskas
0
3458978
9787508
2026-05-24T16:05:21Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「==立陶宛語== ===詞源=== 源自 {{affix|lt|pl:Czetwertyński|-as}}。 ===發音=== {{lt-pr|Četvertìnskas}} ===專有名詞=== {{lt-proper noun|m|head=Četvertìnskas|f=Četvertinskienė|nee=Četvertinskáitė|1}} # {{surname|lt|from=波蘭語,古盧森尼亞語}} ====變格==== {{lt-noun-m-as-1||Četvertìnsk|vs=Četvertìnskai}} ====延伸閱讀==== * {{R:lt:PDB}}」的新頁面
9787508
wikitext
text/x-wiki
==立陶宛語==
===詞源===
源自 {{affix|lt|pl:Czetwertyński|-as}}。
===發音===
{{lt-pr|Četvertìnskas}}
===專有名詞===
{{lt-proper noun|m|head=Četvertìnskas|f=Četvertinskienė|nee=Četvertinskáitė|1}}
# {{surname|lt|from=波蘭語,古盧森尼亞語}}
====變格====
{{lt-noun-m-as-1||Četvertìnsk|vs=Četvertìnskai}}
====延伸閱讀====
* {{R:lt:PDB}}
h8vunqebqscwcgqaaw62osss8pkh6xp
Category:Rhymes:立陶宛語/ɪnskɐs/4音節
14
3458979
9787509
2026-05-24T16:05:30Z
TongcyBot
83009
養貓
9787509
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:含有後綴-as的立陶宛語詞
14
3458980
9787510
2026-05-24T16:05:35Z
TongcyBot
83009
養貓
9787510
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Template:R:lt:VLKK
10
3458981
9787511
2026-05-24T16:07:39Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「{{#invoke:quote|call_template |template=cite-web |publisher=[[w:立陶宛國家語言委員會|Valstybinė lietuvių kalbos komisija]] [立陶宛國家語言委員會] |entry={{lang|lt|{{{title|{{{2|}}}}}}}} |work=Konsultacijų bankas |trans-work=諮詢庫 |entryurl=http://www.vlkk.lt/konsultacijos/{{urlencode:{{{id|{{{1|}}}}}}|PATH}} |year=2003–{{CURRENTYEAR}} |allowparams=title,2,id,1 }}<noinclude>{{refcat}}{{documentation}}</noi…」的新頁面
9787511
wikitext
text/x-wiki
{{#invoke:quote|call_template
|template=cite-web
|publisher=[[w:立陶宛國家語言委員會|Valstybinė lietuvių kalbos komisija]] [立陶宛國家語言委員會]
|entry={{lang|lt|{{{title|{{{2|}}}}}}}}
|work=Konsultacijų bankas
|trans-work=諮詢庫
|entryurl=http://www.vlkk.lt/konsultacijos/{{urlencode:{{{id|{{{1|}}}}}}|PATH}}
|year=2003–{{CURRENTYEAR}}
|allowparams=title,2,id,1
}}<noinclude>{{refcat}}{{documentation}}</noinclude>
4mbpbyhm8htdt8qydnayxht0a4e16sq
Template:R:lt:VŽ
10
3458982
9787512
2026-05-24T16:08:42Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「{{#invoke:quote|call_template |template=cite-web |entryurl=http://vietovardziai.lki.lt/?zodis={{urlencode:{{{1|{{pagename}}}}}}} |entry={{lang|lt|{{{2|{{{1|{{pagename}}}}}}}}}} |work=[[w:lt:Vietovardžių žodynas|Vietovardžių žodynas]] |trans-work=地名詞典 |compilers=Marija Razmukaitė, Aldonas Pupkis |publisher=[https://www.lki.lt Lietuvių kalbos institutas] |allowparams=1,2 }}<noinclude>{{reference template cat|lt}}{{docum…」的新頁面
9787512
wikitext
text/x-wiki
{{#invoke:quote|call_template
|template=cite-web
|entryurl=http://vietovardziai.lki.lt/?zodis={{urlencode:{{{1|{{pagename}}}}}}}
|entry={{lang|lt|{{{2|{{{1|{{pagename}}}}}}}}}}
|work=[[w:lt:Vietovardžių žodynas|Vietovardžių žodynas]]
|trans-work=地名詞典
|compilers=Marija Razmukaitė, Aldonas Pupkis
|publisher=[https://www.lki.lt Lietuvių kalbos institutas]
|allowparams=1,2
}}<noinclude>{{reference template cat|lt}}{{documentation}}</noinclude>
tse28g254q9eg1ppc84owqmyv71v3s5
chopinowski
0
3458983
9787517
2026-05-24T17:23:39Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「==波蘭語== ===其他形式=== * {{alt|pl|szopenowski}} ===詞源=== {{ety|pl|:af|Chopin|-owski|text=+|tree=1}} ===發音=== {{pl-pr|a=LL-Q809 (pol)-Olaf-chopinowski.wav|szopenowski|h=cho.pi.now.ski}} ===形容詞=== {{pl-adj|-|adv=-}} # {{lb|pl|relational}} [[蕭邦]]的 #: {{uxi|pl|W 1960 obchodzono Rok '''Chopinowski'''.|1960年慶祝了'''蕭邦'''年。}} ====變格==== {{pl-adecl}} ===延伸閱讀=== * {{R:pl:PWN}}」的新頁面
9787517
wikitext
text/x-wiki
==波蘭語==
===其他形式===
* {{alt|pl|szopenowski}}
===詞源===
{{ety|pl|:af|Chopin|-owski|text=+|tree=1}}
===發音===
{{pl-pr|a=LL-Q809 (pol)-Olaf-chopinowski.wav|szopenowski|h=cho.pi.now.ski}}
===形容詞===
{{pl-adj|-|adv=-}}
# {{lb|pl|relational}} [[蕭邦]]的
#: {{uxi|pl|W 1960 obchodzono Rok '''Chopinowski'''.|1960年慶祝了'''蕭邦'''年。}}
====變格====
{{pl-adecl}}
===延伸閱讀===
* {{R:pl:PWN}}
90gjoysf8pdi44zli6wwlf1brdor0i6
-owski
0
3458984
9787518
2026-05-24T17:27:11Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「==波蘭語== ===詞源=== {{ety|pl|id=形容詞|:af|-owy<id:形容詞>|-ski<id:形容詞>|text=+|tree=1}} ===發音=== {{pl-pr|#,-oski|a=LL-Q809 (pol)-Olaf--owski.wav}} ===後綴=== {{head|pl|後綴}} # {{ng|由[[名詞]]構成關係[[形容詞]]}} # {{ng|由[[名字]]構成[[姓氏]]的[[所有格]]}} ====派生詞彙==== {{suffixsee|pl}} ===延伸閱讀=== * {{R:pl:PWN}}」的新頁面
9787518
wikitext
text/x-wiki
==波蘭語==
===詞源===
{{ety|pl|id=形容詞|:af|-owy<id:形容詞>|-ski<id:形容詞>|text=+|tree=1}}
===發音===
{{pl-pr|#,-oski|a=LL-Q809 (pol)-Olaf--owski.wav}}
===後綴===
{{head|pl|後綴}}
# {{ng|由[[名詞]]構成關係[[形容詞]]}}
# {{ng|由[[名字]]構成[[姓氏]]的[[所有格]]}}
====派生詞彙====
{{suffixsee|pl}}
===延伸閱讀===
* {{R:pl:PWN}}
ror2rghz0rlse0gjo983ivilnx983q1
Category:芬蘭語 西班牙
14
3458985
9787521
2026-05-24T17:37:38Z
TongcyBot
83009
養貓
9787521
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:Rhymes:德語/aːni̯ən
14
3458986
9787523
2026-05-24T17:38:39Z
TongcyBot
83009
養貓
9787523
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:丹麥語 西班牙
14
3458987
9787524
2026-05-24T17:38:44Z
TongcyBot
83009
養貓
9787524
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:門諾低地德語 西班牙
14
3458988
9787526
2026-05-24T17:38:50Z
TongcyBot
83009
養貓
9787526
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:Rhymes:卡舒比語/aɲskɞ
14
3458989
9787527
2026-05-24T17:38:58Z
TongcyBot
83009
養貓
9787527
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:Rhymes:卡舒比語/aɲskɞ/2音節
14
3458990
9787528
2026-05-24T17:39:04Z
TongcyBot
83009
養貓
9787528
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:卡舒比語 西班牙
14
3458991
9787529
2026-05-24T17:39:10Z
TongcyBot
83009
養貓
9787529
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:保加利亞語 西班牙
14
3458992
9787531
2026-05-24T17:39:56Z
TongcyBot
83009
養貓
9787531
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Испанія
0
3458993
9787532
2026-05-24T17:39:58Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「{{also|Испания|Іспанія}} ==俄語== ===專有名詞=== {{ru-proper noun+|old=1|Испа́нія}} # {{ru-pre-reform|Испа́ния}} ====變格==== {{ru-noun-table|old=1|Испа́нія|n=sg}}」的新頁面
9787532
wikitext
text/x-wiki
{{also|Испания|Іспанія}}
==俄語==
===專有名詞===
{{ru-proper noun+|old=1|Испа́нія}}
# {{ru-pre-reform|Испа́ния}}
====變格====
{{ru-noun-table|old=1|Испа́нія|n=sg}}
br8mscbv2oz5r25ocx9t3xmn44sp3cf
Category:哈薩克語 西班牙
14
3458994
9787533
2026-05-24T17:40:04Z
TongcyBot
83009
養貓
9787533
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:塔吉克語 西班牙
14
3458995
9787534
2026-05-24T17:40:10Z
TongcyBot
83009
養貓
9787534
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:Rhymes:漢斯立克語/anjə
14
3458996
9787537
2026-05-24T17:42:05Z
TongcyBot
83009
養貓
9787537
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:Rhymes:漢斯立克語/anjə/2音節
14
3458997
9787538
2026-05-24T17:42:10Z
TongcyBot
83009
養貓
9787538
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:Rhymes:漢斯立克語/aːnjə
14
3458998
9787540
2026-05-24T17:42:16Z
TongcyBot
83009
養貓
9787540
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:Rhymes:漢斯立克語/aːnjə/2音節
14
3458999
9787541
2026-05-24T17:42:22Z
TongcyBot
83009
養貓
9787541
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:南非語 西班牙
14
3459000
9787542
2026-05-24T17:42:28Z
TongcyBot
83009
養貓
9787542
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:林堡語 西班牙
14
3459001
9787543
2026-05-24T17:42:35Z
TongcyBot
83009
養貓
9787543
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:漢斯立克語 西班牙
14
3459002
9787544
2026-05-24T17:42:41Z
TongcyBot
83009
養貓
9787544
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:荷蘭語 西班牙
14
3459003
9787545
2026-05-24T17:42:48Z
TongcyBot
83009
養貓
9787545
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:西弗里斯蘭語 西班牙
14
3459004
9787546
2026-05-24T17:42:54Z
TongcyBot
83009
養貓
9787546
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:含有後綴-io (地點)的世界語詞
14
3459005
9787548
2026-05-24T17:43:53Z
TongcyBot
83009
養貓
9787548
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:阿爾巴尼亞語 西班牙
14
3459006
9787549
2026-05-24T17:44:08Z
TongcyBot
83009
養貓
9787549
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:Rhymes:威尼斯語/aɲa
14
3459007
9787551
2026-05-24T17:45:36Z
TongcyBot
83009
養貓
9787551
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:Rhymes:西西里語/aɲɲa
14
3459008
9787552
2026-05-24T17:45:41Z
TongcyBot
83009
養貓
9787552
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:威尼斯語 西班牙
14
3459009
9787553
2026-05-24T17:45:47Z
TongcyBot
83009
養貓
9787553
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:威尼斯語外名
14
3459010
9787554
2026-05-24T17:45:52Z
TongcyBot
83009
養貓
9787554
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:威尼斯語名字
14
3459011
9787555
2026-05-24T17:45:58Z
TongcyBot
83009
養貓
9787555
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:派生自布匿語的威尼斯語詞
14
3459012
9787556
2026-05-24T17:46:04Z
TongcyBot
83009
養貓
9787556
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:派生自布匿語的西西里語詞
14
3459013
9787557
2026-05-24T17:46:10Z
TongcyBot
83009
養貓
9787557
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:派生自腓尼基語的威尼斯語詞
14
3459014
9787558
2026-05-24T17:46:16Z
TongcyBot
83009
養貓
9787558
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:派生自腓尼基語的西西里語詞
14
3459015
9787559
2026-05-24T17:46:22Z
TongcyBot
83009
養貓
9787559
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:科西嘉語 西班牙
14
3459016
9787560
2026-05-24T17:46:28Z
TongcyBot
83009
養貓
9787560
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:羅曼什語 西班牙
14
3459017
9787561
2026-05-24T17:46:34Z
TongcyBot
83009
養貓
9787561
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:西西里語 西班牙
14
3459018
9787562
2026-05-24T17:46:40Z
TongcyBot
83009
養貓
9787562
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:西西里語外名
14
3459019
9787563
2026-05-24T17:46:47Z
TongcyBot
83009
養貓
9787563
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:孟加拉語 西班牙
14
3459020
9787567
2026-05-24T17:47:55Z
TongcyBot
83009
養貓
9787567
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:亞述新亞拉姆語 西班牙
14
3459021
9787570
2026-05-24T17:48:44Z
TongcyBot
83009
養貓
9787570
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:阿薩姆語 西班牙
14
3459022
9787572
2026-05-24T17:50:40Z
TongcyBot
83009
養貓
9787572
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:Rhymes:愛沙尼亞語/ɑːniɑ
14
3459023
9787573
2026-05-24T17:50:46Z
TongcyBot
83009
養貓
9787573
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:Rhymes:愛沙尼亞語/ɑːniɑ/3音節
14
3459024
9787574
2026-05-24T17:50:52Z
TongcyBot
83009
養貓
9787574
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:愛沙尼亞語 西班牙
14
3459025
9787575
2026-05-24T17:50:57Z
TongcyBot
83009
養貓
9787575
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:克里米亞韃靼語 西班牙
14
3459026
9787578
2026-05-24T17:53:44Z
TongcyBot
83009
養貓
9787578
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:加告茲語 西班牙
14
3459027
9787579
2026-05-24T17:53:50Z
TongcyBot
83009
養貓
9787579
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:阿塞拜疆語 西班牙
14
3459028
9787581
2026-05-24T17:53:57Z
TongcyBot
83009
養貓
9787581
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:Rhymes:阿拉貢語/aɲa
14
3459029
9787583
2026-05-24T17:55:12Z
TongcyBot
83009
養貓
9787583
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:Rhymes:阿拉貢語/aɲa/3音節
14
3459030
9787584
2026-05-24T17:55:18Z
TongcyBot
83009
養貓
9787584
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:希利蓋農語 歐洲國家
14
3459031
9787585
2026-05-24T17:55:23Z
TongcyBot
83009
養貓
9787585
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:拉蒂諾語 西班牙
14
3459032
9787586
2026-05-24T17:55:29Z
TongcyBot
83009
養貓
9787586
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:派生自布匿語的拉蒂諾語詞
14
3459033
9787587
2026-05-24T17:55:35Z
TongcyBot
83009
養貓
9787587
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:阿拉貢語 西班牙
14
3459034
9787588
2026-05-24T17:55:41Z
TongcyBot
83009
養貓
9787588
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:土庫曼語 西班牙
14
3459035
9787589
2026-05-24T17:55:48Z
TongcyBot
83009
養貓
9787589
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:格魯吉亞語 西班牙
14
3459036
9787594
2026-05-24T17:57:49Z
TongcyBot
83009
養貓
9787594
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:印地語 西班牙
14
3459037
9787602
2026-05-24T18:00:14Z
TongcyBot
83009
養貓
9787602
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:海地克里奧爾語 西班牙
14
3459038
9787603
2026-05-24T18:00:38Z
TongcyBot
83009
養貓
9787603
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:Rhymes:威爾士語/aːɨ̯n/1音節
14
3459039
9787605
2026-05-24T18:01:40Z
TongcyBot
83009
養貓
9787605
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:威爾士語 西班牙
14
3459040
9787607
2026-05-24T18:01:45Z
TongcyBot
83009
養貓
9787607
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:維吾爾語 西班牙
14
3459041
9787608
2026-05-24T18:01:53Z
TongcyBot
83009
養貓
9787608
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:冰島語 西班牙
14
3459042
9787611
2026-05-24T18:02:35Z
TongcyBot
83009
養貓
9787611
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:Rhymes:印尼語/aɲol
14
3459043
9787613
2026-05-24T18:03:14Z
TongcyBot
83009
養貓
9787613
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:Rhymes:印尼語/aɲol/2音節
14
3459044
9787614
2026-05-24T18:03:19Z
TongcyBot
83009
養貓
9787614
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:印尼語 西班牙
14
3459045
9787615
2026-05-24T18:03:26Z
TongcyBot
83009
養貓
9787615
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Sepanyol
0
3459046
9787616
2026-05-24T18:03:38Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「==馬來語== {{wp|ms:}} ===詞源=== {{bor+|ms|nl|spanjool|t=西班牙人}},源自{{der|ms|es|español}},源自{{der|ms|la|Hispānia}}。 ===發音=== {{ms-IPA}} * {{rhymes|ms|aɲol}} ===專有名詞=== {{ms-proper noun|j=سڤاڽول}} # {{tcl|ms|西班牙|id=Q29}} ===形容詞=== {{ms-adj|j=سڤاڽول}} # [[西班牙]]的 ====派生語彙==== * {{desc|id|Spanyol}}」的新頁面
9787616
wikitext
text/x-wiki
==馬來語==
{{wp|ms:}}
===詞源===
{{bor+|ms|nl|spanjool|t=西班牙人}},源自{{der|ms|es|español}},源自{{der|ms|la|Hispānia}}。
===發音===
{{ms-IPA}}
* {{rhymes|ms|aɲol}}
===專有名詞===
{{ms-proper noun|j=سڤاڽول}}
# {{tcl|ms|西班牙|id=Q29}}
===形容詞===
{{ms-adj|j=سڤاڽول}}
# [[西班牙]]的
====派生語彙====
* {{desc|id|Spanyol}}
1o3r5ja2lgmxyyfw1x6tnnvz3brakmv
Category:Rhymes:馬來語/aɲol
14
3459047
9787617
2026-05-24T18:03:45Z
TongcyBot
83009
養貓
9787617
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:馬來語 西班牙
14
3459048
9787618
2026-05-24T18:03:51Z
TongcyBot
83009
養貓
9787618
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:納瓦霍語 西班牙
14
3459049
9787620
2026-05-24T18:04:14Z
TongcyBot
83009
養貓
9787620
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:北薩米語 西班牙
14
3459050
9787622
2026-05-24T18:04:25Z
TongcyBot
83009
養貓
9787622
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:含有後綴-ска的塞爾維亞-克羅地亞語詞
14
3459051
9787626
2026-05-24T18:05:32Z
TongcyBot
83009
養貓
9787626
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:古英語 西班牙
14
3459052
9787629
2026-05-24T18:06:44Z
TongcyBot
83009
養貓
9787629
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:阿羅馬尼亞語 西班牙
14
3459053
9787630
2026-05-24T18:06:49Z
TongcyBot
83009
養貓
9787630
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:古奧克語 半島
14
3459054
9787632
2026-05-24T18:10:09Z
TongcyBot
83009
養貓
9787632
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:古奧克語 地形
14
3459055
9787633
2026-05-24T18:10:15Z
TongcyBot
83009
養貓
9787633
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:古葡萄牙語 半島
14
3459056
9787634
2026-05-24T18:10:22Z
TongcyBot
83009
養貓
9787634
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:古葡萄牙語 地形
14
3459057
9787635
2026-05-24T18:10:28Z
TongcyBot
83009
養貓
9787635
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:派生自布匿語的古葡萄牙語詞
14
3459058
9787636
2026-05-24T18:10:35Z
TongcyBot
83009
養貓
9787636
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:薩摩亞語 西班牙
14
3459059
9787639
2026-05-24T18:11:01Z
TongcyBot
83009
養貓
9787639
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:盧森尼亞語 西班牙
14
3459060
9787642
2026-05-24T18:12:37Z
TongcyBot
83009
養貓
9787642
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:拉脫維亞語 西班牙
14
3459061
9787648
2026-05-24T18:15:44Z
TongcyBot
83009
養貓
9787648
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Spānijā
0
3459062
9787649
2026-05-24T18:15:46Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「{{also|Španija|Spānija}} ==拉脫維亞語== ===專有名詞=== {{head|lv|專有名詞變格形|g=f}} # {{infl of|lv|Spānija||loc|s}}」的新頁面
9787649
wikitext
text/x-wiki
{{also|Španija|Spānija}}
==拉脫維亞語==
===專有名詞===
{{head|lv|專有名詞變格形|g=f}}
# {{infl of|lv|Spānija||loc|s}}
rh4uzlca12diwdmhd0r03kkhlgg0dwa
Category:古高地德語 半島
14
3459063
9787652
2026-05-24T18:18:57Z
TongcyBot
83009
養貓
9787652
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:古高地德語 地形
14
3459064
9787653
2026-05-24T18:19:02Z
TongcyBot
83009
養貓
9787653
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:古高地德語 分組分類列表
14
3459065
9787654
2026-05-24T18:19:08Z
TongcyBot
83009
養貓
9787654
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:新挪威語 西班牙
14
3459066
9787655
2026-05-24T18:19:15Z
TongcyBot
83009
養貓
9787655
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:格陵蘭語 西班牙
14
3459067
9787656
2026-05-24T18:19:22Z
TongcyBot
83009
養貓
9787656
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:法羅語 西班牙
14
3459068
9787657
2026-05-24T18:19:28Z
TongcyBot
83009
養貓
9787657
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:羅馬尼亞語 西班牙
14
3459069
9787658
2026-05-24T18:19:35Z
TongcyBot
83009
養貓
9787658
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
អេស្ប៉ាញ
0
3459070
9787660
2026-05-24T18:21:32Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「==高棉語== ===詞源=== {{bor+|km|fr|Espagne}}。 ===發音=== {{km-IPA|អេ-ស្ប៉ាញ}} ===專有名詞=== {{km-proper noun}} # {{tcl|km|西班牙|id=Q29}}」的新頁面
9787660
wikitext
text/x-wiki
==高棉語==
===詞源===
{{bor+|km|fr|Espagne}}。
===發音===
{{km-IPA|អេ-ស្ប៉ាញ}}
===專有名詞===
{{km-proper noun}}
# {{tcl|km|西班牙|id=Q29}}
3y182fyhma5fpbkqq1o008mlyxtn7wb
Spanya
0
3459071
9787661
2026-05-24T18:21:46Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「==北庫爾德語== ===專有名詞=== {{kmr-proper noun|g=f}} # {{tcl|kmr|西班牙|id=Q29}} ==里菲安語== ===專有名詞=== {{rif-proper noun|m}} # {{alternative spelling of|rif|Ṣpanya}}」的新頁面
9787661
wikitext
text/x-wiki
==北庫爾德語==
===專有名詞===
{{kmr-proper noun|g=f}}
# {{tcl|kmr|西班牙|id=Q29}}
==里菲安語==
===專有名詞===
{{rif-proper noun|m}}
# {{alternative spelling of|rif|Ṣpanya}}
59hteftxusr6xo4pq7gj5rrv3upgo4a
Template:Rif-proper noun
10
3459072
9787662
2026-05-24T18:21:53Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「{{#invoke:ber-headword|show|專有名詞|lang=rif}}<!-- --><noinclude>{{documentation}}{{tcat|hw}}</noinclude>」的新頁面
9787662
wikitext
text/x-wiki
{{#invoke:ber-headword|show|專有名詞|lang=rif}}<!--
--><noinclude>{{documentation}}{{tcat|hw}}</noinclude>
jxtxxdvvx1upisnn309v5nn2e9za3xl
Ṣpanya
0
3459073
9787663
2026-05-24T18:22:16Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「==里菲安語== ===其他形式=== * {{alter|rif|Spanya|Ṣeppanya|Seppanya}} ===詞源=== {{bor+|rif|es|España}}。 ===專有名詞=== {{rif-proper noun|m}} # {{tcl|rif|西班牙|id=Q29}} ====派生詞彙==== {{col|rif |aṣpanyu<t:Spanish> }}」的新頁面
9787663
wikitext
text/x-wiki
==里菲安語==
===其他形式===
* {{alter|rif|Spanya|Ṣeppanya|Seppanya}}
===詞源===
{{bor+|rif|es|España}}。
===專有名詞===
{{rif-proper noun|m}}
# {{tcl|rif|西班牙|id=Q29}}
====派生詞彙====
{{col|rif
|aṣpanyu<t:Spanish>
}}
o42ppnzgpp209tdenqzr35u8dsoebfv
9787666
9787663
2026-05-24T18:22:32Z
TongcyDai
53191
9787666
wikitext
text/x-wiki
==里菲安語==
===其他形式===
* {{alter|rif|Spanya|Ṣeppanya|Seppanya}}
===詞源===
{{bor+|rif|es|España}}。
===專有名詞===
{{rif-proper noun|m}}
# {{tcl|rif|西班牙|id=Q29}}
====派生詞彙====
{{col|rif
|aṣpanyu<t:西班牙語>
}}
ac3frj78fa0fnbkybsrzjxhne78yeyy
Category:北庫爾德語 西班牙
14
3459074
9787664
2026-05-24T18:22:21Z
TongcyBot
83009
養貓
9787664
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:里菲安語專有名詞
14
3459075
9787665
2026-05-24T18:22:28Z
TongcyBot
83009
養貓
9787665
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:里菲安語 歐洲國家
14
3459076
9787667
2026-05-24T18:22:36Z
TongcyBot
83009
養貓
9787667
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:里菲安語 國家
14
3459077
9787668
2026-05-24T18:22:42Z
TongcyBot
83009
養貓
9787668
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:里菲安語 政治實體
14
3459078
9787669
2026-05-24T18:22:48Z
TongcyBot
83009
養貓
9787669
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:里菲安語 分組分類列表
14
3459079
9787670
2026-05-24T18:22:53Z
TongcyBot
83009
養貓
9787670
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:里菲安語 地點
14
3459080
9787672
2026-05-24T18:22:59Z
TongcyBot
83009
養貓
9787672
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:里菲安語 名稱
14
3459081
9787673
2026-05-24T18:23:05Z
TongcyBot
83009
養貓
9787673
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:里菲安語 歐洲
14
3459082
9787674
2026-05-24T18:23:13Z
TongcyBot
83009
養貓
9787674
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:里菲安語 歐亞大陸
14
3459083
9787675
2026-05-24T18:23:19Z
TongcyBot
83009
養貓
9787675
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:里菲安語 地球
14
3459084
9787676
2026-05-24T18:23:24Z
TongcyBot
83009
養貓
9787676
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:里菲安語 西班牙
14
3459085
9787677
2026-05-24T18:23:33Z
TongcyBot
83009
養貓
9787677
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:高棉語 西班牙
14
3459086
9787678
2026-05-24T18:23:40Z
TongcyBot
83009
養貓
9787678
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:壯語 西班牙
14
3459087
9787679
2026-05-24T18:23:48Z
TongcyBot
83009
養貓
9787679
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:Rhymes:意大利語/urmuri
14
3459088
9787680
2026-05-24T18:23:55Z
TongcyBot
83009
養貓
9787680
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:Rhymes:意大利語/urmuri/3音節
14
3459089
9787681
2026-05-24T18:24:01Z
TongcyBot
83009
養貓
9787681
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:Rhymes:書面挪威語/aŋsn̩
14
3459090
9787682
2026-05-24T18:24:06Z
TongcyBot
83009
養貓
9787682
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:Rhymes:波蘭語/ɛtra
14
3459091
9787683
2026-05-24T18:24:15Z
TongcyBot
83009
養貓
9787683
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:Rhymes:波蘭語/ɛtra/4音節
14
3459092
9787684
2026-05-24T18:24:26Z
TongcyBot
83009
養貓
9787684
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:Rhymes:英語/eɪvɪt/4音節
14
3459093
9787685
2026-05-24T18:24:32Z
TongcyBot
83009
養貓
9787685
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:Rhymes:英語/æstə(ɹ)d
14
3459094
9787686
2026-05-24T18:24:39Z
TongcyBot
83009
養貓
9787686
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:Rhymes:英語/æstə(ɹ)d/2音節
14
3459095
9787687
2026-05-24T18:24:44Z
TongcyBot
83009
養貓
9787687
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:Rhymes:英語/ævɪt
14
3459096
9787688
2026-05-24T18:24:50Z
TongcyBot
83009
養貓
9787688
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:Rhymes:英語/ævɪt/4音節
14
3459097
9787689
2026-05-24T18:24:55Z
TongcyBot
83009
養貓
9787689
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:Rhymes:英語/ɑːstəd
14
3459098
9787690
2026-05-24T18:25:00Z
TongcyBot
83009
養貓
9787690
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:Rhymes:英語/ɑːstəd/2音節
14
3459099
9787691
2026-05-24T18:25:06Z
TongcyBot
83009
養貓
9787691
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:Rhymes:英語/ɪketi/3音節
14
3459100
9787692
2026-05-24T18:25:13Z
TongcyBot
83009
養貓
9787692
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:Rhymes:英語/ɪkɪti/3音節
14
3459101
9787693
2026-05-24T18:25:19Z
TongcyBot
83009
養貓
9787693
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:Rhymes:英語/ɪvəɹəs
14
3459102
9787694
2026-05-24T18:25:24Z
TongcyBot
83009
養貓
9787694
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:Rhymes:英語/ɪvəɹəs/4音節
14
3459103
9787695
2026-05-24T18:25:30Z
TongcyBot
83009
養貓
9787695
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:Rhymes:英語/ɪə(ɹ)kæt
14
3459104
9787696
2026-05-24T18:25:36Z
TongcyBot
83009
養貓
9787696
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:Rhymes:英語/ɪə(ɹ)kæt/2音節
14
3459105
9787697
2026-05-24T18:25:42Z
TongcyBot
83009
養貓
9787697
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:Rhymes:葡萄牙語/aʎu/4音節
14
3459106
9787698
2026-05-24T18:25:47Z
TongcyBot
83009
養貓
9787698
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:Rhymes:葡萄牙語/uɾɐs
14
3459107
9787699
2026-05-24T18:25:53Z
TongcyBot
83009
養貓
9787699
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:Rhymes:葡萄牙語/uɾɐs/3音節
14
3459108
9787700
2026-05-24T18:25:59Z
TongcyBot
83009
養貓
9787700
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:Rhymes:葡萄牙語/uɾɐʃ
14
3459109
9787701
2026-05-24T18:26:05Z
TongcyBot
83009
養貓
9787701
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:Rhymes:葡萄牙語/uɾɐʃ/3音節
14
3459110
9787702
2026-05-24T18:26:11Z
TongcyBot
83009
養貓
9787702
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:俄語 安提瓜和巴布達
14
3459111
9787703
2026-05-24T18:26:17Z
TongcyBot
83009
養貓
9787703
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:來自原始印歐語詞根*weyh₁-的原始波羅的-斯拉夫語詞
14
3459112
9787704
2026-05-24T18:26:24Z
TongcyBot
83009
養貓
9787704
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:來自原始印歐語詞根*neh₂w-的俄語詞
14
3459113
9787705
2026-05-24T18:26:30Z
TongcyBot
83009
養貓
9787705
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:來自原始印歐語詞根*(s)meh₂-的俄語詞
14
3459114
9787706
2026-05-24T18:26:36Z
TongcyBot
83009
養貓
9787706
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:來自原始印歐語詞根*weyh₁-的波蘭語詞
14
3459115
9787707
2026-05-24T18:26:42Z
TongcyBot
83009
養貓
9787707
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:塞爾維亞-克羅地亞語 委內瑞拉
14
3459116
9787708
2026-05-24T18:27:41Z
TongcyBot
83009
養貓
9787708
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:塞爾維亞-克羅地亞語 布隆迪
14
3459117
9787709
2026-05-24T18:27:47Z
TongcyBot
83009
養貓
9787709
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:塞爾維亞-克羅地亞語 斯洛伐克
14
3459118
9787710
2026-05-24T18:27:53Z
TongcyBot
83009
養貓
9787710
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:威爾士語 約旦
14
3459119
9787711
2026-05-24T18:27:59Z
TongcyBot
83009
養貓
9787711
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:拉脫維亞語 列支敦士登
14
3459120
9787712
2026-05-24T18:28:07Z
TongcyBot
83009
養貓
9787712
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:朝鮮語 斯洛伐克
14
3459121
9787713
2026-05-24T18:28:15Z
TongcyBot
83009
養貓
9787713
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:朝鮮語 立陶宛
14
3459122
9787714
2026-05-24T18:28:22Z
TongcyBot
83009
養貓
9787714
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:瑞典語 列支敦士登
14
3459123
9787715
2026-05-24T18:28:28Z
TongcyBot
83009
養貓
9787715
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:白俄羅斯語 斯洛伐克
14
3459124
9787716
2026-05-24T18:28:35Z
TongcyBot
83009
養貓
9787716
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:納瓦霍語 約旦
14
3459125
9787717
2026-05-24T18:28:41Z
TongcyBot
83009
養貓
9787717
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:丁卡語 布隆迪
14
3459126
9787718
2026-05-24T18:28:49Z
TongcyBot
83009
養貓
9787718
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:世界語 列支敦士登
14
3459127
9787719
2026-05-24T18:28:55Z
TongcyBot
83009
養貓
9787719
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:世界語 委內瑞拉
14
3459128
9787720
2026-05-24T18:29:03Z
TongcyBot
83009
養貓
9787720
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:中古英語 埃及
14
3459129
9787721
2026-05-24T18:29:10Z
TongcyBot
83009
養貓
9787721
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:中古英語 立陶宛
14
3459130
9787722
2026-05-24T18:29:18Z
TongcyBot
83009
養貓
9787722
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:中瓦斯特卡納瓦特爾語 埃及
14
3459131
9787723
2026-05-24T18:29:25Z
TongcyBot
83009
養貓
9787723
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:中瓦斯特卡納瓦特爾語 委內瑞拉
14
3459132
9787724
2026-05-24T18:29:32Z
TongcyBot
83009
養貓
9787724
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:中瓦斯特卡納瓦特爾語 布隆迪
14
3459133
9787725
2026-05-24T18:29:39Z
TongcyBot
83009
養貓
9787725
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:中瓦斯特卡納瓦特爾語 挪威
14
3459134
9787726
2026-05-24T18:29:46Z
TongcyBot
83009
養貓
9787726
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:中瓦斯特卡納瓦特爾語 約旦
14
3459135
9787727
2026-05-24T18:29:53Z
TongcyBot
83009
養貓
9787727
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:中瓦斯特卡納瓦特爾語 臺灣
14
3459136
9787728
2026-05-24T18:29:59Z
TongcyBot
83009
養貓
9787728
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:中瓦斯特卡納瓦特爾語 阿富汗
14
3459137
9787729
2026-05-24T18:30:07Z
TongcyBot
83009
養貓
9787729
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:中納瓦特爾語 丹麥
14
3459138
9787730
2026-05-24T18:30:13Z
TongcyBot
83009
養貓
9787730
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:中納瓦特爾語 列支敦士登
14
3459140
9787732
2026-05-24T18:30:22Z
TongcyBot
83009
養貓
9787732
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:中納瓦特爾語 加拿大
14
3459141
9787733
2026-05-24T18:30:28Z
TongcyBot
83009
養貓
9787733
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:中納瓦特爾語 埃及
14
3459142
9787734
2026-05-24T18:30:35Z
TongcyBot
83009
養貓
9787734
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:中納瓦特爾語 委內瑞拉
14
3459143
9787735
2026-05-24T18:30:42Z
TongcyBot
83009
養貓
9787735
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:中納瓦特爾語 布隆迪
14
3459144
9787736
2026-05-24T18:30:48Z
TongcyBot
83009
養貓
9787736
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:中納瓦特爾語 希臘
14
3459145
9787738
2026-05-24T18:31:55Z
TongcyBot
83009
養貓
9787738
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:中納瓦特爾語 挪威
14
3459146
9787739
2026-05-24T18:32:02Z
TongcyBot
83009
養貓
9787739
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:中納瓦特爾語 斯洛伐克
14
3459147
9787740
2026-05-24T18:32:11Z
TongcyBot
83009
養貓
9787740
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:中納瓦特爾語 比利時
14
3459148
9787741
2026-05-24T18:32:18Z
TongcyBot
83009
養貓
9787741
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:中納瓦特爾語 湯加
14
3459149
9787742
2026-05-24T18:32:24Z
TongcyBot
83009
養貓
9787742
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:中納瓦特爾語 立陶宛
14
3459150
9787743
2026-05-24T18:32:31Z
TongcyBot
83009
養貓
9787743
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:中納瓦特爾語 約旦
14
3459151
9787744
2026-05-24T18:32:37Z
TongcyBot
83009
養貓
9787744
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:中納瓦特爾語 臺灣
14
3459152
9787745
2026-05-24T18:32:43Z
TongcyBot
83009
養貓
9787745
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:中納瓦特爾語 阿富汗
14
3459153
9787746
2026-05-24T18:32:50Z
TongcyBot
83009
養貓
9787746
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:中部法蘭克尼亞語 希臘
14
3459154
9787747
2026-05-24T18:32:56Z
TongcyBot
83009
養貓
9787747
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:丹麥語 列支敦士登
14
3459155
9787748
2026-05-24T18:33:03Z
TongcyBot
83009
養貓
9787748
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:丹麥語 布隆迪
14
3459156
9787749
2026-05-24T18:33:09Z
TongcyBot
83009
養貓
9787749
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:丹麥語 湯加
14
3459157
9787750
2026-05-24T18:33:16Z
TongcyBot
83009
養貓
9787750
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:丹麥語 立陶宛
14
3459158
9787751
2026-05-24T18:33:23Z
TongcyBot
83009
養貓
9787751
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:亞美尼亞語 列支敦士登
14
3459159
9787752
2026-05-24T18:33:30Z
TongcyBot
83009
養貓
9787752
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:亞美尼亞語 加拿大
14
3459160
9787753
2026-05-24T18:33:36Z
TongcyBot
83009
養貓
9787753
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:亞美尼亞語 布隆迪
14
3459161
9787754
2026-05-24T18:33:43Z
TongcyBot
83009
養貓
9787754
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:亞美尼亞語 約旦
14
3459162
9787755
2026-05-24T18:33:51Z
TongcyBot
83009
養貓
9787755
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:亞美尼亞語 臺灣
14
3459163
9787756
2026-05-24T18:33:58Z
TongcyBot
83009
養貓
9787756
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:亞美尼亞語 阿富汗
14
3459164
9787757
2026-05-24T18:34:04Z
TongcyBot
83009
養貓
9787757
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:亞述新亞拉姆語 挪威
14
3459166
9787759
2026-05-24T18:34:11Z
TongcyBot
83009
養貓
9787759
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:亞齊語 列支敦士登
14
3459167
9787760
2026-05-24T18:34:18Z
TongcyBot
83009
養貓
9787760
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:他加祿語 丹麥
14
3459168
9787761
2026-05-24T18:34:25Z
TongcyBot
83009
養貓
9787761
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:他加祿語 布隆迪
14
3459169
9787762
2026-05-24T18:34:31Z
TongcyBot
83009
養貓
9787762
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:伊多語 列支敦士登
14
3459170
9787763
2026-05-24T18:34:40Z
TongcyBot
83009
養貓
9787763
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:伊多語 希臘
14
3459171
9787764
2026-05-24T18:34:46Z
TongcyBot
83009
養貓
9787764
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:伊多語 挪威
14
3459172
9787766
2026-05-24T18:34:53Z
TongcyBot
83009
養貓
9787766
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:伊多語 立陶宛
14
3459173
9787767
2026-05-24T18:34:59Z
TongcyBot
83009
養貓
9787767
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:伊多語 阿富汗
14
3459174
9787768
2026-05-24T18:35:06Z
TongcyBot
83009
養貓
9787768
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:佛羅語 埃及
14
3459175
9787769
2026-05-24T18:35:12Z
TongcyBot
83009
養貓
9787769
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:俄語 湯加
14
3459176
9787770
2026-05-24T18:35:18Z
TongcyBot
83009
養貓
9787770
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:保加利亞語 加拿大
14
3459177
9787771
2026-05-24T18:35:25Z
TongcyBot
83009
養貓
9787771
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:保加利亞語 委內瑞拉
14
3459178
9787772
2026-05-24T18:35:31Z
TongcyBot
83009
養貓
9787772
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:保加利亞語 挪威
14
3459179
9787773
2026-05-24T18:35:38Z
TongcyBot
83009
養貓
9787773
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:保加利亞語 阿富汗
14
3459180
9787774
2026-05-24T18:35:47Z
TongcyBot
83009
養貓
9787774
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:冰島語 委內瑞拉
14
3459181
9787775
2026-05-24T18:35:54Z
TongcyBot
83009
養貓
9787775
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:冰島語 約旦
14
3459182
9787776
2026-05-24T18:36:00Z
TongcyBot
83009
養貓
9787776
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:冰島語 臺灣
14
3459183
9787777
2026-05-24T18:36:08Z
TongcyBot
83009
養貓
9787777
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:加利西亞語 丹麥
14
3459184
9787778
2026-05-24T18:36:15Z
TongcyBot
83009
養貓
9787778
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:巴什基爾語 英國構成國
14
3459185
9787779
2026-05-24T18:36:20Z
TongcyBot
83009
養貓
9787779
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:加利西亞語 列支敦士登
14
3459186
9787780
2026-05-24T18:36:21Z
TongcyBot
83009
養貓
9787780
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:巴什基爾語 構成國
14
3459187
9787781
2026-05-24T18:36:26Z
TongcyBot
83009
養貓
9787781
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:加利西亞語 斯洛伐克
14
3459188
9787782
2026-05-24T18:36:28Z
TongcyBot
83009
養貓
9787782
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:加利西亞語 立陶宛
14
3459189
9787783
2026-05-24T18:36:34Z
TongcyBot
83009
養貓
9787783
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:加告茲語 委內瑞拉
14
3459190
9787784
2026-05-24T18:36:41Z
TongcyBot
83009
養貓
9787784
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:加告茲語 挪威
14
3459191
9787785
2026-05-24T18:36:48Z
TongcyBot
83009
養貓
9787785
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:巴斯克語 英國構成國
14
3459192
9787786
2026-05-24T18:36:53Z
TongcyBot
83009
養貓
9787786
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:加告茲語 阿富汗
14
3459193
9787787
2026-05-24T18:36:54Z
TongcyBot
83009
養貓
9787787
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:巴斯克語 構成國
14
3459194
9787788
2026-05-24T18:36:58Z
TongcyBot
83009
養貓
9787788
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:加泰羅尼亞語 委內瑞拉
14
3459195
9787789
2026-05-24T18:37:01Z
TongcyBot
83009
養貓
9787789
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:加泰羅尼亞語 布隆迪
14
3459196
9787790
2026-05-24T18:37:07Z
TongcyBot
83009
養貓
9787790
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:加泰羅尼亞語 斯洛伐克
14
3459197
9787791
2026-05-24T18:37:16Z
TongcyBot
83009
養貓
9787791
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:加泰羅尼亞語 湯加
14
3459198
9787792
2026-05-24T18:37:23Z
TongcyBot
83009
養貓
9787792
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:加泰羅尼亞語 立陶宛
14
3459199
9787793
2026-05-24T18:37:30Z
TongcyBot
83009
養貓
9787793
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:加泰羅尼亞語 約旦
14
3459200
9787794
2026-05-24T18:37:37Z
TongcyBot
83009
養貓
9787794
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:匈牙利語 布隆迪
14
3459201
9787795
2026-05-24T18:37:43Z
TongcyBot
83009
養貓
9787795
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:巴斯克語 政治區劃
14
3459202
9787796
2026-05-24T18:37:50Z
TongcyBot
83009
養貓
9787796
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:匈牙利語 捷克斯洛伐克
14
3459203
9787797
2026-05-24T18:37:50Z
TongcyBot
83009
養貓
9787797
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:匈牙利語 前國家和類國家實體
14
3459204
9787798
2026-05-24T18:37:56Z
TongcyBot
83009
養貓
9787798
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:匈牙利語 前政治實體
14
3459205
9787799
2026-05-24T18:38:02Z
TongcyBot
83009
養貓
9787799
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:匈牙利語 湯加
14
3459206
9787800
2026-05-24T18:38:10Z
TongcyBot
83009
養貓
9787800
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:匈牙利語 約旦
14
3459207
9787801
2026-05-24T18:38:16Z
TongcyBot
83009
養貓
9787801
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:北薩米語 挪威
14
3459208
9787802
2026-05-24T18:38:23Z
TongcyBot
83009
養貓
9787802
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:北薩米語 約旦
14
3459209
9787803
2026-05-24T18:38:30Z
TongcyBot
83009
養貓
9787803
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:巴斯克語 特定國家的政治區劃
14
3459210
9787804
2026-05-24T18:38:33Z
TongcyBot
83009
養貓
9787804
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:特定國家的政治區劃
14
3459211
9787805
2026-05-24T18:38:37Z
TongcyBot
83009
養貓
9787805
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:南非語 布隆迪
14
3459212
9787806
2026-05-24T18:38:37Z
TongcyBot
83009
養貓
9787806
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:巴什基爾語 特定國家的政治區劃
14
3459213
9787807
2026-05-24T18:38:44Z
TongcyBot
83009
養貓
9787807
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:南非語 希臘
14
3459214
9787808
2026-05-24T18:38:45Z
TongcyBot
83009
養貓
9787808
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:巴什基爾語 政治區劃
14
3459215
9787809
2026-05-24T18:38:49Z
TongcyBot
83009
養貓
9787809
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:南非語 湯加
14
3459216
9787810
2026-05-24T18:38:51Z
TongcyBot
83009
養貓
9787810
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:孟加拉語 不丹
14
3459217
9787811
2026-05-24T18:38:57Z
TongcyBot
83009
養貓
9787811
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:南黎凡特阿拉伯語 斯洛伐克
14
3459218
9787812
2026-05-24T18:38:57Z
TongcyBot
83009
養貓
9787812
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:印地語 委內瑞拉
14
3459219
9787813
2026-05-24T18:39:04Z
TongcyBot
83009
養貓
9787813
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:新英格蘭英語
14
3459220
9787814
2026-05-24T18:39:07Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「{{auto cat|lect=1}}」的新頁面
9787814
wikitext
text/x-wiki
{{auto cat|lect=1}}
ertee7cys9kcm61xm19ibbz6xr74sxz
Category:朝鮮語 黑山
14
3459221
9787815
2026-05-24T18:39:48Z
TongcyBot
83009
養貓
9787815
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:老撾語 蒙古
14
3459222
9787816
2026-05-24T18:40:08Z
TongcyBot
83009
養貓
9787816
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:印尼語 阿富汗
14
3459223
9787817
2026-05-24T18:40:13Z
TongcyBot
83009
養貓
9787817
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:聖赫勒拿、阿森松和特里斯坦-達庫尼亞
14
3459224
9787818
2026-05-24T18:40:15Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「{{auto cat}}」的新頁面
9787818
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:古典納瓦特爾語 埃及
14
3459225
9787819
2026-05-24T18:40:20Z
TongcyBot
83009
養貓
9787819
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:哈薩克語 加拿大
14
3459226
9787820
2026-05-24T18:40:27Z
TongcyBot
83009
養貓
9787820
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:哈薩克語 阿富汗
14
3459227
9787821
2026-05-24T18:40:36Z
TongcyBot
83009
養貓
9787821
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:因特語 埃及
14
3459228
9787822
2026-05-24T18:40:42Z
TongcyBot
83009
養貓
9787822
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:因特語 布隆迪
14
3459229
9787823
2026-05-24T18:40:48Z
TongcyBot
83009
養貓
9787823
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:因特語 挪威
14
3459230
9787824
2026-05-24T18:40:56Z
TongcyBot
83009
養貓
9787824
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:土庫曼語 委內瑞拉
14
3459231
9787825
2026-05-24T18:41:03Z
TongcyBot
83009
養貓
9787825
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:土庫曼語 阿富汗
14
3459232
9787826
2026-05-24T18:41:09Z
TongcyBot
83009
養貓
9787826
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:土耳其語 委內瑞拉
14
3459233
9787827
2026-05-24T18:41:16Z
TongcyBot
83009
養貓
9787827
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:土耳其語 布隆迪
14
3459234
9787828
2026-05-24T18:41:23Z
TongcyBot
83009
養貓
9787828
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:土耳其語 湯加
14
3459235
9787829
2026-05-24T18:41:30Z
TongcyBot
83009
養貓
9787829
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:坎卡奈語 埃及
14
3459236
9787830
2026-05-24T18:41:37Z
TongcyBot
83009
養貓
9787830
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:埃斯特雷馬杜拉語 丹麥
14
3459237
9787831
2026-05-24T18:41:43Z
TongcyBot
83009
養貓
9787831
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:塔吉克語 布隆迪
14
3459238
9787832
2026-05-24T18:42:50Z
TongcyBot
83009
養貓
9787832
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:塞爾維亞-克羅地亞語 加拿大
14
3459239
9787833
2026-05-24T18:42:57Z
TongcyBot
83009
養貓
9787833
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:壯語 希臘
14
3459240
9787834
2026-05-24T18:43:04Z
TongcyBot
83009
養貓
9787834
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:夏威夷語 斯洛伐克
14
3459241
9787835
2026-05-24T18:43:12Z
TongcyBot
83009
養貓
9787835
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:夏威夷語 立陶宛
14
3459242
9787836
2026-05-24T18:43:19Z
TongcyBot
83009
養貓
9787836
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:奧克語 委內瑞拉
14
3459243
9787837
2026-05-24T18:43:25Z
TongcyBot
83009
養貓
9787837
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:奧克語 挪威
14
3459244
9787838
2026-05-24T18:43:32Z
TongcyBot
83009
養貓
9787838
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:奧克語 斯洛伐克
14
3459245
9787839
2026-05-24T18:43:38Z
TongcyBot
83009
養貓
9787839
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:奧克語 約旦
14
3459246
9787840
2026-05-24T18:43:45Z
TongcyBot
83009
養貓
9787840
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:奧克語 阿富汗
14
3459247
9787841
2026-05-24T18:43:52Z
TongcyBot
83009
養貓
9787841
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:奧塞梯語 阿富汗
14
3459248
9787842
2026-05-24T18:43:59Z
TongcyBot
83009
養貓
9787842
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:威尼斯語 加拿大
14
3459249
9787843
2026-05-24T18:44:06Z
TongcyBot
83009
養貓
9787843
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:威爾士語 丹麥
14
3459250
9787844
2026-05-24T18:44:13Z
TongcyBot
83009
養貓
9787844
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:威爾士語 列支敦士登
14
3459251
9787845
2026-05-24T18:44:19Z
TongcyBot
83009
養貓
9787845
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:威爾士語 加拿大
14
3459252
9787846
2026-05-24T18:44:26Z
TongcyBot
83009
養貓
9787846
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:威爾士語 委內瑞拉
14
3459253
9787847
2026-05-24T18:44:32Z
TongcyBot
83009
養貓
9787847
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:威爾士語 布隆迪
14
3459254
9787848
2026-05-24T18:44:39Z
TongcyBot
83009
養貓
9787848
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:威爾士語 挪威
14
3459255
9787849
2026-05-24T18:44:46Z
TongcyBot
83009
養貓
9787849
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:威爾士語 立陶宛
14
3459256
9787850
2026-05-24T18:44:55Z
TongcyBot
83009
養貓
9787850
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:威爾士語 阿富汗
14
3459257
9787851
2026-05-24T18:45:05Z
TongcyBot
83009
養貓
9787851
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:孟加拉語 委內瑞拉
14
3459258
9787852
2026-05-24T18:45:12Z
TongcyBot
83009
養貓
9787852
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:孟加拉語 布隆迪
14
3459259
9787853
2026-05-24T18:45:18Z
TongcyBot
83009
養貓
9787853
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:孟加拉語 希臘
14
3459260
9787854
2026-05-24T18:45:25Z
TongcyBot
83009
養貓
9787854
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:孟加拉語 挪威
14
3459261
9787855
2026-05-24T18:45:31Z
TongcyBot
83009
養貓
9787855
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:孟加拉語 斯洛伐克
14
3459262
9787856
2026-05-24T18:45:40Z
TongcyBot
83009
養貓
9787856
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:孟加拉語 比利時
14
3459263
9787857
2026-05-24T18:45:47Z
TongcyBot
83009
養貓
9787857
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:孟加拉語 湯加
14
3459264
9787858
2026-05-24T18:45:53Z
TongcyBot
83009
養貓
9787858
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:孟加拉語 立陶宛
14
3459265
9787859
2026-05-24T18:46:00Z
TongcyBot
83009
養貓
9787859
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:孟加拉語 約旦
14
3459266
9787860
2026-05-24T18:46:07Z
TongcyBot
83009
養貓
9787860
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:孟加拉語 臺灣
14
3459267
9787861
2026-05-24T18:46:14Z
TongcyBot
83009
養貓
9787861
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:尤卡坦瑪雅語 埃及
14
3459268
9787862
2026-05-24T18:46:21Z
TongcyBot
83009
養貓
9787862
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:巴什基爾語 希臘
14
3459269
9787863
2026-05-24T18:46:28Z
TongcyBot
83009
養貓
9787863
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:巴什基爾語 挪威
14
3459270
9787864
2026-05-24T18:46:34Z
TongcyBot
83009
養貓
9787864
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:巴什基爾語 阿富汗
14
3459271
9787865
2026-05-24T18:46:43Z
TongcyBot
83009
養貓
9787865
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:巴斯克語 列支敦士登
14
3459272
9787866
2026-05-24T18:46:53Z
TongcyBot
83009
養貓
9787866
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:巴斯克語 布隆迪
14
3459273
9787867
2026-05-24T18:47:00Z
TongcyBot
83009
養貓
9787867
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:巴斯克語 挪威
14
3459274
9787868
2026-05-24T18:47:06Z
TongcyBot
83009
養貓
9787868
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:巴斯克語 立陶宛
14
3459275
9787869
2026-05-24T18:47:13Z
TongcyBot
83009
養貓
9787869
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:布列塔尼語 埃及
14
3459276
9787870
2026-05-24T18:47:21Z
TongcyBot
83009
養貓
9787870
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:布列塔尼語 布隆迪
14
3459277
9787871
2026-05-24T18:47:28Z
TongcyBot
83009
養貓
9787871
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:布列塔尼語 挪威
14
3459278
9787872
2026-05-24T18:47:35Z
TongcyBot
83009
養貓
9787872
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:希伯來語 加拿大
14
3459279
9787873
2026-05-24T18:47:42Z
TongcyBot
83009
養貓
9787873
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:希伯來語 委內瑞拉
14
3459280
9787874
2026-05-24T18:47:48Z
TongcyBot
83009
養貓
9787874
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:希伯來語 斯洛伐克
14
3459281
9787875
2026-05-24T18:47:55Z
TongcyBot
83009
養貓
9787875
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:希伯來語 立陶宛
14
3459282
9787876
2026-05-24T18:48:01Z
TongcyBot
83009
養貓
9787876
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:希臘語 委內瑞拉
14
3459283
9787877
2026-05-24T18:48:08Z
TongcyBot
83009
養貓
9787877
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:弗留利語 斯洛伐克
14
3459284
9787878
2026-05-24T18:48:14Z
TongcyBot
83009
養貓
9787878
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:德語 委內瑞拉
14
3459285
9787879
2026-05-24T18:48:21Z
TongcyBot
83009
養貓
9787879
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:德語 布隆迪
14
3459286
9787880
2026-05-24T18:48:27Z
TongcyBot
83009
養貓
9787880
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:德語 湯加
14
3459287
9787881
2026-05-24T18:48:36Z
TongcyBot
83009
養貓
9787881
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:意大利語 列支敦士登
14
3459288
9787882
2026-05-24T18:48:43Z
TongcyBot
83009
養貓
9787882
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:意大利語 加拿大
14
3459289
9787883
2026-05-24T18:48:50Z
TongcyBot
83009
養貓
9787883
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:意大利語 委內瑞拉
14
3459290
9787884
2026-05-24T18:48:57Z
TongcyBot
83009
養貓
9787884
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:意大利語 布隆迪
14
3459291
9787885
2026-05-24T18:49:03Z
TongcyBot
83009
養貓
9787885
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:意大利語 挪威
14
3459292
9787886
2026-05-24T18:49:09Z
TongcyBot
83009
養貓
9787886
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:意大利語 湯加
14
3459293
9787887
2026-05-24T18:49:18Z
TongcyBot
83009
養貓
9787887
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:意大利語 立陶宛
14
3459294
9787888
2026-05-24T18:49:24Z
TongcyBot
83009
養貓
9787888
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:意第緒語 挪威
14
3459295
9787889
2026-05-24T18:49:31Z
TongcyBot
83009
養貓
9787889
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:意第緒語 斯洛伐克
14
3459296
9787890
2026-05-24T18:49:37Z
TongcyBot
83009
養貓
9787890
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:意第緒語 約旦
14
3459297
9787891
2026-05-24T18:49:44Z
TongcyBot
83009
養貓
9787891
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:愛沙尼亞語 斯洛伐克
14
3459298
9787892
2026-05-24T18:49:51Z
TongcyBot
83009
養貓
9787892
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:愛爾蘭語 委內瑞拉
14
3459299
9787893
2026-05-24T18:49:57Z
TongcyBot
83009
養貓
9787893
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:愛爾蘭語 斯洛伐克
14
3459300
9787894
2026-05-24T18:50:04Z
TongcyBot
83009
養貓
9787894
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:愛爾蘭語 臺灣
14
3459301
9787895
2026-05-24T18:50:10Z
TongcyBot
83009
養貓
9787895
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:拉丁語 委內瑞拉
14
3459302
9787896
2026-05-24T18:50:17Z
TongcyBot
83009
養貓
9787896
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:拉丁語 湯加
14
3459303
9787897
2026-05-24T18:50:25Z
TongcyBot
83009
養貓
9787897
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:拉丁語 立陶宛
14
3459304
9787898
2026-05-24T18:50:32Z
TongcyBot
83009
養貓
9787898
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:拉丁語 臺灣
14
3459305
9787899
2026-05-24T18:50:40Z
TongcyBot
83009
養貓
9787899
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:拉羅湯加語 湯加
14
3459306
9787900
2026-05-24T18:50:48Z
TongcyBot
83009
養貓
9787900
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:拉脫維亞語 委內瑞拉
14
3459307
9787901
2026-05-24T18:50:55Z
TongcyBot
83009
養貓
9787901
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:捷克語 委內瑞拉
14
3459308
9787902
2026-05-24T18:51:01Z
TongcyBot
83009
養貓
9787902
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:捷克語 布隆迪
14
3459309
9787903
2026-05-24T18:51:07Z
TongcyBot
83009
養貓
9787903
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:捷克語 湯加
14
3459310
9787904
2026-05-24T18:51:14Z
TongcyBot
83009
養貓
9787904
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:撒丁語 加拿大
14
3459311
9787905
2026-05-24T18:51:20Z
TongcyBot
83009
養貓
9787905
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:撒丁語 挪威
14
3459312
9787906
2026-05-24T18:51:27Z
TongcyBot
83009
養貓
9787906
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:撒丁語 立陶宛
14
3459313
9787907
2026-05-24T18:51:34Z
TongcyBot
83009
養貓
9787907
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:斐濟語 立陶宛
14
3459314
9787908
2026-05-24T18:51:41Z
TongcyBot
83009
養貓
9787908
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:斯洛伐克語 委內瑞拉
14
3459315
9787909
2026-05-24T18:51:47Z
TongcyBot
83009
養貓
9787909
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:斯洛伐克語 阿富汗
14
3459316
9787910
2026-05-24T18:51:55Z
TongcyBot
83009
養貓
9787910
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:斯洛文尼亞語 埃及
14
3459317
9787911
2026-05-24T18:52:01Z
TongcyBot
83009
養貓
9787911
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:斯瓦希里語 布隆迪
14
3459318
9787912
2026-05-24T18:52:08Z
TongcyBot
83009
養貓
9787912
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:新挪威語 列支敦士登
14
3459319
9787913
2026-05-24T18:52:15Z
TongcyBot
83009
養貓
9787913
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:新挪威語 加拿大
14
3459320
9787914
2026-05-24T18:52:22Z
TongcyBot
83009
養貓
9787914
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:新挪威語 委內瑞拉
14
3459321
9787915
2026-05-24T18:52:28Z
TongcyBot
83009
養貓
9787915
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:新挪威語 布隆迪
14
3459322
9787916
2026-05-24T18:52:35Z
TongcyBot
83009
養貓
9787916
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:新挪威語 湯加
14
3459323
9787917
2026-05-24T18:52:43Z
TongcyBot
83009
養貓
9787917
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:新挪威語 立陶宛
14
3459324
9787918
2026-05-24T18:52:50Z
TongcyBot
83009
養貓
9787918
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:旁遮普語 阿富汗
14
3459325
9787919
2026-05-24T18:52:56Z
TongcyBot
83009
養貓
9787919
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:日語 布隆迪
14
3459326
9787920
2026-05-24T18:53:03Z
TongcyBot
83009
養貓
9787920
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:日語 阿富汗
14
3459327
9787921
2026-05-24T18:53:10Z
TongcyBot
83009
養貓
9787921
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:普什圖語 阿富汗
14
3459328
9787922
2026-05-24T18:53:16Z
TongcyBot
83009
養貓
9787922
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:書面挪威語 列支敦士登
14
3459329
9787923
2026-05-24T18:53:24Z
TongcyBot
83009
養貓
9787923
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:書面挪威語 加拿大
14
3459330
9787924
2026-05-24T18:53:30Z
TongcyBot
83009
養貓
9787924
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:書面挪威語 委內瑞拉
14
3459331
9787925
2026-05-24T18:53:37Z
TongcyBot
83009
養貓
9787925
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:書面挪威語 布隆迪
14
3459332
9787926
2026-05-24T18:53:44Z
TongcyBot
83009
養貓
9787926
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:書面挪威語 湯加
14
3459333
9787927
2026-05-24T18:53:52Z
TongcyBot
83009
養貓
9787927
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:書面挪威語 立陶宛
14
3459334
9787928
2026-05-24T18:53:58Z
TongcyBot
83009
養貓
9787928
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:曼島語 委內瑞拉
14
3459335
9787929
2026-05-24T18:54:04Z
TongcyBot
83009
養貓
9787929
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:曼島語 挪威
14
3459336
9787930
2026-05-24T18:54:10Z
TongcyBot
83009
養貓
9787930
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:朝鮮語 約旦
14
3459337
9787931
2026-05-24T18:54:19Z
TongcyBot
83009
養貓
9787931
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:林堡語 丹麥
14
3459338
9787932
2026-05-24T18:54:26Z
TongcyBot
83009
養貓
9787932
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:林堡語 挪威
14
3459339
9787933
2026-05-24T18:54:33Z
TongcyBot
83009
養貓
9787933
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:格魯吉亞語 委內瑞拉
14
3459340
9787934
2026-05-24T18:54:40Z
TongcyBot
83009
養貓
9787934
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:格魯吉亞語 挪威
14
3459341
9787935
2026-05-24T18:54:47Z
TongcyBot
83009
養貓
9787935
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:格魯吉亞語 斯洛伐克
14
3459342
9787936
2026-05-24T18:54:54Z
TongcyBot
83009
養貓
9787936
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:毛利語 委內瑞拉
14
3459343
9787937
2026-05-24T18:55:01Z
TongcyBot
83009
養貓
9787937
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:毛利語 斯洛伐克
14
3459344
9787938
2026-05-24T18:55:07Z
TongcyBot
83009
養貓
9787938
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:毛里求斯克里奧爾語 阿富汗
14
3459345
9787939
2026-05-24T18:55:14Z
TongcyBot
83009
養貓
9787939
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:沃拉普克語 加拿大
14
3459346
9787940
2026-05-24T18:55:21Z
TongcyBot
83009
養貓
9787940
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:沃拉普克語 埃及
14
3459347
9787941
2026-05-24T18:55:27Z
TongcyBot
83009
養貓
9787941
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:沃拉普克語 委內瑞拉
14
3459348
9787942
2026-05-24T18:55:33Z
TongcyBot
83009
養貓
9787942
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:沃拉普克語 布隆迪
14
3459349
9787943
2026-05-24T18:55:39Z
TongcyBot
83009
養貓
9787943
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:沃拉普克語 湯加
14
3459350
9787944
2026-05-24T18:55:46Z
TongcyBot
83009
養貓
9787944
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:沃拉普克語 立陶宛
14
3459351
9787945
2026-05-24T18:55:52Z
TongcyBot
83009
養貓
9787945
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:沃拉普克語 約旦
14
3459352
9787946
2026-05-24T18:55:58Z
TongcyBot
83009
養貓
9787946
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:沃拉普克語 臺灣
14
3459353
9787947
2026-05-24T18:56:04Z
TongcyBot
83009
養貓
9787947
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:法羅語 埃及
14
3459354
9787948
2026-05-24T18:56:11Z
TongcyBot
83009
養貓
9787948
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:法羅語 湯加
14
3459355
9787949
2026-05-24T18:56:18Z
TongcyBot
83009
養貓
9787949
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:法蘭克-普羅旺斯語 加拿大
14
3459356
9787950
2026-05-24T18:56:25Z
TongcyBot
83009
養貓
9787950
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:法蘭克-普羅旺斯語 埃及
14
3459357
9787951
2026-05-24T18:56:31Z
TongcyBot
83009
養貓
9787951
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:法蘭克-普羅旺斯語 委內瑞拉
14
3459358
9787952
2026-05-24T18:56:38Z
TongcyBot
83009
養貓
9787952
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:法蘭克-普羅旺斯語 希臘
14
3459359
9787953
2026-05-24T18:56:45Z
TongcyBot
83009
養貓
9787953
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:法蘭克-普羅旺斯語 挪威
14
3459360
9787954
2026-05-24T18:56:52Z
TongcyBot
83009
養貓
9787954
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:法蘭克-普羅旺斯語 斯洛伐克
14
3459361
9787955
2026-05-24T18:56:59Z
TongcyBot
83009
養貓
9787955
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:法蘭克-普羅旺斯語 比利時
14
3459362
9787956
2026-05-24T18:57:05Z
TongcyBot
83009
養貓
9787956
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:法蘭克-普羅旺斯語 立陶宛
14
3459363
9787957
2026-05-24T18:57:12Z
TongcyBot
83009
養貓
9787957
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:法語 委內瑞拉
14
3459364
9787958
2026-05-24T18:57:18Z
TongcyBot
83009
養貓
9787958
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:法語 布隆迪
14
3459365
9787959
2026-05-24T18:57:25Z
TongcyBot
83009
養貓
9787959
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:法語 挪威
14
3459366
9787960
2026-05-24T18:57:32Z
TongcyBot
83009
養貓
9787960
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:波斯語 委內瑞拉
14
3459367
9787961
2026-05-24T18:57:41Z
TongcyBot
83009
養貓
9787961
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:波蘭語 布隆迪
14
3459368
9787962
2026-05-24T18:57:48Z
TongcyBot
83009
養貓
9787962
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:波蘭語 湯加
14
3459369
9787963
2026-05-24T18:57:57Z
TongcyBot
83009
養貓
9787963
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:波蘭語 約旦
14
3459370
9787964
2026-05-24T18:58:04Z
TongcyBot
83009
養貓
9787964
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:波蘭語 阿富汗
14
3459371
9787965
2026-05-24T18:58:11Z
TongcyBot
83009
養貓
9787965
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:泰盧固語 丹麥
14
3459372
9787966
2026-05-24T18:58:17Z
TongcyBot
83009
養貓
9787966
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:泰盧固語 加拿大
14
3459373
9787967
2026-05-24T18:58:23Z
TongcyBot
83009
養貓
9787967
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:泰盧固語 布隆迪
14
3459374
9787968
2026-05-24T18:58:30Z
TongcyBot
83009
養貓
9787968
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:泰盧固語 希臘
14
3459375
9787969
2026-05-24T18:58:35Z
TongcyBot
83009
養貓
9787969
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:泰盧固語 挪威
14
3459376
9787970
2026-05-24T18:58:41Z
TongcyBot
83009
養貓
9787970
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:泰盧固語 斯洛伐克
14
3459377
9787971
2026-05-24T18:58:51Z
TongcyBot
83009
養貓
9787971
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:泰盧固語 湯加
14
3459378
9787972
2026-05-24T18:58:57Z
TongcyBot
83009
養貓
9787972
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:泰盧固語 立陶宛
14
3459379
9787973
2026-05-24T18:59:03Z
TongcyBot
83009
養貓
9787973
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:泰盧固語 約旦
14
3459380
9787974
2026-05-24T18:59:09Z
TongcyBot
83009
養貓
9787974
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:泰盧固語 臺灣
14
3459381
9787975
2026-05-24T18:59:16Z
TongcyBot
83009
養貓
9787975
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:泰盧固語 阿富汗
14
3459382
9787976
2026-05-24T18:59:23Z
TongcyBot
83009
養貓
9787976
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:泰米爾語 丹麥
14
3459383
9787977
2026-05-24T18:59:30Z
TongcyBot
83009
養貓
9787977
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:泰語 委內瑞拉
14
3459384
9787978
2026-05-24T18:59:38Z
TongcyBot
83009
養貓
9787978
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:泰語 希臘
14
3459385
9787979
2026-05-24T18:59:44Z
TongcyBot
83009
養貓
9787979
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:海地克里奧爾語 委內瑞拉
14
3459386
9787980
2026-05-24T18:59:51Z
TongcyBot
83009
養貓
9787980
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:湯加語 湯加
14
3459387
9787981
2026-05-24T18:59:58Z
TongcyBot
83009
養貓
9787981
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:滿語 臺灣
14
3459388
9787982
2026-05-24T19:00:04Z
TongcyBot
83009
養貓
9787982
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:漢斯立克語 希臘
14
3459389
9787983
2026-05-24T19:00:11Z
TongcyBot
83009
養貓
9787983
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:烏克蘭語 列支敦士登
14
3459390
9787984
2026-05-24T19:00:17Z
TongcyBot
83009
養貓
9787984
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:烏克蘭語 委內瑞拉
14
3459391
9787985
2026-05-24T19:00:23Z
TongcyBot
83009
養貓
9787985
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:烏克蘭語 布隆迪
14
3459392
9787986
2026-05-24T19:00:30Z
TongcyBot
83009
養貓
9787986
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:烏克蘭語 挪威
14
3459393
9787987
2026-05-24T19:00:36Z
TongcyBot
83009
養貓
9787987
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:烏克蘭語 斯洛伐克
14
3459394
9787988
2026-05-24T19:00:43Z
TongcyBot
83009
養貓
9787988
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:烏克蘭語 湯加
14
3459395
9787989
2026-05-24T19:00:49Z
TongcyBot
83009
養貓
9787989
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:烏克蘭語 阿富汗
14
3459396
9787990
2026-05-24T19:00:56Z
TongcyBot
83009
養貓
9787990
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:烏爾都語 阿富汗
14
3459397
9787991
2026-05-24T19:01:03Z
TongcyBot
83009
養貓
9787991
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:烏茲別克語 委內瑞拉
14
3459398
9787992
2026-05-24T19:01:09Z
TongcyBot
83009
養貓
9787992
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:烏茲別克語 挪威
14
3459399
9787993
2026-05-24T19:01:16Z
TongcyBot
83009
養貓
9787993
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:烏茲別克語 約旦
14
3459400
9787994
2026-05-24T19:01:22Z
TongcyBot
83009
養貓
9787994
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:烏茲別克語 阿富汗
14
3459401
9787995
2026-05-24T19:01:28Z
TongcyBot
83009
養貓
9787995
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:瑞典語 委內瑞拉
14
3459402
9787996
2026-05-24T19:01:34Z
TongcyBot
83009
養貓
9787996
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:瑞典語 布隆迪
14
3459403
9787997
2026-05-24T19:01:41Z
TongcyBot
83009
養貓
9787997
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:瑞典語 斯洛伐克
14
3459404
9787998
2026-05-24T19:01:50Z
TongcyBot
83009
養貓
9787998
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:瑞典語 立陶宛
14
3459405
9787999
2026-05-24T19:01:56Z
TongcyBot
83009
養貓
9787999
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:白俄羅斯語 布隆迪
14
3459406
9788000
2026-05-24T19:02:02Z
TongcyBot
83009
養貓
9788000
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:白俄羅斯語 挪威
14
3459407
9788001
2026-05-24T19:02:08Z
TongcyBot
83009
養貓
9788001
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:盧旺達語 布隆迪
14
3459408
9788002
2026-05-24T19:02:15Z
TongcyBot
83009
養貓
9788002
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:盧森堡語 挪威
14
3459409
9788003
2026-05-24T19:02:21Z
TongcyBot
83009
養貓
9788003
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:盧森尼亞語 立陶宛
14
3459410
9788004
2026-05-24T19:02:27Z
TongcyBot
83009
養貓
9788004
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:科西嘉語 比利時
14
3459411
9788005
2026-05-24T19:02:34Z
TongcyBot
83009
養貓
9788005
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:立窩尼亞語 丹麥
14
3459412
9788006
2026-05-24T19:02:41Z
TongcyBot
83009
養貓
9788006
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:立窩尼亞語 挪威
14
3459413
9788007
2026-05-24T19:02:47Z
TongcyBot
83009
養貓
9788007
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:立陶宛語 列支敦士登
14
3459414
9788008
2026-05-24T19:02:54Z
TongcyBot
83009
養貓
9788008
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:立陶宛語 委內瑞拉
14
3459415
9788009
2026-05-24T19:03:00Z
TongcyBot
83009
養貓
9788009
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:立陶宛語 挪威
14
3459416
9788010
2026-05-24T19:03:07Z
TongcyBot
83009
養貓
9788010
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:約魯巴語 布隆迪
14
3459417
9788011
2026-05-24T19:03:13Z
TongcyBot
83009
養貓
9788011
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:納瓦霍語 列支敦士登
14
3459418
9788012
2026-05-24T19:03:20Z
TongcyBot
83009
養貓
9788012
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:納瓦霍語 加拿大
14
3459419
9788013
2026-05-24T19:03:26Z
TongcyBot
83009
養貓
9788013
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:納瓦霍語 埃及
14
3459420
9788014
2026-05-24T19:03:32Z
TongcyBot
83009
養貓
9788014
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:納瓦霍語 委內瑞拉
14
3459421
9788015
2026-05-24T19:03:39Z
TongcyBot
83009
養貓
9788015
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:納瓦霍語 希臘
14
3459422
9788016
2026-05-24T19:03:46Z
TongcyBot
83009
養貓
9788016
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:納瓦霍語 挪威
14
3459423
9788017
2026-05-24T19:03:53Z
TongcyBot
83009
養貓
9788017
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:納瓦霍語 比利時
14
3459424
9788018
2026-05-24T19:04:00Z
TongcyBot
83009
養貓
9788018
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:納瓦霍語 立陶宛
14
3459425
9788019
2026-05-24T19:04:06Z
TongcyBot
83009
養貓
9788019
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:維吾爾語 埃及
14
3459426
9788020
2026-05-24T19:04:13Z
TongcyBot
83009
養貓
9788020
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:維吾爾語 比利時
14
3459427
9788021
2026-05-24T19:04:20Z
TongcyBot
83009
養貓
9788021
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:維吾爾語 阿富汗
14
3459428
9788022
2026-05-24T19:04:27Z
TongcyBot
83009
養貓
9788022
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:維普斯語 比利時
14
3459429
9788023
2026-05-24T19:04:33Z
TongcyBot
83009
養貓
9788023
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:緬甸語 委內瑞拉
14
3459430
9788024
2026-05-24T19:04:39Z
TongcyBot
83009
養貓
9788024
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:緬甸語 斯洛伐克
14
3459431
9788025
2026-05-24T19:04:46Z
TongcyBot
83009
養貓
9788025
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:緬甸語 臺灣
14
3459432
9788026
2026-05-24T19:04:52Z
TongcyBot
83009
養貓
9788026
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:羅馬尼亞語 列支敦士登
14
3459433
9788027
2026-05-24T19:05:00Z
TongcyBot
83009
養貓
9788027
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:羅馬尼亞語 加拿大
14
3459434
9788028
2026-05-24T19:05:06Z
TongcyBot
83009
養貓
9788028
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:羅馬尼亞語 委內瑞拉
14
3459435
9788029
2026-05-24T19:05:13Z
TongcyBot
83009
養貓
9788029
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:羅馬尼亞語 布隆迪
14
3459436
9788030
2026-05-24T19:05:19Z
TongcyBot
83009
養貓
9788030
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:羅馬尼亞語 挪威
14
3459437
9788031
2026-05-24T19:05:26Z
TongcyBot
83009
養貓
9788031
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:羅馬尼亞語 立陶宛
14
3459438
9788032
2026-05-24T19:05:33Z
TongcyBot
83009
養貓
9788032
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:老撾語 斯洛伐克
14
3459439
9788033
2026-05-24T19:05:41Z
TongcyBot
83009
養貓
9788033
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:芬蘭語 列支敦士登
14
3459440
9788034
2026-05-24T19:05:47Z
TongcyBot
83009
養貓
9788034
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:芬蘭語 委內瑞拉
14
3459441
9788035
2026-05-24T19:05:55Z
TongcyBot
83009
養貓
9788035
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:芬蘭語 布隆迪
14
3459442
9788036
2026-05-24T19:06:02Z
TongcyBot
83009
養貓
9788036
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:芬蘭語 湯加
14
3459443
9788037
2026-05-24T19:06:11Z
TongcyBot
83009
養貓
9788037
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:芬蘭語 約旦
14
3459444
9788038
2026-05-24T19:06:18Z
TongcyBot
83009
養貓
9788038
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:英格里亞語 挪威
14
3459445
9788039
2026-05-24T19:06:26Z
TongcyBot
83009
養貓
9788039
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:英語 布隆迪
14
3459446
9788040
2026-05-24T19:06:33Z
TongcyBot
83009
養貓
9788040
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:英語 湯加
14
3459447
9788041
2026-05-24T19:06:42Z
TongcyBot
83009
養貓
9788041
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:荷蘭語 加拿大
14
3459448
9788042
2026-05-24T19:06:48Z
TongcyBot
83009
養貓
9788042
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:荷蘭語 委內瑞拉
14
3459449
9788043
2026-05-24T19:06:55Z
TongcyBot
83009
養貓
9788043
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:荷蘭語 布隆迪
14
3459450
9788044
2026-05-24T19:07:01Z
TongcyBot
83009
養貓
9788044
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:荷蘭語 湯加
14
3459451
9788045
2026-05-24T19:07:10Z
TongcyBot
83009
養貓
9788045
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:葡萄牙語 湯加
14
3459452
9788046
2026-05-24T19:07:17Z
TongcyBot
83009
養貓
9788046
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:葡萄牙語 約旦
14
3459453
9788047
2026-05-24T19:07:23Z
TongcyBot
83009
養貓
9788047
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:蒙古語 加拿大
14
3459454
9788048
2026-05-24T19:07:30Z
TongcyBot
83009
養貓
9788048
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:蒙古語 埃及
14
3459455
9788049
2026-05-24T19:07:37Z
TongcyBot
83009
養貓
9788049
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:蒙古語 阿富汗
14
3459456
9788050
2026-05-24T19:07:43Z
TongcyBot
83009
養貓
9788050
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:藏語 委內瑞拉
14
3459457
9788051
2026-05-24T19:07:50Z
TongcyBot
83009
養貓
9788051
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:西方國際語 丹麥
14
3459458
9788052
2026-05-24T19:07:57Z
TongcyBot
83009
養貓
9788052
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:西方國際語 挪威
14
3459459
9788053
2026-05-24T19:08:05Z
TongcyBot
83009
養貓
9788053
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:西班牙語 布隆迪
14
3459460
9788054
2026-05-24T19:08:12Z
TongcyBot
83009
養貓
9788054
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:西班牙語 湯加
14
3459461
9788055
2026-05-24T19:08:19Z
TongcyBot
83009
養貓
9788055
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:西班牙語 立陶宛
14
3459462
9788056
2026-05-24T19:08:26Z
TongcyBot
83009
養貓
9788056
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:西瓦斯特卡納瓦特爾語 埃及
14
3459463
9788057
2026-05-24T19:08:32Z
TongcyBot
83009
養貓
9788057
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:西瓦斯特卡納瓦特爾語 委內瑞拉
14
3459464
9788058
2026-05-24T19:08:39Z
TongcyBot
83009
養貓
9788058
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:西西里語 埃及
14
3459465
9788059
2026-05-24T19:08:46Z
TongcyBot
83009
養貓
9788059
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:西西里語 立陶宛
14
3459466
9788060
2026-05-24T19:08:53Z
TongcyBot
83009
養貓
9788060
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:西西里語 阿富汗
14
3459467
9788061
2026-05-24T19:08:59Z
TongcyBot
83009
養貓
9788061
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:西里西亞語 列支敦士登
14
3459468
9788062
2026-05-24T19:09:07Z
TongcyBot
83009
養貓
9788062
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:諾曼語 約旦
14
3459469
9788063
2026-05-24T19:09:13Z
TongcyBot
83009
養貓
9788063
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:諾維亞語 丹麥
14
3459470
9788064
2026-05-24T19:09:20Z
TongcyBot
83009
養貓
9788064
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:諾維亞語 希臘
14
3459471
9788065
2026-05-24T19:09:27Z
TongcyBot
83009
養貓
9788065
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:越南語 委內瑞拉
14
3459472
9788066
2026-05-24T19:09:35Z
TongcyBot
83009
養貓
9788066
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:越南語 立陶宛
14
3459473
9788067
2026-05-24T19:09:42Z
TongcyBot
83009
養貓
9788067
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:越南語 約旦
14
3459474
9788068
2026-05-24T19:09:49Z
TongcyBot
83009
養貓
9788068
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:跨語言 加拿大
14
3459475
9788069
2026-05-24T19:09:56Z
TongcyBot
83009
養貓
9788069
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:跨語言 北美洲國家
14
3459476
9788070
2026-05-24T19:10:01Z
TongcyBot
83009
養貓
9788070
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:跨語言 阿富汗
14
3459477
9788071
2026-05-24T19:10:09Z
TongcyBot
83009
養貓
9788071
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:迪維希語 加拿大
14
3459478
9788072
2026-05-24T19:10:16Z
TongcyBot
83009
養貓
9788072
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:鄂圖曼土耳其語 阿富汗
14
3459479
9788073
2026-05-24T19:10:22Z
TongcyBot
83009
養貓
9788073
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:阿塞拜疆語 挪威
14
3459480
9788074
2026-05-24T19:10:29Z
TongcyBot
83009
養貓
9788074
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:阿布哈茲語 委內瑞拉
14
3459481
9788075
2026-05-24T19:10:36Z
TongcyBot
83009
養貓
9788075
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:阿拉伯語 委內瑞拉
14
3459482
9788076
2026-05-24T19:10:43Z
TongcyBot
83009
養貓
9788076
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:阿拉伯語 斯洛伐克
14
3459483
9788077
2026-05-24T19:10:53Z
TongcyBot
83009
養貓
9788077
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:阿拉伯語 臺灣
14
3459484
9788078
2026-05-24T19:11:02Z
TongcyBot
83009
養貓
9788078
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:阿拉貢語 丹麥
14
3459485
9788079
2026-05-24T19:11:09Z
TongcyBot
83009
養貓
9788079
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:阿斯圖里亞斯語 委內瑞拉
14
3459486
9788080
2026-05-24T19:11:16Z
TongcyBot
83009
養貓
9788080
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:阿斯圖里亞斯語 挪威
14
3459487
9788081
2026-05-24T19:11:23Z
TongcyBot
83009
養貓
9788081
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:阿斯圖里亞斯語 斯洛伐克
14
3459488
9788082
2026-05-24T19:11:30Z
TongcyBot
83009
養貓
9788082
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:阿斯圖里亞斯語 立陶宛
14
3459489
9788083
2026-05-24T19:11:37Z
TongcyBot
83009
養貓
9788083
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:阿爾巴尼亞語 比利時
14
3459490
9788084
2026-05-24T19:11:44Z
TongcyBot
83009
養貓
9788084
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:阿爾巴尼亞語 立陶宛
14
3459491
9788085
2026-05-24T19:11:50Z
TongcyBot
83009
養貓
9788085
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:韃靼語 加拿大
14
3459492
9788086
2026-05-24T19:11:56Z
TongcyBot
83009
養貓
9788086
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:韃靼語 委內瑞拉
14
3459493
9788087
2026-05-24T19:12:02Z
TongcyBot
83009
養貓
9788087
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:馬其頓語 加拿大
14
3459494
9788088
2026-05-24T19:12:11Z
TongcyBot
83009
養貓
9788088
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:馬其頓語 布隆迪
14
3459495
9788089
2026-05-24T19:12:17Z
TongcyBot
83009
養貓
9788089
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:馬其頓語 斯洛伐克
14
3459496
9788090
2026-05-24T19:12:24Z
TongcyBot
83009
養貓
9788090
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:馬其頓語 湯加
14
3459497
9788091
2026-05-24T19:12:30Z
TongcyBot
83009
養貓
9788091
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:馬其頓語 約旦
14
3459498
9788092
2026-05-24T19:13:37Z
TongcyBot
83009
養貓
9788092
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:馬拉加斯語 埃及
14
3459499
9788093
2026-05-24T19:13:44Z
TongcyBot
83009
養貓
9788093
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:馬拉地語 埃及
14
3459500
9788094
2026-05-24T19:13:50Z
TongcyBot
83009
養貓
9788094
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:馬拉地語 阿富汗
14
3459501
9788095
2026-05-24T19:13:57Z
TongcyBot
83009
養貓
9788095
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:馬拉瑙語 埃及
14
3459502
9788096
2026-05-24T19:14:03Z
TongcyBot
83009
養貓
9788096
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:馬爾他語 希臘
14
3459503
9788097
2026-05-24T19:14:11Z
TongcyBot
83009
養貓
9788097
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:馬爾他語 挪威
14
3459504
9788098
2026-05-24T19:14:17Z
TongcyBot
83009
養貓
9788098
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:高棉語 委內瑞拉
14
3459505
9788099
2026-05-24T19:14:24Z
TongcyBot
83009
養貓
9788099
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:高棉語 臺灣
14
3459506
9788100
2026-05-24T19:14:31Z
TongcyBot
83009
養貓
9788100
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:阿拉伯語 科特迪瓦
14
3459507
9788101
2026-05-24T19:14:37Z
TongcyBot
83009
養貓
9788101
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:漢語 威爾士
14
3459508
9788102
2026-05-24T19:14:50Z
TongcyBot
83009
養貓
9788102
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:法語 伯利茲
14
3459509
9788103
2026-05-24T19:14:57Z
TongcyBot
83009
養貓
9788103
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:格魯吉亞語 瓦努阿圖
14
3459510
9788104
2026-05-24T19:15:04Z
TongcyBot
83009
養貓
9788104
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:東切爾克斯語 地形
14
3459511
9788105
2026-05-24T19:15:10Z
TongcyBot
83009
養貓
9788105
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:斯瓦希里語 聚居地
14
3459512
9788106
2026-05-24T19:15:17Z
TongcyBot
83009
養貓
9788106
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:意大利語 英國構成國
14
3459513
9788107
2026-05-24T19:15:24Z
TongcyBot
83009
養貓
9788107
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
社硎
0
3459514
9788108
2026-05-24T19:54:09Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「==漢語== {{zh-forms}} {{wp|zh:社硎鄉}} ===發音=== {{zh-pron |m=Shèxíng |px=pt,xy:^sia5 *hing2 |cat=pn }} ===專有名詞=== {{head|zh|專有名詞}} # {{zh-div|鄉}} {{place|zh|鄉|county/仙遊|prefecture-level city/莆田|p/福建|c/中國}}」的新頁面
9788108
wikitext
text/x-wiki
==漢語==
{{zh-forms}}
{{wp|zh:社硎鄉}}
===發音===
{{zh-pron
|m=Shèxíng
|px=pt,xy:^sia5 *hing2
|cat=pn
}}
===專有名詞===
{{head|zh|專有名詞}}
# {{zh-div|鄉}} {{place|zh|鄉|county/仙遊|prefecture-level city/莆田|p/福建|c/中國}}
5rmjyx2sfl64snizo2ercliq10zp7mp
Wiktionary:外語每日一詞/2026年/5月25日
4
3459515
9788111
2026-05-24T19:58:07Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「{{FWOTD|enm|schapen|動詞|2026|5月|25日| # {{lb|enm|及物}} [[創造]]或[[設計]];使之[[存在]]: ## [[塑造]];以特定的[[形狀]]或[[風格]][[創造]] ## [[描繪]]或[[刻畫]]{{gloss|[[物體]]}} ## [[命名]]或[[稱呼]];給予[[名字]] ## [[發出]][[聲音]]或[[創作]][[書面]][[作品]] # {{lb|enm|及物|catenative}} [[引起]]或[[導致]];付諸[[實施]]: ## [[安排]]或[[建立]]{{gloss|[[條件]]…」的新頁面
9788111
wikitext
text/x-wiki
{{FWOTD|enm|schapen|動詞|2026|5月|25日|
# {{lb|enm|及物}} [[創造]]或[[設計]];使之[[存在]]:
## [[塑造]];以特定的[[形狀]]或[[風格]][[創造]]
## [[描繪]]或[[刻畫]]{{gloss|[[物體]]}}
## [[命名]]或[[稱呼]];給予[[名字]]
## [[發出]][[聲音]]或[[創作]][[書面]][[作品]]
# {{lb|enm|及物|catenative}} [[引起]]或[[導致]];付諸[[實施]]:
## [[安排]]或[[建立]]{{gloss|[[條件]]或[[制度]]}}
## [[安排]]或[[確保]]{{gloss|使某事[[發生]]}}
## [[注定]]或[[命令]]{{gloss|某事將會發生}}
## {{lb|enm|impersonal}} 發生或[[出現]];[[舉行]]
# {{lb|enm|及物}} [[轉換]]或[[改變]];[[變成]]另一種事物:
## [[引導]]或[[指導]];圍繞自己[[設計]]
## {{lb|enm|rare|ambitransitive}} [[穿上]][[衣服]]
# {{lb|enm|ambitransitive}} [[旅行]]或[[漫遊]]{{gloss|某地}}:
## {{lb|enm|反身}} [[親自]][[前往]];[[去]][[做]]
}}
gqs70lfua1r2euuyqt34ntmw8vkhmqf
Wiktionary:外語每日一詞/2026年/5月26日
4
3459516
9788113
2026-05-24T20:03:08Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「{{FWOTD|hu|teknősbéka|名詞|2026|5月|26日| # {{lb|hu|口語|proscribed}} [[龜]]{{gl|{{w|龜鱉目}}的任何陸生或海生爬行動物,特徵為身體被保護性的[[甲殼]]包覆}} ## [[海龜]]{{gl|棲息於海洋的龜類,尤指{{w|海龜|海龜總科}}動物}} ##: {{syn|hu|tengeri teknős}} ## [[陸龜]]{{gl|多種陸生爬行動物,屬於{{w|陸龜科}}或{{w|龜鱉目}},其身體被封閉在[[背甲]]與[[腹甲]]中}}…」的新頁面
9788113
wikitext
text/x-wiki
{{FWOTD|hu|teknősbéka|名詞|2026|5月|26日|
# {{lb|hu|口語|proscribed}} [[龜]]{{gl|{{w|龜鱉目}}的任何陸生或海生爬行動物,特徵為身體被保護性的[[甲殼]]包覆}}
## [[海龜]]{{gl|棲息於海洋的龜類,尤指{{w|海龜|海龜總科}}動物}}
##: {{syn|hu|tengeri teknős}}
## [[陸龜]]{{gl|多種陸生爬行動物,屬於{{w|陸龜科}}或{{w|龜鱉目}},其身體被封閉在[[背甲]]與[[腹甲]]中}}
##: {{syn|hu|szárazföldi teknős}}
## [[澤龜]]{{gl|原產於[[北美洲]]、生活在半[[鹹水]]或[[淡水]]中的幾種小型龜類}}
}}
bskyygk1ojyxb6k2xowko6gtk0nvcnm
Category:匈牙利語 海龜
14
3459517
9788115
2026-05-24T20:05:24Z
TongcyBot
83009
養貓
9788115
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:匈牙利語 龜
14
3459518
9788116
2026-05-24T20:05:31Z
TongcyBot
83009
養貓
9788116
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:匈牙利語 澤龜科
14
3459519
9788117
2026-05-24T20:05:38Z
TongcyBot
83009
養貓
9788117
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:澤龜科
14
3459520
9788118
2026-05-24T20:05:42Z
TongcyBot
83009
養貓
9788118
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Template:Sce-pron
10
3459522
9788122
2026-05-24T20:07:59Z
TongcyDai
53191
TongcyDai移动页面[[Template:Sce-pron]]至[[Template:Sce-IPA]]
9788122
wikitext
text/x-wiki
#REDIRECT [[Template:Sce-IPA]]
t2b4tufj454w8jvpkhdl3p1lzpvbpls
Wiktionary:外語每日一詞/2026年/5月27日
4
3459523
9788124
2026-05-24T20:08:48Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「{{FWOTD|et|udu|名詞|2026|5月|27日| # [[霧]],[[薄霧]],[[霾]] ## [[水氣]],[[蒸汽]] # {{lb|et|天文學}} [[星雲]] #: {{syn|et|udukogu}} #: {{uxi|et|Andromeeda '''udu'''|仙女座'''星雲'''}} # [[騙人]]的、有[[誤導]]性的[[廢話]] #: {{syn|et|häma|hämu}} # {{lb|et|口語|亦作形容詞}} [[心不在焉]]、[[健忘]]或[[遲鈍]]的人 }}」的新頁面
9788124
wikitext
text/x-wiki
{{FWOTD|et|udu|名詞|2026|5月|27日|
# [[霧]],[[薄霧]],[[霾]]
## [[水氣]],[[蒸汽]]
# {{lb|et|天文學}} [[星雲]]
#: {{syn|et|udukogu}}
#: {{uxi|et|Andromeeda '''udu'''|仙女座'''星雲'''}}
# [[騙人]]的、有[[誤導]]性的[[廢話]]
#: {{syn|et|häma|hämu}}
# {{lb|et|口語|亦作形容詞}} [[心不在焉]]、[[健忘]]或[[遲鈍]]的人
}}
ndabovov4135wq30o0tetikdjcr1fjk
9788125
9788124
2026-05-24T20:08:58Z
TongcyDai
53191
9788125
wikitext
text/x-wiki
{{FWOTD|et|udu|名詞|2026|5月|27日|
# [[霧]],[[薄霧]],[[霾]]
## [[水氣]],[[蒸汽]]
# {{lb|et|天文學}} [[星雲]]
# [[騙人]]的、有[[誤導]]性的[[廢話]]
# {{lb|et|口語|亦作形容詞}} [[心不在焉]]、[[健忘]]或[[遲鈍]]的人
}}
pdy080mvc7kzz96etzvlg335rqka46i
Category:Rhymes:愛沙尼亞語/udu
14
3459524
9788126
2026-05-24T20:09:25Z
TongcyBot
83009
養貓
9788126
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:Rhymes:愛沙尼亞語/udu/2音節
14
3459525
9788127
2026-05-24T20:09:31Z
TongcyBot
83009
養貓
9788127
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:Rhymes:波蘭語/udu
14
3459526
9788128
2026-05-24T20:09:37Z
TongcyBot
83009
養貓
9788128
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:Rhymes:波蘭語/udu/2音節
14
3459527
9788129
2026-05-24T20:09:42Z
TongcyBot
83009
養貓
9788129
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:愛沙尼亞語 大氣現象
14
3459528
9788130
2026-05-24T20:09:48Z
TongcyBot
83009
養貓
9788130
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:東鄉語迴文
14
3459529
9788131
2026-05-24T20:09:55Z
TongcyBot
83009
養貓
9788131
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:依字序分類的東鄉語詞
14
3459530
9788132
2026-05-24T20:10:00Z
TongcyBot
83009
養貓
9788132
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:依正字法屬性分類的東鄉語詞
14
3459531
9788133
2026-05-24T20:10:05Z
TongcyBot
83009
養貓
9788133
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:依詞彙屬性分類的東鄉語詞
14
3459532
9788134
2026-05-24T20:10:10Z
TongcyBot
83009
養貓
9788134
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Template:RQ:Proust Temps
10
3459533
9788135
2026-05-24T20:11:59Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「{{#invoke:quote|call_quote_template |fr |author=Marcel Proust |authorlink=Marcel Proust |series={{w|lang=en|In Search of Lost Time|À la recherche du temps perdu}} |title={{#switch: {{{volume|1}}} |1=Du côté de chez Swann |2=À l’ombre des jeunes filles en fleurs |3=Le Côté de Guermantes |4=Sodome et Gomorrhe |5=La Prisonnière |6=Albertine disparue |7=Le Temps retrouvé }} |trans-title={{#switch: {{{volume|1}}} |1=Swann's Way |2=In the…」的新頁面
9788135
wikitext
text/x-wiki
{{#invoke:quote|call_quote_template
|fr
|author=Marcel Proust
|authorlink=Marcel Proust
|series={{w|lang=en|In Search of Lost Time|À la recherche du temps perdu}}
|title={{#switch: {{{volume|1}}}
|1=Du côté de chez Swann
|2=À l’ombre des jeunes filles en fleurs
|3=Le Côté de Guermantes
|4=Sodome et Gomorrhe
|5=La Prisonnière
|6=Albertine disparue
|7=Le Temps retrouvé
}}
|trans-title={{#switch: {{{volume|1}}}
|1=Swann's Way
|2=In the Shadow of Young Girls in Flower
|3=The Guermantes Way
|4=Sodom and Gomorrah
|5=The Prisoner
|6=The Fugitive
|7=Time Regained
}}
|year={{#switch: {{{volume|1}}}
|1=1913
|2=1918
|3=1920–1921
|4=1921
|5=1923
|6=1925
|7=1927
}}
|url={{fullurl:s:fr:{{#switch: {{{volume|1}}}
|1=Du côté de chez Swann
|2=À l’ombre des jeunes filles en fleurs
|3=Le Côté de Guermantes
|4=Sodome et Gomorrhe
|5=La Prisonnière
|6=Albertine disparue
|7=Le Temps retrouvé
}}/Texte entier}}
|section={{#if: {{{part|}}}|part {{{part|}}}|}}
|translation={{{t|{{{translation|}}}}}}
|propagateparams=chapter
|allowparams=volume,t,translation,part
}}<noinclude>{{documentation}}{{quotecat}}</noinclude>
dn0dxoem4j4qq5rocft9iqfi164oeqb
9788136
9788135
2026-05-24T20:12:28Z
TongcyDai
53191
9788136
wikitext
text/x-wiki
{{#invoke:quote|call_quote_template
|fr
|author=Marcel Proust
|authorlink=Marcel Proust
|series={{w|lang=en|In Search of Lost Time|À la recherche du temps perdu}}
|title={{#switch: {{{volume|1}}}
|1=Du côté de chez Swann
|2=À l’ombre des jeunes filles en fleurs
|3=Le Côté de Guermantes
|4=Sodome et Gomorrhe
|5=La Prisonnière
|6=Albertine disparue
|7=Le Temps retrouvé
}}
|trans-title={{#switch: {{{volume|1}}}
|1=Swann's Way
|2=In the Shadow of Young Girls in Flower
|3=The Guermantes Way
|4=Sodom and Gomorrah
|5=The Prisoner
|6=The Fugitive
|7=Time Regained
}}
|year={{#switch: {{{volume|1}}}
|1=1913
|2=1918
|3=1920–1921
|4=1921
|5=1923
|6=1925
|7=1927
}}
|url={{fullurl:s:fr:{{#switch: {{{volume|1}}}
|1=Du côté de chez Swann
|2=À l’ombre des jeunes filles en fleurs
|3=Le Côté de Guermantes
|4=Sodome et Gomorrhe
|5=La Prisonnière
|6=Albertine disparue
|7=Le Temps retrouvé
}}/Texte entier}}
|section={{#if: {{{part|}}}|part {{{part|}}}|}}
|translation={{{t|{{{translation|}}}}}}
|propagateparams=chapter
|allowparams=volume,t,translation,part
}}<noinclude>{{documentation}}{{quotecat|fr}}</noinclude>
gr7szh9seh9l9xftlstxd64d5e5to0o
limoger
0
3459534
9788137
2026-05-24T20:13:43Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「==法語== {{was fwotd|fr|2026|5月|28日}} ===詞源=== 源自 {{af|fr|Limoges|-er<id:動詞>}}。源自[[法國]]中南部城市[[利摩日]](Limoges),該地遠離[[第一次世界大戰]]前線,1914年至1916年間的法軍總司令{{w|約瑟夫·霞飛}}將軍便將那些被他認為毫無用處、因而解除實際指揮權的高級幕僚打發至此。此用法首見於1916年。 ===發音=== * {{fr-IPA|pos=v}} * {{audio|fr|LL…」的新頁面
9788137
wikitext
text/x-wiki
==法語==
{{was fwotd|fr|2026|5月|28日}}
===詞源===
源自 {{af|fr|Limoges|-er<id:動詞>}}。源自[[法國]]中南部城市[[利摩日]](Limoges),該地遠離[[第一次世界大戰]]前線,1914年至1916年間的法軍總司令{{w|約瑟夫·霞飛}}將軍便將那些被他認為毫無用處、因而解除實際指揮權的高級幕僚打發至此。此用法首見於1916年。
===發音===
* {{fr-IPA|pos=v}}
* {{audio|fr|LL-Q150 (fra)-Lyokoï-limoger.wav|a=里昂}}
* {{audio|fr|LL-Q150 (fra)-Jérémy-Günther-Heinz Jähnick-limoger.wav|a=索曼}}
===動詞===
{{fr-verb}}
# {{lb|fr|及物}} [[解職]],[[免職]]{{gloss|通常指高級官員,如部長、將軍、主教、大使等}};(給予閒職以)[[打發]],[[排擠]]
#* {{RQ:Proust Temps|volume=7|passage=M<sup>me</sup> Verdurin disait : « C'est désolant, je vais téléphoner à Bontemps de faire le nécessaire pour demain, on a encore « caviardé » toute la fin de l'article de Norpois et simplement parce qu'il laissait entendre qu'on avait « '''limogé''' » Percin. »|t=維爾迪蘭夫人說:「這真令人遺憾,我明天會打電話給邦唐去做必要的安排。他們又把諾爾普瓦文章結尾的全部內容給『審查』刪改了,僅僅是因為他暗示佩爾森被『'''免職'''』了。」}}
#* {{quote-journal|fr|title=Corée du Nord : plusieurs hauts responsables limogés après un «grave incident» lié au Covid-19|trans-title=北韓:發生與新冠肺炎相關的「嚴重事件」後,多名高官被免職|journal=w:費加羅報|date=June 30, 2021|url=https://www.lefigaro.fr/international/coree-du-nord-plusieurs-hauts-responsables-limoges-apres-un-grave-incident-lie-au-covid-19-20210630|text=Le dirigeant nord-coréen Kim Jong Un a '''limogé''' plusieurs hauts responsables du pays en raison d'un «grave incident» lié à la lutte contre la pandémie de Covid-19, a annoncé mercredi 30 juin l'agence officielle KCNA.|t=官方朝中社在6月30日週三報導,由於在抗擊新冠肺炎疫情的過程中發生了「嚴重事件」,北韓領導人金正恩'''免除了'''該國的多名高級官員'''的職務'''。}}
====變位====
{{fr-conj-auto}}
====派生詞彙====
* {{l|fr|limogeage}}
===延伸閱讀===
* {{R:fr:TLFi}}
{{cln|fr|派生自地名的詞}}
aswthd18h53m6rhnhiqpuye9v88cbee
9788139
9788137
2026-05-24T20:14:08Z
TongcyDai
53191
9788139
wikitext
text/x-wiki
==法語==
{{was fwotd|fr|2026|5月|28日}}
===詞源===
源自 {{af|fr|Limoges|-er<id:動詞性>}}。源自[[法國]]中南部城市[[利摩日]](Limoges),該地遠離[[第一次世界大戰]]前線,1914年至1916年間的法軍總司令{{w|約瑟夫·霞飛}}將軍便將那些被他認為毫無用處、因而解除實際指揮權的高級幕僚打發至此。此用法首見於1916年。
===發音===
* {{fr-IPA|pos=v}}
* {{audio|fr|LL-Q150 (fra)-Lyokoï-limoger.wav|a=里昂}}
* {{audio|fr|LL-Q150 (fra)-Jérémy-Günther-Heinz Jähnick-limoger.wav|a=索曼}}
===動詞===
{{fr-verb}}
# {{lb|fr|及物}} [[解職]],[[免職]]{{gloss|通常指高級官員,如部長、將軍、主教、大使等}};(給予閒職以)[[打發]],[[排擠]]
#* {{RQ:Proust Temps|volume=7|passage=M<sup>me</sup> Verdurin disait : « C'est désolant, je vais téléphoner à Bontemps de faire le nécessaire pour demain, on a encore « caviardé » toute la fin de l'article de Norpois et simplement parce qu'il laissait entendre qu'on avait « '''limogé''' » Percin. »|t=維爾迪蘭夫人說:「這真令人遺憾,我明天會打電話給邦唐去做必要的安排。他們又把諾爾普瓦文章結尾的全部內容給『審查』刪改了,僅僅是因為他暗示佩爾森被『'''免職'''』了。」}}
#* {{quote-journal|fr|title=Corée du Nord : plusieurs hauts responsables limogés après un «grave incident» lié au Covid-19|trans-title=北韓:發生與新冠肺炎相關的「嚴重事件」後,多名高官被免職|journal=w:費加羅報|date=June 30, 2021|url=https://www.lefigaro.fr/international/coree-du-nord-plusieurs-hauts-responsables-limoges-apres-un-grave-incident-lie-au-covid-19-20210630|text=Le dirigeant nord-coréen Kim Jong Un a '''limogé''' plusieurs hauts responsables du pays en raison d'un «grave incident» lié à la lutte contre la pandémie de Covid-19, a annoncé mercredi 30 juin l'agence officielle KCNA.|t=官方朝中社在6月30日週三報導,由於在抗擊新冠肺炎疫情的過程中發生了「嚴重事件」,北韓領導人金正恩'''免除了'''該國的多名高級官員'''的職務'''。}}
====變位====
{{fr-conj-auto}}
====派生詞彙====
* {{l|fr|limogeage}}
===延伸閱讀===
* {{R:fr:TLFi}}
{{cln|fr|派生自地名的詞}}
klot0lk2l6qz0e0qw60dpgxmbh21j33
9788140
9788139
2026-05-24T20:14:35Z
TongcyDai
53191
9788140
wikitext
text/x-wiki
==法語==
{{was fwotd|fr|2026|5月|28日}}
===詞源===
源自 {{af|fr|Limoges|-er<id:動詞性>}}。源自[[法國]]中南部城市[[利摩日]](Limoges),該地遠離[[第一次世界大戰]]前線,1914年至1916年間的法軍總司令{{w|約瑟夫·霞飛}}將軍便將那些被他認為毫無用處、因而解除實際指揮權的高級幕僚打發至此。此用法首見於1916年。
===發音===
* {{fr-IPA|pos=v}}
* {{audio|fr|LL-Q150 (fra)-Lyokoï-limoger.wav|a=里昂}}
* {{audio|fr|LL-Q150 (fra)-Jérémy-Günther-Heinz Jähnick-limoger.wav|a=索曼}}
===動詞===
{{fr-verb}}
# {{lb|fr|及物}} [[解職]],[[免職]]{{gloss|通常指高級官員,如[[部長]]、[[將軍]]、[[主教]]、[[大使]]等}};(給予[[閒職]]以)[[打發]],[[排擠]]
#* {{RQ:Proust Temps|volume=7|passage=M<sup>me</sup> Verdurin disait : « C'est désolant, je vais téléphoner à Bontemps de faire le nécessaire pour demain, on a encore « caviardé » toute la fin de l'article de Norpois et simplement parce qu'il laissait entendre qu'on avait « '''limogé''' » Percin. »|t=維爾迪蘭夫人說:「這真令人遺憾,我明天會打電話給邦唐去做必要的安排。他們又把諾爾普瓦文章結尾的全部內容給『審查』刪改了,僅僅是因為他暗示佩爾森被『'''免職'''』了。」}}
#* {{quote-journal|fr|title=Corée du Nord : plusieurs hauts responsables limogés après un «grave incident» lié au Covid-19|trans-title=北韓:發生與新冠肺炎相關的「嚴重事件」後,多名高官被免職|journal=w:費加羅報|date=June 30, 2021|url=https://www.lefigaro.fr/international/coree-du-nord-plusieurs-hauts-responsables-limoges-apres-un-grave-incident-lie-au-covid-19-20210630|text=Le dirigeant nord-coréen Kim Jong Un a '''limogé''' plusieurs hauts responsables du pays en raison d'un «grave incident» lié à la lutte contre la pandémie de Covid-19, a annoncé mercredi 30 juin l'agence officielle KCNA.|t=官方朝中社在6月30日週三報導,由於在抗擊新冠肺炎疫情的過程中發生了「嚴重事件」,北韓領導人金正恩'''免除了'''該國的多名高級官員'''的職務'''。}}
====變位====
{{fr-conj-auto}}
====派生詞彙====
* {{l|fr|limogeage}}
===延伸閱讀===
* {{R:fr:TLFi}}
{{cln|fr|派生自地名的詞}}
lf27dj64v6kc4e1gi44btilysrsz53a
Wiktionary:外語每日一詞/2026年/5月28日
4
3459535
9788141
2026-05-24T20:15:02Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「{{FWOTD|fr|limoger|動詞|2026|5月|28日| # {{lb|fr|及物}} [[解職]],[[免職]]{{gloss|通常指高級官員,如[[部長]]、[[將軍]]、[[主教]]、[[大使]]等}};(給予[[閒職]]以)[[打發]],[[排擠]] }}」的新頁面
9788141
wikitext
text/x-wiki
{{FWOTD|fr|limoger|動詞|2026|5月|28日|
# {{lb|fr|及物}} [[解職]],[[免職]]{{gloss|通常指高級官員,如[[部長]]、[[將軍]]、[[主教]]、[[大使]]等}};(給予[[閒職]]以)[[打發]],[[排擠]]
}}
httv0eour8ljmaaa71fg2d3j40pnmy0
lessiver
0
3459536
9788142
2026-05-24T20:18:20Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「==法語== ===詞源=== {{ety|fr|:af|lessive<t:laundry>|-er<id:動詞性>}} 源自 {{af|fr|lessive|t1=laundry|-er<id:動詞性>}}。 ===發音=== * {{fr-IPA|léssiver}} * {{audio|fr|LL-Q150 (fra)-Lyokoï-lessiver.wav|a=里昂}} * {{audio|fr|LL-Q150 (fra)-WikiLucas00-lessiver.wav|a=里昂}} * {{audio|fr|LL-Q150 (fra)-Jérémy-Günther-Heinz Jähnick-lessiver.wav|a=索曼}} ===動詞=== {{fr-verb}} # {{lb|fr|及物}} [[洗]][[衣服]] #: {{…」的新頁面
9788142
wikitext
text/x-wiki
==法語==
===詞源===
{{ety|fr|:af|lessive<t:laundry>|-er<id:動詞性>}}
源自 {{af|fr|lessive|t1=laundry|-er<id:動詞性>}}。
===發音===
* {{fr-IPA|léssiver}}
* {{audio|fr|LL-Q150 (fra)-Lyokoï-lessiver.wav|a=里昂}}
* {{audio|fr|LL-Q150 (fra)-WikiLucas00-lessiver.wav|a=里昂}}
* {{audio|fr|LL-Q150 (fra)-Jérémy-Günther-Heinz Jähnick-lessiver.wav|a=索曼}}
===動詞===
{{fr-verb}}
# {{lb|fr|及物}} [[洗]][[衣服]]
#: {{ux|fr|J'ai '''lessivé''' ma couette au lavomatique.|我的羽絨被在自助洗衣店'''洗過了'''。}}
# {{lb|fr|不及物|比喻}} [[疲憊不堪]],[[精疲力竭]]
#: {{ux|fr|Je suis '''lessivé'''.|我'''累壞了'''。}}
====變位====
{{fr-conj-auto|pron=léssiver}}
====派生詞彙====
* {{l|fr|maïs lessivé}}
* {{l|fr|poudre à lessiver}}
===延伸閱讀===
* {{R:fr:TLFi}}
===異序詞===
* {{l|fr|serviles}}
7to17dffyfg8t26k18f6212l6k57tg4
9788143
9788142
2026-05-24T20:19:06Z
TongcyDai
53191
9788143
wikitext
text/x-wiki
==法語==
===詞源===
{{ety|fr|:af|lessive<t:待洗的衣物>|-er<id:動詞性>}}
源自 {{af|fr|lessive|t1=待洗的衣物|-er<id:動詞性>}}。
===發音===
* {{fr-IPA|léssiver}}
* {{audio|fr|LL-Q150 (fra)-Lyokoï-lessiver.wav|a=里昂}}
* {{audio|fr|LL-Q150 (fra)-WikiLucas00-lessiver.wav|a=里昂}}
* {{audio|fr|LL-Q150 (fra)-Jérémy-Günther-Heinz Jähnick-lessiver.wav|a=索曼}}
===動詞===
{{fr-verb}}
# {{lb|fr|及物}} [[洗]][[衣服]]
#: {{ux|fr|J'ai '''lessivé''' ma couette au lavomatique.|我的羽絨被在自助洗衣店'''洗過了'''。}}
# {{lb|fr|不及物|比喻}} [[疲憊不堪]],[[精疲力竭]]
#: {{ux|fr|Je suis '''lessivé'''.|我'''累壞了'''。}}
====變位====
{{fr-conj-auto|pron=léssiver}}
====派生詞彙====
* {{l|fr|maïs lessivé}}
* {{l|fr|poudre à lessiver}}
===延伸閱讀===
* {{R:fr:TLFi}}
===異序詞===
* {{l|fr|serviles}}
kdmqtn4rh3y45xnua2wvwflfirjsnqp
legim
0
3459537
9788147
2026-05-24T20:24:48Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「==海地克里奧爾語== ===詞源=== 源自{{der|ht|fr|légume||蔬菜}}。 ===發音=== * {{IPA|ht|/leɡim/}} ===名詞=== {{head|ht|名詞}} # [[蔬菜]] ===參考資料=== * {{R:ht:Targète|page=114}} {{C|ht|蔬菜}}」的新頁面
9788147
wikitext
text/x-wiki
==海地克里奧爾語==
===詞源===
源自{{der|ht|fr|légume||蔬菜}}。
===發音===
* {{IPA|ht|/leɡim/}}
===名詞===
{{head|ht|名詞}}
# [[蔬菜]]
===參考資料===
* {{R:ht:Targète|page=114}}
{{C|ht|蔬菜}}
h295qao13eywnz3fj9lhu46930h03u6
Category:海地克里奧爾語參考模板
14
3459538
9788150
2026-05-24T20:25:50Z
TongcyBot
83009
養貓
9788150
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
shōgeki
0
3459539
9788152
2026-05-25T00:14:12Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==日語== ===羅馬化=== {{ja-romaji}} # {{ja-romanization of|しょうげき}}」的新頁面
9788152
wikitext
text/x-wiki
==日語==
===羅馬化===
{{ja-romaji}}
# {{ja-romanization of|しょうげき}}
o9zysw3vvfg7dp0c8mrddov5nz3ygrh
limogé
0
3459540
9788154
2026-05-25T01:21:50Z
Sayonzei
40728
創建法語「[[limoger]]」的非詞元形式([[WT:ACCEL|ACCEL]])
9788154
wikitext
text/x-wiki
{{also|limoge}}
==法語==
===發音===
* {{fr-IPA}}
===分詞===
{{fr-past participle}}
# {{past participle of|fr|limoger}}
===異序詞===
* {{anagrams|fr|gliome|limoge}}
ay5fm3heakhsamfremyzh7y5o0okbqz
limogée
0
3459541
9788155
2026-05-25T01:22:30Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==法語== ===分詞=== {{head|fr|過去分詞變格形|g=f-s}} # {{feminine singular of|fr|limogé}}」的新頁面
9788155
wikitext
text/x-wiki
==法語==
===分詞===
{{head|fr|過去分詞變格形|g=f-s}}
# {{feminine singular of|fr|limogé}}
2jy2alyk5uqiy8nmhuo0gkt39qjcav2
limogés
0
3459542
9788156
2026-05-25T01:22:32Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「{{also|limoges|Limoges}} ==法語== ===分詞=== {{head|fr|過去分詞變格形|g=m-p}} # {{masculine plural of|fr|limogé}} ===異序詞=== * {{l|fr|gliomes}}」的新頁面
9788156
wikitext
text/x-wiki
{{also|limoges|Limoges}}
==法語==
===分詞===
{{head|fr|過去分詞變格形|g=m-p}}
# {{masculine plural of|fr|limogé}}
===異序詞===
* {{l|fr|gliomes}}
ehtm5lol1fiui0thyx3hpbxdzuvh8xn
limogées
0
3459543
9788157
2026-05-25T01:22:34Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==法語== ===分詞=== {{head|fr|過去分詞變格形|g=f-p}} # {{feminine plural of|fr|limogé}}」的新頁面
9788157
wikitext
text/x-wiki
==法語==
===分詞===
{{head|fr|過去分詞變格形|g=f-p}}
# {{feminine plural of|fr|limogé}}
5aef678vdsd4ohllr108e3ab06uy7n0
limogeant
0
3459544
9788158
2026-05-25T01:22:42Z
Sayonzei
40728
創建法語「[[limoger]]」的非詞元形式([[WT:ACCEL|ACCEL]])
9788158
wikitext
text/x-wiki
==法語==
===分詞===
{{head|fr|現在分詞}}
# {{present participle of|fr|limoger}}
0hk4t3ka0mqr4zytmg0sfqspb590e8q
lessivé
0
3459545
9788159
2026-05-25T01:25:04Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「{{also|lessive}} ==法語== ===發音=== * {{fr-IPA}} * {{audio|fr|LL-Q150 (fra)-WikiLucas00-lessivé.wav|a=里昂}} * {{homophones|fr|lessivai|lessivée|lessivées|lessiver|lessivés|lessivez}} ===分詞=== {{fr-past participle}} # {{past participle of|fr|lessiver}} ===形容詞=== {{fr-adj}} # [[洗]]過的 # {{lb|fr|非正式|比喻}} [[筋疲力盡]]的 ===延伸閱讀=== * {{R:fr:TLFi}}」的新頁面
9788159
wikitext
text/x-wiki
{{also|lessive}}
==法語==
===發音===
* {{fr-IPA}}
* {{audio|fr|LL-Q150 (fra)-WikiLucas00-lessivé.wav|a=里昂}}
* {{homophones|fr|lessivai|lessivée|lessivées|lessiver|lessivés|lessivez}}
===分詞===
{{fr-past participle}}
# {{past participle of|fr|lessiver}}
===形容詞===
{{fr-adj}}
# [[洗]]過的
# {{lb|fr|非正式|比喻}} [[筋疲力盡]]的
===延伸閱讀===
* {{R:fr:TLFi}}
5nohk74zqr0hhmdfs9v86a4tk56ogdp
laundered
0
3459546
9788160
2026-05-25T01:25:06Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==英語== ===動詞=== {{head|en|動詞變位形式}} # {{infl of|en|launder||ed-form}} ===異序詞=== * {{anagrams|en|a=addeelnru|underdeal|underlead}}」的新頁面
9788160
wikitext
text/x-wiki
==英語==
===動詞===
{{head|en|動詞變位形式}}
# {{infl of|en|launder||ed-form}}
===異序詞===
* {{anagrams|en|a=addeelnru|underdeal|underlead}}
mcteg5zcd54xb72is140uo5oxv1sv8e
lessivée
0
3459547
9788161
2026-05-25T01:25:08Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==法語== ===形容詞=== {{head|fr|形容詞變格形}} # {{feminine singular of|fr|lessivé}}」的新頁面
9788161
wikitext
text/x-wiki
==法語==
===形容詞===
{{head|fr|形容詞變格形}}
# {{feminine singular of|fr|lessivé}}
581yct7yjkgn0xp05qt1l2lswjeze10
lessivées
0
3459548
9788162
2026-05-25T01:25:10Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==法語== ===形容詞=== {{head|fr|形容詞變格形}} {{g|f-p}} # {{feminine plural of|fr|lessivé}}」的新頁面
9788162
wikitext
text/x-wiki
==法語==
===形容詞===
{{head|fr|形容詞變格形}} {{g|f-p}}
# {{feminine plural of|fr|lessivé}}
s63g2i8tdp9kjdp43mg9a1ll3vwcss1
lessivés
0
3459549
9788163
2026-05-25T01:25:12Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「{{also|lessives}} ==法語== ===形容詞=== {{head|fr|形容詞變格形}} {{g|m-p}} # {{masculine plural of|fr|lessivé}}」的新頁面
9788163
wikitext
text/x-wiki
{{also|lessives}}
==法語==
===形容詞===
{{head|fr|形容詞變格形}} {{g|m-p}}
# {{masculine plural of|fr|lessivé}}
oarfp4h5myvw3cn9ivf2dn0qftnpdl5
knackered
0
3459550
9788166
2026-05-25T01:33:21Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==英語== ===發音=== * {{IPA|en|/ˈnæk.əd/|a=UK}} * {{IPA|en|/ˈnæk.ɚd/|a=US}} * {{audio|en|En-us-ncalif-knackered.ogg|a=Northern California}} * {{audio|en|en-au-knackered.ogg|a=AU}} ===詞源1=== 源自動詞 {{m|en|knacker}}。 ====形容詞==== {{en-adj}} # {{lb|en|UK|Irish|Commonwealth|俚語|sometimes|offensive}} [[筋疲力盡]]的 #* {{quote-text|en|year=2002|author=Robert Edenborough|title=Effective Interviewing: A Handbook…」的新頁面
9788166
wikitext
text/x-wiki
==英語==
===發音===
* {{IPA|en|/ˈnæk.əd/|a=UK}}
* {{IPA|en|/ˈnæk.ɚd/|a=US}}
* {{audio|en|En-us-ncalif-knackered.ogg|a=Northern California}}
* {{audio|en|en-au-knackered.ogg|a=AU}}
===詞源1===
源自動詞 {{m|en|knacker}}。
====形容詞====
{{en-adj}}
# {{lb|en|UK|Irish|Commonwealth|俚語|sometimes|offensive}} [[筋疲力盡]]的
#* {{quote-text|en|year=2002|author=Robert Edenborough|title=Effective Interviewing: A Handbook of Skills and Techniques|pages=97–98
|passage=I've got this job in a warehouse just now and it finishes quite early but I'm dead '''knackered''' at the end of the day so I don't know about going out and like studying every night.|t=我现在在一家仓库工作,下班很早,但我一天下来'''累得不行''',所以我不知道晚上有没有时间出去玩,而且我喜欢每天晚上学习。}}
#* {{quote-book|en|year=2003|editori=Hugh Dauncey, Geoff Hare|title=The Tour de France, 1903-2003: A Century of Sporting Structures, Meanings and Values|publisher=Frank Cass Publishers|place=London|year_published=2005|url=http://books.google.com.au/books?id=Ty0H-WzSR1YC&pg=PA225&dq=%22more|most+knackered%22+-intitle:%22%22+-inauthor:%22%22&hl=en&sa=X&ei=SfuXT8P-HLCYiAfDqunVBQ&redir_esc=y#v=onepage&q=%22more|most%20knackered%22%20-intitle%3A%22%22%20-inauthor%3A%22%22&f=false|page=225|passage=Then, it all just gets worse and worse, you don't sleep so much, so you don't recover as well from the day's racing, so you go into your reserves, you get more '''knackered''', so you sleep less... It's simply a vicious circle.|t=然后,情况只会越来越糟,你睡得越来越少,所以你无法很好地从一天的比赛中恢复过来,于是你耗尽了所有精力,变得更加'''疲惫''',于是你睡得更少……这简直就是一个恶性循环。}}
#* {{quote-book|en|year=2009|author=Grace Maxwell|title=Falling & Laughing: The Restoration of Edwyn Collins|pageurl=http://books.google.com.au/books?id=e_A3x6QZWNMC&pg=PA84&dq=%22knackered%22+-intitle:%22%22+-inauthor:%22%22&hl=en&sa=X&ei=gfmXT5X3Eo-viQfD2aCGBg&redir_esc=y#v=onepage&q=%22knackered%22%20-intitle%3A%22%22%20-inauthor%3A%22%22&f=false|page=84
|passage=So my joy at hearing his voice quickly turns to a paroxysm of anxiety as he manages by exhausted gesture and sound to let us know how '''knackered''' he feels, how desperate to get horizontal, almost from the first moment he lands in the chair.|t=听到他的声音,我的喜悦很快就变成了一阵焦虑,因为他用疲惫的姿态和声音告诉我们他有多'''累''',有多想躺下,几乎从他坐到椅子上的第一刻起就是如此。}}
#* {{quote-book|en|date=2020-11-12|author=Jim O’Driscoll|title=Offensive Language: Taboo, Offence and Social Control|publisher=Bloomsbury Publishing|isbn=9781350169692|page=48
|text=In the course of this discussion, the (male) presenter, when uttering the word {{'}}'''knackered'''{{'}}, felt obliged to preface his animation of this word with “excuse my language”.|t=在讨论过程中,(男性)主持人说“'''筋疲力尽'''”这个词时,总觉得有必要在说这个词之前加上一句“请原谅我的用词”。}}
=====用法說明=====
* 以前被认为是一个粗俗的词——可能暗示着说话者因性交而精疲力竭,或许是因为与 {{m|en|knackers|t=睾丸}} 混淆——现在仍然被一些人(主要是英国老年人)认为具有冒犯性。
=====近義詞=====
* {{l|en|cream crackered}};參見 [[Thesaurus:fatigued]]
=====派生詞彙=====
* {{l|en|cream crackered}} {{qualifier|考克尼押韻俚語}}
* {{l|en|Kerry Packered}} {{qualifier|考克尼押韻俚語}}
====動詞====
{{head|en|動詞變位形式}}
# {{infl of|en|knacker||ed-form}}
===詞源2===
源自“ready for the {{m|en|knacker's yard}}”或“fit to be knackered”,指的是“疲惫不堪的牲畜,适合被屠宰和加工”。
====形容詞====
{{en-adj}}
# {{lb|en|UK|Irish|南非|口語}} [[損壞]]的,壞掉的
#* {{quote-book
|en
|year=2003
|author=Simon Murphy
|title=The Murders of Mutchrose Village
|page=28
|passage=In the end though he had to admit that the car was '''knackered'''...
|t=但最终他不得不承认,这辆车已经'''报废了'''……
}}
#* {{quote-text|en|year=2009|author=John Newton|title=Vance Miller - Kitchen Gangster?|page=82
|passage=We take an old '''knackered''' machine out to China and say, 'Copy that, brand new,' and they do.|t=我们把一台破旧的'''报废'''机器带到中国,说:“照着做一台全新的”,他们就照做了。}}
=====近義詞=====
* {{l|en|broken}}、{{l|en|worn-out}};參見 [[Thesaurus:out of order]]
===相關詞彙===
* {{l|en|knacker}}
* {{l|en|knacker's yard}}
ddzdp7h33uelcjw140zjh9yxz4irlih
lessive
0
3459551
9788167
2026-05-25T01:38:47Z
Sayonzei
40728
創建法語「[[lessiver]]」的非詞元形式([[WT:ACCEL|ACCEL]])
9788167
wikitext
text/x-wiki
{{also|lessivé}}
==法語==
===詞源===
{{inh+|fr|fro|lissive}}、{{m|fro|leissive}},{{inh+|fr|la|lixīva}},形容詞 {{m|la|lixīvus|t=制成碱液的}} 的名詞用法,源自短語 [{{m|la|aqua}}] {{m|la|lixīva}}。對照{{cog|it|lisciva}}、{{cog|es|lejía}}、{{cog|ca|lleixiu}}、{{cog|ro|leșie}}、{{cog|sc|lissía}}。
===發音===
* {{fr-IPA|léssive}}
* {{audio|fr|Fr-lessive.ogg}}
* {{audio|fr|LL-Q150 (fra)-LoquaxFR-lessive.wav|a=孚日}}
* {{audio|fr|LL-Q150 (fra)-Poslovitch-lessive.wav|a=孚日}}
* {{audio|fr|LL-Q150 (fra)-WikiLucas00-lessive.wav|a=里昂}}
===名詞===
{{fr-noun|f}}
#(洗衣用的)[[灰汁]]、[[鹼液]]
#* {{quote-book|fr|year=1753|author=Christophe-André Schlutter|title=De la fonte des mines, des fonderies, des grillages, des fourneaux de fonte, d’affinage, de raffinage, des fabriques de vitriol, de potasse, &c.|translator=M. Hellot|location=Paris|publisher=Jean-Thomas Hérissant; Jacques-Noël Pissot|volume=2|page=641|chapter=CXXXIII. ''De le fabrication des vitriols.''|passage=Lorsque les grandes cuves sont pleines de '''lessive''', on en commence les cuites. La premiere n’étant que de '''lessive''' sauvage, dure vingt-six à trente heures; mais lorsqu’on on peut remplir avec de la '''lessive''' qui a déja fourni du vitriol, alors la cuite ne dure que dix-huit à vingt heures.}}
# [[洗滌劑]];[[洗衣粉]]
# [[洗衣]],[[洗滌]],[[洗濯]]
# 待[[洗]]的[[衣物]]
# {{lb|fr|比喻}} [[清除]],[[清洗]]
====派生詞彙====
* {{l|fr|faire la lessive}}
* {{l|fr|lessivable}}
* {{l|fr|lessiver}}
====派生語彙====
* {{desc|ht|lesiv}}
===動詞===
{{head|fr|動詞變位形式}}
# {{infl of|fr|lessiver||1//3|s|pres|ind//sub|;|2|s|impr}}
===延伸閱讀===
* {{R:fr:TLFi}}
j6ofmq06jdfjptrap0i7gidir3pfbjm
baliverné
0
3459552
9788168
2026-05-25T01:44:26Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「{{also|baliverne}} ==法語== ===分詞=== {{fr-past participle}} # {{past participle of|fr|baliverner}}」的新頁面
9788168
wikitext
text/x-wiki
{{also|baliverne}}
==法語==
===分詞===
{{fr-past participle}}
# {{past participle of|fr|baliverner}}
lamwvc78psa1v2lbzzyn8obfhkaf04n
9788173
9788168
2026-05-25T01:45:04Z
Sayonzei
40728
/* 分詞 */
9788173
wikitext
text/x-wiki
{{also|baliverne}}
==法語==
===分詞===
{{fr-past participle|inv=1}}
# {{past participle of|fr|baliverner}}
ftkwxcqt8f3yzqo2hmohn466j0klw9d
amariné
0
3459556
9788175
2026-05-25T01:46:51Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「{{also|amarine}} ==法語== ===分詞=== {{fr-past participle}} # {{past participle of|fr|amariner}} ===延伸閱讀=== * {{R:fr:TLFi}}」的新頁面
9788175
wikitext
text/x-wiki
{{also|amarine}}
==法語==
===分詞===
{{fr-past participle}}
# {{past participle of|fr|amariner}}
===延伸閱讀===
* {{R:fr:TLFi}}
r12ruugxlg9tioiygk1nu8ridolgpty
amarinée
0
3459557
9788176
2026-05-25T01:47:02Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==法語== ===分詞=== {{head|fr|過去分詞變格形|g=f-s}} # {{feminine singular of|fr|amariné}}」的新頁面
9788176
wikitext
text/x-wiki
==法語==
===分詞===
{{head|fr|過去分詞變格形|g=f-s}}
# {{feminine singular of|fr|amariné}}
eg8busrbf38bfc04whj2veoq9xyxqwc
amarinées
0
3459558
9788177
2026-05-25T01:47:03Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==法語== ===分詞=== {{head|fr|過去分詞變格形|g=f-p}} # {{feminine plural of|fr|amariné}}」的新頁面
9788177
wikitext
text/x-wiki
==法語==
===分詞===
{{head|fr|過去分詞變格形|g=f-p}}
# {{feminine plural of|fr|amariné}}
nhfmz6q3bgj2yiw22zk68rarxq1fpp9
amarinés
0
3459559
9788178
2026-05-25T01:47:05Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「{{also|amarines}} ==法語== ===分詞=== {{head|fr|過去分詞變格形|g=m-p}} # {{masculine plural of|fr|amariné}}」的新頁面
9788178
wikitext
text/x-wiki
{{also|amarines}}
==法語==
===分詞===
{{head|fr|過去分詞變格形|g=m-p}}
# {{masculine plural of|fr|amariné}}
5ougt80wpypryjxrvu9pk258yfjkkyl
amarina
0
3459560
9788180
2026-05-25T01:48:35Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「{{also|Amarina}} ==法語== ===發音=== * {{homophones|fr|amarinas|amarinât}} ===動詞=== {{head|fr|動詞變位形式}} # {{inflection of|fr|amariner||3|s|phis}} ==葡萄牙語== ===發音=== {{pt-IPA}} * {{hyph|pt|a|ma|ri|na}} ===名詞=== {{pt-noun|f|-}} # {{lb|pt|化學|棄用}} [[苦杏素]] ===延伸閱讀=== * {{R:pt:Aulete}} * {{R:pt:Priberam}} {{C|pt|毒}}」的新頁面
9788180
wikitext
text/x-wiki
{{also|Amarina}}
==法語==
===發音===
* {{homophones|fr|amarinas|amarinât}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|amariner||3|s|phis}}
==葡萄牙語==
===發音===
{{pt-IPA}}
* {{hyph|pt|a|ma|ri|na}}
===名詞===
{{pt-noun|f|-}}
# {{lb|pt|化學|棄用}} [[苦杏素]]
===延伸閱讀===
* {{R:pt:Aulete}}
* {{R:pt:Priberam}}
{{C|pt|毒}}
7954k7j5f2k6lsgvm124e9xzrd8qkrf
couronnée
0
3459561
9788184
2026-05-25T01:56:42Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==法語== ===分詞=== {{head|fr|過去分詞變格形|g=f-s}} # {{feminine singular of|fr|couronné}}」的新頁面
9788184
wikitext
text/x-wiki
==法語==
===分詞===
{{head|fr|過去分詞變格形|g=f-s}}
# {{feminine singular of|fr|couronné}}
27pydjv3awnu9q36ossumqjgl8c895l
couronnés
0
3459562
9788185
2026-05-25T01:56:43Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「{{also|couronnes}} ==法語== ===分詞=== {{head|fr|過去分詞變格形|g=m-p}} # {{masculine plural of|fr|couronné}} ===異序詞=== * {{l|fr|encourons}}」的新頁面
9788185
wikitext
text/x-wiki
{{also|couronnes}}
==法語==
===分詞===
{{head|fr|過去分詞變格形|g=m-p}}
# {{masculine plural of|fr|couronné}}
===異序詞===
* {{l|fr|encourons}}
5a0lvbrnrdxr8d4vvdfrfyoq531ub9u
couronnées
0
3459563
9788186
2026-05-25T01:56:45Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==法語== ===分詞=== {{head|fr|過去分詞變格形|g=f-p}} # {{feminine plural of|fr|couronné}}」的新頁面
9788186
wikitext
text/x-wiki
==法語==
===分詞===
{{head|fr|過去分詞變格形|g=f-p}}
# {{feminine plural of|fr|couronné}}
s2vnscnxosl0znlokyglgmnt5sn6euh
déployé
0
3459564
9788188
2026-05-25T01:59:09Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==法語== ===分詞=== {{fr-past participle}} # {{past participle of|fr|déployer}} ===延伸閱讀=== * {{R:fr:TLFi}}」的新頁面
9788188
wikitext
text/x-wiki
==法語==
===分詞===
{{fr-past participle}}
# {{past participle of|fr|déployer}}
===延伸閱讀===
* {{R:fr:TLFi}}
r5lbqx64bytdrr304h799kb7eelzm15
déployée
0
3459565
9788189
2026-05-25T01:59:18Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==法語== ===分詞=== {{head|fr|過去分詞變格形|g=f-s}} # {{feminine singular of|fr|déployé}} ===延伸閱讀=== * {{R:fr:TLFi}}」的新頁面
9788189
wikitext
text/x-wiki
==法語==
===分詞===
{{head|fr|過去分詞變格形|g=f-s}}
# {{feminine singular of|fr|déployé}}
===延伸閱讀===
* {{R:fr:TLFi}}
m1ix4p59frrcdb01tvsyjhzfhln3qxd
déployés
0
3459566
9788190
2026-05-25T01:59:19Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==法語== ===分詞=== {{head|fr|過去分詞變格形|g=m-p}} # {{masculine plural of|fr|déployé}}」的新頁面
9788190
wikitext
text/x-wiki
==法語==
===分詞===
{{head|fr|過去分詞變格形|g=m-p}}
# {{masculine plural of|fr|déployé}}
ri7p814yxx2ijazynlr9cnzyx5tlcxt
déployées
0
3459567
9788191
2026-05-25T01:59:21Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==法語== ===分詞=== {{head|fr|過去分詞變格形|g=f-p}} # {{feminine plural of|fr|déployé}}」的新頁面
9788191
wikitext
text/x-wiki
==法語==
===分詞===
{{head|fr|過去分詞變格形|g=f-p}}
# {{feminine plural of|fr|déployé}}
nawak7u3gk2411rvosx385ntkk5e2d1
postuler
0
3459568
9788192
2026-05-25T02:02:24Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==法語== ===發音=== * {{fr-IPA}} * {{audio|fr|LL-Q150 (fra)-Lyokoï-postuler.wav|a=里昂}} * {{audio|fr|LL-Q150 (fra)-WikiLucas00-postuler.wav|a=里昂}} * {{audio|fr|LL-Q150 (fra)-Jérémy-Günther-Heinz Jähnick-postuler.wav|a=索曼}} ===詞源1=== {{ety|fr|:bor|la:postulō<alt:postulāre>}} {{bor+|fr|la|postulō|postulāre}}。 ====動詞==== {{fr-verb}} # {{lb|fr|及物|棄用}} [[請求]],[[要求]] # {{lb|fr|及物|or|不及…」的新頁面
9788192
wikitext
text/x-wiki
==法語==
===發音===
* {{fr-IPA}}
* {{audio|fr|LL-Q150 (fra)-Lyokoï-postuler.wav|a=里昂}}
* {{audio|fr|LL-Q150 (fra)-WikiLucas00-postuler.wav|a=里昂}}
* {{audio|fr|LL-Q150 (fra)-Jérémy-Günther-Heinz Jähnick-postuler.wav|a=索曼}}
===詞源1===
{{ety|fr|:bor|la:postulō<alt:postulāre>}}
{{bor+|fr|la|postulō|postulāre}}。
====動詞====
{{fr-verb}}
# {{lb|fr|及物|棄用}} [[請求]],[[要求]]
# {{lb|fr|及物|or|不及物}} [[申請]] {{+obj|fr|dirobj/:à/:pour<q:口語><工作、職位、頭銜等>}}
===詞源2===
{{back-formation|fr|postulat}}。
====動詞====
{{fr-verb}}
# [[假設]]
# {{lb|fr|legal}} [[代理]][[訴訟]]
===變位===
{{fr-conj-auto}}
===相關詞彙===
* {{l|fr|poste}}
===延伸閱讀===
* {{R:fr:TLFi}}
* {{R:Robert}}
==拉丁語==
===動詞===
{{head|la|動詞變位形式}}
# {{inflection of|la|postulō||1|s|pres|pasv|subj}}
==書面挪威語==
===動詞===
{{head|nb|動詞變位形式}}
# {{infl of|nb|postulere||imp}}
sxr6mc5pm9855tw3lvr9vz9lppjrhag
postulera
0
3459569
9788193
2026-05-25T02:02:47Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「{{also|postulerà}} ==法語== ===發音=== * {{fr-IPA|pos=v}} ===動詞=== {{head|fr|動詞變位形式}} # {{inflection of|fr|postuler||3|s|simple|futr}} ==瑞典語== ===動詞=== {{sv-verb-reg}} # [[假設]] ====變位==== {{sv-conj-wk}}」的新頁面
9788193
wikitext
text/x-wiki
{{also|postulerà}}
==法語==
===發音===
* {{fr-IPA|pos=v}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|postuler||3|s|simple|futr}}
==瑞典語==
===動詞===
{{sv-verb-reg}}
# [[假設]]
====變位====
{{sv-conj-wk}}
7uo9eecq6jbfa26u950l9n945gdy2gl
postulé
0
3459570
9788194
2026-05-25T02:03:07Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「{{also|postule}} ==法語== ===發音=== * {{fr-IPA}} ===分詞=== {{fr-past participle}} # {{past participle of|fr|postuler}} ===形容詞=== {{fr-adj}} # 受[[申請]]的 ===延伸閱讀=== * {{R:fr:TLFi}} ===異序詞=== * {{l|fr|poulets}} ==西班牙語== ===動詞=== {{head|es|動詞變位形式}} # {{es-verb form of|postular}}」的新頁面
9788194
wikitext
text/x-wiki
{{also|postule}}
==法語==
===發音===
* {{fr-IPA}}
===分詞===
{{fr-past participle}}
# {{past participle of|fr|postuler}}
===形容詞===
{{fr-adj}}
# 受[[申請]]的
===延伸閱讀===
* {{R:fr:TLFi}}
===異序詞===
* {{l|fr|poulets}}
==西班牙語==
===動詞===
{{head|es|動詞變位形式}}
# {{es-verb form of|postular}}
rrkj7tpz1btetmhj392kd61xsawoczo
postulée
0
3459571
9788197
2026-05-25T02:03:45Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==法語== ===形容詞=== {{head|fr|形容詞變格形}} # {{feminine singular of|fr|postulé}}」的新頁面
9788197
wikitext
text/x-wiki
==法語==
===形容詞===
{{head|fr|形容詞變格形}}
# {{feminine singular of|fr|postulé}}
ta9qrdxhj2fofptzgi7hguahqgdv99b
postulés
0
3459572
9788198
2026-05-25T02:03:45Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「{{also|postules}} ==加泰羅尼亞語== ===動詞=== {{head|ca|動詞變位形式}} # {{ca-verb form of|postular}} ==法語== ===形容詞=== {{head|fr|形容詞變格形}} {{g|m-p}} # {{masculine plural of|fr|postulé}} ==西班牙語== ===動詞=== {{head|es|動詞變位形式}} # {{es-verb form of|postular}}」的新頁面
9788198
wikitext
text/x-wiki
{{also|postules}}
==加泰羅尼亞語==
===動詞===
{{head|ca|動詞變位形式}}
# {{ca-verb form of|postular}}
==法語==
===形容詞===
{{head|fr|形容詞變格形}} {{g|m-p}}
# {{masculine plural of|fr|postulé}}
==西班牙語==
===動詞===
{{head|es|動詞變位形式}}
# {{es-verb form of|postular}}
c1yt2herjrtwkefa1ukeo79c155u8cq
postulées
0
3459573
9788199
2026-05-25T02:03:46Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==法語== ===形容詞=== {{head|fr|形容詞變格形}} {{g|f-p}} # {{feminine plural of|fr|postulé}}」的新頁面
9788199
wikitext
text/x-wiki
==法語==
===形容詞===
{{head|fr|形容詞變格形}} {{g|f-p}}
# {{feminine plural of|fr|postulé}}
b79id4j9l1ai6wqnco4g4845oeesnn6
amarinai
0
3459574
9788201
2026-05-25T02:09:21Z
TongcyBot
83009
半自動導入非詞元形式
9788201
wikitext
text/x-wiki
==法語==
===發音===
* {{homophones|fr|amariné|amarinée|amarinées|amariner|amarinés|amarinez}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|amariner||1|s|past historic}}
63a221w5ua2wdd1xh46h3guxfjz9uq3
amarinaient
0
3459575
9788202
2026-05-25T02:09:22Z
TongcyBot
83009
半自動導入非詞元形式
9788202
wikitext
text/x-wiki
==法語==
===發音===
* {{homophones|fr|amarinais|amarinait}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|amariner||3|p|imperf|ind}}
joawvrtlw0d6tvqhvkry88hd1gr8eq2
amarinais
0
3459576
9788203
2026-05-25T02:09:23Z
TongcyBot
83009
半自動導入非詞元形式
9788203
wikitext
text/x-wiki
==法語==
===發音===
* {{homophones|fr|amarinaient|amarinait}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|amariner||1//2|s|imperf|ind}}
5990zxoucjm1tjx8isp7g946jozzcny
amarinait
0
3459577
9788204
2026-05-25T02:09:24Z
TongcyBot
83009
半自動導入非詞元形式
9788204
wikitext
text/x-wiki
==法語==
===發音===
* {{homophones|fr|amarinaient|amarinais}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|amariner||3|s|imperf|ind}}
pr4mxa5ogoydfffhljejzvwqjqcujan
amarinant
0
3459578
9788205
2026-05-25T02:09:25Z
TongcyBot
83009
半自動導入非詞元形式
9788205
wikitext
text/x-wiki
==法語==
===分詞===
{{head|fr|現在分詞}}
# {{present participle of|fr|amariner}}
midk73ns01e5qqyvm0s8dw2xcrlov31
amarinas
0
3459579
9788206
2026-05-25T02:09:26Z
TongcyBot
83009
半自動導入非詞元形式
9788206
wikitext
text/x-wiki
==法語==
===發音===
* {{homophones|fr|amarina|amarinât}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|amariner||2|s|past historic}}
hx47w1fu24m1a4hbq41ua19pqbumc4r
amarinasse
0
3459580
9788207
2026-05-25T02:09:28Z
TongcyBot
83009
半自動導入非詞元形式
9788207
wikitext
text/x-wiki
==法語==
===發音===
* {{homophones|fr|amarinasses|amarinassent}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|amariner||1|s|imperf|sub}}
ooiokt9hsq8177t7uppm9o1ibifn6id
amarinassent
0
3459581
9788208
2026-05-25T02:09:29Z
TongcyBot
83009
半自動導入非詞元形式
9788208
wikitext
text/x-wiki
==法語==
===發音===
* {{homophones|fr|amarinasse|amarinasses}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|amariner||3|p|imperf|sub}}
at6h2x8fjdnjkve392rt7xhzhoux1mp
amarinasses
0
3459582
9788209
2026-05-25T02:09:30Z
TongcyBot
83009
半自動導入非詞元形式
9788209
wikitext
text/x-wiki
==法語==
===發音===
* {{homophones|fr|amarinasse|amarinassent}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|amariner||2|s|imperf|sub}}
gw2sha8knd3wa35dklce95f39q4w67h
amarinassiez
0
3459583
9788210
2026-05-25T02:09:31Z
TongcyBot
83009
半自動導入非詞元形式
9788210
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|amariner||2|p|imperf|sub}}
enow23cb4saoa9whv51x16uk3xq7gs3
amarinassions
0
3459584
9788211
2026-05-25T02:09:32Z
TongcyBot
83009
半自動導入非詞元形式
9788211
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|amariner||1|p|imperf|sub}}
e774amuoz2bim688xrar7e3so2jt5lz
amarinent
0
3459585
9788212
2026-05-25T02:09:33Z
TongcyBot
83009
半自動導入非詞元形式
9788212
wikitext
text/x-wiki
==法語==
===發音===
* {{homophones|fr|amarine|amarines}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|amariner||3|p|pres|ind//sub}}
2hng3samp3h1vghuh8fl77ffbpi6ae3
amarinera
0
3459586
9788213
2026-05-25T02:09:34Z
TongcyBot
83009
半自動導入非詞元形式
9788213
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|amariner||3|s|simple|fut}}
myctqs0u0jql6u9lrmr3j9u1s1hviac
amarinerai
0
3459587
9788214
2026-05-25T02:09:35Z
TongcyBot
83009
半自動導入非詞元形式
9788214
wikitext
text/x-wiki
==法語==
===發音===
* {{homophones|fr|amarinerez}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|amariner||1|s|simple|fut}}
mpeh50os3i5ek3dcte2c6kqdzva8mw5
amarineraient
0
3459588
9788215
2026-05-25T02:09:36Z
TongcyBot
83009
半自動導入非詞元形式
9788215
wikitext
text/x-wiki
==法語==
===發音===
* {{homophones|fr|amarinerais|amarinerait}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|amariner||3|p|cond}}
c1vyk523or9s5njhybczy9pdglsgawi
amarinerais
0
3459589
9788216
2026-05-25T02:09:37Z
TongcyBot
83009
半自動導入非詞元形式
9788216
wikitext
text/x-wiki
==法語==
===發音===
* {{homophones|fr|amarineraient|amarinerait}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|amariner||1//2|s|cond}}
d61mh8v2w29o5kwn0bz13deo7wnvfk7
amarinerait
0
3459590
9788217
2026-05-25T02:09:38Z
TongcyBot
83009
半自動導入非詞元形式
9788217
wikitext
text/x-wiki
==法語==
===發音===
* {{homophones|fr|amarineraient|amarinerais}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|amariner||3|s|cond}}
c7io2mieikz36j3vx9m94hgpc3r2xnz
amarineras
0
3459591
9788218
2026-05-25T02:09:40Z
TongcyBot
83009
半自動導入非詞元形式
9788218
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|amariner||2|s|simple|fut}}
f86sfhzod8m3uj368fsasfu268xfmqy
amarinerez
0
3459592
9788219
2026-05-25T02:09:41Z
TongcyBot
83009
半自動導入非詞元形式
9788219
wikitext
text/x-wiki
==法語==
===發音===
* {{homophones|fr|amarinerai}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|amariner||2|p|simple|fut}}
0cjcy51vod9rqrobkdqjg52c38j5f0h
amarineriez
0
3459593
9788220
2026-05-25T02:09:42Z
TongcyBot
83009
半自動導入非詞元形式
9788220
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|amariner||2|p|cond}}
9bneokytmcehnidttizu0gdofueal12
amarinerions
0
3459594
9788221
2026-05-25T02:09:43Z
TongcyBot
83009
半自動導入非詞元形式
9788221
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|amariner||1|p|cond}}
4184yax2q0c84z11guinz9djxsczo1t
amarinerons
0
3459595
9788222
2026-05-25T02:09:44Z
TongcyBot
83009
半自動導入非詞元形式
9788222
wikitext
text/x-wiki
==法語==
===發音===
* {{homophones|fr|amarineront}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|amariner||1|p|simple|fut}}
3v4xrmfetvagaeqt2h5czjz0r70y3j4
amarineront
0
3459596
9788223
2026-05-25T02:09:45Z
TongcyBot
83009
半自動導入非詞元形式
9788223
wikitext
text/x-wiki
==法語==
===發音===
* {{homophones|fr|amarinerons}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|amariner||3|p|simple|fut}}
iienhveu8anpwy9hh1o8dx755fxc4wq
amarines
0
3459597
9788224
2026-05-25T02:09:46Z
TongcyBot
83009
半自動導入非詞元形式
9788224
wikitext
text/x-wiki
{{also|amarinés}}
==法語==
===發音===
* {{homophones|fr|amarine|amarinent}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|amariner||2|s|pres|ind//sub}}
3o9b19wnpknnzgvk6imzfr99g8j4vmg
amarinez
0
3459598
9788225
2026-05-25T02:09:47Z
TongcyBot
83009
半自動導入非詞元形式
9788225
wikitext
text/x-wiki
==法語==
===發音===
* {{homophones|fr|amarinai|amariné|amarinée|amarinées|amariner|amarinés}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|amariner||2|p|pres|ind|;|2|p|imp}}
ts6fa4ayhtle0yd50cleg363lvt2sw4
amariniez
0
3459599
9788226
2026-05-25T02:09:48Z
TongcyBot
83009
半自動導入非詞元形式
9788226
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|amariner||2|p|imperf|ind|;|2|p|pres|sub}}
3ynehtc9gwggr8z3zwnk5pyosph7jy3
amarinions
0
3459600
9788227
2026-05-25T02:09:49Z
TongcyBot
83009
半自動導入非詞元形式
9788227
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|amariner||1|p|imperf|ind|;|1|p|pres|sub}}
pnzk0ilc1i92nq6jf8oeji6odzkqyk6
amarinons
0
3459601
9788228
2026-05-25T02:09:51Z
TongcyBot
83009
半自動導入非詞元形式
9788228
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|amariner||1|p|pres|ind|;|1|p|imp}}
7le5gdo5uadnlhv2tb601hdyqiu0phf
amarinâmes
0
3459602
9788229
2026-05-25T02:09:56Z
TongcyBot
83009
半自動導入非詞元形式
9788229
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|amariner||1|p|past historic}}
6mi3j6d3hxed1apuvuzxnm8wqw2t1jp
amarinât
0
3459603
9788230
2026-05-25T02:09:57Z
TongcyBot
83009
半自動導入非詞元形式
9788230
wikitext
text/x-wiki
==法語==
===發音===
* {{homophones|fr|amarina|amarinas}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|amariner||3|s|imperf|sub}}
4vg3pzv89txxkb9hllkf437hats1gnh
amarinâtes
0
3459604
9788231
2026-05-25T02:09:58Z
TongcyBot
83009
半自動導入非詞元形式
9788231
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|amariner||2|p|past historic}}
pml2xj8wtf14tz1h1mbzfnghdp9ns5z
amarinèrent
0
3459605
9788232
2026-05-25T02:09:59Z
TongcyBot
83009
半自動導入非詞元形式
9788232
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|amariner||3|p|past historic}}
5cakve5g7xs7j6m96hssupf2m17kvjs
baliverna
0
3459606
9788233
2026-05-25T02:10:00Z
TongcyBot
83009
半自動導入非詞元形式
9788233
wikitext
text/x-wiki
{{also|balivernă}}
==法語==
===發音===
* {{homophones|fr|balivernas|balivernât}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|baliverner||3|s|past historic}}
gvkg8wdr03efj9569e63o20ywecww0v
balivernai
0
3459607
9788234
2026-05-25T02:10:01Z
TongcyBot
83009
半自動導入非詞元形式
9788234
wikitext
text/x-wiki
==法語==
===發音===
* {{homophones|fr|baliverné|balivernée|balivernées|baliverner|balivernés|balivernez}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|baliverner||1|s|past historic}}
4p0xurlzb7jp4mp3j52pa4e81rabz8j
balivernaient
0
3459608
9788235
2026-05-25T02:10:02Z
TongcyBot
83009
半自動導入非詞元形式
9788235
wikitext
text/x-wiki
==法語==
===發音===
* {{homophones|fr|balivernais|balivernait}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|baliverner||3|p|imperf|ind}}
sq5w1e2m7mrv4bvmd8a7gnikrn4003s
balivernais
0
3459609
9788236
2026-05-25T02:10:03Z
TongcyBot
83009
半自動導入非詞元形式
9788236
wikitext
text/x-wiki
==法語==
===發音===
* {{homophones|fr|balivernaient|balivernait}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|baliverner||1//2|s|imperf|ind}}
j6n72lu5vudfwa06xpnzmnbu0op8i8a
balivernait
0
3459610
9788237
2026-05-25T02:10:04Z
TongcyBot
83009
半自動導入非詞元形式
9788237
wikitext
text/x-wiki
==法語==
===發音===
* {{homophones|fr|balivernaient|balivernais}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|baliverner||3|s|imperf|ind}}
1068b6e4xhc2vlrmq2zui4qbf8axwzp
balivernant
0
3459611
9788238
2026-05-25T02:10:05Z
TongcyBot
83009
半自動導入非詞元形式
9788238
wikitext
text/x-wiki
==法語==
===分詞===
{{head|fr|現在分詞}}
# {{present participle of|fr|baliverner}}
oxwhkr6e18dzywlbiejw1en23h2nhsr
balivernas
0
3459612
9788239
2026-05-25T02:10:06Z
TongcyBot
83009
半自動導入非詞元形式
9788239
wikitext
text/x-wiki
==法語==
===發音===
* {{homophones|fr|baliverna|balivernât}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|baliverner||2|s|past historic}}
andn1smbjrvll0wadkd4hce5j175mm6
balivernasse
0
3459613
9788240
2026-05-25T02:10:07Z
TongcyBot
83009
半自動導入非詞元形式
9788240
wikitext
text/x-wiki
==法語==
===發音===
* {{homophones|fr|balivernasses|balivernassent}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|baliverner||1|s|imperf|sub}}
jo6a5vz6nir1oymaamuclnkjsxo2oa3
balivernassent
0
3459614
9788241
2026-05-25T02:10:08Z
TongcyBot
83009
半自動導入非詞元形式
9788241
wikitext
text/x-wiki
==法語==
===發音===
* {{homophones|fr|balivernasse|balivernasses}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|baliverner||3|p|imperf|sub}}
5d786jaicmqqhfot92ty8dvnfhjq466
balivernasses
0
3459615
9788242
2026-05-25T02:10:09Z
TongcyBot
83009
半自動導入非詞元形式
9788242
wikitext
text/x-wiki
==法語==
===發音===
* {{homophones|fr|balivernasse|balivernassent}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|baliverner||2|s|imperf|sub}}
sc2ycmfe3hht4y4xszpua1a8kjjl59e
balivernassiez
0
3459616
9788243
2026-05-25T02:10:10Z
TongcyBot
83009
半自動導入非詞元形式
9788243
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|baliverner||2|p|imperf|sub}}
8hp0oxfqqyywbpmidiey6hzcd5mgvin
balivernassions
0
3459617
9788244
2026-05-25T02:10:12Z
TongcyBot
83009
半自動導入非詞元形式
9788244
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|baliverner||1|p|imperf|sub}}
sndjm3vh9wadapk2yj7snqf8ek5lxmk
balivernent
0
3459618
9788245
2026-05-25T02:10:13Z
TongcyBot
83009
半自動導入非詞元形式
9788245
wikitext
text/x-wiki
==法語==
===發音===
* {{homophones|fr|baliverne|balivernes}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|baliverner||3|p|pres|ind//sub}}
p3orkf8tvx4d2g8hz9s4elr7e7xje7v
balivernera
0
3459619
9788246
2026-05-25T02:10:14Z
TongcyBot
83009
半自動導入非詞元形式
9788246
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|baliverner||3|s|simple|fut}}
c8i1016qw3nxr7v7uss5h448rluh729
balivernerai
0
3459620
9788247
2026-05-25T02:10:15Z
TongcyBot
83009
半自動導入非詞元形式
9788247
wikitext
text/x-wiki
==法語==
===發音===
* {{homophones|fr|balivernerez}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|baliverner||1|s|simple|fut}}
sanwqey5jdv42bb5whofmuf29nyzzev
baliverneraient
0
3459621
9788248
2026-05-25T02:10:16Z
TongcyBot
83009
半自動導入非詞元形式
9788248
wikitext
text/x-wiki
==法語==
===發音===
* {{homophones|fr|balivernerais|balivernerait}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|baliverner||3|p|cond}}
5nxia8o2ac3oe86hz66cldwgpfszfya
balivernerais
0
3459622
9788249
2026-05-25T02:10:17Z
TongcyBot
83009
半自動導入非詞元形式
9788249
wikitext
text/x-wiki
==法語==
===發音===
* {{homophones|fr|baliverneraient|balivernerait}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|baliverner||1//2|s|cond}}
kdcjmi68joo80r0opjoxj8zpt0bre05
balivernerait
0
3459623
9788250
2026-05-25T02:10:18Z
TongcyBot
83009
半自動導入非詞元形式
9788250
wikitext
text/x-wiki
==法語==
===發音===
* {{homophones|fr|baliverneraient|balivernerais}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|baliverner||3|s|cond}}
l9gzsmsfql28l0uzzmxl649l5l56wzw
baliverneras
0
3459624
9788251
2026-05-25T02:10:19Z
TongcyBot
83009
半自動導入非詞元形式
9788251
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|baliverner||2|s|simple|fut}}
rjdpa9ax3owwx7d2qe681qzxogmz3lz
balivernerez
0
3459625
9788252
2026-05-25T02:10:20Z
TongcyBot
83009
半自動導入非詞元形式
9788252
wikitext
text/x-wiki
==法語==
===發音===
* {{homophones|fr|balivernerai}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|baliverner||2|p|simple|fut}}
cejaea5j75c6fpiul50ss0hwayk621c
baliverneriez
0
3459626
9788253
2026-05-25T02:10:21Z
TongcyBot
83009
半自動導入非詞元形式
9788253
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|baliverner||2|p|cond}}
aee8raf0dv33srkyqabenn2p0twghan
balivernerions
0
3459627
9788254
2026-05-25T02:10:22Z
TongcyBot
83009
半自動導入非詞元形式
9788254
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|baliverner||1|p|cond}}
ebaiy0p3nv03vat8mygziyqc3x9q2pr
balivernerons
0
3459628
9788255
2026-05-25T02:10:24Z
TongcyBot
83009
半自動導入非詞元形式
9788255
wikitext
text/x-wiki
==法語==
===發音===
* {{homophones|fr|baliverneront}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|baliverner||1|p|simple|fut}}
nvfh4imv8bbdh7csvl1pkdj97788hg7
baliverneront
0
3459629
9788256
2026-05-25T02:10:25Z
TongcyBot
83009
半自動導入非詞元形式
9788256
wikitext
text/x-wiki
==法語==
===發音===
* {{homophones|fr|balivernerons}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|baliverner||3|p|simple|fut}}
dm0t0aelomkk132dhqog31falfbnrm6
balivernez
0
3459630
9788257
2026-05-25T02:10:26Z
TongcyBot
83009
半自動導入非詞元形式
9788257
wikitext
text/x-wiki
==法語==
===發音===
* {{homophones|fr|balivernai|baliverné|balivernée|balivernées|baliverner|balivernés}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|baliverner||2|p|pres|ind|;|2|p|imp}}
14bpcu6on2m1hhhc1u84iya9no44ckw
baliverniez
0
3459631
9788258
2026-05-25T02:10:27Z
TongcyBot
83009
半自動導入非詞元形式
9788258
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|baliverner||2|p|imperf|ind|;|2|p|pres|sub}}
pf4hneoqaagcq5lvpcq0cw4rtjlxg8u
balivernions
0
3459632
9788259
2026-05-25T02:10:28Z
TongcyBot
83009
半自動導入非詞元形式
9788259
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|baliverner||1|p|imperf|ind|;|1|p|pres|sub}}
m4z6k5slne8krjcyjwzyd180l7cjdrj
balivernons
0
3459633
9788260
2026-05-25T02:10:29Z
TongcyBot
83009
半自動導入非詞元形式
9788260
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|baliverner||1|p|pres|ind|;|1|p|imp}}
ssn53wvgergb59r8bxme6btspyo8kb7
balivernâmes
0
3459634
9788261
2026-05-25T02:10:30Z
TongcyBot
83009
半自動導入非詞元形式
9788261
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|baliverner||1|p|past historic}}
gbc4c5x3qrcb0a0osekue1btj1j7cbw
balivernât
0
3459635
9788262
2026-05-25T02:10:31Z
TongcyBot
83009
半自動導入非詞元形式
9788262
wikitext
text/x-wiki
==法語==
===發音===
* {{homophones|fr|baliverna|balivernas}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|baliverner||3|s|imperf|sub}}
rhfj1n4cg44dfw6idr2hakkh4fdzfkx
balivernâtes
0
3459636
9788263
2026-05-25T02:10:32Z
TongcyBot
83009
半自動導入非詞元形式
9788263
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|baliverner||2|p|past historic}}
e5ctkse7b2ndlpul0cqaw33o793w5ao
balivernèrent
0
3459637
9788264
2026-05-25T02:10:33Z
TongcyBot
83009
半自動導入非詞元形式
9788264
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|baliverner||3|p|past historic}}
5el9vmc6uk0756hpp1k5lh3rwzcclqo
couronna
0
3459638
9788265
2026-05-25T02:10:35Z
TongcyBot
83009
半自動導入非詞元形式
9788265
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|couronner||3|s|phis}}
bsdy3flqthdqfu69nkdxi1kgo4h60g4
couronnai
0
3459639
9788266
2026-05-25T02:10:36Z
TongcyBot
83009
半自動導入非詞元形式
9788266
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|couronner||1|s|phis}}
o9z8x96iqanefq5mku3hncj9dw4rvf9
couronnaient
0
3459640
9788267
2026-05-25T02:10:37Z
TongcyBot
83009
半自動導入非詞元形式
9788267
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|couronner||3|p|impf|indc}}
dxtwj6f0u4nhwapckpdr4y1nadz3op3
couronnais
0
3459641
9788268
2026-05-25T02:10:38Z
TongcyBot
83009
半自動導入非詞元形式
9788268
wikitext
text/x-wiki
==法語==
===發音===
* {{audio|fr|LL-Q150 (fra)-Lyokoï-couronnais.wav|a=<<France>> (<<Lyon>>)}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|couronner||1//2|s|impf|indc}}
ess0fry7cszzukk39kbvv56hctsa9b1
couronnait
0
3459642
9788269
2026-05-25T02:10:39Z
TongcyBot
83009
半自動導入非詞元形式
9788269
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|couronner||3|s|impf|indc}}
===異序詞===
* {{l|fr|contournai}}
g9i10sh9naefoyyscr1nx83pz0mz3v3
couronnant
0
3459643
9788270
2026-05-25T02:10:40Z
TongcyBot
83009
半自動導入非詞元形式
9788270
wikitext
text/x-wiki
==法語==
===分詞===
{{head|fr|現在分詞}}
# {{present participle of|fr|couronner}}
===延伸閱讀===
* {{R:fr:TLFi}}
b7bvlogr9s864d78dt0887ex4hjxtzw
couronnas
0
3459644
9788271
2026-05-25T02:10:41Z
TongcyBot
83009
半自動導入非詞元形式
9788271
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|couronner||2|s|phis}}
fj4pgzkg6f1el8wek7hyrq649cylw90
couronnasse
0
3459645
9788272
2026-05-25T02:10:42Z
TongcyBot
83009
半自動導入非詞元形式
9788272
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|couronner||1|s|impf|subj}}
nr1gf5ks56gvckgi2e8pft7qsln6ymb
couronnassent
0
3459646
9788273
2026-05-25T02:10:43Z
TongcyBot
83009
半自動導入非詞元形式
9788273
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|couronner||3|p|impf|subj}}
04c20vhjjsjl3693tybrfa3mk36a3gm
couronnasses
0
3459647
9788274
2026-05-25T02:10:44Z
TongcyBot
83009
半自動導入非詞元形式
9788274
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|couronner||2|s|impf|subj}}
0z2blj5ojyzfwprpl4z9bmilz7qngz6
couronnassiez
0
3459648
9788275
2026-05-25T02:10:45Z
TongcyBot
83009
半自動導入非詞元形式
9788275
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|couronner||2|p|impf|subj}}
tefvwuvqfbk76etdaum7dkkygjmse23
couronnassions
0
3459649
9788276
2026-05-25T02:10:46Z
TongcyBot
83009
半自動導入非詞元形式
9788276
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|couronner||1|p|impf|subj}}
lf63fwqpvi1izox5k8xnarooytbr0hg
couronnent
0
3459650
9788277
2026-05-25T02:10:47Z
TongcyBot
83009
半自動導入非詞元形式
9788277
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|couronner||3|p|pres|ind//sub}}
ibi1y3yqxwdxtgma15wao1xeby44rbd
couronnera
0
3459651
9788278
2026-05-25T02:10:48Z
TongcyBot
83009
半自動導入非詞元形式
9788278
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|couronner||3|s|futr}}
k9qtq7v3svn2si11t14uomdl4q0282m
couronnerai
0
3459652
9788279
2026-05-25T02:10:49Z
TongcyBot
83009
半自動導入非詞元形式
9788279
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|couronner||1|s|futr}}
au6hplfin7xiwaomvwmm3a5eegt2ubm
couronneraient
0
3459653
9788280
2026-05-25T02:10:50Z
TongcyBot
83009
半自動導入非詞元形式
9788280
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|couronner||3|p|cond}}
qnpi83x5aqfehl229ya03ow0jy89kx5
couronnerais
0
3459654
9788281
2026-05-25T02:10:51Z
TongcyBot
83009
半自動導入非詞元形式
9788281
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|couronner||1//2|s|cond}}
sj970descj6xmbtlptjrzbau1ipossj
couronnerait
0
3459655
9788282
2026-05-25T02:10:52Z
TongcyBot
83009
半自動導入非詞元形式
9788282
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|couronner||3|s|cond}}
===異序詞===
* {{l|fr|contournerai}}
qi805f7qowk0l4qdtpj7hnu6tqx52he
couronneras
0
3459656
9788283
2026-05-25T02:10:53Z
TongcyBot
83009
半自動導入非詞元形式
9788283
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|couronner||2|s|futr}}
6jmr4y9sjay8ldmdm68erl82w7zm3dk
couronnerez
0
3459657
9788284
2026-05-25T02:10:54Z
TongcyBot
83009
半自動導入非詞元形式
9788284
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|couronner||2|p|futr}}
fkang8fg30yvnrx4m4mia1xh2tc99h4
couronneriez
0
3459658
9788285
2026-05-25T02:10:55Z
TongcyBot
83009
半自動導入非詞元形式
9788285
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|couronner||2|p|cond}}
1d6xonnyxuk0gka2iuj11t1u4xy1h73
couronnerions
0
3459659
9788286
2026-05-25T02:10:57Z
TongcyBot
83009
半自動導入非詞元形式
9788286
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|couronner||1|p|cond}}
r1maoxfusrza8exwob4phnt99qvcqul
couronnerons
0
3459660
9788287
2026-05-25T02:10:58Z
TongcyBot
83009
半自動導入非詞元形式
9788287
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|couronner||1|p|futr}}
mmx3vzo12bt3evk5kirdhxox6wokjfy
couronneront
0
3459661
9788288
2026-05-25T02:10:59Z
TongcyBot
83009
半自動導入非詞元形式
9788288
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|couronner||3|p|futr}}
0i868t7wsbmr7w5ujntc7uazinzzc3l
couronnes
0
3459662
9788289
2026-05-25T02:11:00Z
TongcyBot
83009
半自動導入非詞元形式
9788289
wikitext
text/x-wiki
{{also|couronnés}}
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|couronner||2|s|pres|ind//sub}}
===異序詞===
* {{l|fr|encourons}}
qvd0ffv4wui8yrhql2fcyyp484usk38
couronnez
0
3459663
9788290
2026-05-25T02:11:01Z
TongcyBot
83009
半自動導入非詞元形式
9788290
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|couronner||2|p|pres|indc|;|2|p|impr}}
pxe1t5fr21oao7180j5ay60d4mewcf2
couronniez
0
3459664
9788291
2026-05-25T02:11:02Z
TongcyBot
83009
半自動導入非詞元形式
9788291
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|couronner||2|p|impf|indc|;|2|p|pres|subj}}
68p05fzx20p407s09b4gmuraafn9enf
couronnions
0
3459665
9788292
2026-05-25T02:11:03Z
TongcyBot
83009
半自動導入非詞元形式
9788292
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|couronner||1|p|impf|indc|;|1|p|pres|subj}}
6ogep5t9s8nri87czjk30q8bq6h2cz1
couronnons
0
3459666
9788293
2026-05-25T02:11:04Z
TongcyBot
83009
半自動導入非詞元形式
9788293
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|couronner||1|p|pres|indc|;|1|p|impr}}
dkbnakb4pnitwageifq5u1e2bpx7obq
couronnâmes
0
3459667
9788294
2026-05-25T02:11:05Z
TongcyBot
83009
半自動導入非詞元形式
9788294
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|couronner||1|p|phis}}
ag6q1km2oii1y2wjs2f7sv9zt4wlxg8
couronnât
0
3459668
9788295
2026-05-25T02:11:06Z
TongcyBot
83009
半自動導入非詞元形式
9788295
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|couronner||3|s|impf|subj}}
===異序詞===
* {{l|fr|contourna}}
me26owthpbi4a1278isg8vmd0gtlh4b
couronnâtes
0
3459669
9788296
2026-05-25T02:11:07Z
TongcyBot
83009
半自動導入非詞元形式
9788296
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|couronner||2|p|phis}}
1lj0n7mkuxcqrlbvapqeorvnwj3by3p
couronnèrent
0
3459670
9788297
2026-05-25T02:11:08Z
TongcyBot
83009
半自動導入非詞元形式
9788297
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|couronner||3|p|phis}}
nht7mtc4br3l2m013m1rvyi9035rhxr
déploie
0
3459671
9788298
2026-05-25T02:11:09Z
TongcyBot
83009
半自動導入非詞元形式
9788298
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|déployer||1//3|s|pres|ind//sub|;|2|s|impr}}
q1ll1ngiwm70b5h4iognn5obqjjvscr
déploient
0
3459672
9788299
2026-05-25T02:11:10Z
TongcyBot
83009
半自動導入非詞元形式
9788299
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|déployer||3|p|pres|ind//sub}}
fez2my9l09v2qn73ok3ee8y5cfyad8g
déploiera
0
3459673
9788300
2026-05-25T02:11:12Z
TongcyBot
83009
半自動導入非詞元形式
9788300
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|déployer||3|s|simple|futr}}
ejilv66fncvi9wgjf5tll62e2v56xi8
déploierai
0
3459674
9788301
2026-05-25T02:11:12Z
TongcyBot
83009
半自動導入非詞元形式
9788301
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|déployer||1|s|simple|futr}}
lhu382c63j2s2fkrfhtwiuasdhg3624
déploieraient
0
3459675
9788302
2026-05-25T02:11:14Z
TongcyBot
83009
半自動導入非詞元形式
9788302
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|déployer||3|p|cond}}
3pdgs014tv0obfh6bz54bi57g2wwe6t
déploierais
0
3459676
9788303
2026-05-25T02:11:15Z
TongcyBot
83009
半自動導入非詞元形式
9788303
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|déployer||1//2|s|cond}}
4yqbsggopopct8j8a55ty2nubd4n5iq
déploierait
0
3459677
9788304
2026-05-25T02:11:16Z
TongcyBot
83009
半自動導入非詞元形式
9788304
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|déployer||3|s|cond}}
7snrdb1k15iv0m7gkllx8vntn7x05ww
déploieras
0
3459678
9788305
2026-05-25T02:11:17Z
TongcyBot
83009
半自動導入非詞元形式
9788305
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|déployer||2|s|simple|futr}}
cecnojzuw6hq4rqc0ymuvosm0npyjgm
déploierez
0
3459679
9788306
2026-05-25T02:11:18Z
TongcyBot
83009
半自動導入非詞元形式
9788306
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|déployer||2|p|simple|futr}}
1os89lorgsoe94fv4trwzahd8l0hfma
déploieriez
0
3459680
9788307
2026-05-25T02:11:19Z
TongcyBot
83009
半自動導入非詞元形式
9788307
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|déployer||2|p|cond}}
ddqkpe7lrm5msof61fgqvzm0mw5kzn3
déploierions
0
3459681
9788308
2026-05-25T02:11:20Z
TongcyBot
83009
半自動導入非詞元形式
9788308
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|déployer||1|p|cond}}
1gknhlkdfo1tzq7coxv5oy8t7128w25
déploierons
0
3459682
9788309
2026-05-25T02:11:21Z
TongcyBot
83009
半自動導入非詞元形式
9788309
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|déployer||1|p|simple|futr}}
7myjwuwb3q3xzcb74vdlb5cum7s09qv
déploieront
0
3459683
9788310
2026-05-25T02:11:22Z
TongcyBot
83009
半自動導入非詞元形式
9788310
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|déployer||3|p|simple|futr}}
33mt1enp4ikfxsb71chtobzguszjizr
déploies
0
3459684
9788311
2026-05-25T02:11:23Z
TongcyBot
83009
半自動導入非詞元形式
9788311
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|déployer||2|s|pres|ind//sub}}
f4ghai61a8vftskqptfny3n1cj29n4w
déploya
0
3459685
9788312
2026-05-25T02:11:24Z
TongcyBot
83009
半自動導入非詞元形式
9788312
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|déployer||3|s|phis}}
kxsulqsgx9vbogj8w408u68an4vgd10
déployai
0
3459686
9788313
2026-05-25T02:11:26Z
TongcyBot
83009
半自動導入非詞元形式
9788313
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|déployer||1|s|phis}}
rqwgu24i7nh44pf0xyty9tahc9jvp6t
déployaient
0
3459687
9788314
2026-05-25T02:11:27Z
TongcyBot
83009
半自動導入非詞元形式
9788314
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|déployer||3|p|impf|indc}}
amifdgylp1xwap0wsoatyqf1tv7rp8v
déployais
0
3459688
9788315
2026-05-25T02:11:28Z
TongcyBot
83009
半自動導入非詞元形式
9788315
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|déployer||1//2|s|impf|indc}}
7w9e7jkl0ew68e2ma63xzb082uvaqpq
déployait
0
3459689
9788316
2026-05-25T02:11:29Z
TongcyBot
83009
半自動導入非詞元形式
9788316
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|déployer||3|s|impf|indc}}
pp69c3megdkgjzik5rscoh9izlbyihd
日國
0
3459690
9788317
2026-05-25T02:11:30Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==漢語== {{zh-forms|s=日国}} ===詞源=== {{zh-l|^日}} 是 {{zh-l|^日斯巴尼亞}} 的簡稱。 ===發音=== {{zh-pron |m=Rìguó |cat=pn }} ===專有名詞=== {{head|zh|專有名詞}} # {{lb|zh|棄用}} [[西班牙]] #* {{quote-book|zh|title=出使美日祕國日記|year=1894|author=w:崔國因|volume=14|page=38|pageurl=https://books.google.com.hk/books?id=GbcpAAAAYAAJ&newbks=0&dq=%22%E8%91%A1%E5%9C%8B%22&pg=PP1350#v=onepage&q&f=f…」的新頁面
9788317
wikitext
text/x-wiki
==漢語==
{{zh-forms|s=日国}}
===詞源===
{{zh-l|^日}} 是 {{zh-l|^日斯巴尼亞}} 的簡稱。
===發音===
{{zh-pron
|m=Rìguó
|cat=pn
}}
===專有名詞===
{{head|zh|專有名詞}}
# {{lb|zh|棄用}} [[西班牙]]
#* {{quote-book|zh|title=出使美日祕國日記|year=1894|author=w:崔國因|volume=14|page=38|pageurl=https://books.google.com.hk/books?id=GbcpAAAAYAAJ&newbks=0&dq=%22%E8%91%A1%E5%9C%8B%22&pg=PP1350#v=onepage&q&f=false}}
#*: {{zh-q|查 ^古巴 一 島 與 ^美 鄰,較 ^檀香山 尤 近。^日國 前 四百 年 所 闢 ^墨洲 之 地,以後 或 由 地主 自主,或 為{wéi} 他 國 所 踞,其 尚 存 者 惟 ^古巴 耳。而 ^古巴 之 民 常 苦 ^日國 苛斂,故 前此 揭竿 謀 逐 ^日 員 而 自主,終 以 不 勝 仍 降{xiáng} 於 ^日。||CL}}
====近義詞====
{{syn-saurus|zh|西班牙}}
====參見====
* {{l|zh|日本}}
* {{l|zh|日本國}}
{{c|zh|西班牙|國家暱稱}}
n3a1tvvv828kghgcpcrg930wyxeh4xk
déployant
0
3459691
9788318
2026-05-25T02:11:30Z
TongcyBot
83009
半自動導入非詞元形式
9788318
wikitext
text/x-wiki
{{also|deployant}}
==法語==
===分詞===
{{head|fr|現在分詞}}
# {{present participle of|fr|déployer}}
0qfz6ixp2bvapx1x7el2lkawh5mi1d6
déployas
0
3459692
9788319
2026-05-25T02:11:31Z
TongcyBot
83009
半自動導入非詞元形式
9788319
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|déployer||2|s|phis}}
cbd69u4r7yqcv40zfemrhjpt2hicbor
déployasse
0
3459693
9788320
2026-05-25T02:11:32Z
TongcyBot
83009
半自動導入非詞元形式
9788320
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|déployer||1|s|impf|subj}}
ajr89sjua0qs6au7kh6yfhivcxyqw06
déployassent
0
3459694
9788321
2026-05-25T02:11:33Z
TongcyBot
83009
半自動導入非詞元形式
9788321
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|déployer||3|p|impf|subj}}
qxk2oe1fa7nyjp6w2rfooqwkz5xql0h
déployasses
0
3459695
9788322
2026-05-25T02:11:34Z
TongcyBot
83009
半自動導入非詞元形式
9788322
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|déployer||2|s|impf|subj}}
40qq4149qqzrvoqofaihlq35a9tiovp
déployassiez
0
3459696
9788323
2026-05-25T02:11:36Z
TongcyBot
83009
半自動導入非詞元形式
9788323
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|déployer||2|p|impf|subj}}
d232cjhbj40a8s3p2wv4sjfptrn6dgu
déployassions
0
3459697
9788324
2026-05-25T02:11:37Z
TongcyBot
83009
半自動導入非詞元形式
9788324
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|déployer||1|p|impf|subj}}
j10oi1qriisn8xmdsb37mqhiysrdup6
déployez
0
3459698
9788325
2026-05-25T02:11:38Z
TongcyBot
83009
半自動導入非詞元形式
9788325
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|déployer||2|p|pres|indc|;|2|p|impr}}
f0x4kb3wy0weaid3dzzvxxzhorfc3tc
déployiez
0
3459699
9788326
2026-05-25T02:11:39Z
TongcyBot
83009
半自動導入非詞元形式
9788326
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|déployer||2|p|impf|indc|;|2|p|pres|subj}}
7fem51yhl0v00b6makolhear5urvpvd
déployions
0
3459700
9788327
2026-05-25T02:11:40Z
TongcyBot
83009
半自動導入非詞元形式
9788327
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|déployer||1|p|impf|indc|;|1|p|pres|subj}}
l6jt7lh7tmqshkkgygfml5el8vrs4iu
déployons
0
3459701
9788328
2026-05-25T02:11:41Z
TongcyBot
83009
半自動導入非詞元形式
9788328
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|déployer||1|p|pres|indc|;|1|p|impr}}
5r4iwgdcmfl4673dj9z7wq0uz7zyb2c
déployâmes
0
3459702
9788329
2026-05-25T02:11:42Z
TongcyBot
83009
半自動導入非詞元形式
9788329
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|déployer||1|p|phis}}
ora35ahpojrq16n7nn2wws0nvuz8nws
déployât
0
3459703
9788330
2026-05-25T02:11:43Z
TongcyBot
83009
半自動導入非詞元形式
9788330
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|déployer||3|s|impf|subj}}
o6mye278ketniju5h5ztw1qlcxjq7tf
déployâtes
0
3459704
9788331
2026-05-25T02:11:44Z
TongcyBot
83009
半自動導入非詞元形式
9788331
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|déployer||2|p|phis}}
lmjrgll13reaznnkronkxugrrzdxx3z
déployèrent
0
3459705
9788332
2026-05-25T02:11:45Z
TongcyBot
83009
半自動導入非詞元形式
9788332
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|déployer||3|p|phis}}
98v3hprqy8cll4wepacnf1cdfmjf00g
lessiva
0
3459706
9788333
2026-05-25T02:11:46Z
TongcyBot
83009
半自動導入非詞元形式
9788333
wikitext
text/x-wiki
==法語==
===發音===
* {{homophones|fr|lessivas|lessivât}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|lessiver||3|s|phis}}
1dfa8kf5lv5ifc5ttg49ck7b08uyo1v
lessivai
0
3459707
9788334
2026-05-25T02:11:47Z
TongcyBot
83009
半自動導入非詞元形式
9788334
wikitext
text/x-wiki
==法語==
===發音===
* {{homophones|fr|lessivé|lessivée|lessivées|lessiver|lessivés|lessivez}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|lessiver||1|s|phis}}
h4wqkgk2r79wq5abwxdr68484a5tmy3
lessivaient
0
3459708
9788335
2026-05-25T02:11:48Z
TongcyBot
83009
半自動導入非詞元形式
9788335
wikitext
text/x-wiki
==法語==
===發音===
* {{homophones|fr|lessivais|lessivait}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|lessiver||3|p|impf|indc}}
39bwi85yd5lihzsca0rhdcdpehhex0j
lessivait
0
3459709
9788336
2026-05-25T02:11:50Z
TongcyBot
83009
半自動導入非詞元形式
9788336
wikitext
text/x-wiki
==法語==
===發音===
* {{homophones|fr|lessivaient|lessivais}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|lessiver||3|s|impf|indc}}
alr05x5kr3lkkbtlzxdqynsdssobtkh
lessivais
0
3459710
9788337
2026-05-25T02:11:51Z
TongcyBot
83009
半自動導入非詞元形式
9788337
wikitext
text/x-wiki
==法語==
===發音===
* {{homophones|fr|lessivaient|lessivait}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|lessiver||1//2|s|impf|indc}}
qkw2ugqoae57i23ztewv5uwge2u17ue
lessivant
0
3459711
9788338
2026-05-25T02:11:53Z
TongcyBot
83009
半自動導入非詞元形式
9788338
wikitext
text/x-wiki
==法語==
===分詞===
{{head|fr|現在分詞}}
# {{present participle of|fr|lessiver}}
569b17bhynx12x3tomd16gmjo298e0t
lessivas
0
3459712
9788339
2026-05-25T02:11:53Z
TongcyBot
83009
半自動導入非詞元形式
9788339
wikitext
text/x-wiki
==法語==
===發音===
* {{homophones|fr|lessiva|lessivât}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|lessiver||2|s|phis}}
ke734jupie4qw5mlyu4heqkgcsfnigm
lessivasse
0
3459713
9788340
2026-05-25T02:11:56Z
TongcyBot
83009
半自動導入非詞元形式
9788340
wikitext
text/x-wiki
==法語==
===發音===
* {{homophones|fr|lessivasses|lessivassent}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|lessiver||1|s|impf|subj}}
j743dqvjdig8jnqh6p788932x81q1lt
lessivassent
0
3459714
9788341
2026-05-25T02:11:57Z
TongcyBot
83009
半自動導入非詞元形式
9788341
wikitext
text/x-wiki
==法語==
===發音===
* {{homophones|fr|lessivasse|lessivasses}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|lessiver||3|p|impf|subj}}
c64ba8lkuzfiwypdfuq4ilar16kk72y
lessivasses
0
3459715
9788342
2026-05-25T02:11:58Z
TongcyBot
83009
半自動導入非詞元形式
9788342
wikitext
text/x-wiki
==法語==
===發音===
* {{homophones|fr|lessivasse|lessivassent}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|lessiver||2|s|impf|subj}}
k7u39smowktv5gppijj2c8fcyvkq0ee
lessivassiez
0
3459716
9788343
2026-05-25T02:11:59Z
TongcyBot
83009
半自動導入非詞元形式
9788343
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|lessiver||2|p|impf|subj}}
pxnon5vuqxtdajw4fsvi13t4pyxt9ji
lessivassions
0
3459717
9788344
2026-05-25T02:12:01Z
TongcyBot
83009
半自動導入非詞元形式
9788344
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|lessiver||1|p|impf|subj}}
nxgd04o0bdr5p2o8dilwxtx5ib7vfca
lessivent
0
3459718
9788345
2026-05-25T02:12:02Z
TongcyBot
83009
半自動導入非詞元形式
9788345
wikitext
text/x-wiki
==法語==
===發音===
* {{homophones|fr|lessive|lessives}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|lessiver||3|p|pres|ind//sub}}
h7p0d8ke4d3nomrqumhmmgaflv90640
Thesaurus:西班牙
110
3459719
9788346
2026-05-25T02:12:02Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「{{ws header}} ==漢語== ===專有名詞=== ===={{ws sense|zh|西班牙}}==== =====近義詞===== {{col3|zh|是班牙<qq:歷史>|士班雅<qq:歷史>|大呂宋<qq:歷史>|以西把尼亞<qq:歷史>|以西把你亞<qq:歷史>|日斯巴尼亞<qq:歷史>|西<qq:簡稱>|西班牙|日斯巴彌亞<qq:歷史>|西班雅<qq:歷史>|日國<qq:歷史>}} {{c|zh|國家暱稱}}」的新頁面
9788346
wikitext
text/x-wiki
{{ws header}}
==漢語==
===專有名詞===
===={{ws sense|zh|西班牙}}====
=====近義詞=====
{{col3|zh|是班牙<qq:歷史>|士班雅<qq:歷史>|大呂宋<qq:歷史>|以西把尼亞<qq:歷史>|以西把你亞<qq:歷史>|日斯巴尼亞<qq:歷史>|西<qq:簡稱>|西班牙|日斯巴彌亞<qq:歷史>|西班雅<qq:歷史>|日國<qq:歷史>}}
{{c|zh|國家暱稱}}
csfz7tdaolis7q0jnvi1q1res5bfs3r
lessivera
0
3459720
9788347
2026-05-25T02:12:03Z
TongcyBot
83009
半自動導入非詞元形式
9788347
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|lessiver||3|s|simple|futr}}
ij0n4x7btk9ovy2fdm3asqqija2ugfm
lessiverai
0
3459721
9788348
2026-05-25T02:12:04Z
TongcyBot
83009
半自動導入非詞元形式
9788348
wikitext
text/x-wiki
==法語==
===發音===
* {{homophones|fr|lessiverez}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|lessiver||1|s|simple|futr}}
lxxbc6yws2h16e0ipx5yy6bp9y01buj
lessiveraient
0
3459722
9788349
2026-05-25T02:12:05Z
TongcyBot
83009
半自動導入非詞元形式
9788349
wikitext
text/x-wiki
==法語==
===發音===
* {{homophones|fr|lessiverais|lessiverait}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|lessiver||3|p|cond}}
p7mb79odwp2ilc5cmk7rirvg7igjmyo
lessiverais
0
3459723
9788350
2026-05-25T02:12:06Z
TongcyBot
83009
半自動導入非詞元形式
9788350
wikitext
text/x-wiki
==法語==
===發音===
* {{homophones|fr|lessiveraient|lessiverait}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|lessiver||1//2|s|cond}}
8mtcnwsjvpagylcgfhpqt0rmxuib2ks
lessiverait
0
3459724
9788351
2026-05-25T02:12:07Z
TongcyBot
83009
半自動導入非詞元形式
9788351
wikitext
text/x-wiki
==法語==
===發音===
* {{homophones|fr|lessiveraient|lessiverais}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|lessiver||3|s|cond}}
su1pw1k9c8apbx811vsstb4491yme6b
lessiveras
0
3459725
9788352
2026-05-25T02:12:08Z
TongcyBot
83009
半自動導入非詞元形式
9788352
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|lessiver||2|s|simple|futr}}
f568ux4e1vvuhkl2eend896rpj5560t
lessiverez
0
3459726
9788353
2026-05-25T02:12:09Z
TongcyBot
83009
半自動導入非詞元形式
9788353
wikitext
text/x-wiki
==法語==
===發音===
* {{homophones|fr|lessiverai}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|lessiver||2|p|simple|futr}}
exel08ccm7tm7o2dpl8bkiir5azjrlm
lessiveriez
0
3459727
9788354
2026-05-25T02:12:10Z
TongcyBot
83009
半自動導入非詞元形式
9788354
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|lessiver||2|p|cond}}
rxgrt6qell8gmd5cukx8yxut08212kn
lessiverions
0
3459728
9788355
2026-05-25T02:12:11Z
TongcyBot
83009
半自動導入非詞元形式
9788355
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|lessiver||1|p|cond}}
9wz4rcaepoyntfxxptyp34xdbcxo3i8
lessiverons
0
3459729
9788356
2026-05-25T02:12:12Z
TongcyBot
83009
半自動導入非詞元形式
9788356
wikitext
text/x-wiki
==法語==
===發音===
* {{homophones|fr|lessiveront}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|lessiver||1|p|simple|futr}}
49s8jva7aow5ztialh0fm2v75e3mt9q
lessiveront
0
3459730
9788357
2026-05-25T02:12:13Z
TongcyBot
83009
半自動導入非詞元形式
9788357
wikitext
text/x-wiki
==法語==
===發音===
* {{homophones|fr|lessiverons}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|lessiver||3|p|simple|futr}}
91kvvvksecearpqtwbsebl1g4us77i4
lessives
0
3459731
9788358
2026-05-25T02:12:14Z
TongcyBot
83009
半自動導入非詞元形式
9788358
wikitext
text/x-wiki
{{also|lessivés}}
==法語==
===發音===
* {{audio|fr|LL-Q150 (fra)-Poslovitch-lessives.wav|a=<<France>> (<<Vosges>>)}}
* {{homophones|fr|lessive|lessivent}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|lessiver||2|s|pres|ind//sub}}
1ij28aa1wbrrgzajmzq145a5qanza49
lessivez
0
3459732
9788359
2026-05-25T02:12:15Z
TongcyBot
83009
半自動導入非詞元形式
9788359
wikitext
text/x-wiki
==法語==
===發音===
* {{homophones|fr|lessivai|lessivé|lessivée|lessivées|lessiver|lessivés}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|lessiver||2|p|pres|indc|;|2|p|impr}}
8ihnpgv7ofitm31erqeyeozt9pbkrw7
lessiviez
0
3459733
9788360
2026-05-25T02:12:16Z
TongcyBot
83009
半自動導入非詞元形式
9788360
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|lessiver||2|p|impf|indc|;|2|p|pres|subj}}
6ho3dk5ta179jm1bfs9pmlqoo0j7vt7
lessivions
0
3459734
9788361
2026-05-25T02:12:17Z
TongcyBot
83009
半自動導入非詞元形式
9788361
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|lessiver||1|p|impf|indc|;|1|p|pres|subj}}
fodmevq5x2a1ca43v9wtls8o244sr5c
lessivons
0
3459735
9788362
2026-05-25T02:12:18Z
TongcyBot
83009
半自動導入非詞元形式
9788362
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|lessiver||1|p|pres|indc|;|1|p|impr}}
387jxyeunsc1rhueq3xpnq00v6ahjdo
lessivâmes
0
3459736
9788363
2026-05-25T02:12:19Z
TongcyBot
83009
半自動導入非詞元形式
9788363
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|lessiver||1|p|phis}}
0r6gdtvdzlr291zp6dhijg95knp8g29
lessivât
0
3459737
9788364
2026-05-25T02:12:21Z
TongcyBot
83009
半自動導入非詞元形式
9788364
wikitext
text/x-wiki
==法語==
===發音===
* {{homophones|fr|lessiva|lessivas}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|lessiver||3|s|impf|subj}}
plqk07vmou94erpcmo74oclsfnjsklk
lessivâtes
0
3459738
9788365
2026-05-25T02:12:21Z
TongcyBot
83009
半自動導入非詞元形式
9788365
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|lessiver||2|p|phis}}
j7cbl848vyvhs85vvwseszppajj3zz0
lessivèrent
0
3459739
9788366
2026-05-25T02:12:23Z
TongcyBot
83009
半自動導入非詞元形式
9788366
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|lessiver||3|p|phis}}
3fdo2nhyc1canyb8stc0qlzks1esxsk
limoge
0
3459740
9788367
2026-05-25T02:12:24Z
TongcyBot
83009
半自動導入非詞元形式
9788367
wikitext
text/x-wiki
{{also|limogé}}
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|limoger||1//3|s|pres|ind//sub|;|2|s|impr}}
===異序詞===
* {{l|fr|gliome}}
5m3xzr7d91vxivcyum9jndi3k983zm0
limogea
0
3459741
9788368
2026-05-25T02:12:25Z
TongcyBot
83009
半自動導入非詞元形式
9788368
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|limoger||3|s|phis}}
0chjgw782ltc0od53bn73btbtj93kp7
limogeai
0
3459742
9788369
2026-05-25T02:12:26Z
TongcyBot
83009
半自動導入非詞元形式
9788369
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|limoger||1|s|phis}}
n3xedf6jyjxw0ni6nfpg6vmesgba5pi
limogeaient
0
3459743
9788370
2026-05-25T02:12:27Z
TongcyBot
83009
半自動導入非詞元形式
9788370
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|limoger||3|p|impf|indc}}
9kxgo64e62kal8xfgcqmn1i4swxrlp5
limogeais
0
3459744
9788371
2026-05-25T02:12:28Z
TongcyBot
83009
半自動導入非詞元形式
9788371
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|limoger||1//2|s|impf|indc}}
c7hzoomublw3g9mn348o1pklieae3kr
limogeait
0
3459745
9788372
2026-05-25T02:12:29Z
TongcyBot
83009
半自動導入非詞元形式
9788372
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|limoger||3|s|impf|indc}}
0n2ht4em30lkf6ln3zk4y4gg8gbpr9d
limogeas
0
3459746
9788373
2026-05-25T02:12:30Z
TongcyBot
83009
半自動導入非詞元形式
9788373
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|limoger||2|s|phis}}
q22j4zgxzzkzmgdmk2o5q43ulq2gn1d
limogeasse
0
3459747
9788374
2026-05-25T02:12:31Z
TongcyBot
83009
半自動導入非詞元形式
9788374
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|limoger||1|s|impf|subj}}
t2lazw4ujrbys6k8wzeygethvnyvel8
limogeassent
0
3459748
9788375
2026-05-25T02:12:32Z
TongcyBot
83009
半自動導入非詞元形式
9788375
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|limoger||3|p|impf|subj}}
csdvm1hh8ey6h57blq616idwsou21zd
limogeasses
0
3459749
9788376
2026-05-25T02:12:33Z
TongcyBot
83009
半自動導入非詞元形式
9788376
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|limoger||2|s|impf|subj}}
tbm361ez1coj2sciskx167n6ekhd0ft
limogeassiez
0
3459750
9788377
2026-05-25T02:12:35Z
TongcyBot
83009
半自動導入非詞元形式
9788377
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|limoger||2|p|impf|subj}}
mj70q64gx7fnlotx6zn9dr5s1k3jyra
limogeassions
0
3459751
9788378
2026-05-25T02:12:36Z
TongcyBot
83009
半自動導入非詞元形式
9788378
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|limoger||1|p|impf|subj}}
lmkg2zgsutbcpw4nnzgdoknt0wbzi1y
limogent
0
3459752
9788379
2026-05-25T02:12:37Z
TongcyBot
83009
半自動導入非詞元形式
9788379
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|limoger||3|p|pres|ind//sub}}
e8c6ink3rpp0o7o3xs8ov3kfamw4224
limogeons
0
3459753
9788380
2026-05-25T02:12:38Z
TongcyBot
83009
半自動導入非詞元形式
9788380
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|limoger||1|p|pres|indc|;|1|p|impr}}
rjph7eb7rattxkvdks6qvtb5kp3qk49
limogera
0
3459754
9788381
2026-05-25T02:12:39Z
TongcyBot
83009
半自動導入非詞元形式
9788381
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|limoger||3|s|futr}}
kbv4ke34q5lzj9pqq4qu87695v4v8wp
limogerai
0
3459755
9788382
2026-05-25T02:12:40Z
TongcyBot
83009
半自動導入非詞元形式
9788382
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|limoger||1|s|futr}}
df9cct5gnbxz509nv5kf7d7ip3tryhf
limogeraient
0
3459756
9788383
2026-05-25T02:12:41Z
TongcyBot
83009
半自動導入非詞元形式
9788383
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|limoger||3|p|cond}}
dmkltvb3j1ch9se1cjyh82ye1noyy9i
limogerais
0
3459757
9788384
2026-05-25T02:12:43Z
TongcyBot
83009
半自動導入非詞元形式
9788384
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|limoger||1//2|s|cond}}
25ilvg32y9rt3gsua38mxl0rea1g11e
limogerait
0
3459758
9788385
2026-05-25T02:12:44Z
TongcyBot
83009
半自動導入非詞元形式
9788385
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|limoger||3|s|cond}}
svr01likcogh4ezbeb31w5wagjinqm5
limogeras
0
3459759
9788386
2026-05-25T02:12:45Z
TongcyBot
83009
半自動導入非詞元形式
9788386
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|limoger||2|s|futr}}
===異序詞===
* {{l|fr|rigolâmes}}
t2zme75stnw5ht967wwsjhzub20c5de
limogerez
0
3459760
9788387
2026-05-25T02:12:46Z
TongcyBot
83009
半自動導入非詞元形式
9788387
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|limoger||2|p|futr}}
ebibc87in2sny56dl0g75albh7xamru
limogeriez
0
3459761
9788388
2026-05-25T02:12:47Z
TongcyBot
83009
半自動導入非詞元形式
9788388
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|limoger||2|p|cond}}
argpdyttz37stkxr3sy3y65e2lerr6x
limogerions
0
3459762
9788389
2026-05-25T02:12:48Z
TongcyBot
83009
半自動導入非詞元形式
9788389
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|limoger||1|p|cond}}
m1titxg1mhmuepkqe9uy7ivtody08rp
limogerons
0
3459763
9788390
2026-05-25T02:12:49Z
TongcyBot
83009
半自動導入非詞元形式
9788390
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|limoger||1|p|futr}}
7jmpwbaibezuux6eoa1wf1b7z0umumk
limogeront
0
3459764
9788391
2026-05-25T02:12:50Z
TongcyBot
83009
半自動導入非詞元形式
9788391
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|limoger||3|p|futr}}
kxkxg4nmj97visxdjbwdawj4fvwh38r
limoges
0
3459765
9788392
2026-05-25T02:12:51Z
TongcyBot
83009
半自動導入非詞元形式
9788392
wikitext
text/x-wiki
{{also|Limoges|limogés}}
==法語==
===發音===
* {{fr-IPA|pos=v}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|limoger||2|s|pres|ind//sub}}
===異序詞===
* {{l|fr|gliomes}}
r613snwodu6oq58zf5gbcp26l2iaudj
limogez
0
3459766
9788393
2026-05-25T02:12:52Z
TongcyBot
83009
半自動導入非詞元形式
9788393
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|limoger||2|p|pres|indc|;|2|p|impr}}
chgnq54q9lz6gg6dkq3tpd1t02ktbew
limogeâmes
0
3459767
9788394
2026-05-25T02:12:53Z
TongcyBot
83009
半自動導入非詞元形式
9788394
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|limoger||1|p|phis}}
2ja1og3v14eowyc3mvgi2056g07djed
limogeât
0
3459768
9788395
2026-05-25T02:12:54Z
TongcyBot
83009
半自動導入非詞元形式
9788395
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|limoger||3|s|impf|subj}}
q5q5fmpu0wma8mnte8vvb8sn9s848rl
limogeâtes
0
3459769
9788396
2026-05-25T02:12:55Z
TongcyBot
83009
半自動導入非詞元形式
9788396
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|limoger||2|p|phis}}
icz478znrc8a6fj23ah9bufv4na2a6e
limogiez
0
3459770
9788397
2026-05-25T02:12:56Z
TongcyBot
83009
半自動導入非詞元形式
9788397
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|limoger||2|p|impf|indc|;|2|p|pres|subj}}
6v1pfgkwi9kdu43fdxpuwnm4atroz50
limogions
0
3459771
9788398
2026-05-25T02:12:57Z
TongcyBot
83009
半自動導入非詞元形式
9788398
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|limoger||1|p|impf|indc|;|1|p|pres|subj}}
1wjnyqozftotu28ct3bhm4pufb67oab
limogèrent
0
3459772
9788399
2026-05-25T02:12:58Z
TongcyBot
83009
半自動導入非詞元形式
9788399
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|limoger||3|p|phis}}
7p9fy99uqzly04f1a5dtuuvsbvd69vn
lèse
0
3459773
9788400
2026-05-25T02:12:59Z
TongcyBot
83009
半自動導入非詞元形式
9788400
wikitext
text/x-wiki
{{also|lese|leśe|lèsè|lésé|lëse|lěśe|-lese|lësë}}
==法語==
===發音===
* {{fr-IPA|pos=v}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|léser||1//3|s|pres|ind//sub|;|2|s|impr}}
o39tcayf7kviitmertp3ty7uimome99
lèsent
0
3459774
9788401
2026-05-25T02:13:00Z
TongcyBot
83009
半自動導入非詞元形式
9788401
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|léser||3|p|pres|ind//sub}}
jja6746jvx6a89iwetxm02a71kt0rm5
lèsera
0
3459775
9788402
2026-05-25T02:13:01Z
TongcyBot
83009
半自動導入非詞元形式
9788402
wikitext
text/x-wiki
{{also|lésera}}
==法語==
===其他形式===
* {{l|fr|lésera}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|léser||3|s|simple|futr}}
0rrha0exuxhs2e6ck2fn53cbznzcz64
lèserai
0
3459776
9788403
2026-05-25T02:13:02Z
TongcyBot
83009
半自動導入非詞元形式
9788403
wikitext
text/x-wiki
{{also|léserai}}
==法語==
===其他形式===
* {{l|fr|léserai}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|léser||1|s|simple|futr}}
eajqwhevsj8lffozwrs9779jdj17ik4
lèseraient
0
3459777
9788404
2026-05-25T02:13:04Z
TongcyBot
83009
半自動導入非詞元形式
9788404
wikitext
text/x-wiki
{{also|léseraient}}
==法語==
===其他形式===
* {{l|fr|léseraient}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|léser||3|p|cond}}
3kdzgnv2i5zgpzttxrfoiz2s28qmevd
lèserais
0
3459778
9788405
2026-05-25T02:13:05Z
TongcyBot
83009
半自動導入非詞元形式
9788405
wikitext
text/x-wiki
{{also|léserais}}
==法語==
===其他形式===
* {{l|fr|léserais}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|léser||1//2|s|cond}}
f2uhitjuwb04bm5pnw3p6wngyltz1yi
lèserait
0
3459779
9788406
2026-05-25T02:13:06Z
TongcyBot
83009
半自動導入非詞元形式
9788406
wikitext
text/x-wiki
{{also|léserait}}
==法語==
===其他形式===
* {{l|fr|léserait}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|léser||3|s|cond}}
34qpt1tq0u3aeieb52o0779hjwfw2ea
lèseras
0
3459780
9788407
2026-05-25T02:13:08Z
TongcyBot
83009
半自動導入非詞元形式
9788407
wikitext
text/x-wiki
{{also|léseras}}
==法語==
===其他形式===
* {{l|fr|léseras}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|léser||2|s|simple|futr}}
68puqsflcjq4e40kdjwxek21hldoqgi
lèserez
0
3459781
9788408
2026-05-25T02:13:09Z
TongcyBot
83009
半自動導入非詞元形式
9788408
wikitext
text/x-wiki
{{also|léserez}}
==法語==
===其他形式===
* {{l|fr|léserez}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|léser||2|p|simple|futr}}
togpse6uqyh5dxqop7hd9umz2a9kbtp
lèseriez
0
3459782
9788409
2026-05-25T02:13:10Z
TongcyBot
83009
半自動導入非詞元形式
9788409
wikitext
text/x-wiki
{{also|léseriez}}
==法語==
===其他形式===
* {{l|fr|léseriez}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|léser||2|p|cond}}
0cwatayr13hlu6rijc21yaxpnswk4bj
lèserions
0
3459783
9788410
2026-05-25T02:13:11Z
TongcyBot
83009
半自動導入非詞元形式
9788410
wikitext
text/x-wiki
{{also|léserions}}
==法語==
===其他形式===
* {{l|fr|léserions}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|léser||1|p|cond}}
iq0albtsy50dad454qlgqb2937ztxn7
lèserons
0
3459784
9788411
2026-05-25T02:13:13Z
TongcyBot
83009
半自動導入非詞元形式
9788411
wikitext
text/x-wiki
{{also|léserons}}
==法語==
===其他形式===
* {{l|fr|léserons}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|léser||1|p|simple|futr}}
8cs3ca7npbqxgr7erxr36yfzxgo8n4y
lèseront
0
3459785
9788412
2026-05-25T02:13:14Z
TongcyBot
83009
半自動導入非詞元形式
9788412
wikitext
text/x-wiki
{{also|léseront}}
==法語==
===其他形式===
* {{l|fr|léseront}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|léser||3|p|simple|futr}}
0ai5k1e6xzwl7givjhwrky89dzcbnmt
lèses
0
3459786
9788413
2026-05-25T02:13:15Z
TongcyBot
83009
半自動導入非詞元形式
9788413
wikitext
text/x-wiki
{{also|leses|leśeś|lésés}}
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|léser||2|s|pres|ind//sub}}
ceb7zu4thck4v0i9lvv60mby5nv5741
lésa
0
3459787
9788414
2026-05-25T02:13:16Z
TongcyBot
83009
半自動導入非詞元形式
9788414
wikitext
text/x-wiki
{{also|lesa|lësã|Lesa}}
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|léser||3|s|phis}}
dthk7836bh7ex1dp6r1duriebfe6lcz
lésai
0
3459788
9788415
2026-05-25T02:13:17Z
TongcyBot
83009
半自動導入非詞元形式
9788415
wikitext
text/x-wiki
{{also|lesai}}
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|léser||1|s|phis}}
6hgjuuxr47w609eorwrlxw009qreqnp
lésaient
0
3459789
9788416
2026-05-25T02:13:18Z
TongcyBot
83009
半自動導入非詞元形式
9788416
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|léser||3|p|impf|indc}}
n9cb11tdccefyzgbzr1cxqg7jzvjcc2
lésais
0
3459790
9788417
2026-05-25T02:13:19Z
TongcyBot
83009
半自動導入非詞元形式
9788417
wikitext
text/x-wiki
{{also|lesais}}
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|léser||1//2|s|impf|indc}}
aoymqgd9owhoej2vwhhec25cqmf0kgk
lésait
0
3459791
9788418
2026-05-25T02:13:20Z
TongcyBot
83009
半自動導入非詞元形式
9788418
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|léser||3|s|impf|indc}}
2yyk4skmkdlta7x7quiy9o8rhwey629
lésant
0
3459792
9788419
2026-05-25T02:13:21Z
TongcyBot
83009
半自動導入非詞元形式
9788419
wikitext
text/x-wiki
==法語==
===分詞===
{{head|fr|現在分詞}}
# {{present participle of|fr|léser}}
tc2hk166uftrcvjiu0vpyxpsdg3psh7
lésas
0
3459793
9788420
2026-05-25T02:13:22Z
TongcyBot
83009
半自動導入非詞元形式
9788420
wikitext
text/x-wiki
{{also|lesas}}
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|léser||2|s|phis}}
6d89ktkphlpovuqvfc52dfwhbjg1wk1
lésasse
0
3459794
9788421
2026-05-25T02:13:23Z
TongcyBot
83009
半自動導入非詞元形式
9788421
wikitext
text/x-wiki
{{also|lesasse}}
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|léser||1|s|impf|subj}}
n78ubn0nk3dsz78yp5w3mld3xoz1uc3
lésassent
0
3459795
9788422
2026-05-25T02:13:24Z
TongcyBot
83009
半自動導入非詞元形式
9788422
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|léser||3|p|impf|subj}}
sv7fmyueskot3wt2qe792xjw9393k6v
lésasses
0
3459796
9788423
2026-05-25T02:13:26Z
TongcyBot
83009
半自動導入非詞元形式
9788423
wikitext
text/x-wiki
{{also|lesasses}}
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|léser||2|s|impf|subj}}
g1mabqqumlfv2wrqpif7muz4bhtus6q
lésassiez
0
3459797
9788424
2026-05-25T02:13:26Z
TongcyBot
83009
半自動導入非詞元形式
9788424
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|léser||2|p|impf|subj}}
781umnejv826991pbro456g9mk7quoo
lésassions
0
3459798
9788425
2026-05-25T02:13:28Z
TongcyBot
83009
半自動導入非詞元形式
9788425
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|léser||1|p|impf|subj}}
05wx1ntwipuw5qsb0o084ou53ye8zju
lésera
0
3459799
9788426
2026-05-25T02:13:29Z
TongcyBot
83009
半自動導入非詞元形式
9788426
wikitext
text/x-wiki
{{also|lèsera}}
==法語==
===其他形式===
* {{l|fr|lèsera}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|léser||3|s|simple|futr}}
hofxfd3dwfdvhg0dcgouchlymbb37w6
léserai
0
3459800
9788427
2026-05-25T02:13:30Z
TongcyBot
83009
半自動導入非詞元形式
9788427
wikitext
text/x-wiki
{{also|lèserai}}
==法語==
===其他形式===
* {{l|fr|lèserai}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|léser||1|s|simple|futr}}
qzg4gh5p9oopkagabgnuya9pq1xjkhr
léseraient
0
3459801
9788428
2026-05-25T02:13:31Z
TongcyBot
83009
半自動導入非詞元形式
9788428
wikitext
text/x-wiki
{{also|lèseraient}}
==法語==
===其他形式===
* {{l|fr|lèseraient}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|léser||3|p|cond}}
cdsuw0zz8qql5ytppnb64zd4xkpttzb
léserait
0
3459802
9788429
2026-05-25T02:13:33Z
TongcyBot
83009
半自動導入非詞元形式
9788429
wikitext
text/x-wiki
{{also|lèserait}}
==法語==
===其他形式===
* {{l|fr|lèserait}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|léser||3|s|cond}}
gk4xcmdqyxcf9xbpekxpg1la0m8tkt8
léserais
0
3459803
9788430
2026-05-25T02:13:33Z
TongcyBot
83009
半自動導入非詞元形式
9788430
wikitext
text/x-wiki
{{also|lèserais}}
==法語==
===其他形式===
* {{l|fr|lèserais}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|léser||1//2|s|cond}}
r9bvuv60c61c02xdykzkyadan8m4gzy
léseras
0
3459804
9788431
2026-05-25T02:13:36Z
TongcyBot
83009
半自動導入非詞元形式
9788431
wikitext
text/x-wiki
{{also|lèseras}}
==法語==
===其他形式===
* {{l|fr|lèseras}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|léser||2|s|simple|futr}}
le5o0rrj8m9bsbpptuvycjdge1qdnr0
léserez
0
3459805
9788432
2026-05-25T02:13:37Z
TongcyBot
83009
半自動導入非詞元形式
9788432
wikitext
text/x-wiki
{{also|lèserez}}
==法語==
===其他形式===
* {{l|fr|lèserez}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|léser||2|p|simple|futr}}
m5hcnp16sjjouj3vawrn4ut1crhbo3h
léseriez
0
3459806
9788433
2026-05-25T02:13:38Z
TongcyBot
83009
半自動導入非詞元形式
9788433
wikitext
text/x-wiki
{{also|lèseriez}}
==法語==
===其他形式===
* {{l|fr|lèseriez}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|léser||2|p|cond}}
n929oaqyd00b8cyz9rz718ostcvi3fp
léserions
0
3459807
9788434
2026-05-25T02:13:39Z
TongcyBot
83009
半自動導入非詞元形式
9788434
wikitext
text/x-wiki
{{also|lèserions}}
==法語==
===其他形式===
* {{l|fr|lèserions}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|léser||1|p|cond}}
j055y9jgkm68domx8eobx5g93kam7ao
léserons
0
3459808
9788435
2026-05-25T02:13:40Z
TongcyBot
83009
半自動導入非詞元形式
9788435
wikitext
text/x-wiki
{{also|lèserons}}
==法語==
===其他形式===
* {{l|fr|lèserons}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|léser||1|p|simple|futr}}
6e5isrypmg0vat3p8tgmynvusf2zok0
léseront
0
3459809
9788436
2026-05-25T02:13:42Z
TongcyBot
83009
半自動導入非詞元形式
9788436
wikitext
text/x-wiki
{{also|lèseront}}
==法語==
===其他形式===
* {{l|fr|lèseront}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|léser||3|p|simple|futr}}
8b2g5w9668q1ox7jakmk2pozkyxj9wr
lésez
0
3459810
9788437
2026-05-25T02:13:43Z
TongcyBot
83009
半自動導入非詞元形式
9788437
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|léser||2|p|pres|indc|;|2|p|impr}}
3wuk6ksyxc14vpw5vg3l25gn8auyotz
lésiez
0
3459811
9788438
2026-05-25T02:13:44Z
TongcyBot
83009
半自動導入非詞元形式
9788438
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|léser||2|p|impf|indc|;|2|p|pres|subj}}
0g6sl3ub7ltuxewd6hed1zac6yiyl3v
lésions
0
3459812
9788439
2026-05-25T02:13:45Z
TongcyBot
83009
半自動導入非詞元形式
9788439
wikitext
text/x-wiki
{{also|lesions}}
==法語==
===名詞===
{{head|fr|名詞變格形|g=m}}
# {{plural of|fr|lésion}}
===異序詞===
* {{l|fr|élisons}}、{{l|fr|Lensois}}、{{l|fr|lensois}}
q91cuavwebaap6km4abd1e9v0f26dr5
lésons
0
3459813
9788440
2026-05-25T02:13:46Z
TongcyBot
83009
半自動導入非詞元形式
9788440
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|léser||1|p|pres|indc|;|1|p|impr}}
mwwohpj4e9t92wswir27ynbqxe8qmjx
lésâmes
0
3459814
9788441
2026-05-25T02:13:47Z
TongcyBot
83009
半自動導入非詞元形式
9788441
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|léser||1|p|phis}}
057id2ydf4nk3hqczad7juwga8d30bz
lésât
0
3459815
9788442
2026-05-25T02:13:48Z
TongcyBot
83009
半自動導入非詞元形式
9788442
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|léser||3|s|impf|subj}}
6k7eceqkw62vdrxj929w1f9r63hbbqu
lésâtes
0
3459816
9788443
2026-05-25T02:13:49Z
TongcyBot
83009
半自動導入非詞元形式
9788443
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|léser||2|p|phis}}
rwwg89mwejh1ux6z3wepcc33x8nlkhq
lésèrent
0
3459817
9788444
2026-05-25T02:13:50Z
TongcyBot
83009
半自動導入非詞元形式
9788444
wikitext
text/x-wiki
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|léser||3|p|phis}}
rxmy7hbpsimxjyiuu7dkk85tl944mo2
lésé
0
3459818
9788445
2026-05-25T02:13:51Z
TongcyBot
83009
半自動導入非詞元形式
9788445
wikitext
text/x-wiki
{{also|lese|leśe|lèse|lèsè|lëse|lěśe|-lese|lësë}}
==法語==
===分詞===
{{fr-past participle}}
# {{past participle of|fr|léser}}
===延伸閱讀===
* {{R:fr:TLFi}}
bbdofzxktasmnakaqnm5oxwlk7dn50u
postula
0
3459819
9788446
2026-05-25T02:13:52Z
TongcyBot
83009
半自動導入非詞元形式
9788446
wikitext
text/x-wiki
{{also|postulá}}
==加泰羅尼亞語==
===發音===
* {{ca-IPA}}
===動詞===
{{head|ca|動詞變位形式}}
# {{ca-verb form of|postular}}
==法語==
===發音===
* {{fr-IPA|pos=v}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|postuler||3|s|phis}}
==意大利語==
===發音===
{{it-pr|^ò}}
===動詞===
{{head|it|動詞變位形式}}
# {{inflection of|it|postulare||3|s|pres|indc|;|2|s|impr}}
===異序詞===
* {{anagrams|it|a=alopstu|pulsato|pustola|spulato}}
==拉丁語==
===發音===
* {{la-IPA|postulā}}
===動詞===
{{head|la|動詞變位形式|head=postulā}}
# {{inflection of|la|postulō||2|s|pres|actv|impr}}
===參考資料===
* {{R:la:du Cange}}
==葡萄牙語==
===發音===
{{pt-IPA}}
* {{hyph|pt|pos|tu|la}}
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|postular}}
==西班牙語==
===發音===
{{es-pr}}
===動詞===
{{head|es|動詞變位形式}}
# {{es-verb form of|postular}}
58ej6iwe3w1cgxnego33gn1i5z5ihec
postulai
0
3459820
9788447
2026-05-25T02:13:54Z
TongcyBot
83009
半自動導入非詞元形式
9788447
wikitext
text/x-wiki
==法語==
===發音===
* {{fr-IPA|pos=v}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|postuler||1|s|phis}}
==意大利語==
===動詞===
{{head|it|動詞變位形式}}
# {{inflection of|it|postulare||1|s|phis}}
===異序詞===
* {{anagrams|it|a=ailopstu|saputoli}}
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|postular}}
7krhvw2ch80htrz4l2a2yroqdlnz4tm
postulaient
0
3459821
9788448
2026-05-25T02:13:55Z
TongcyBot
83009
半自動導入非詞元形式
9788448
wikitext
text/x-wiki
==法語==
===發音===
* {{fr-IPA|pos=v}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|postuler||3|p|impf|indc}}
1x500jjj4lljblarzen36d92x1ywv7q
postulais
0
3459822
9788449
2026-05-25T02:13:56Z
TongcyBot
83009
半自動導入非詞元形式
9788449
wikitext
text/x-wiki
{{also|postuláis}}
==法語==
===發音===
* {{fr-IPA|pos=v}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|postuler||1//2|s|impf|indc}}
===異序詞===
* {{l|fr|assouplit}}、{{l|fr|assouplît}}
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|postular}}
ij641nj57ock7kmoj04l0q6uxaimztg
postulait
0
3459823
9788450
2026-05-25T02:13:57Z
TongcyBot
83009
半自動導入非詞元形式
9788450
wikitext
text/x-wiki
==法語==
===發音===
* {{fr-IPA|pos=v}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|postuler||3|s|impf|indc}}
67vpka8y557mlbx1cl62v6wpu2nkzc6
postulasse
0
3459824
9788451
2026-05-25T02:13:59Z
TongcyBot
83009
半自動導入非詞元形式
9788451
wikitext
text/x-wiki
==法語==
===發音===
* {{fr-IPA|pos=v}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|postuler||1|s|impf|subj}}
==意大利語==
===動詞===
{{head|it|動詞變位形式}}
# {{inflection of|it|postulare||3|s|impf|subj}}
==拉丁語==
===動詞===
{{head|la|動詞變位形式|head=postulāsse}}
# {{inflection of|la|postulō||perf|actv|inf}}
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|postular}}
fj4wne45ed04dkhl1p4b8j68olerp9h
postulassent
0
3459825
9788452
2026-05-25T02:14:00Z
TongcyBot
83009
半自動導入非詞元形式
9788452
wikitext
text/x-wiki
==法語==
===發音===
* {{fr-IPA|pos=v}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|postuler||3|p|impf|subj}}
==拉丁語==
===動詞===
{{head|la|動詞變位形式|head=postulāssent}}
# {{inflection of|la|postulō||3|p|plup|actv|subj}}
520yrpwcp8d190sk10gm0wbcp446h8p
postulasses
0
3459826
9788453
2026-05-25T02:14:01Z
TongcyBot
83009
半自動導入非詞元形式
9788453
wikitext
text/x-wiki
==法語==
===發音===
* {{fr-IPA|pos=v}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|postuler||2|s|impf|subj}}
==拉丁語==
===動詞===
{{head|la|動詞變位形式|head=postulāssēs}}
# {{inflection of|la|postulō||2|s|plup|actv|subj}}
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|postular}}
oifktdvnqdibvdg9vp2du12cfrhpt33
postulassiez
0
3459827
9788454
2026-05-25T02:14:02Z
TongcyBot
83009
半自動導入非詞元形式
9788454
wikitext
text/x-wiki
==法語==
===發音===
* {{fr-IPA|pos=v}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|postuler||2|p|impf|subj}}
hsmkowg6f09coqzpes31b2e7ic3g6ac
postulassions
0
3459828
9788455
2026-05-25T02:14:04Z
TongcyBot
83009
半自動導入非詞元形式
9788455
wikitext
text/x-wiki
==法語==
===發音===
* {{fr-IPA|pos=v}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|postuler||1|p|impf|subj}}
6m0dwdpbbc4rut9yhzmf5momuw8uixm
postule
0
3459829
9788456
2026-05-25T02:14:04Z
TongcyBot
83009
半自動導入非詞元形式
9788456
wikitext
text/x-wiki
{{also|postulé}}
==法語==
===發音===
* {{fr-IPA|pos=v}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|postuler||1//3|s|pres|ind//sub|;|2|s|impr}}
===異序詞===
* {{l|fr|poulets}}
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|postular}}
==西班牙語==
===動詞===
{{head|es|動詞變位形式}}
# {{es-verb form of|postular}}
m7knmlbylbwzu8qpb44s4uud8z9slu9
postulerai
0
3459830
9788457
2026-05-25T02:14:07Z
TongcyBot
83009
半自動導入非詞元形式
9788457
wikitext
text/x-wiki
==法語==
===發音===
* {{fr-IPA|pos=v}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|postuler||1|s|simple|futr}}
==意大利語==
===動詞===
{{head|it|動詞變位形式}}
# {{inflection of|it|postulare||2|s|futr}}
q6ov4kv5stfjt6lfr52yxkfvn47es25
postulent
0
3459831
9788458
2026-05-25T02:14:08Z
TongcyBot
83009
半自動導入非詞元形式
9788458
wikitext
text/x-wiki
==法語==
===發音===
* {{fr-IPA|pos=v}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|postuler||3|p|pres|ind//sub}}
==拉丁語==
===動詞===
{{head|la|動詞變位形式}}
# {{inflection of|la|postulō||3|p|pres|actv|subj}}
e310kvtyl7963f85yxtetybfg8yoor4
postuleraient
0
3459832
9788459
2026-05-25T02:14:09Z
TongcyBot
83009
半自動導入非詞元形式
9788459
wikitext
text/x-wiki
==法語==
===發音===
* {{fr-IPA|pos=v}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|postuler||3|p|cond}}
bavjtaxil4z9eqgqohfd7e5o3ezgq7n
postulerais
0
3459833
9788460
2026-05-25T02:14:10Z
TongcyBot
83009
半自動導入非詞元形式
9788460
wikitext
text/x-wiki
==法語==
===發音===
* {{fr-IPA|pos=v}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|postuler||1//2|s|cond}}
brupbek8qsr32w8mirq24cs6tvywkl2
postulerait
0
3459834
9788461
2026-05-25T02:14:11Z
TongcyBot
83009
半自動導入非詞元形式
9788461
wikitext
text/x-wiki
==法語==
===發音===
* {{fr-IPA|pos=v}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|postuler||3|s|cond}}
g058vkjm5vkmrs6hbba5ff3q7oqvyf8
postulerez
0
3459835
9788462
2026-05-25T02:14:12Z
TongcyBot
83009
半自動導入非詞元形式
9788462
wikitext
text/x-wiki
==法語==
===發音===
* {{fr-IPA|pos=v}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|postuler||2|p|simple|futr}}
c1lojirfze53ta2dalr7dkvnnyltizf
postuleriez
0
3459836
9788463
2026-05-25T02:14:13Z
TongcyBot
83009
半自動導入非詞元形式
9788463
wikitext
text/x-wiki
==法語==
===發音===
* {{fr-IPA|pos=v}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|postuler||2|p|cond}}
noz6vflarianmofq3ma494hkyst8k6w
postulerions
0
3459837
9788464
2026-05-25T02:14:14Z
TongcyBot
83009
半自動導入非詞元形式
9788464
wikitext
text/x-wiki
==法語==
===發音===
* {{fr-IPA|pos=v}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|postuler||1|p|cond}}
hyzmxp57tj2677fwzyrywc24ngu8j8t
postulerons
0
3459838
9788465
2026-05-25T02:14:15Z
TongcyBot
83009
半自動導入非詞元形式
9788465
wikitext
text/x-wiki
==法語==
===發音===
* {{fr-IPA|pos=v}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|postuler||1|p|simple|futr}}
s6iqzdsc9wz9duid3ei2f8dluub8rk2
postuleront
0
3459839
9788466
2026-05-25T02:14:16Z
TongcyBot
83009
半自動導入非詞元形式
9788466
wikitext
text/x-wiki
==法語==
===發音===
* {{fr-IPA|pos=v}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|postuler||3|p|simple|futr}}
5ue50yf6jnbgbw7utkbroc7va7e44xm
postules
0
3459840
9788467
2026-05-25T02:14:17Z
TongcyBot
83009
半自動導入非詞元形式
9788467
wikitext
text/x-wiki
{{also|postulés}}
==加泰羅尼亞語==
===動詞===
{{head|ca|動詞變位形式}}
# {{ca-verb form of|postular}}
==法語==
===發音===
* {{fr-IPA|pos=v}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|postuler||2|s|pres|ind//sub}}
==拉丁語==
===動詞===
{{head|la|動詞變位形式|head=postulēs}}
# {{inflection of|la|postulō||2|s|pres|actv|subj}}
==葡萄牙語==
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|postular}}
==西班牙語==
===動詞===
{{head|es|動詞變位形式}}
# {{es-verb form of|postular}}
odgt4tdejln3af4t46r0tmkw8vv3ljx
postulez
0
3459841
9788468
2026-05-25T02:14:18Z
TongcyBot
83009
半自動導入非詞元形式
9788468
wikitext
text/x-wiki
==法語==
===發音===
* {{fr-IPA|pos=v}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|postuler||2|p|pres|indc|;|2|p|impr}}
o9o6qstsstc4a3a3xzy208xj7vagxx7
postuliez
0
3459842
9788469
2026-05-25T02:14:20Z
TongcyBot
83009
半自動導入非詞元形式
9788469
wikitext
text/x-wiki
==法語==
===發音===
* {{fr-IPA|pos=v}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|postuler||2|p|impf|indc|;|2|p|pres|subj}}
cn0kiry0u7uppujq3pgeq3ty27kz1qa
postulions
0
3459843
9788470
2026-05-25T02:14:21Z
TongcyBot
83009
半自動導入非詞元形式
9788470
wikitext
text/x-wiki
==法語==
===發音===
* {{fr-IPA|pos=v}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|postuler||1|p|impf|indc|;|1|p|pres|subj}}
oq4kitob58liof0sfmq2i6ormej95pk
postulons
0
3459844
9788471
2026-05-25T02:14:22Z
TongcyBot
83009
半自動導入非詞元形式
9788471
wikitext
text/x-wiki
==法語==
===發音===
* {{fr-IPA|pos=v}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|postuler||1|p|pres|indc|;|1|p|impr}}
732ovtclxfvgc00ggt26jgj5fxo62ym
postulâmes
0
3459845
9788472
2026-05-25T02:14:23Z
TongcyBot
83009
半自動導入非詞元形式
9788472
wikitext
text/x-wiki
==法語==
===發音===
* {{fr-IPA|pos=v}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|postuler||1|p|phis}}
4q5h8nc7zzcksn5wmw9e83f5me5n6av
postulât
0
3459846
9788473
2026-05-25T02:14:24Z
TongcyBot
83009
半自動導入非詞元形式
9788473
wikitext
text/x-wiki
{{also|postulat|Postulat|postulát}}
==法語==
===發音===
* {{fr-IPA|pos=v}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|postuler||3|s|impf|subj}}
olc6v7btfyqljrdehab6k7r7sxqpxgw
postulâtes
0
3459847
9788474
2026-05-25T02:14:25Z
TongcyBot
83009
半自動導入非詞元形式
9788474
wikitext
text/x-wiki
{{also|postulates|Postulates}}
==法語==
===發音===
* {{fr-IPA|pos=v}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|postuler||2|p|phis}}
5515o354tk3ne8v97sstpu4k34mal7c
postulèrent
0
3459848
9788475
2026-05-25T02:14:26Z
TongcyBot
83009
半自動導入非詞元形式
9788475
wikitext
text/x-wiki
==法語==
===發音===
* {{fr-IPA|pos=v}}
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|postuler||3|p|phis}}
7sn17og0soua3196dzzk4jz310m0n1o
활동하다
0
3459849
9788483
2026-05-25T04:20:27Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==朝鮮語== ===詞源=== 源自 {{af|ko|활동(活動)|-하다|t2=做|pos2=構成主動動詞的[[輕動詞]]}}。 ===發音=== {{ko-IPA|com=1}} ===動詞=== {{ko-verb}} # {{lb|ko|不及物}} [[移動]],[[行動]] # {{lb|ko|不及物}} [[活動]],[[活躍]] ====活用==== {{ko-conj/verb}}」的新頁面
9788483
wikitext
text/x-wiki
==朝鮮語==
===詞源===
源自 {{af|ko|활동(活動)|-하다|t2=做|pos2=構成主動動詞的[[輕動詞]]}}。
===發音===
{{ko-IPA|com=1}}
===動詞===
{{ko-verb}}
# {{lb|ko|不及物}} [[移動]],[[行動]]
# {{lb|ko|不及物}} [[活動]],[[活躍]]
====活用====
{{ko-conj/verb}}
f13x8dmb5n0jhdplhd8gslbqvwfhyys
대히트
0
3459850
9788486
2026-05-25T04:28:28Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==朝鮮語== ===詞源=== {{com|ko|대(大)|히트|t2=受歡迎,得到廣泛好評,成功}} ===發音=== {{ko-IPA|l=y}} ===名詞=== {{ko-noun}} # [[走紅]],[[巨大]][[成功]],大[[流行]]」的新頁面
9788486
wikitext
text/x-wiki
==朝鮮語==
===詞源===
{{com|ko|대(大)|히트|t2=受歡迎,得到廣泛好評,成功}}
===發音===
{{ko-IPA|l=y}}
===名詞===
{{ko-noun}}
# [[走紅]],[[巨大]][[成功]],大[[流行]]
hnsal9lv1b2n3ca3odqhl362ykh5mye
aojashin
0
3459851
9788490
2026-05-25T04:32:31Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==日語== ===羅馬化=== {{ja-romaji}} # {{ja-romanization of|あおじゃしん}}」的新頁面
9788490
wikitext
text/x-wiki
==日語==
===羅馬化===
{{ja-romaji}}
# {{ja-romanization of|あおじゃしん}}
ldgxtztfpbop1h34ciau7nvsln9mlyp
鋏虫
0
3459852
9788497
2026-05-25T06:57:45Z
Fglffer
55252
新詞條
9788497
wikitext
text/x-wiki
==日語==
{{ja-kanjitab|はさみ|むし|yomi=k|alt=蠼螋}}
{{wp|ja:}}
===詞源===
{{ja-compound|sort=はさみむし|鋏|はさみ|t1=鉗子|虫|むし|t2=昆蟲}}。
===發音===
{{ja-pron|はさみむし|acc=3|acc_ref=DJR,NHK}}
===名詞===
{{ja-noun|はさみむし|ハサミムシ}}
# [[蠼螋]]
# 濱海肥螋({{taxlink|Anisolabis maritima|species}})
====衍生詞====
* {{ja-r|鋏虫目|はさみむしもく|[[革翅目]]}}
====使用說明====
{{U:ja:biology}}
===來源===
<references/>
:* {{R:Kanjipedia Kotoba|0001540700|<sup>▲</sup>鋏虫}}
{{C|ja|昆蟲|sort=はさみむし}}
7x8ks9lu4jeecvizhxmvurbjw81l74u
šťávě
0
3459853
9788504
2026-05-25T08:16:03Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「{{also|stave|Stave|stavě}} ==捷克語== ===發音=== * {{cs-IPA}} ===名詞=== {{head|cs|名詞變格形}} # {{infl of|cs|šťáva||dat//loc|s}}」的新頁面
9788504
wikitext
text/x-wiki
{{also|stave|Stave|stavě}}
==捷克語==
===發音===
* {{cs-IPA}}
===名詞===
{{head|cs|名詞變格形}}
# {{infl of|cs|šťáva||dat//loc|s}}
nlmcmglsn0kubjx9qlomiu5fgik5at7
t̓
0
3459854
9788506
2026-05-25T08:17:30Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「{{also|tʼ|ʼt|ť}} ==科莫克斯語== ===發音=== * {{IPA|coo|/tʼ/}} ===字母=== {{head|coo|字母|不分大小寫}} # {{Latn-def|coo|letter}} ====參見==== {{list:Latin script letters/coo}} ==海爾蘇克語== ===發音=== *{{IPA|hei|/tʼ/}} ===字母=== {{head|hei|字母|大寫|T̓}} # {{Latn-def|hei|letter}} ====參見==== {{list:Latin script letters/hei}} ==夸克瓦拉語== ===發音=== *{{IPA|kwk|/tʼ/}} ===字母===…」的新頁面
9788506
wikitext
text/x-wiki
{{also|tʼ|ʼt|ť}}
==科莫克斯語==
===發音===
* {{IPA|coo|/tʼ/}}
===字母===
{{head|coo|字母|不分大小寫}}
# {{Latn-def|coo|letter}}
====參見====
{{list:Latin script letters/coo}}
==海爾蘇克語==
===發音===
*{{IPA|hei|/tʼ/}}
===字母===
{{head|hei|字母|大寫|T̓}}
# {{Latn-def|hei|letter}}
====參見====
{{list:Latin script letters/hei}}
==夸克瓦拉語==
===發音===
*{{IPA|kwk|/tʼ/}}
===字母===
{{head|kwk|字母|大寫|T̓}}
# {{Latn-def|kwk|letter}}
====參見====
{{list:Latin script letters/kwk}}
==盧紹錫德語==
===其他形式===
*[[tʼ]]
===發音===
* {{IPA|lut|/tʼ/}}
===字母===
{{head|lut|字母}}
# {{ng|盧紹錫德語字母表的第38個字母}}
==努特卡語==
===發音===
*{{IPA|nuk|/tʼ/}}
===字母===
{{head|nuk|字母|大寫|T̓|sc=Latn}}
# {{ng|努特卡語的字母之一}}
====參見====
{{list:Latin script letters/nuk}}
==歐肯納根語==
===其他形式===
*[[tʼ]]
===發音===
* {{IPA|oka|/tʼ/}}
===字母===
{{head|oka|字母|uppercase|T̓}}
# {{ng|歐肯納根語的字母之一}}
====參見====
{{list:Latin script letters/oka}}
lmffeddi9voakahyirwnfv9wonqj068
9788510
9788506
2026-05-25T08:17:57Z
TongcyDai
53191
9788510
wikitext
text/x-wiki
{{also|tʼ|ʼt|ť}}
==科莫克斯語==
===發音===
* {{IPA|coo|/tʼ/}}
===字母===
{{head|coo|字母|不分大小寫}}
# {{Latn-def|coo|letter}}
====參見====
{{list:Latin script letters/coo}}
==海爾蘇克語==
===發音===
*{{IPA|hei|/tʼ/}}
===字母===
{{head|hei|字母|大寫|T̓}}
# {{Latn-def|hei|letter}}
====參見====
{{list:Latin script letters/hei}}
==夸克瓦拉語==
===發音===
*{{IPA|kwk|/tʼ/}}
===字母===
{{head|kwk|字母|大寫|T̓}}
# {{Latn-def|kwk|letter}}
====參見====
{{list:Latin script letters/kwk}}
==盧紹錫德語==
===其他形式===
*[[tʼ]]
===發音===
* {{IPA|lut|/tʼ/}}
===字母===
{{head|lut|字母}}
# {{ng|盧紹錫德語字母表的第38個字母}}
==努特卡語==
===發音===
*{{IPA|nuk|/tʼ/}}
===字母===
{{head|nuk|字母|大寫|T̓|sc=Latn}}
# {{ng|努特卡語的字母之一}}
====參見====
{{list:Latin script letters/nuk}}
==歐肯納根語==
===其他形式===
*[[tʼ]]
===發音===
* {{IPA|oka|/tʼ/}}
===字母===
{{head|oka|字母|大寫|T̓}}
# {{ng|歐肯納根語的字母之一}}
====參見====
{{list:Latin script letters/oka}}
3ij3nsqzqsdx2qfu5os29xldlm2o9wa
Category:有國際音標的努特卡語詞
14
3459855
9788507
2026-05-25T08:17:40Z
TongcyBot
83009
養貓
9788507
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有國際音標的歐肯納根語詞
14
3459856
9788508
2026-05-25T08:17:46Z
TongcyBot
83009
養貓
9788508
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有國際音標的海爾蘇克語詞
14
3459857
9788509
2026-05-25T08:17:52Z
TongcyBot
83009
養貓
9788509
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有國際音標的科莫克斯語詞
14
3459858
9788511
2026-05-25T08:17:58Z
TongcyBot
83009
養貓
9788511
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:海爾蘇克語字母
14
3459859
9788513
2026-05-25T08:18:05Z
TongcyBot
83009
養貓
9788513
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:海爾蘇克語符號
14
3459860
9788514
2026-05-25T08:18:11Z
TongcyBot
83009
養貓
9788514
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:海爾蘇克語詞元
14
3459861
9788515
2026-05-25T08:18:20Z
TongcyBot
83009
養貓
9788515
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
tʼ
0
3459862
9788517
2026-05-25T08:20:48Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「{{character image|IPA Unicode 0x0074+0x02BC.svg}} {{also|t̓|ť|ʼt}} ==跨語言== ===符號=== {{head|mul|符號}} # {{lb|mul|IPA}} [[齒齦]][[擠喉音]] ==艾馬拉語== ===發音=== * {{IPA|ay|/tʼ/}} ===字母=== {{head|ay|字母|大寫|Tʼ|sc=Latn}} # {{ng|艾馬拉語字母之一}} ==契帕瓦語== ===發音=== * {{IPA|chp|/tʼ/}} ===字母=== {{head|chp|字母|大寫|Tʼ}} # {{Latn-def|chp|letter}} ==奇維雷語== ===…」的新頁面
9788517
wikitext
text/x-wiki
{{character image|IPA Unicode 0x0074+0x02BC.svg}}
{{also|t̓|ť|ʼt}}
==跨語言==
===符號===
{{head|mul|符號}}
# {{lb|mul|IPA}} [[齒齦]][[擠喉音]]
==艾馬拉語==
===發音===
* {{IPA|ay|/tʼ/}}
===字母===
{{head|ay|字母|大寫|Tʼ|sc=Latn}}
# {{ng|艾馬拉語字母之一}}
==契帕瓦語==
===發音===
* {{IPA|chp|/tʼ/}}
===字母===
{{head|chp|字母|大寫|Tʼ}}
# {{Latn-def|chp|letter}}
==奇維雷語==
===其他形式===
*{{l|iow|tˀ}}、{{l|iow|t^}}
===發音===
* {{IPA|iow|/tʼ/}}
===字母===
{{head|iow|字母|大寫|Tʼ}}
# {{Latn-def|iow|letter}}
==喬爾蒂語==
===發音===
* {{IPA|caa|/tʼ/}}
===字母===
{{head|caa|字母|大寫|Tʼ|sc=Latn}}
# {{ng|喬爾蒂語字母之一}}
==卡沙亞語==
===發音===
* {{IPA|kju|/t̻ʼ/}}
===字母===
{{head|kju|字母|大寫|Tʼ}}
# {{Latn-def|kju|letter}}
==基奧瓦語==
===發音===
* {{IPA|kio|/tʼ/}}
===字母===
{{head|kio|字母|大寫|Tʼ}}
# {{ng|基奧瓦語字母之一}}
===參見===
{{list:Latin script letters/kio}}
==拉科塔語==
===發音===
* {{IPA|lkt|/tʼ/}}
===字母===
{{head|lkt|字母|大寫|Tʼ}}
# {{Latn-def|lkt|letter}}
====參見====
{{list:Latin script letters/lkt}}
==盧紹錫德語==
===字母===
{{head|lut|字母}}
# {{altform|lut|t̓}}
==馬姆語==
===發音===
* {{IPA|mam|/tʼ/}} ({{IPAfont|[tʼ] ~ [ɗ̥]}} i.e. [[ƭ|{{IPAfont|[ƭ]}}]])
===字母===
{{head|mam|字母|大寫|Tʼ|sc=Latn}}
# {{ng|馬姆語字母之一}}
==納瓦霍語==
===發音===
* {{IPA|nv|/tʼ/}}
===字母===
{{head|nv|字母|大寫|Tʼ}}
# {{Latn-def|nv|letter}}
* [[Appendix:納瓦霍語字母]]
==歐肯納根語==
===字母===
{{head|oka|字母|大寫|Tʼ}}
# {{altform|oka|t̓}}
==斯闊米什語==
===發音===
* {{IPA|squ|/tʼ/}}
===字母===
{{head|squ|字母|大寫|Tʼ}}
# {{Latn-def|squ|letter}}
====參見====
{{list:Latin script letters/squ}}
==特林吉特語==
===發音===
*{{IPA|tli|/tʼ/}}
===字母===
{{head|tli|字母|大寫|Tʼ}}
# {{Latn-def|tli|letter}}
====參見====
{{list:Latin script letters/tli}}
e2c7ve43yuyytfzn1v0ay8l0u35kmc4
Category:有國際音標的喬爾蒂語詞
14
3459863
9788518
2026-05-25T08:20:58Z
TongcyBot
83009
養貓
9788518
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有國際音標的奇維雷語詞
14
3459864
9788519
2026-05-25T08:21:05Z
TongcyBot
83009
養貓
9788519
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:奇維雷語詞條維護
14
3459865
9788520
2026-05-25T08:21:11Z
TongcyBot
83009
養貓
9788520
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:有國際音標的斯闊米什語詞
14
3459866
9788522
2026-05-25T08:21:18Z
TongcyBot
83009
養貓
9788522
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:艾馬拉語字母
14
3459867
9788523
2026-05-25T08:21:26Z
TongcyBot
83009
養貓
9788523
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:艾馬拉語符號
14
3459868
9788524
2026-05-25T08:21:31Z
TongcyBot
83009
養貓
9788524
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
valsas
0
3459869
9788527
2026-05-25T08:24:31Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「{{also|valsás}} ==法語== ===動詞=== {{head|fr|動詞變位形式}} # {{inflection of|fr|valser||2|s|phis}} ===異序詞=== * {{l|fr|vassal}} ==立陶宛語== ===發音=== {{lt-pr|válsas,válʼsas}} ===名詞=== {{lt-noun|m|vãlsai|1|head=vãlsas}} # [[華爾滋]] ====變格==== {{lt-noun-m-as-1|vals|vãls}} {{C|lt|舞}} ==葡萄牙語== ===名詞=== {{head|pt|名詞變格形|g=f-p}} # {{plural of|pt|valsa}} ===動詞=== {{h…」的新頁面
9788527
wikitext
text/x-wiki
{{also|valsás}}
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|valser||2|s|phis}}
===異序詞===
* {{l|fr|vassal}}
==立陶宛語==
===發音===
{{lt-pr|válsas,válʼsas}}
===名詞===
{{lt-noun|m|vãlsai|1|head=vãlsas}}
# [[華爾滋]]
====變格====
{{lt-noun-m-as-1|vals|vãls}}
{{C|lt|舞}}
==葡萄牙語==
===名詞===
{{head|pt|名詞變格形|g=f-p}}
# {{plural of|pt|valsa}}
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|valsar}}
==西班牙語==
===動詞===
{{head|es|動詞變位形式}}
# {{es-verb form of|valsar}}
g368cboamoxeq4w3pvg7cgua98n6f0m
9788533
9788527
2026-05-25T08:26:10Z
TongcyDai
53191
9788533
wikitext
text/x-wiki
{{also|valsás}}
==法語==
===動詞===
{{head|fr|動詞變位形式}}
# {{inflection of|fr|valser||2|s|phis}}
===異序詞===
* {{l|fr|vassal}}
==立陶宛語==
===發音===
{{lt-pr|válsas,válʼsas}}
===名詞===
{{lt-noun|m|válsai|1|head=válsas}}
# [[華爾滋]]
====變格====
{{lt-noun-m-as-1|vals|váls}}
{{C|lt|舞}}
==葡萄牙語==
===名詞===
{{head|pt|名詞變格形|g=f-p}}
# {{plural of|pt|valsa}}
===動詞===
{{head|pt|動詞變位形式}}
# {{pt-verb form of|valsar}}
==西班牙語==
===動詞===
{{head|es|動詞變位形式}}
# {{es-verb form of|valsar}}
cg0e3luis0ch8q8lwo44dsht2q61e12
Category:Rhymes:立陶宛語/ɑˑlsɐs
14
3459870
9788528
2026-05-25T08:24:45Z
TongcyBot
83009
養貓
9788528
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:Rhymes:立陶宛語/ɑˑlsɐs/2音節
14
3459871
9788529
2026-05-25T08:24:52Z
TongcyBot
83009
養貓
9788529
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:Rhymes:立陶宛語/ɑˑlʲsɐs
14
3459872
9788530
2026-05-25T08:24:58Z
TongcyBot
83009
養貓
9788530
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:Rhymes:立陶宛語/ɑˑlʲsɐs/2音節
14
3459873
9788531
2026-05-25T08:25:05Z
TongcyBot
83009
養貓
9788531
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:立陶宛語 舞
14
3459874
9788532
2026-05-25T08:25:14Z
TongcyBot
83009
養貓
9788532
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Wiktionary:每日一詞/2026年/6月10日
4
3459875
9788534
2026-05-25T08:35:02Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「{{WOTD|咎釁|名詞|2026|6月|10日| # {{lb|zh|書面}} [[罪過]],[[過失]] }}」的新頁面
9788534
wikitext
text/x-wiki
{{WOTD|咎釁|名詞|2026|6月|10日|
# {{lb|zh|書面}} [[罪過]],[[過失]]
}}
kmddp65kg46kgsdq9y9goilpdrave18
咎釁
0
3459876
9788535
2026-05-25T08:37:38Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「{{subst:zh-new|n|alt=咎舋|{{lb|zh|書面}} [[罪過]],[[過失]] #* {{zh-x|懼 於 飛矢 迸流,狂 刃 橫集,以 重 足下 之 禍,徒 增 孤 之 咎釁 也。||CL|ref=南朝宋·{{w|裴松之}}注《[[s:三國志/卷08#公孫瓚|三國志·魏書·公孫瓚傳]]》引《漢晉春秋》}} #* {{zh-x|^威 自 陳 奉事 二 朝 三十 餘 載,精誠 微淺 不 能 上 感,咎釁 屢 彰,罪 當 萬死。||CL|ref=唐·{{w|…」的新頁面
9788535
wikitext
text/x-wiki
==漢語==
{{zh-forms|s=咎衅|alt=咎舋}}
===發音===
{{zh-pron
|m=jiùxìn
|cat=n
}}
===名詞===
{{head|zh|名詞}}
# {{lb|zh|書面}} [[罪過]],[[過失]]
#* {{zh-x|懼 於 飛矢 迸流,狂 刃 橫集,以 重 足下 之 禍,徒 增 孤 之 咎釁 也。||CL|ref=南朝宋·{{w|裴松之}}注《[[s:三國志/卷08#公孫瓚|三國志·魏書·公孫瓚傳]]》引《漢晉春秋》}}
#* {{zh-x|^威 自 陳 奉事 二 朝 三十 餘 載,精誠 微淺 不 能 上 感,咎釁 屢 彰,罪 當 萬死。||CL|ref=唐·{{w|魏徵}}等《[[s:隋書/卷41#蘇威|隋書·蘇威列傳]]》}}
#* {{zh-x|詳評 獄訟,裁制 典刑,或 爽 重輕,慮 招 @'''咎舋'''。||CL|ref=五代前蜀·{{w|杜光庭}}〈[[s:張相公九曜醮詞|張相公九曜醮詞]]〉}}
===參考資料===
* {{R:zh:HYDCD}}
a3azt1606hth043dsd0yypcomd4s0pb
9788536
9788535
2026-05-25T08:38:54Z
TongcyDai
53191
9788536
wikitext
text/x-wiki
==漢語==
{{was wotd|2026|6月|10日}}
{{zh-forms|s=咎衅|alt=咎舋}}
===發音===
{{zh-pron
|m=jiùxìn
|c=gau3 jan6
|mc=y
|cat=n
}}
===名詞===
{{head|zh|名詞}}
# {{lb|zh|書面}} [[罪過]],[[過失]]
#* {{zh-x|懼 於 飛矢 迸流,狂 刃 橫集,以 重 足下 之 禍,徒 增 孤 之 咎釁 也。||CL|ref=南朝宋·{{w|裴松之}}注《[[s:三國志/卷08#公孫瓚|三國志·魏書·公孫瓚傳]]》引《漢晉春秋》}}
#* {{zh-x|^威 自 陳 奉事 二 朝 三十 餘 載,精誠 微淺 不 能 上 感,咎釁 屢 彰,罪 當 萬死。||CL|ref=唐·{{w|魏徵}}等《[[s:隋書/卷41#蘇威|隋書·蘇威列傳]]》}}
#* {{zh-x|詳評 獄訟,裁制 典刑,或 爽 重輕,慮 招 @'''咎舋'''。||CL|ref=五代前蜀·{{w|杜光庭}}〈[[s:張相公九曜醮詞|張相公九曜醮詞]]〉}}
===參考資料===
* {{R:zh:HYDCD}}
clyn6pomhm0zaaorwroqk2znea7kgq8
9788538
9788536
2026-05-25T08:39:26Z
TongcyDai
53191
9788538
wikitext
text/x-wiki
==漢語==
{{was wotd|2026|6月|10日}}
{{zh-forms|s=咎衅|alt=咎舋}}
===發音===
{{zh-pron
|m=jiùxìn
|c=gau3 jan6
|mc=2,1
|cat=n
}}
===名詞===
{{head|zh|名詞}}
# {{lb|zh|書面}} [[罪過]],[[過失]]
#* {{zh-x|懼 於 飛矢 迸流,狂 刃 橫集,以 重 足下 之 禍,徒 增 孤 之 咎釁 也。||CL|ref=南朝宋·{{w|裴松之}}注《[[s:三國志/卷08#公孫瓚|三國志·魏書·公孫瓚傳]]》引《漢晉春秋》}}
#* {{zh-x|^威 自 陳 奉事 二 朝 三十 餘 載,精誠 微淺 不 能 上 感,咎釁 屢 彰,罪 當 萬死。||CL|ref=唐·{{w|魏徵}}等《[[s:隋書/卷41#蘇威|隋書·蘇威列傳]]》}}
#* {{zh-x|詳評 獄訟,裁制 典刑,或 爽 重輕,慮 招 @'''咎舋'''。||CL|ref=五代前蜀·{{w|杜光庭}}〈[[s:張相公九曜醮詞|張相公九曜醮詞]]〉}}
===參考資料===
* {{R:zh:HYDCD}}
46j5w6h8e7wgjt5i4pzsyj70i9cuovw
9788616
9788538
2026-05-25T09:59:34Z
Sayonzei
40728
/* 名詞 */
9788616
wikitext
text/x-wiki
==漢語==
{{was wotd|2026|6月|10日}}
{{zh-forms|s=咎衅|alt=咎舋}}
===發音===
{{zh-pron
|m=jiùxìn
|c=gau3 jan6
|mc=2,1
|cat=n
}}
===名詞===
{{head|zh|名詞}}
# {{lb|zh|書面}} [[罪過]],[[過失]]
#* {{zh-x|懼 於 飛矢 迸流,狂 刃 橫集,以 重 足下 之 禍,徒 增 孤 之 咎釁 也。||CL|ref=南朝宋·{{w|裴松之}}注《[[s:三國志/卷08#公孫瓚|三國志·魏書·公孫瓚傳]]》引《漢晉春秋》}}
#* {{zh-x|w:蘇威\威 自 ^陳 奉事 二 朝 三十 餘 載,精誠 微淺 不能 上 感,咎釁 屢 彰,罪 當 萬死。||CL|ref=唐·{{w|魏徵}}等《[[s:隋書/卷41#蘇威|隋書·蘇威列傳]]》}}
#* {{zh-x|詳評 獄訟,裁制 典刑,或 爽 重輕,慮 招 @'''咎舋'''。||CL|ref=五代前蜀·{{w|杜光庭}}〈[[s:張相公九曜醮詞|張相公九曜醮詞]]〉}}
===參考資料===
* {{R:zh:HYDCD}}
e4xg7jufftrx3cin9f97op9o252np1y
9788621
9788616
2026-05-25T10:25:46Z
TongcyDai
53191
9788621
wikitext
text/x-wiki
==漢語==
{{was wotd|2026|6月|10日}}
{{zh-forms|s=咎衅|alt=咎舋}}
===發音===
{{zh-pron
|m=jiùxìn
|c=gau3 jan6
|mc=2,1
|cat=n
}}
===名詞===
{{head|zh|名詞}}
# {{lb|zh|書面}} [[罪過]],[[過失]]
#* {{zh-x|懼 於 飛矢 迸流,狂 刃 橫集,以 重 足下 之 禍,徒 增 孤 之 咎釁 也。||CL|ref=南朝宋·{{w|裴松之}}注《[[s:三國志/卷08#公孫瓚|三國志·魏書·公孫瓚傳]]》引《漢晉春秋》}}
#* {{zh-x|今 舍{shě} 於 本 而 從 其 末,咎釁 之 至,不 亦 宜 乎!||CL|ref=北魏·{{w|高允}}〈[[s:蓍論|蓍論]]〉}}
#* {{zh-x|但 以 無 所 為{wéi} 圖,出於 不獲,必 於 軍庶,重 見 傷殘,豈唯 瀆 大君 亭育 之 慈,抑 乃 增 下臣 咎釁 之 責。||CL|ref=隋·{{w|李景 (滑國公)|李景}}〈[[s:上周世宗第二表|上周世宗第二表]]〉}}
#* {{zh-x|臣 自 掇 咎釁,復 此 悲苦,更 蒙 飾終 之 恩,倍 盈 先遠 之 痛。||CL|ref=唐·{{w|元明}}〈[[s:為寧王謝亡兄贈太子太師表|為寧王謝亡兄贈太子太師表]]〉}}
#* {{zh-x|w:蘇威\威 自 陳 奉事 二 朝 三十 餘 載,精誠 微淺 不能 上 感,咎釁 屢 彰,罪 當 萬死。||CL|ref=唐·{{w|魏徵}}等《[[s:隋書/卷41#蘇威|隋書·蘇威列傳]]》}}
#* {{zh-x|詳評 獄訟,裁制 典刑,或 爽 重輕,慮 招 @'''咎舋'''。||CL|ref=五代前蜀·{{w|杜光庭}}〈[[s:張相公九曜醮詞|張相公九曜醮詞]]〉}}
===參考資料===
* {{R:zh:HYDCD}}
hmop7i5sfrmqn3jevwgefowonh0fq3v
9788622
9788621
2026-05-25T10:31:52Z
TongcyDai
53191
9788622
wikitext
text/x-wiki
==漢語==
{{was wotd|2026|6月|10日}}
{{zh-forms|s=咎衅|alt=咎舋}}
===發音===
{{zh-pron
|m=jiùxìn
|c=gau3 jan6
|mc=2,1
|cat=n
}}
===名詞===
{{head|zh|名詞}}
# {{lb|zh|書面}} [[罪過]],[[過失]]
#* {{zh-x|懼 於 飛矢 迸流,狂 刃 橫集,以 重 足下 之 禍,徒 增 孤 之 咎釁 也。||CL|ref=南朝宋·{{w|裴松之}}注《[[s:三國志/卷08#公孫瓚|三國志·魏書·公孫瓚傳]]》引《漢晉春秋》}}
#* {{zh-x|今 舍{shě} 於 本 而 從 其 末,咎釁 之 至,不 亦 宜 乎!||CL|ref=北魏·{{w|高允}}〈[[s:蓍論|蓍論]]〉}}
#* {{zh-x|但 以 無 所 為{wéi} 圖,出於 不獲,必 於 軍庶,重 見 傷殘,豈唯 瀆 大君 亭育 之 慈,抑 乃 增 下臣 咎釁 之 責。||CL|ref=隋·{{w|李景 (滑國公)|李景}}〈[[s:上周世宗第二表|上周世宗第二表]]〉}}
#* {{zh-x|臣 自 掇 咎釁,復 此 悲苦,更 蒙 飾終 之 恩,倍 盈 先遠 之 痛。||CL|ref=唐·{{w|元明}}〈[[s:為寧王謝亡兄贈太子太師表|為寧王謝亡兄贈太子太師表]]〉}}
#* {{zh-x|w:蘇威\威 自陳 奉事 二 朝 三十 餘 載,精誠 微淺 不能 上 感,咎釁 屢 彰,罪 當 萬死。||CL|ref=唐·{{w|魏徵}}等《[[s:隋書/卷41#蘇威|隋書·蘇威列傳]]》}}
#* {{zh-x|詳評 獄訟,裁制 典刑,或 爽 重輕,慮 招 @'''咎舋'''。||CL|ref=五代前蜀·{{w|杜光庭}}〈[[s:張相公九曜醮詞|張相公九曜醮詞]]〉}}
===參考資料===
* {{R:zh:HYDCD}}
sdtkfxw4srynxbts1vu7b2pepb7uz5z
Category:每日一詞存檔/2026年/6月
14
3459877
9788537
2026-05-25T08:39:06Z
TongcyBot
83009
養貓
9788537
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
咎舋
0
3459878
9788539
2026-05-25T08:40:05Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「==漢語== {{zh-see|咎釁|v}}」的新頁面
9788539
wikitext
text/x-wiki
==漢語==
{{zh-see|咎釁|v}}
hgcjbjrbs4vbkahpyeizhaem7vohohd
Category:帶「𤕊」的漢語詞
14
3459879
9788541
2026-05-25T08:41:21Z
TongcyBot
83009
養貓
9788541
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:帶「𤕊」的詞
14
3459880
9788542
2026-05-25T08:41:26Z
TongcyBot
83009
養貓
9788542
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:帶「𤕅」的漢語詞
14
3459881
9788546
2026-05-25T08:43:36Z
TongcyBot
83009
養貓
9788546
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:帶「𤕅」的詞
14
3459882
9788547
2026-05-25T08:43:41Z
TongcyBot
83009
養貓
9788547
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:帶「𤕌」的漢語詞
14
3459883
9788550
2026-05-25T08:44:10Z
TongcyBot
83009
養貓
9788550
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:帶「𤕌」的詞
14
3459884
9788551
2026-05-25T08:44:16Z
TongcyBot
83009
養貓
9788551
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:帶「𤕍」的漢語詞
14
3459885
9788553
2026-05-25T08:44:49Z
TongcyBot
83009
養貓
9788553
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:帶「𤕍」的詞
14
3459886
9788554
2026-05-25T08:44:55Z
TongcyBot
83009
養貓
9788554
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:帶「𠧎」的漢語詞
14
3459887
9788558
2026-05-25T08:45:31Z
TongcyBot
83009
養貓
9788558
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:帶「𠧎」的詞
14
3459888
9788559
2026-05-25T08:45:37Z
TongcyBot
83009
養貓
9788559
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:帶「𠧏」的漢語詞
14
3459889
9788560
2026-05-25T08:45:43Z
TongcyBot
83009
養貓
9788560
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:帶「𠧏」的詞
14
3459890
9788561
2026-05-25T08:45:48Z
TongcyBot
83009
養貓
9788561
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:帶「𠦸」的漢語詞
14
3459891
9788562
2026-05-25T08:45:55Z
TongcyBot
83009
養貓
9788562
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:帶「𠦸」的詞
14
3459892
9788563
2026-05-25T08:46:00Z
TongcyBot
83009
養貓
9788563
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:帶「𢮣」的漢語詞
14
3459893
9788565
2026-05-25T08:46:32Z
TongcyBot
83009
養貓
9788565
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:帶「𢮣」的詞
14
3459894
9788566
2026-05-25T08:46:37Z
TongcyBot
83009
養貓
9788566
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:帶「𤔐」的漢語詞
14
3459895
9788569
2026-05-25T08:47:02Z
TongcyBot
83009
養貓
9788569
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:帶「𤔐」的詞
14
3459896
9788570
2026-05-25T08:47:06Z
TongcyBot
83009
養貓
9788570
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:帶「𠮗」的漢語詞
14
3459897
9788571
2026-05-25T08:47:13Z
TongcyBot
83009
養貓
9788571
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:帶「𠮗」的詞
14
3459898
9788572
2026-05-25T08:47:19Z
TongcyBot
83009
養貓
9788572
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:帶「𤔒」的漢語詞
14
3459899
9788574
2026-05-25T08:47:35Z
TongcyBot
83009
養貓
9788574
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:帶「𤔒」的詞
14
3459900
9788575
2026-05-25T08:47:40Z
TongcyBot
83009
養貓
9788575
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:帶「𤔔」的漢語詞
14
3459901
9788577
2026-05-25T08:50:53Z
TongcyBot
83009
養貓
9788577
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:帶「𤔔」的詞
14
3459902
9788578
2026-05-25T08:50:59Z
TongcyBot
83009
養貓
9788578
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:帶「𤔬」的漢語詞
14
3459903
9788581
2026-05-25T08:51:28Z
TongcyBot
83009
養貓
9788581
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:帶「𤔬」的詞
14
3459904
9788582
2026-05-25T08:51:32Z
TongcyBot
83009
養貓
9788582
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:帶「𤔦」的漢語詞
14
3459905
9788584
2026-05-25T08:51:54Z
TongcyBot
83009
養貓
9788584
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:帶「𤔦」的詞
14
3459906
9788585
2026-05-25T08:51:59Z
TongcyBot
83009
養貓
9788585
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:帶「𡄹」的漢語詞
14
3459907
9788587
2026-05-25T08:52:27Z
TongcyBot
83009
養貓
9788587
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:帶「𡄹」的詞
14
3459908
9788588
2026-05-25T08:52:32Z
TongcyBot
83009
養貓
9788588
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:帶「𢿳」的漢語詞
14
3459909
9788591
2026-05-25T08:53:19Z
TongcyBot
83009
養貓
9788591
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:帶「𢿳」的詞
14
3459910
9788592
2026-05-25T08:53:24Z
TongcyBot
83009
養貓
9788592
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:帶「𢿢」的漢語詞
14
3459911
9788593
2026-05-25T08:53:30Z
TongcyBot
83009
養貓
9788593
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:帶「𢿢」的詞
14
3459912
9788594
2026-05-25T08:53:35Z
TongcyBot
83009
養貓
9788594
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:帶「𢿮」的漢語詞
14
3459913
9788596
2026-05-25T08:53:42Z
TongcyBot
83009
養貓
9788596
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:帶「𢿮」的詞
14
3459914
9788597
2026-05-25T08:53:46Z
TongcyBot
83009
養貓
9788597
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:帶「乿」的漢語詞
14
3459915
9788599
2026-05-25T08:53:57Z
TongcyBot
83009
養貓
9788599
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:帶「乿」的詞
14
3459916
9788600
2026-05-25T08:54:03Z
TongcyBot
83009
養貓
9788600
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:帶「𠃶」的漢語詞
14
3459917
9788602
2026-05-25T08:54:11Z
TongcyBot
83009
養貓
9788602
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:帶「𠃶」的詞
14
3459918
9788604
2026-05-25T08:54:17Z
TongcyBot
83009
養貓
9788604
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:帶「𠃹」的漢語詞
14
3459919
9788605
2026-05-25T08:54:24Z
TongcyBot
83009
養貓
9788605
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:帶「𠃹」的詞
14
3459920
9788607
2026-05-25T08:54:30Z
TongcyBot
83009
養貓
9788607
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:帶「𠃿」的漢語詞
14
3459921
9788608
2026-05-25T08:54:37Z
TongcyBot
83009
養貓
9788608
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:帶「𠃿」的詞
14
3459922
9788609
2026-05-25T08:54:43Z
TongcyBot
83009
養貓
9788609
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:地域坎卡奈語方言
14
3459923
9788612
2026-05-25T09:04:05Z
TongcyBot
83009
養貓
9788612
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:坎卡奈語變體
14
3459924
9788613
2026-05-25T09:04:11Z
TongcyBot
83009
養貓
9788613
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:南坎卡奈語
14
3459925
9788614
2026-05-25T09:04:34Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「{{auto cat|lect=1}}」的新頁面
9788614
wikitext
text/x-wiki
{{auto cat|lect=1}}
ertee7cys9kcm61xm19ibbz6xr74sxz
xham
0
3459926
9788615
2026-05-25T09:15:38Z
Trong Dang
120282
[[w:WP:AES|←]]建立內容為「==阿爾巴尼亞語== {{wp|sq:+i (material)}} ===詞源=== {{bor+|sq|ota|جام|tr=cam}},源自{{der|sq|fa-cls|جام|tr=jām}}。 ===發音=== * {{IPA|sq|/dʒam/}} ===名詞=== {{sq-noun|m|xhama//xhame|xhami|xhamat//xhamet}} # [[玻璃]] ====變格==== {{sq-noun-m|a}} 或 {{sq-noun-m|e}} ====近義詞==== * {{l|sq|qelq}} ===延伸閱讀=== * {{R:sq:FGJSH:2006}} * {{R:sq:FGJSSH:1980}} * {{R:sq:Newmark:1999|1240938}} {{topics|sq|材…」的新頁面
9788615
wikitext
text/x-wiki
==阿爾巴尼亞語==
{{wp|sq:+i (material)}}
===詞源===
{{bor+|sq|ota|جام|tr=cam}},源自{{der|sq|fa-cls|جام|tr=jām}}。
===發音===
* {{IPA|sq|/dʒam/}}
===名詞===
{{sq-noun|m|xhama//xhame|xhami|xhamat//xhamet}}
# [[玻璃]]
====變格====
{{sq-noun-m|a}}
或
{{sq-noun-m|e}}
====近義詞====
* {{l|sq|qelq}}
===延伸閱讀===
* {{R:sq:FGJSH:2006}}
* {{R:sq:FGJSSH:1980}}
* {{R:sq:Newmark:1999|1240938}}
{{topics|sq|材料}}
7vljincqd6vvotjg2fuxahl94ltj4fb
xhama
0
3459927
9788617
2026-05-25T10:00:25Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==阿爾巴尼亞語== ===名詞=== {{head|sq|名詞變格形}} # {{infl of|sq|xham||indef|nom//acc|p}}」的新頁面
9788617
wikitext
text/x-wiki
==阿爾巴尼亞語==
===名詞===
{{head|sq|名詞變格形}}
# {{infl of|sq|xham||indef|nom//acc|p}}
d0xy2j3pazeb5eescdm76ku26g491mf
xhame
0
3459928
9788618
2026-05-25T10:00:27Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==阿爾巴尼亞語== ===名詞=== {{head|sq|名詞變格形}} # {{infl of|sq|xham||indef|nom//acc|p}}」的新頁面
9788618
wikitext
text/x-wiki
==阿爾巴尼亞語==
===名詞===
{{head|sq|名詞變格形}}
# {{infl of|sq|xham||indef|nom//acc|p}}
d0xy2j3pazeb5eescdm76ku26g491mf
xhamat
0
3459929
9788619
2026-05-25T10:00:29Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==阿爾巴尼亞語== ===名詞=== {{head|sq|名詞變格形}} # {{infl of|sq|xham||def|nom//acc|p}}」的新頁面
9788619
wikitext
text/x-wiki
==阿爾巴尼亞語==
===名詞===
{{head|sq|名詞變格形}}
# {{infl of|sq|xham||def|nom//acc|p}}
swbm0sfjyh9pgpxil930i8o693u0gwh
xhamet
0
3459930
9788620
2026-05-25T10:00:31Z
Sayonzei
40728
[[w:WP:AES|←]]建立內容為「==阿爾巴尼亞語== ===名詞=== {{head|sq|名詞變格形}} # {{infl of|sq|xham||def|nom//acc|p}}」的新頁面
9788620
wikitext
text/x-wiki
==阿爾巴尼亞語==
===名詞===
{{head|sq|名詞變格形}}
# {{infl of|sq|xham||def|nom//acc|p}}
swbm0sfjyh9pgpxil930i8o693u0gwh
Wiktionary:每日一詞/存檔/2026年/6月
4
3459931
9788625
2026-05-25T10:41:20Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「{{wotd-navarchive-month}} ==1日== {{Wiktionary:每日一詞/2026年/6月1日}} ==2日== {{Wiktionary:每日一詞/2026年/6月2日}} ==3日== {{Wiktionary:每日一詞/2026年/6月3日}} ==4日== {{Wiktionary:每日一詞/2026年/6月4日}} ==5日== {{Wiktionary:每日一詞/2026年/6月5日}} ==6日== {{Wiktionary:每日一詞/2026年/6月6日}} ==7日== {{Wiktionary:每日一詞/2026年/6月7日}} ==8日== {{Wiktionary:每日一詞…」的新頁面
9788625
wikitext
text/x-wiki
{{wotd-navarchive-month}}
==1日==
{{Wiktionary:每日一詞/2026年/6月1日}}
==2日==
{{Wiktionary:每日一詞/2026年/6月2日}}
==3日==
{{Wiktionary:每日一詞/2026年/6月3日}}
==4日==
{{Wiktionary:每日一詞/2026年/6月4日}}
==5日==
{{Wiktionary:每日一詞/2026年/6月5日}}
==6日==
{{Wiktionary:每日一詞/2026年/6月6日}}
==7日==
{{Wiktionary:每日一詞/2026年/6月7日}}
==8日==
{{Wiktionary:每日一詞/2026年/6月8日}}
==9日==
{{Wiktionary:每日一詞/2026年/6月9日}}
==10日==
{{Wiktionary:每日一詞/2026年/6月10日}}
==11日==
{{Wiktionary:每日一詞/2026年/6月11日}}
==12日==
{{Wiktionary:每日一詞/2026年/6月12日}}
==13日==
{{Wiktionary:每日一詞/2026年/6月13日}}
==14日==
{{Wiktionary:每日一詞/2026年/6月14日}}
==15日==
{{Wiktionary:每日一詞/2026年/6月15日}}
==16日==
{{Wiktionary:每日一詞/2026年/6月16日}}
==17日==
{{Wiktionary:每日一詞/2026年/6月17日}}
==18日==
{{Wiktionary:每日一詞/2026年/6月18日}}
==19日==
{{Wiktionary:每日一詞/2026年/6月19日}}
==20日==
{{Wiktionary:每日一詞/2026年/6月20日}}
==21日==
{{Wiktionary:每日一詞/2026年/6月21日}}
==22日==
{{Wiktionary:每日一詞/2026年/6月22日}}
==23日==
{{Wiktionary:每日一詞/2026年/6月23日}}
==24日==
{{Wiktionary:每日一詞/2026年/6月24日}}
==25日==
{{Wiktionary:每日一詞/2026年/6月25日}}
==26日==
{{Wiktionary:每日一詞/2026年/6月26日}}
==27日==
{{Wiktionary:每日一詞/2026年/6月27日}}
==28日==
{{Wiktionary:每日一詞/2026年/6月28日}}
==29日==
{{Wiktionary:每日一詞/2026年/6月29日}}
==30日==
{{Wiktionary:每日一詞/2026年/6月30日}}
[[Category:每日一詞存檔/2026年/6月|*]]
5iufpke4cyrqkpj7qtk33zh9t7vi05o
Wiktionary:每日一詞/2026年/6月21日
4
3459932
9788629
2026-05-25T10:44:48Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「{{WOTD|自陳|動詞|2026|6月|21日| # {{lb|zh|書面}} [[自己]][[訴說]]、[[陳述]] }}」的新頁面
9788629
wikitext
text/x-wiki
{{WOTD|自陳|動詞|2026|6月|21日|
# {{lb|zh|書面}} [[自己]][[訴說]]、[[陳述]]
}}
80aegwfco7kjbwcixg7dn0ftgrhjf30
Wiktionary:每日一詞/存檔/2026年/7月
4
3459933
9788630
2026-05-25T10:45:05Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「{{wotd-navarchive-month}} ==1日== {{Wiktionary:每日一詞/2026年/7月1日}} ==2日== {{Wiktionary:每日一詞/2026年/7月2日}} ==3日== {{Wiktionary:每日一詞/2026年/7月3日}} ==4日== {{Wiktionary:每日一詞/2026年/7月4日}} ==5日== {{Wiktionary:每日一詞/2026年/7月5日}} ==6日== {{Wiktionary:每日一詞/2026年/7月6日}} ==7日== {{Wiktionary:每日一詞/2026年/7月7日}} ==8日== {{Wiktionary:每日一詞…」的新頁面
9788630
wikitext
text/x-wiki
{{wotd-navarchive-month}}
==1日==
{{Wiktionary:每日一詞/2026年/7月1日}}
==2日==
{{Wiktionary:每日一詞/2026年/7月2日}}
==3日==
{{Wiktionary:每日一詞/2026年/7月3日}}
==4日==
{{Wiktionary:每日一詞/2026年/7月4日}}
==5日==
{{Wiktionary:每日一詞/2026年/7月5日}}
==6日==
{{Wiktionary:每日一詞/2026年/7月6日}}
==7日==
{{Wiktionary:每日一詞/2026年/7月7日}}
==8日==
{{Wiktionary:每日一詞/2026年/7月8日}}
==9日==
{{Wiktionary:每日一詞/2026年/7月9日}}
==10日==
{{Wiktionary:每日一詞/2026年/7月10日}}
==11日==
{{Wiktionary:每日一詞/2026年/7月11日}}
==12日==
{{Wiktionary:每日一詞/2026年/7月12日}}
==13日==
{{Wiktionary:每日一詞/2026年/7月13日}}
==14日==
{{Wiktionary:每日一詞/2026年/7月14日}}
==15日==
{{Wiktionary:每日一詞/2026年/7月15日}}
==16日==
{{Wiktionary:每日一詞/2026年/7月16日}}
==17日==
{{Wiktionary:每日一詞/2026年/7月17日}}
==18日==
{{Wiktionary:每日一詞/2026年/7月18日}}
==19日==
{{Wiktionary:每日一詞/2026年/7月19日}}
==20日==
{{Wiktionary:每日一詞/2026年/7月20日}}
==21日==
{{Wiktionary:每日一詞/2026年/7月21日}}
==22日==
{{Wiktionary:每日一詞/2026年/7月22日}}
==23日==
{{Wiktionary:每日一詞/2026年/7月23日}}
==24日==
{{Wiktionary:每日一詞/2026年/7月24日}}
==25日==
{{Wiktionary:每日一詞/2026年/7月25日}}
==26日==
{{Wiktionary:每日一詞/2026年/7月26日}}
==27日==
{{Wiktionary:每日一詞/2026年/7月27日}}
==28日==
{{Wiktionary:每日一詞/2026年/7月28日}}
==29日==
{{Wiktionary:每日一詞/2026年/7月29日}}
==30日==
{{Wiktionary:每日一詞/2026年/7月30日}}
==31日==
{{Wiktionary:每日一詞/2026年/7月31日}}
[[Category:每日一詞存檔/2026年/7月|*]]
4q2gj2zhm0lcu30j8quwpgmofelbaxb
Wiktionary:每日一詞/存檔/2026年/8月
4
3459934
9788631
2026-05-25T10:45:37Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「{{wotd-navarchive-month}} ==1日== {{Wiktionary:每日一詞/2026年/8月1日}} ==2日== {{Wiktionary:每日一詞/2026年/8月2日}} ==3日== {{Wiktionary:每日一詞/2026年/8月3日}} ==4日== {{Wiktionary:每日一詞/2026年/8月4日}} ==5日== {{Wiktionary:每日一詞/2026年/8月5日}} ==6日== {{Wiktionary:每日一詞/2026年/8月6日}} ==7日== {{Wiktionary:每日一詞/2026年/8月7日}} ==8日== {{Wiktionary:每日一詞…」的新頁面
9788631
wikitext
text/x-wiki
{{wotd-navarchive-month}}
==1日==
{{Wiktionary:每日一詞/2026年/8月1日}}
==2日==
{{Wiktionary:每日一詞/2026年/8月2日}}
==3日==
{{Wiktionary:每日一詞/2026年/8月3日}}
==4日==
{{Wiktionary:每日一詞/2026年/8月4日}}
==5日==
{{Wiktionary:每日一詞/2026年/8月5日}}
==6日==
{{Wiktionary:每日一詞/2026年/8月6日}}
==7日==
{{Wiktionary:每日一詞/2026年/8月7日}}
==8日==
{{Wiktionary:每日一詞/2026年/8月8日}}
==9日==
{{Wiktionary:每日一詞/2026年/8月9日}}
==10日==
{{Wiktionary:每日一詞/2026年/8月10日}}
==11日==
{{Wiktionary:每日一詞/2026年/8月11日}}
==12日==
{{Wiktionary:每日一詞/2026年/8月12日}}
==13日==
{{Wiktionary:每日一詞/2026年/8月13日}}
==14日==
{{Wiktionary:每日一詞/2026年/8月14日}}
==15日==
{{Wiktionary:每日一詞/2026年/8月15日}}
==16日==
{{Wiktionary:每日一詞/2026年/8月16日}}
==17日==
{{Wiktionary:每日一詞/2026年/8月17日}}
==18日==
{{Wiktionary:每日一詞/2026年/8月18日}}
==19日==
{{Wiktionary:每日一詞/2026年/8月19日}}
==20日==
{{Wiktionary:每日一詞/2026年/8月20日}}
==21日==
{{Wiktionary:每日一詞/2026年/8月21日}}
==22日==
{{Wiktionary:每日一詞/2026年/8月22日}}
==23日==
{{Wiktionary:每日一詞/2026年/8月23日}}
==24日==
{{Wiktionary:每日一詞/2026年/8月24日}}
==25日==
{{Wiktionary:每日一詞/2026年/8月25日}}
==26日==
{{Wiktionary:每日一詞/2026年/8月26日}}
==27日==
{{Wiktionary:每日一詞/2026年/8月27日}}
==28日==
{{Wiktionary:每日一詞/2026年/8月28日}}
==29日==
{{Wiktionary:每日一詞/2026年/8月29日}}
==30日==
{{Wiktionary:每日一詞/2026年/8月30日}}
==31日==
{{Wiktionary:每日一詞/2026年/8月31日}}
[[Category:每日一詞存檔/2026年/8月|*]]
7tupjoaohp33ghsj8kj6iroqazcghnk
Wiktionary:每日一詞/存檔/2026年/9月
4
3459935
9788632
2026-05-25T10:45:52Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「{{wotd-navarchive-month}} ==1日== {{Wiktionary:每日一詞/2026年/9月1日}} ==2日== {{Wiktionary:每日一詞/2026年/9月2日}} ==3日== {{Wiktionary:每日一詞/2026年/9月3日}} ==4日== {{Wiktionary:每日一詞/2026年/9月4日}} ==5日== {{Wiktionary:每日一詞/2026年/9月5日}} ==6日== {{Wiktionary:每日一詞/2026年/9月6日}} ==7日== {{Wiktionary:每日一詞/2026年/9月7日}} ==8日== {{Wiktionary:每日一詞…」的新頁面
9788632
wikitext
text/x-wiki
{{wotd-navarchive-month}}
==1日==
{{Wiktionary:每日一詞/2026年/9月1日}}
==2日==
{{Wiktionary:每日一詞/2026年/9月2日}}
==3日==
{{Wiktionary:每日一詞/2026年/9月3日}}
==4日==
{{Wiktionary:每日一詞/2026年/9月4日}}
==5日==
{{Wiktionary:每日一詞/2026年/9月5日}}
==6日==
{{Wiktionary:每日一詞/2026年/9月6日}}
==7日==
{{Wiktionary:每日一詞/2026年/9月7日}}
==8日==
{{Wiktionary:每日一詞/2026年/9月8日}}
==9日==
{{Wiktionary:每日一詞/2026年/9月9日}}
==10日==
{{Wiktionary:每日一詞/2026年/9月10日}}
==11日==
{{Wiktionary:每日一詞/2026年/9月11日}}
==12日==
{{Wiktionary:每日一詞/2026年/9月12日}}
==13日==
{{Wiktionary:每日一詞/2026年/9月13日}}
==14日==
{{Wiktionary:每日一詞/2026年/9月14日}}
==15日==
{{Wiktionary:每日一詞/2026年/9月15日}}
==16日==
{{Wiktionary:每日一詞/2026年/9月16日}}
==17日==
{{Wiktionary:每日一詞/2026年/9月17日}}
==18日==
{{Wiktionary:每日一詞/2026年/9月18日}}
==19日==
{{Wiktionary:每日一詞/2026年/9月19日}}
==20日==
{{Wiktionary:每日一詞/2026年/9月20日}}
==21日==
{{Wiktionary:每日一詞/2026年/9月21日}}
==22日==
{{Wiktionary:每日一詞/2026年/9月22日}}
==23日==
{{Wiktionary:每日一詞/2026年/9月23日}}
==24日==
{{Wiktionary:每日一詞/2026年/9月24日}}
==25日==
{{Wiktionary:每日一詞/2026年/9月25日}}
==26日==
{{Wiktionary:每日一詞/2026年/9月26日}}
==27日==
{{Wiktionary:每日一詞/2026年/9月27日}}
==28日==
{{Wiktionary:每日一詞/2026年/9月28日}}
==29日==
{{Wiktionary:每日一詞/2026年/9月29日}}
==30日==
{{Wiktionary:每日一詞/2026年/9月30日}}
[[Category:每日一詞存檔/2026年/9月|*]]
cb5a91ub70h9pfw0g3ccy40ogtil7si
Wiktionary:每日一詞/存檔/2026年/10月
4
3459936
9788633
2026-05-25T10:46:28Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「{{wotd-navarchive-month}} ==1日== {{Wiktionary:每日一詞/2026年/10月1日}} ==2日== {{Wiktionary:每日一詞/2026年/10月2日}} ==3日== {{Wiktionary:每日一詞/2026年/10月3日}} ==4日== {{Wiktionary:每日一詞/2026年/10月4日}} ==5日== {{Wiktionary:每日一詞/2026年/10月5日}} ==6日== {{Wiktionary:每日一詞/2026年/10月6日}} ==7日== {{Wiktionary:每日一詞/2026年/10月7日}} ==8日== {{Wiktionary:每…」的新頁面
9788633
wikitext
text/x-wiki
{{wotd-navarchive-month}}
==1日==
{{Wiktionary:每日一詞/2026年/10月1日}}
==2日==
{{Wiktionary:每日一詞/2026年/10月2日}}
==3日==
{{Wiktionary:每日一詞/2026年/10月3日}}
==4日==
{{Wiktionary:每日一詞/2026年/10月4日}}
==5日==
{{Wiktionary:每日一詞/2026年/10月5日}}
==6日==
{{Wiktionary:每日一詞/2026年/10月6日}}
==7日==
{{Wiktionary:每日一詞/2026年/10月7日}}
==8日==
{{Wiktionary:每日一詞/2026年/10月8日}}
==9日==
{{Wiktionary:每日一詞/2026年/10月9日}}
==10日==
{{Wiktionary:每日一詞/2026年/10月10日}}
==11日==
{{Wiktionary:每日一詞/2026年/10月11日}}
==12日==
{{Wiktionary:每日一詞/2026年/10月12日}}
==13日==
{{Wiktionary:每日一詞/2026年/10月13日}}
==14日==
{{Wiktionary:每日一詞/2026年/10月14日}}
==15日==
{{Wiktionary:每日一詞/2026年/10月15日}}
==16日==
{{Wiktionary:每日一詞/2026年/10月16日}}
==17日==
{{Wiktionary:每日一詞/2026年/10月17日}}
==18日==
{{Wiktionary:每日一詞/2026年/10月18日}}
==19日==
{{Wiktionary:每日一詞/2026年/10月19日}}
==20日==
{{Wiktionary:每日一詞/2026年/10月20日}}
==21日==
{{Wiktionary:每日一詞/2026年/10月21日}}
==22日==
{{Wiktionary:每日一詞/2026年/10月22日}}
==23日==
{{Wiktionary:每日一詞/2026年/10月23日}}
==24日==
{{Wiktionary:每日一詞/2026年/10月24日}}
==25日==
{{Wiktionary:每日一詞/2026年/10月25日}}
==26日==
{{Wiktionary:每日一詞/2026年/10月26日}}
==27日==
{{Wiktionary:每日一詞/2026年/10月27日}}
==28日==
{{Wiktionary:每日一詞/2026年/10月28日}}
==29日==
{{Wiktionary:每日一詞/2026年/10月29日}}
==30日==
{{Wiktionary:每日一詞/2026年/10月30日}}
==31日==
{{Wiktionary:每日一詞/2026年/10月31日}}
[[Category:每日一詞存檔/2026年/10月|*]]
2g221rdr9mrfrnyir6pdteu2r1r9345
Wiktionary:每日一詞/存檔/2026年/11月
4
3459937
9788634
2026-05-25T10:46:49Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「{{wotd-navarchive-month}} ==1日== {{Wiktionary:每日一詞/2026年/11月1日}} ==2日== {{Wiktionary:每日一詞/2026年/11月2日}} ==3日== {{Wiktionary:每日一詞/2026年/11月3日}} ==4日== {{Wiktionary:每日一詞/2026年/11月4日}} ==5日== {{Wiktionary:每日一詞/2026年/11月5日}} ==6日== {{Wiktionary:每日一詞/2026年/11月6日}} ==7日== {{Wiktionary:每日一詞/2026年/11月7日}} ==8日== {{Wiktionary:每…」的新頁面
9788634
wikitext
text/x-wiki
{{wotd-navarchive-month}}
==1日==
{{Wiktionary:每日一詞/2026年/11月1日}}
==2日==
{{Wiktionary:每日一詞/2026年/11月2日}}
==3日==
{{Wiktionary:每日一詞/2026年/11月3日}}
==4日==
{{Wiktionary:每日一詞/2026年/11月4日}}
==5日==
{{Wiktionary:每日一詞/2026年/11月5日}}
==6日==
{{Wiktionary:每日一詞/2026年/11月6日}}
==7日==
{{Wiktionary:每日一詞/2026年/11月7日}}
==8日==
{{Wiktionary:每日一詞/2026年/11月8日}}
==9日==
{{Wiktionary:每日一詞/2026年/11月9日}}
==10日==
{{Wiktionary:每日一詞/2026年/11月10日}}
==11日==
{{Wiktionary:每日一詞/2026年/11月11日}}
==12日==
{{Wiktionary:每日一詞/2026年/11月12日}}
==13日==
{{Wiktionary:每日一詞/2026年/11月13日}}
==14日==
{{Wiktionary:每日一詞/2026年/11月14日}}
==15日==
{{Wiktionary:每日一詞/2026年/11月15日}}
==16日==
{{Wiktionary:每日一詞/2026年/11月16日}}
==17日==
{{Wiktionary:每日一詞/2026年/11月17日}}
==18日==
{{Wiktionary:每日一詞/2026年/11月18日}}
==19日==
{{Wiktionary:每日一詞/2026年/11月19日}}
==20日==
{{Wiktionary:每日一詞/2026年/11月20日}}
==21日==
{{Wiktionary:每日一詞/2026年/11月21日}}
==22日==
{{Wiktionary:每日一詞/2026年/11月22日}}
==23日==
{{Wiktionary:每日一詞/2026年/11月23日}}
==24日==
{{Wiktionary:每日一詞/2026年/11月24日}}
==25日==
{{Wiktionary:每日一詞/2026年/11月25日}}
==26日==
{{Wiktionary:每日一詞/2026年/11月26日}}
==27日==
{{Wiktionary:每日一詞/2026年/11月27日}}
==28日==
{{Wiktionary:每日一詞/2026年/11月28日}}
==29日==
{{Wiktionary:每日一詞/2026年/11月29日}}
==30日==
{{Wiktionary:每日一詞/2026年/11月30日}}
[[Category:每日一詞存檔/2026年/11月|*]]
jrpvnse2l83oq0l4a0skz100awc0yq0
Wiktionary:每日一詞/存檔/2026年/12月
4
3459938
9788635
2026-05-25T10:47:00Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「{{wotd-navarchive-month}} ==1日== {{Wiktionary:每日一詞/2026年/12月1日}} ==2日== {{Wiktionary:每日一詞/2026年/12月2日}} ==3日== {{Wiktionary:每日一詞/2026年/12月3日}} ==4日== {{Wiktionary:每日一詞/2026年/12月4日}} ==5日== {{Wiktionary:每日一詞/2026年/12月5日}} ==6日== {{Wiktionary:每日一詞/2026年/12月6日}} ==7日== {{Wiktionary:每日一詞/2026年/12月7日}} ==8日== {{Wiktionary:每…」的新頁面
9788635
wikitext
text/x-wiki
{{wotd-navarchive-month}}
==1日==
{{Wiktionary:每日一詞/2026年/12月1日}}
==2日==
{{Wiktionary:每日一詞/2026年/12月2日}}
==3日==
{{Wiktionary:每日一詞/2026年/12月3日}}
==4日==
{{Wiktionary:每日一詞/2026年/12月4日}}
==5日==
{{Wiktionary:每日一詞/2026年/12月5日}}
==6日==
{{Wiktionary:每日一詞/2026年/12月6日}}
==7日==
{{Wiktionary:每日一詞/2026年/12月7日}}
==8日==
{{Wiktionary:每日一詞/2026年/12月8日}}
==9日==
{{Wiktionary:每日一詞/2026年/12月9日}}
==10日==
{{Wiktionary:每日一詞/2026年/12月10日}}
==11日==
{{Wiktionary:每日一詞/2026年/12月11日}}
==12日==
{{Wiktionary:每日一詞/2026年/12月12日}}
==13日==
{{Wiktionary:每日一詞/2026年/12月13日}}
==14日==
{{Wiktionary:每日一詞/2026年/12月14日}}
==15日==
{{Wiktionary:每日一詞/2026年/12月15日}}
==16日==
{{Wiktionary:每日一詞/2026年/12月16日}}
==17日==
{{Wiktionary:每日一詞/2026年/12月17日}}
==18日==
{{Wiktionary:每日一詞/2026年/12月18日}}
==19日==
{{Wiktionary:每日一詞/2026年/12月19日}}
==20日==
{{Wiktionary:每日一詞/2026年/12月20日}}
==21日==
{{Wiktionary:每日一詞/2026年/12月21日}}
==22日==
{{Wiktionary:每日一詞/2026年/12月22日}}
==23日==
{{Wiktionary:每日一詞/2026年/12月23日}}
==24日==
{{Wiktionary:每日一詞/2026年/12月24日}}
==25日==
{{Wiktionary:每日一詞/2026年/12月25日}}
==26日==
{{Wiktionary:每日一詞/2026年/12月26日}}
==27日==
{{Wiktionary:每日一詞/2026年/12月27日}}
==28日==
{{Wiktionary:每日一詞/2026年/12月28日}}
==29日==
{{Wiktionary:每日一詞/2026年/12月29日}}
==30日==
{{Wiktionary:每日一詞/2026年/12月30日}}
==31日==
{{Wiktionary:每日一詞/2026年/12月31日}}
[[Category:每日一詞存檔/2026年/12月|*]]
eq96esqi6zde9x5nkud2qy4o2bh8ckg
Wiktionary:每日一詞/2026年/5月31日
4
3459939
9788640
2026-05-25T11:00:23Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「{{WOTD|峴|名詞、專有名詞|2026|5月|31日| # [[小]]而[[險峻]]的[[山嶺]] # 山名,位於今[[中國]][[湖北]]省[[襄陽]]市 }}」的新頁面
9788640
wikitext
text/x-wiki
{{WOTD|峴|名詞、專有名詞|2026|5月|31日|
# [[小]]而[[險峻]]的[[山嶺]]
# 山名,位於今[[中國]][[湖北]]省[[襄陽]]市
}}
as1pxc8ylmkjuko8urwq15ub6kapkcm
Category:Rhymes:馬其頓語/iɫka
14
3459940
9788644
2026-05-25T11:11:09Z
TongcyBot
83009
養貓
9788644
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Category:Rhymes:馬其頓語/iɫka/3音節
14
3459941
9788645
2026-05-25T11:11:16Z
TongcyBot
83009
養貓
9788645
wikitext
text/x-wiki
{{auto cat}}
eomzlm5v4j7ond1phrju7cnue91g5qx
Wiktionary:每日一詞/2026年/6月1日
4
3459942
9788648
2026-05-25T11:24:07Z
TongcyDai
53191
[[w:WP:AES|←]]建立內容為「{{WOTD|曷勝|名詞|2026|6月|1日| # {{lb|zh|書面}} [[怎麼]]能[[承受]],[[哪裡]]承受得住;常用於[[反問]][[語氣]],表示[[不勝]]、[[極度]] }}」的新頁面
9788648
wikitext
text/x-wiki
{{WOTD|曷勝|名詞|2026|6月|1日|
# {{lb|zh|書面}} [[怎麼]]能[[承受]],[[哪裡]]承受得住;常用於[[反問]][[語氣]],表示[[不勝]]、[[極度]]
}}
hag41267yoohep6lwtpuqjhx7p6lenf
9788649
9788648
2026-05-25T11:24:39Z
TongcyDai
53191
9788649
wikitext
text/x-wiki
{{WOTD|曷勝|動詞|2026|6月|1日|tr=héshèng, héshēng|
# {{lb|zh|書面}} [[怎麼]]能[[承受]],[[哪裡]]承受得住;常用於[[反問]][[語氣]],表示[[不勝]]、[[極度]]
}}
d772px9j5at2sajmfw0c976h2ji21ti