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 = "&#59; " local SPACE_LBRAC = " &#91;" local RBRAC = "&#93;" 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, '&nbsp;<span class="error" style="font-size:88%">Invalid&nbsp;ISBN</span>[[Category:Pages with ISBN errors]]' ) end local function issn(text) return "[https://www.worldcat.org/issn/" .. text .. " →ISSN]" .. check_issn( text, '&nbsp;<span class="error" style="font-size:88%">Invalid&nbsp;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] = "&lt;", [TEMP_GT] = "&gt;", [TEMP_LBRAC] = "&#91;", [TEMP_RBRAC] = "&#93;", [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=&#91;{{w|Gilbert Clerke}}&#93; * 2ndauthor=Martin Biddle &amp; Sally Badham * author=Peter Christen Asbj&oslash;rnsen There may be both embedded semicolons and HTML entities with semicolons in them: * author=&#91;{{w|Voltaire}} [pseudonym; François-Marie Arouet]&#93; In general we want to treat &#91; like an opening bracket and &#93; like a closing bracket. Beware that they may be mismatched: * author=Anonymous &#91;{{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 = "&nbsp;– " 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("&#32;", " ") :gsub("&nbsp;", " ") :gsub("&#160;", " ") :gsub("&#91;", "[") :gsub("&#93;", "]") 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("&lrm;<sup>[" .. (archiveurl or url) .. "]</sup>") elseif urls then verify_title_supplied(urls_fullname) sep = nil add("&lrm;<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("&ndash;", "–") check_val = check_val:gsub("&#8211;", "–") check_val = check_val:gsub("&mdash;", "—") check_val = check_val:gsub("&#8212;", "—") -- 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 "&#58; " 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 = "&#59; " local SPACE_LBRAC = " &#91;" local RBRAC = "&#93;" 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, '&nbsp;<span class="error" style="font-size:88%">Invalid&nbsp;ISBN</span>[[Category:Pages with ISBN errors]]' ) end local function issn(text) return "[https://www.worldcat.org/issn/" .. text .. " →ISSN]" .. check_issn( text, '&nbsp;<span class="error" style="font-size:88%">Invalid&nbsp;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] = "&lt;", [TEMP_GT] = "&gt;", [TEMP_LBRAC] = "&#91;", [TEMP_RBRAC] = "&#93;", [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=&#91;{{w|Gilbert Clerke}}&#93; * 2ndauthor=Martin Biddle &amp; Sally Badham * author=Peter Christen Asbj&oslash;rnsen There may be both embedded semicolons and HTML entities with semicolons in them: * author=&#91;{{w|Voltaire}} [pseudonym; François-Marie Arouet]&#93; In general we want to treat &#91; like an opening bracket and &#93; like a closing bracket. Beware that they may be mismatched: * author=Anonymous &#91;{{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 = "&nbsp;– " 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("&#32;", " ") :gsub("&nbsp;", " ") :gsub("&#160;", " ") :gsub("&#91;", "[") :gsub("&#93;", "]") 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("&lrm;<sup>[" .. (archiveurl or url) .. "]</sup>") elseif urls then verify_title_supplied(urls_fullname) sep = nil add("&lrm;<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("&ndash;", "–") check_val = check_val:gsub("&#8211;", "–") check_val = check_val:gsub("&mdash;", "—") check_val = check_val:gsub("&#8212;", "—") -- 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 "&#58; " 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 = "&#59; " local SPACE_LBRAC = " &#91;" local RBRAC = "&#93;" 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, '&nbsp;<span class="error" style="font-size:88%">Invalid&nbsp;ISBN</span>[[Category:Pages with ISBN errors]]' ) end local function issn(text) return "[https://www.worldcat.org/issn/" .. text .. " →ISSN]" .. check_issn( text, '&nbsp;<span class="error" style="font-size:88%">Invalid&nbsp;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] = "&lt;", [TEMP_GT] = "&gt;", [TEMP_LBRAC] = "&#91;", [TEMP_RBRAC] = "&#93;", [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=&#91;{{w|Gilbert Clerke}}&#93; * 2ndauthor=Martin Biddle &amp; Sally Badham * author=Peter Christen Asbj&oslash;rnsen There may be both embedded semicolons and HTML entities with semicolons in them: * author=&#91;{{w|Voltaire}} [pseudonym; François-Marie Arouet]&#93; In general we want to treat &#91; like an opening bracket and &#93; like a closing bracket. Beware that they may be mismatched: * author=Anonymous &#91;{{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 = "&nbsp;– " 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("&#32;", " ") :gsub("&nbsp;", " ") :gsub("&#160;", " ") :gsub("&#91;", "[") :gsub("&#93;", "]") 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("&lrm;<sup>[" .. (archiveurl or url) .. "]</sup>") elseif urls then verify_title_supplied(urls_fullname) sep = nil add("&lrm;<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("&ndash;", "–") check_val = check_val:gsub("&#8211;", "–") check_val = check_val:gsub("&mdash;", "—") check_val = check_val:gsub("&#8212;", "—") -- 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 "&#58; " 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 = "&#59; " local SPACE_LBRAC = " &#91;" local RBRAC = "&#93;" 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, '&nbsp;<span class="error" style="font-size:88%">Invalid&nbsp;ISBN</span>[[Category:Pages with ISBN errors]]' ) end local function issn(text) return "[https://www.worldcat.org/issn/" .. text .. " →ISSN]" .. check_issn( text, '&nbsp;<span class="error" style="font-size:88%">Invalid&nbsp;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] = "&lt;", [TEMP_GT] = "&gt;", [TEMP_LBRAC] = "&#91;", [TEMP_RBRAC] = "&#93;", [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=&#91;{{w|Gilbert Clerke}}&#93; * 2ndauthor=Martin Biddle &amp; Sally Badham * author=Peter Christen Asbj&oslash;rnsen There may be both embedded semicolons and HTML entities with semicolons in them: * author=&#91;{{w|Voltaire}} [pseudonym; François-Marie Arouet]&#93; In general we want to treat &#91; like an opening bracket and &#93; like a closing bracket. Beware that they may be mismatched: * author=Anonymous &#91;{{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 = "&nbsp;– " 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("&#32;", " ") :gsub("&nbsp;", " ") :gsub("&#160;", " ") :gsub("&#91;", "[") :gsub("&#93;", "]") 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("&lrm;<sup>[" .. (archiveurl or url) .. "]</sup>") elseif urls then verify_title_supplied(urls_fullname) sep = nil add("&lrm;<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("&ndash;", "–") check_val = check_val:gsub("&#8211;", "–") check_val = check_val:gsub("&mdash;", "—") check_val = check_val:gsub("&#8212;", "—") -- 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 "&#58; " 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 = "&#59; " local SPACE_LBRAC = " &#91;" local RBRAC = "&#93;" 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, '&nbsp;<span class="error" style="font-size:88%">Invalid&nbsp;ISBN</span>[[Category:Pages with ISBN errors]]' ) end local function issn(text) return "[https://www.worldcat.org/issn/" .. text .. " →ISSN]" .. check_issn( text, '&nbsp;<span class="error" style="font-size:88%">Invalid&nbsp;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] = "&lt;", [TEMP_GT] = "&gt;", [TEMP_LBRAC] = "&#91;", [TEMP_RBRAC] = "&#93;", [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=&#91;{{w|Gilbert Clerke}}&#93; * 2ndauthor=Martin Biddle &amp; Sally Badham * author=Peter Christen Asbj&oslash;rnsen There may be both embedded semicolons and HTML entities with semicolons in them: * author=&#91;{{w|Voltaire}} [pseudonym; François-Marie Arouet]&#93; In general we want to treat &#91; like an opening bracket and &#93; like a closing bracket. Beware that they may be mismatched: * author=Anonymous &#91;{{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 = "&nbsp;– " 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("&#32;", " ") :gsub("&nbsp;", " ") :gsub("&#160;", " ") :gsub("&#91;", "[") :gsub("&#93;", "]") 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("&lrm;<sup>[" .. (archiveurl or url) .. "]</sup>") elseif urls then verify_title_supplied(urls_fullname) sep = nil add("&lrm;<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("&ndash;", "–") check_val = check_val:gsub("&#8211;", "–") check_val = check_val:gsub("&mdash;", "—") check_val = check_val:gsub("&#8212;", "—") -- 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 "&#58; " 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&nbsp;}}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]]&nbsp;- 亞目; {{taxlink|Tabanomorpha|infraorder|ver=190504}}&nbsp;- 下目; {{taxlink|Rhagionoidea|superfamily|ver=190504}}&nbsp;- 總科; [[Rhagionidae]]&nbsp;- 科; {{taxlink|Rhagioninae|tribe}}&nbsp;- 族 ===参见=== * {{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]]&nbsp;- 亞目; {{taxlink|Tabanomorpha|infraorder|ver=190504}}&nbsp;- 下目; {{taxlink|Rhagionoidea|superfamily|ver=190504}}&nbsp;- 總科; [[Rhagionidae]]&nbsp;- 科; {{taxlink|Rhagioninae|tribe}}&nbsp;- 族 ===参见=== * {{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&nbsp;{{{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&nbsp;{{{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 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 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