Wiktionary jawiktionary https://ja.wiktionary.org/wiki/Wiktionary:%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8 MediaWiki 1.47.0-wmf.14 case-sensitive メディア 特別 トーク 利用者 利用者・トーク Wiktionary Wiktionary・トーク ファイル ファイル・トーク MediaWiki MediaWiki・トーク テンプレート テンプレート・トーク ヘルプ ヘルプ・トーク カテゴリ カテゴリ・トーク 付録 付録・トーク TimedText TimedText talk モジュール モジュール・トーク Event Event talk テンプレート:mkd 10 1541 2313228 1378268 2026-08-08T23:30:19Z Kuroco2k 84207 [[テンプレート:mk]] へのリダイレクトを解除しました 2313228 wikitext text/x-wiki {{非推奨のテンプレート|メッセージ='''このテンプレートは使用されるべきではありません。代わりに[[テンプレート:mk]]を使用してください。'''|廃止=n}} <includeonly>[[カテゴリ:非推奨のテンプレートを使用しているページ]]</includeonly><noinclude>[[カテゴリ:言語表記テンプレート|{{PAGENAME}}]][[カテゴリ:ISO 639-2|{{PAGENAME}}]][[カテゴリ:ISO 639-3|{{PAGENAME}}]]</noinclude> ikaa94rtkdhc47xhgjsto65ecfszhzt テンプレート:Nl 10 3796 2313393 1599057 2026-08-09T07:57:15Z Kuroco2k 84207 [[テンプレート:nl]] へのリダイレクトを解除しました 2313393 wikitext text/x-wiki {{非推奨のテンプレート|メッセージ='''このテンプレートは使用されるべきではありません。代わりに[[テンプレート:nl]]を使用してください。'''|廃止=y}} <includeonly>[[カテゴリ:非推奨のテンプレートを使用しているページ]]</includeonly> se6zyi2wfhhnsvf099ebnfryznuko6x テンプレート:La 10 3865 2313255 1599035 2026-08-08T23:48:13Z Kuroco2k 84207 [[テンプレート:la]] へのリダイレクトを解除しました 2313255 wikitext text/x-wiki {{非推奨のテンプレート|メッセージ='''このテンプレートは使用されるべきではありません。代わりに[[テンプレート:la]]を使用してください。'''|廃止=y}} <includeonly>[[カテゴリ:非推奨のテンプレートを使用しているページ]]</includeonly> d9gmc2keo5ioe8s5wgjorkdm9oeux0r テンプレート:Lo 10 3866 2313253 1599038 2026-08-08T23:48:12Z Kuroco2k 84207 [[テンプレート:lo]] へのリダイレクトを解除しました 2313253 wikitext text/x-wiki {{非推奨のテンプレート|メッセージ='''このテンプレートは使用されるべきではありません。代わりに[[テンプレート:lo]]を使用してください。'''|廃止=y}} <includeonly>[[カテゴリ:非推奨のテンプレートを使用しているページ]]</includeonly> 8zymbhe7uh8nyvzgnb6fmhf44xtc9bv テンプレート:Lt 10 3867 2313252 1599039 2026-08-08T23:48:12Z Kuroco2k 84207 [[テンプレート:lt]] へのリダイレクトを解除しました 2313252 wikitext text/x-wiki {{非推奨のテンプレート|メッセージ='''このテンプレートは使用されるべきではありません。代わりに[[テンプレート:lt]]を使用してください。'''|廃止=y}} <includeonly>[[カテゴリ:非推奨のテンプレートを使用しているページ]]</includeonly> ryxiwqg6h6i43j0muazidfvk19sqdra テンプレート:Mdf 10 3868 2313238 14627 2026-08-08T23:43:42Z Kuroco2k 84207 [[テンプレート:mdf]] へのリダイレクトを解除しました 2313238 wikitext text/x-wiki {{非推奨のテンプレート|メッセージ='''このテンプレートは使用されるべきではありません。代わりに[[テンプレート:mdf]]を使用してください。'''|廃止=y}} <includeonly>[[カテゴリ:非推奨のテンプレートを使用しているページ]]</includeonly> 8q3drdsbihijwabb6rqmkx5n10lbib7 テンプレート:Mn 10 3869 2313243 1599045 2026-08-08T23:44:23Z Kuroco2k 84207 [[テンプレート:mn]] へのリダイレクトを解除しました 2313243 wikitext text/x-wiki {{非推奨のテンプレート|メッセージ='''このテンプレートは使用されるべきではありません。代わりに[[テンプレート:mn]]を使用してください。'''|廃止=y}} <includeonly>[[カテゴリ:非推奨のテンプレートを使用しているページ]]</includeonly> cc2k0cphwc2fmx6bnhm0ywz2hv8kva2 テンプレート:Mnc 10 3870 2313241 14629 2026-08-08T23:44:22Z Kuroco2k 84207 [[テンプレート:mnc]] へのリダイレクトを解除しました 2313241 wikitext text/x-wiki {{非推奨のテンプレート|メッセージ='''このテンプレートは使用されるべきではありません。代わりに[[テンプレート:mnc]]を使用してください。'''|廃止=y}} <includeonly>[[カテゴリ:非推奨のテンプレートを使用しているページ]]</includeonly> fah1cg95flig7v7g85wmqpd7lr8ng7p テンプレート:Mo 10 3871 2313240 14630 2026-08-08T23:44:22Z Kuroco2k 84207 [[テンプレート:mo]] へのリダイレクトを解除しました 2313240 wikitext text/x-wiki {{非推奨のテンプレート|メッセージ='''このテンプレートは使用されるべきではありません。代わりに[[テンプレート:mo]]を使用してください。'''|廃止=y}} <includeonly>[[カテゴリ:非推奨のテンプレートを使用しているページ]]</includeonly> 7he9spqbu3osbrf4ba9dqis5rpjnn1i テンプレート:Mr 10 3872 2313248 1599046 2026-08-08T23:45:23Z Kuroco2k 84207 [[テンプレート:mr]] へのリダイレクトを解除しました 2313248 wikitext text/x-wiki {{非推奨のテンプレート|メッセージ='''このテンプレートは使用されるべきではありません。代わりに[[テンプレート:mr]]を使用してください。'''|廃止=y}} <includeonly>[[カテゴリ:非推奨のテンプレートを使用しているページ]]</includeonly> behm4zhhbdhnjdb0lh01ey1l4s9akq5 テンプレート:Ms 10 3873 2313247 1599047 2026-08-08T23:45:22Z Kuroco2k 84207 [[テンプレート:ms]] へのリダイレクトを解除しました 2313247 wikitext text/x-wiki {{非推奨のテンプレート|メッセージ='''このテンプレートは使用されるべきではありません。代わりに[[テンプレート:ms]]を使用してください。'''|廃止=y}} <includeonly>[[カテゴリ:非推奨のテンプレートを使用しているページ]]</includeonly> 1ns770kwxyfvqp9fy0iwt9u285fatep テンプレート:Mt 10 3874 2313246 1599048 2026-08-08T23:45:22Z Kuroco2k 84207 [[テンプレート:mt]] へのリダイレクトを解除しました 2313246 wikitext text/x-wiki {{非推奨のテンプレート|メッセージ='''このテンプレートは使用されるべきではありません。代わりに[[テンプレート:mt]]を使用してください。'''|廃止=y}} <includeonly>[[カテゴリ:非推奨のテンプレートを使用しているページ]]</includeonly> sdm8ztzugi1jjiggy8cshbidd6j2b2z テンプレート:Myv 10 3875 2313244 14634 2026-08-08T23:45:22Z Kuroco2k 84207 [[テンプレート:myv]] へのリダイレクトを解除しました 2313244 wikitext text/x-wiki {{非推奨のテンプレート|メッセージ='''このテンプレートは使用されるべきではありません。代わりに[[テンプレート:myv]]を使用してください。'''|廃止=y}} <includeonly>[[カテゴリ:非推奨のテンプレートを使用しているページ]]</includeonly> ri2ioevdyq7wstg066kgbzingsqcg44 テンプレート:Na 10 3876 2313400 1599050 2026-08-09T07:57:18Z Kuroco2k 84207 [[テンプレート:na]] へのリダイレクトを解除しました 2313400 wikitext text/x-wiki {{非推奨のテンプレート|メッセージ='''このテンプレートは使用されるべきではありません。代わりに[[テンプレート:na]]を使用してください。'''|廃止=y}} <includeonly>[[カテゴリ:非推奨のテンプレートを使用しているページ]]</includeonly> a4obm1r8r663b2nrsbhu8vthb8gdw4o テンプレート:Nah 10 3877 2313399 14636 2026-08-09T07:57:17Z Kuroco2k 84207 [[テンプレート:nah]] へのリダイレクトを解除しました 2313399 wikitext text/x-wiki {{非推奨のテンプレート|メッセージ='''このテンプレートは使用されるべきではありません。代わりに[[テンプレート:nah]]を使用してください。'''|廃止=y}} <includeonly>[[カテゴリ:非推奨のテンプレートを使用しているページ]]</includeonly> oyi747ds388fhefjdluj2ep24rvldak テンプレート:Nav 10 3878 2313397 1599051 2026-08-09T07:57:17Z Kuroco2k 84207 [[テンプレート:nv]] へのリダイレクトを解除しました 2313397 wikitext text/x-wiki {{非推奨のテンプレート|メッセージ='''このテンプレートは使用されるべきではありません。代わりに[[テンプレート:nv]]を使用してください。'''|廃止=y}} <includeonly>[[カテゴリ:非推奨のテンプレートを使用しているページ]]</includeonly> 9n1j09vegzsmnw0ecu120hls8irfdp2 テンプレート:Ne 10 3879 2313396 1599055 2026-08-09T07:57:16Z Kuroco2k 84207 [[テンプレート:ne]] へのリダイレクトを解除しました 2313396 wikitext text/x-wiki {{非推奨のテンプレート|メッセージ='''このテンプレートは使用されるべきではありません。代わりに[[テンプレート:ne]]を使用してください。'''|廃止=y}} <includeonly>[[カテゴリ:非推奨のテンプレートを使用しているページ]]</includeonly> nziqk9hmrcsqz985ecr5p7qmx5zc4o4 テンプレート:Nd 10 3880 2313395 1599054 2026-08-09T07:57:16Z Kuroco2k 84207 [[テンプレート:nd]] へのリダイレクトを解除しました 2313395 wikitext text/x-wiki {{非推奨のテンプレート|メッセージ='''このテンプレートは使用されるべきではありません。代わりに[[テンプレート:nd]]を使用してください。'''|廃止=y}} <includeonly>[[カテゴリ:非推奨のテンプレートを使用しているページ]]</includeonly> 33vfqrvgqvil2sxtc3h01eywmsj4gix テンプレート:Ng 10 3881 2313394 1599056 2026-08-09T07:57:15Z Kuroco2k 84207 [[テンプレート:ng]] へのリダイレクトを解除しました 2313394 wikitext text/x-wiki {{非推奨のテンプレート|メッセージ='''このテンプレートは使用されるべきではありません。代わりに[[テンプレート:ng]]を使用してください。'''|廃止=y}} <includeonly>[[カテゴリ:非推奨のテンプレートを使用しているページ]]</includeonly> jgt6qg4lyjy1lgdtsw57dvb2spbsvrq テンプレート:Nn 10 3883 2313392 1599058 2026-08-09T07:57:15Z Kuroco2k 84207 [[テンプレート:nn]] へのリダイレクトを解除しました 2313392 wikitext text/x-wiki {{非推奨のテンプレート|メッセージ='''このテンプレートは使用されるべきではありません。代わりに[[テンプレート:nn]]を使用してください。'''|廃止=y}} <includeonly>[[カテゴリ:非推奨のテンプレートを使用しているページ]]</includeonly> 3cjp4n50ma4pr2u9z7qcoeqneme3xm5 テンプレート:No 10 3884 2313391 1599059 2026-08-09T07:57:14Z Kuroco2k 84207 [[テンプレート:no]] へのリダイレクトを解除しました 2313391 wikitext text/x-wiki {{非推奨のテンプレート|メッセージ='''このテンプレートは使用されるべきではありません。代わりに[[テンプレート:nb]]、[[テンプレート:nn]]を使用してください。'''|廃止=y}} <includeonly>[[カテゴリ:非推奨のテンプレートを使用しているページ]]</includeonly> 44abhve87xixg9jyqrgasbpp1rv76ga テンプレート:Nr 10 3885 2313390 1599060 2026-08-09T07:57:14Z Kuroco2k 84207 [[テンプレート:nr]] へのリダイレクトを解除しました 2313390 wikitext text/x-wiki {{非推奨のテンプレート|メッセージ='''このテンプレートは使用されるべきではありません。代わりに[[テンプレート:nr]]を使用してください。'''|廃止=y}} <includeonly>[[カテゴリ:非推奨のテンプレートを使用しているページ]]</includeonly> bbd8xej84s7v2a5h1mrobw2ppmzm2sv テンプレート:Nv 10 3886 2313389 1599061 2026-08-09T07:57:14Z Kuroco2k 84207 [[テンプレート:nv]] へのリダイレクトを解除しました 2313389 wikitext text/x-wiki {{非推奨のテンプレート|メッセージ='''このテンプレートは使用されるべきではありません。代わりに[[テンプレート:nv]]を使用してください。'''|廃止=y}} <includeonly>[[カテゴリ:非推奨のテンプレートを使用しているページ]]</includeonly> 9n1j09vegzsmnw0ecu120hls8irfdp2 テンプレート:Ny 10 3888 2313388 1983715 2026-08-09T07:57:14Z Kuroco2k 84207 [[テンプレート:ny]] へのリダイレクトを解除しました 2313388 wikitext text/x-wiki {{非推奨のテンプレート|メッセージ='''このテンプレートは使用されるべきではありません。代わりに[[テンプレート:ny]]を使用してください。'''|廃止=y}} <includeonly>[[カテゴリ:非推奨のテンプレートを使用しているページ]]</includeonly> c18riuy0mh5izrdlitdir9yelldterx テンプレート:Ma 10 3938 2313231 1599041 2026-08-08T23:34:54Z Kuroco2k 84207 [[テンプレート:mk]] へのリダイレクトを解除しました 2313231 wikitext text/x-wiki {| class="sakujo" style="border:solid gray 1px; padding:0 0.5em; margin:1ex auto; font-size: small; width:80%" |- | [[ファイル:Icono aviso borrar.svg|50px|削除依頼に提出されています]] | このページは'''[[Wiktionary:削除の方針|削除の方針]]'''に従い'''[[Wiktionary:削除依頼|削除依頼]]'''に出されています。[[{{TALKSPACE}}:{{PAGENAME}}|このページのノート]]も参照してください。 この項目の削除可否についての議論が<span class="sakujo-request">[[Wiktionary:削除依頼/2026年8月/テンプレート:ma|該当する削除依頼]]</span>で進行中です。 この項目は'''まだ削除されていません'''。削除に異議のある方は<span class="sakujo-request">[[Wiktionary:削除依頼/2026年8月/テンプレート:ma|該当する削除依頼]]</span>に是非ご参加ください。該当する削除依頼が終了するまで'''このメッセージを剥がさないでください。''' [[カテゴリ:削除依頼中のページ]] |} 8mqzy3ykghcm04heafluo8t6j3b3v4f テンプレート:Li 10 3950 2313254 1599037 2026-08-08T23:48:12Z Kuroco2k 84207 [[テンプレート:li]] へのリダイレクトを解除しました 2313254 wikitext text/x-wiki {{非推奨のテンプレート|メッセージ='''このテンプレートは使用されるべきではありません。代わりに[[テンプレート:li]]を使用してください。'''|廃止=y}} <includeonly>[[カテゴリ:非推奨のテンプレートを使用しているページ]]</includeonly> 3jb0m5mk1lma3ihdiehfrddl4eqwtta テンプレート:Lv 10 3951 2313251 1599040 2026-08-08T23:48:12Z Kuroco2k 84207 [[テンプレート:lv]] へのリダイレクトを解除しました 2313251 wikitext text/x-wiki {{非推奨のテンプレート|メッセージ='''このテンプレートは使用されるべきではありません。代わりに[[テンプレート:lv]]を使用してください。'''|廃止=y}} <includeonly>[[カテゴリ:非推奨のテンプレートを使用しているページ]]</includeonly> lqq1t4yy7mrd1jloldsc2gyzidcoq83 テンプレート:Mi 10 3952 2313237 1599042 2026-08-08T23:43:42Z Kuroco2k 84207 [[テンプレート:mi]] へのリダイレクトを解除しました 2313237 wikitext text/x-wiki {{非推奨のテンプレート|メッセージ='''このテンプレートは使用されるべきではありません。代わりに[[テンプレート:mi]]を使用してください。'''|廃止=y}} <includeonly>[[カテゴリ:非推奨のテンプレートを使用しているページ]]</includeonly> 1jg5kb309hvea3j1vs4h9js7vqq4ldc テンプレート:My 10 3953 2313245 1599049 2026-08-08T23:45:22Z Kuroco2k 84207 [[テンプレート:my]] へのリダイレクトを解除しました 2313245 wikitext text/x-wiki {{非推奨のテンプレート|メッセージ='''このテンプレートは使用されるべきではありません。代わりに[[テンプレート:my]]を使用してください。'''|廃止=y}} <includeonly>[[カテゴリ:非推奨のテンプレートを使用しているページ]]</includeonly> 01i8dcmphynjcuke8dusk4ljmjk47rq テンプレート:Nb 10 3954 2313398 1599052 2026-08-09T07:57:17Z Kuroco2k 84207 [[テンプレート:nb]] へのリダイレクトを解除しました 2313398 wikitext text/x-wiki {{非推奨のテンプレート|メッセージ='''このテンプレートは使用されるべきではありません。代わりに[[テンプレート:nb]]を使用してください。'''|廃止=y}} <includeonly>[[カテゴリ:非推奨のテンプレートを使用しているページ]]</includeonly> s94vr5x4fkcw2uj67td4knscknfq2j1 テンプレート:Ml 10 3969 2313242 1599044 2026-08-08T23:44:22Z Kuroco2k 84207 [[テンプレート:ml]] へのリダイレクトを解除しました 2313242 wikitext text/x-wiki {{非推奨のテンプレート|メッセージ='''このテンプレートは使用されるべきではありません。代わりに[[テンプレート:ml]]を使用してください。'''|廃止=y}} <includeonly>[[カテゴリ:非推奨のテンプレートを使用しているページ]]</includeonly> erpq70ihikijp6r4apzy7pic3syql6a テンプレート:Mk 10 3970 2313229 1599043 2026-08-08T23:30:19Z Kuroco2k 84207 [[テンプレート:mk]] へのリダイレクトを解除しました 2313229 wikitext text/x-wiki {{非推奨のテンプレート|メッセージ='''このテンプレートは使用されるべきではありません。代わりに[[テンプレート:mk]]を使用してください。'''|廃止=y}} <includeonly>[[カテゴリ:非推奨のテンプレートを使用しているページ]]</includeonly><noinclude>[[カテゴリ:言語表記テンプレート|{{PAGENAME}}]]</noinclude> 7qwm5nh7axrgw6vihc9uw56osnctpi7 Wiktionary:削除依頼 4 7780 2313233 2312939 2026-08-08T23:35:15Z Kuroco2k 84207 /* 2026年8月 */ 2313233 wikitext text/x-wiki {{kana-DEFAULTSORT|さくじょいらい}} {{Wiktionary:削除依頼/説明}} == 2020年9月 == {{/2020年9月/テンプレート:日本語五段活用}} {{/2020年9月/テンプレート:日本語形容詞活用}} == 2021年4月 == {{/2021年4月/テンプレート:en-simple}} == 2021年10月 == {{Wiktionary:削除依頼/2021年10月/テンプレート:日本語変格活用}} == 2023年8月 == {{/2023年8月/झोल​}} == 2024年5月 == {{/2024年5月/ファイル:凵-bw.png}} {{/2024年5月/ファイル:筆順 揮.png}} {{/2024年5月/ファイル:筆順 朗.png}} {{/2024年5月/ファイル:筆順 論.png}} {{/2024年5月/ファイル:冬.png}} == 2024年8月 == {{/2024年8月/ファイル:卵.png‎}} {{/2024年8月/ファイル:私.png}} {{/2024年8月/ファイル:鬚.png}} {{/2024年8月/ファイル:金文-者.PNG}} {{/2024年8月/ファイル:金文-楽.PNG}} {{/2024年8月/ファイル:藍 (字形).png}} {{/2024年8月/ファイル:筆順 あ.png}} {{/2024年8月/ファイル:筆順 花.png}} == 2024年10月 == {{/2024年10月/テンプレート:挨拶カテゴリ}} == 2024年12月 == {{/2024年12月/テンプレート:CategoryTOC/曜日}} == 2025年5月 == {{/2025年5月/テンプレート:ふりがな-}} == 2025年10月 == {{/2025年10月/朝鮮語の文字別の執筆依頼}} == 2025年12月 == {{/2025年12月/カテゴリ:英語 名詞 定形}} == 2026年1月 == {{/2026年1月/hỏa thuyển}} == 2026年2月 == {{/2026年2月/無震帯}} {{/2026年2月/テンプレート:quote-journal}} == 2026年3月 == {{/2026年3月/カテゴリ:婉曲}} {{/2026年3月/Unicode付録類}} {{/2026年3月/テンプレート:sort-ja}} {{/2026年3月/kosma}} {{/2026年3月/BlockCategory}} == 2026年4月 == {{/2026年4月/幾微}} {{/2026年4月/幾希}} {{/2026年4月/幾望}} == 2026年6月 == {{/2026年6月/旧式ラテン語項目}} {{/2026年6月/古典ギリシア語の発音テンプレート}} {{/2026年6月/テンプレート:火星衛星}} {{/2026年6月/部首の曖昧さ回避ページ}} {{/2026年6月/テンプレート:accentの関連テンプレート}} {{/2026年6月/古式分野テンプレート}} {{/2026年6月/ドイツ語動詞活用表}} {{/2026年6月/テンプレート:英語 活用 be}} == 2026年7月 == {{/2026年7月/テンプレート:Genomics}} == 2026年8月 == {{/2026年8月/テンプレート:etyl:言語名}} {{/2026年8月/テンプレート:ma}} ==ログ== ===検索=== <inputbox> type=fulltext prefix=Wiktionary:削除依頼 break=no width=30 searchbuttonlabel=ログを検索 </inputbox> ===年別=== *[[Wiktionary:削除依頼/2007年以前|2007年以前の依頼]] *[[特別:前方一致ページ一覧/Wiktionary:削除依頼/2008年|2008年の依頼]] *[[特別:前方一致ページ一覧/Wiktionary:削除依頼/2009年|2009年の依頼]] *[[特別:前方一致ページ一覧/Wiktionary:削除依頼/2010年|2010年の依頼]] *[[特別:前方一致ページ一覧/Wiktionary:削除依頼/2011年|2011年の依頼]] *[[特別:前方一致ページ一覧/Wiktionary:削除依頼/2012年|2012年の依頼]] *[[特別:前方一致ページ一覧/Wiktionary:削除依頼/2013年|2013年の依頼]] *[[特別:前方一致ページ一覧/Wiktionary:削除依頼/2014年|2014年の依頼]] *[[特別:前方一致ページ一覧/Wiktionary:削除依頼/2015年|2015年の依頼]] *[[特別:前方一致ページ一覧/Wiktionary:削除依頼/2016年|2016年の依頼]] *[[特別:前方一致ページ一覧/Wiktionary:削除依頼/2017年|2017年の依頼]] *[[特別:前方一致ページ一覧/Wiktionary:削除依頼/2018年|2018年の依頼]] *[[特別:前方一致ページ一覧/Wiktionary:削除依頼/2019年|2019年の依頼]] *[[特別:前方一致ページ一覧/Wiktionary:削除依頼/2020年|2020年の依頼]] *[[特別:前方一致ページ一覧/Wiktionary:削除依頼/2021年|2021年の依頼]] *[[特別:前方一致ページ一覧/Wiktionary:削除依頼/2022年|2022年の依頼]] *[[特別:前方一致ページ一覧/Wiktionary:削除依頼/2023年|2023年の依頼]] *[[特別:前方一致ページ一覧/Wiktionary:削除依頼/2024年|2024年の依頼]] *[[特別:前方一致ページ一覧/Wiktionary:削除依頼/2025年|2025年の依頼]] *[[特別:前方一致ページ一覧/Wiktionary:削除依頼/2026年|2026年の依頼]] [[カテゴリ:削除関連|いらい]] cvlwd30i4tcr9ird2lq2r172gjlxxg0 0 10541 2313311 2216083 2026-08-09T01:31:00Z Jiba1219 100610 /* {{L|zh}} */ 2313311 wikitext text/x-wiki {{kana-DEFAULTSORT|ふう}} ==漢字== {{kanji|風|0}} {{kanji variants|风=[[簡体字]]|凮|飌|凬=[[古字]]}} ===字源=== *[[形声文字|形声]]。「[[虫]]」 + 声符「[[凡]]/*[b]rom/」。 「かぜ」を意味する漢語{風/*prəm/}を表す字。もと「[[鳳]]」字が{風}を表していたが([[仮借]])、数百年の空白を経て戦国時代に「虫」に従う「風」字が現れた。「虫」に従う理由は、有力な説として以下の2つがある。 # 西周金文の「鳳」字の、尾羽末端の飾り羽根が変化して「虫」になったという説(字形の演変を参考)。<ref group="字源">曾憲通《談談怎樣考釋古文字》『古文字論壇』第一輯.中山大学古文字研究所. 2016-11-04.</ref><br>音韻学的には、「風/*prəm/」の原字は「凡/*[b]rom/」を声符にしていたが、「風」の発音が*prəm > *prum > *pruŋと変化したため、「鳳」の飾り羽根の部分が(不完全な)声符化を起こして「虫(蟲の省体)/*C.lruŋ/」になったと説明される。<ref group="字源">Laurent Sagart《[https://stan.hypotheses.org/1221 What is an insect doing in the Chinese character for “wind”?]》2021-1-28</ref><br>※文字の一部が変化して声符化する現象「音化」は珍しくない。 # 「風」は、{[[堸]]/虫の巣}または{[[𧍯]]/虫の巣穴}の[[表意文字]]で、{風/かぜ}の意は[[仮借]]という説。<ref group="字源">白於藍《釋”風”——兼説”空穴來風”》『[https://journals.sagepub.com/doi/10.1177/2513850218760276 Journal of Chinese Writing Systems]』Vol 2, Issue 2, pp. 79 - 89⇒[https://mp.weixin.qq.com/s?search_click_id=7583231276846959121-1726588296205-9383024127&__biz=MzA5MjEyMTMyNQ==&mid=2650997525&idx=1&sn=51ffa8f03399c885779c034fda133128&chksm=8b865297bcf1db81186fad692641cd69789435c26f0027b7b2c1e879252348aa819293a7b7fd&scene 概要]</ref> {{字源}} ===参考文献=== <references group="字源" /> <!--根拠に欠ける俗説のため、いったん控えます 嵐も「あらし」の意は国訓のため風とは無関係→   *[[形声文字|形声]]。「[[虫]]」([[蛇]]、[[竜]]) + 音符「[[凡]]」を合わせた字で、「[[かぜ]]」を起こすと見なされた蛇が原義(「[[虹]]」も同様で意符が「虫」)。「凡」は「[[盤]]」の原字で、[[盥]]盤の側面の象形。「虫」に代えて「[[鳥]]」を用いた文字が「[[鳳]]」であり、両方とも「かぜ」の使いとされた。 **古くは頭子音 pl- をもち、l の残った語が[[嵐]]である。 --> ===意義=== #[[かぜ]]。 #[[病気]]。 #*[[中風]]、[[痛風]] #ある地域などの様子をもった。 #*[[和風]]、[[洋風]] =={{L|ja}}== {{ja-kanji|常用=フウ,フ,かぜ,かざ|施策=教育:2|呉音=フウ,フ|漢音=ホウ|唐音=ホ|訓=かぜ,かざ,い,え,すがた,ならわし,ふり}} ==={{noun}}=== {{wikipedia|風}} [[Category:{{ja}} {{noun}}|かせ かぜ]] [[Category:{{ja}} 風|*]] #('''[[かぜ]]''')[[空気]]の流れ。 #('''[[かぜ]]''')ある勢力の勢い #('''[[フウ]]''')[[風習]]。[[気風]]。[[慣習]]。[[雰囲気]]。 #*江戸の風を伝える屋敷。 #('''[[フウ]]''')[[風体]]。[[恰好]]。 #*僧侶の風をなす。 #('''[[フウ]]''')[[様子]]。[[ふり]]。 #*家でもだらけた風をしない。 #*知らないふうを装う。 #('''[[フウ]]''')[[性向]]。[[性格]]。[[傾向]]。[[きらい]]。 #*狷介の風がある。 #('''[[フウ]]''')[[体裁]]。聞こえ。 #*風が悪い。 #('''[[フウ]]''')[[様態]]。感じ。 #*そんなふうに言う。そんなふうに思えた。 #*かつおぶしはどういうふうに選択し、どういうふうにして削るか。(北大路魯山人『だしの取り方』) #*映画における音楽の位置をうんぬんするとき、だれしも口をそろえて重大だという。/なぜ重大なのか。どういうふうに重大なのか。だれもそれについて私に説明してくれた人はない。(伊丹万作『映画と音楽』) #*誰かに紹介をして貰ふつもりだつたが、それよりも直接にお庭拝見といふふうに名刺を通じた。(室生犀星『名園の落水』) ===={{trans}}==== {{trans-see|かぜ}} ==={{suffix}}=== [[Category:{{ja}} {{suffix}}|かせ かぜ]] #('''[[フウ]]''')(とくにある[[地域]]の)[[特徴]]を有したさま。[[風味]]。 #*[[スリランカ]]風、[[広東]]風、[[京]]風 #('''フウ''')そのような[[雰囲気]]のあるさま。似ているさま。 #*[[アニメ]]風、[[純正]]風、[[町人]]風、[[日記]]風のエッセイ、[[スパゲティ]]風[[うどん]] #('''[[かぜ]]''')(多く「〜風を吹かす」の形で)ある[[身分]]に[[仮託]]して、[[いたけだか|居丈高]]になる[[様子]]。 #*[[先輩風]]、役人風 ===={{syn}}==== * [[ウィンド]] ===={{rel}}==== * {{ふりがな|嵐|あらし}} ===熟語=== {{top5}} * [[風圧]] * [[風雲]] * [[風化]] * [[風雅]] * [[風害]] * [[風格]] * [[風紀]] * [[風景]] * [[風月]] * [[風車]] * [[風習]] * [[風塵]] * [[風水]] * [[風雪]] * [[風葬]] * [[風俗]] * [[風袋]] * [[風潮]] * [[風体]] * [[風土]] * [[風物]] * [[風貌]] * [[風防]] * [[風味]] * [[風流]] * [[風邪]] * [[風呂]] * [[神風]] * [[気風]] * [[台風]] * [[痛風]] * [[中風]] * [[微風]] * [[暴風]] {{bottom}} =={{L|okm}}== {{okm-han|tg=포ᇰ|tg2=포ᇰ〮|hm=푸ᇰ|hmj=ᄇᆞᄅᆞᆷ}} =={{L|zh}}== {{zh-cat|feng1|名詞|固有名詞|姓}} {{topcat|zh|風}} {{trans_link|zh|{{PAGENAME}}}} (簡体字: '''{{l|zh|风}}''') * '''ローマ字表記''' ** '''[[普通話]]''' *** '''[[ピンイン]]''': [[fēng]] ([[feng1]]) *** '''[[ウェード式]]''': feng<sup>1</sup> ** '''[[広東語]]''' *** '''[[イェール式]]''': fung1 ** '''[[閩南語]]''' *** '''[[POJ]]''': hong ** '''[[客家語]]''' *** '''[[白話字]]''': fûng ** '''[[呉語]]''' *** '''[[ピンイン]]''': fon1 ** '''[[中古音]]''': *pjuwng ** '''[[上古音]]''': *prəm ==={{noun}}=== #{{ふりがな|風|かぜ}} #{{ふりがな|噂|うわさ}} ==={{name}}=== #中国人の[[姓]]のひとつ。 =={{L|ko}}== {{ko-han|풍|eumhun=[[바람]] 풍}} ==={{prov}}=== {{top}} * {{l|ko|소풍}} &lt;[[消風]]&gt;, &lt;[[逍風]]&gt; * {{l|ko|태풍}} &lt;[[颱風]]&gt; * {{l|ko|풍경}} &lt;[[風磬]]&gt; * {{l|ko|풍금}} &lt;[[風琴]]&gt; * {{l|ko|풍로}} &lt;[[風爐]]&gt; * {{l|ko|풍문}} &lt;[[風聞]]&gt; * {{l|ko|풍설}} &lt;[[風說]]&gt; * {{l|ko|풍편}} &lt;[[風便]]&gt; * {{l|ko|허풍}} &lt;[[虛風]]&gt; {{bottom}} =={{L|vi}}== {{vi-han|phong}} [[Category:風|*]] =={{コード}}== {{文字コード|jis=1-41-87|mj={{mjmoji|028294}}|gb=EF4C|cns=1-5378|big5=ADB7|ksx=1001-7926}} {{検字|倉頡=HNHLI,HNMLI|四角=7721.0}} {{字典|dj=1930.200|hdz=74480.010|大字源=11302|大漢語林=12897|康煕=1411.010|新大字典=19085|新潮漢字=14215|諸橋=43756}} 2rrrcjtjq945j6o5nb55l4uwk0txx6g anger 0 10556 2313124 1819881 2026-08-08T14:47:24Z 鍼灸 112313 2313124 wikitext text/x-wiki =={{en}}== ==={{pron}}=== * {{a|UK}} {{IPA|lang=en|/ˈæŋɡə(ɹ)/}} * {{a|US}} {{IPA|lang=en|/ˈæŋɡɚ/}} * {{audio|en|en-us-anger.ogg|音声 (米)}} === {{noun}} === {{en-noun|~}} #[[いかり|怒り]] ==== {{rel}} ==== *{{adj}}: [[angry]] === {{tranverb}} === [[category:{{en}}_{{tranverb}}]] anger ([[angers]], [[angering]], [[angered]]) #怒らせる l2pupet1c0i8i3eq6blukm2xy3yes92 2313126 2313124 2026-08-08T14:50:15Z 鍼灸 112313 2313126 wikitext text/x-wiki =={{en}}== ==={{pron}}=== * {{a|UK}} {{IPA|lang=en|/ˈæŋɡə(ɹ)/}} * {{a|US}} {{IPA|lang=en|/ˈæŋɡɚ/}} * {{audio|en|en-us-anger.ogg|音声 (米)}} === {{noun}} === {{en-noun|~}} #[[いかり|怒り]] ==== {{rel}} ==== *{{adj}}: [[angry]] === {{verb}} === {{en-verb}} #{{context|transitive|lang=en}}怒らせる #{{context|intransitive|lang=en}}怒る 2sr53j5016hjuh6nix9ym8tob84kqi0 cop 0 10751 2313155 1809442 2026-08-08T22:38:16Z Kuroco2k 84207 2313155 wikitext text/x-wiki {{also|COP|còp|côp|cöp|cọp|çöp|čop|чоп}} ==記号== ==={{code}}=== '''{{PAGENAME}}''' #{{ISO 639|2&3|cop}} =={{L|cy}}== ==={{etym}}=== {{bor+|cy|enm|coppe}} < {{etyl|ang|cy}} {{m|ang|copp}} < {{etyl|gmw-pro|cy}} {{m|gmw-pro|*kopp}} ==={{pron}}=== * {{IPA|lang=cy|kɔp}} ==={{noun}}=== {{cy-noun|m|copynnod|pl2=copynnau}} #{{context|obsolete|animal|lang=cy}}{{ふりがな|蜘蛛|くも}}。 ===={{syn}}==== * {{l|cy|copyn}}, {{l|cy|corryn}}, {{l|cy|pryf cop}}, {{l|cy|pryf copyn}} ===={{drv}}==== * {{l|cy|copyn}} * {{l|cy|pryf cop}} * {{l|cy|pryf copyn}} {{cy-mut|op|c|g|ngh|ch}} ---- =={{L|vo}}== ==={{noun}}=== {{vo-noun}} #{{context|tool|lang=vo}}{{ふりがな|鍬|くわ}}。 {{vo-decl-noun}} ---- =={{L|en}}== ==={{pron}}=== * {{a|RP}} {{IPA|lang=en|/kɒp/}} * {{a|GenAm}} {{IPA|lang=en|/kɑp/}} * {{音声|en|En-au-cop.ogg|音声 (豪)}} ==={{etym}}1=== 不詳。恐らく{{etyl|enm}} {{m|enm|*coppen}}, {{m|enm|*copen}} < {{etyl|ang}} {{m|ang|copian}} 又は{{etyl|frm}} {{m|frm|caper}} < {{etyl|la}} {{m|la|capere}} 又は{{etyl|nl}} {{m|nl|kapen}} < {{etyl|ofs}} {{m|ofs|kāpia}} か。 ===={{verb}}==== {{en-verb}} #{{context|transitive|formerly|dialect|now|informal|lang=en}}{{おくりがな2|捕|と|らえる|とらえる}}、[[獲得]]する。 #{{context|transitive|罰・責任などを|lang=en}}{{おくりがな2|受|う|ける|うける}}、{{おくりがな2|負|お|う|おう}}。 #{{context|transitive|lang=en}}{{おくりがな2|盗|ぬす|む|ぬすむ}}。 #{{context|transitive|lang=en}}[[養子]]にする。 # {{lb|en|intransitive|通常、“to”を伴って|slang|悪事などを|lang=en}}{{おくりがな2|認|みと|める|みとめる}}。 ====={{drv}}===== {{top}} * {{l|en|cop a feel}} * [[cop a load of|cop a load]] * {{l|en|cop a look}} * {{l|en|cop a plea}} * {{l|en|cop off}} * {{l|en|cop on}} * [[cop out]], [[cop-out]] * {{l|en|cop and blow}} * {{l|en|cop it}} * {{l|en|cop off with}} * {{l|en|cop one's whack}} * {{l|en|cop oneself on}} * {{l|en|cop the bun}} * {{l|en|cop the needle}} {{bottom}} ==={{etym}}2=== {{m|en|copper}} の短縮 < 動詞 {{m|en|cop}} ===={{noun}}==== {{en-noun}} #{{context|slang|lang=en}}[[警察]]。 ===={{rel}}==== *[[police]] ====={{drv}}===== {{top}} * {{l|en|copless}} * {{l|en|coppish}} * {{l|en|coppy}} * {{l|en|cop shop}} * {{l|en|copaganda}} * {{l|en|cophouse}} * {{l|en|copicide}} * {{l|en|cops and robbers}} * {{l|en|copwise}} * {{l|en|death by cop}} * {{l|en|fair cop}} * {{l|en|kotong cop}} * {{l|en|ninja cop}} * {{l|en|rent-a-cop}} * {{l|en|robocop}} * {{l|en|suicide by cop}} * {{l|en|telecop}} * {{l|en|beat cop}} * {{l|en|contempt of cop}} * {{l|en|cop car}} * {{l|en|cop knock}} * {{l|en|cop-killer}} * {{l|en|cop-wise}} * {{l|en|fish cop}} * {{l|en|good cop bad cop}} * {{l|en|grammar cop}} * {{l|en|gravel road cop}} * {{l|en|mall cop}} * {{l|en|motor cop}} * {{l|en|silent cop}} {{bottom}} ==={{etym}}3=== {{etyl|enm}} {{m|enm|coppe}} < {{etyl|ang}} {{m|ang|*coppe}} < {{m|ang|copp}} < {{etyl|gmw-pro}} {{m|gmw-pro|*kopp}} < {{etyl|gem-pro}} {{m|gem-pro|*kuppaz}} < {{etyl|ine-pro}} {{m|ine-pro|*gew-}} ===={{noun}}==== {{en-noun}} #{{context|obsolete|spider|lang=en}}{{ふりがな|蜘蛛|くも}}。 ==={{etym}}4=== {{etyl|enm}} {{m|enm|cop}}, {{m|enm|coppe}} < {{etyl|ang}} {{m|ang|cop}}, {{m|ang|copp}} < {{etyl|gmw-pro}} {{m|gmw-pro|*kopp}} < {{etyl|gem-pro}} {{m|gem-pro|*kuppaz}} < {{etyl|ine-pro}} {{m|ine-pro|*gew-}} ===={{noun}}==== {{en-noun}} #{{context|obsolete|丘などの|lang=en}}{{ふりがな|頂|いただき}}、[[頂上]]。 #{{context|obsolete|lang=en}}{{ふりがな|頭|あたま}}、[[頭頂]]。{{defdate|14|15世紀}} ==={{anag}}=== * {{anagrams|en|a=cop|CPO|OCP|OPC|PCO|POC|PoC}} ---- =={{L|apq}}== ==={{etym}}=== {{etyl|qfa-adm-pro|apq}} {{m|qfa-adm-pro|*cup}} ==={{noun}}=== {{head|apq|noun}} #{{context|container|lang=apq}}{{ふりがな|籠|かご}}。 ---- =={{L|oc}}== ==={{noun}}=== {{oc-noun|m}} #[[còp]]の異綴。 ---- =={{L|ca}}== ==={{alter}}=== * {{l|ca|colp}} (方言) ==={{etym}}=== {{etyl|roa-oca|ca}} {{m|roa-oca|colp}} < {{etyl|LL.|ca}} {{m|la|colpus}} < {{etyl|la|ca}} {{m|la|colaphus}} ==={{pron}}=== * {{ca-IPA|ò}} ==={{noun}}=== {{ca-noun|m}} #[[打撃]]。 #[[時機]]、[[機会]]。 ===={{syn}}==== * (語義2) {{l|ca|vegada}}, {{l|ca|volta}} ===={{drv}}==== * {{l|ca|copejar}} * {{l|ca|cop de gràcia}} * {{l|ca|cop baix}} * {{l|ca|cop d'estat}} * {{l|ca|cop d'ull}} * {{l|ca|de cop}} * {{l|ca|un cop}} ---- =={{L|fro}}== ==={{noun}}=== {{fro-noun|m}} #[[colp]]の異形。 ---- =={{L|gd}}== ==={{etym}}=== {{etyl|mga|gd}} {{m|mga|copp}} < {{etyl|ang|gd}} {{m|ang|copp}} 又は{{etyl|enm|gd}} {{m|enm|copp}} < {{etyl|gmw-pro|gd}} {{m|gmw-pro|*kopp}} ==={{pron}}=== * {{IPA|lang=gd|kʰɔhp}} ==={{noun}}=== {{gd-noun|g=m|gen=coip|pl=coip}} #{{ふりがな|泡|あわ}}。 ===={{drv}}==== * {{l|gd|copach}} * {{l|gd|cop na mara}} * {{l|gd|copraich}} * {{l|gd|cop ri do bheul}} ==={{verb}}=== {{gd-verb|past=chop|fut=copidh|vn=copadh|pp=copte}} #{{context|nautical|lang=gd}}[[転覆]]する。 #{{おくりがな3|泡|あわ||立|だ|つ|あわだつ}}。 {{gd-mut-cons|c|op}} ---- =={{L|enm}}== ==={{alter}}=== * {{l|enm|cope}}, {{l|enm|coppe}} ==={{etym}}=== {{etyl|ang|enm}} {{m|ang|cop}} < {{etyl|gmw-pro|enm}} {{m|gmw-pro|*kopp}} ==={{pron}}=== * {{IPA|lang=enm|kɔp}} ==={{noun}}=== {{enm-noun|pl=coppes}} #[[山頂]]。 #{{ふりがな|頂|いただき}}、[[頂上]]。 #{{context|anatomy|lang=enm}}{{ふりがな|頭|あたま}}、[[頭頂]]。 ===={{desc}}==== * {{desc|cy|copa|bor=1}} * {{desc|en|cop}} * {{desc|sco|cop}}, {{l|sco|coppe}} * {{desc|yol|kappas}} ---- =={{L|fr}}== ==={{etym}}=== [[copain]]の短縮 ==={{pron}}=== * {{fr-IPA|coppe}} ==={{noun}}=== {{fr-noun|m}} #{{context|informal|lang=fr}}{{ふりがな|友達|ともだち}}。 lsjhxkbc3eclz2kydi4066oc9zb98rw ねる 0 11411 2313373 2001064 2026-08-09T06:23:43Z ちょこれ゚いとみんと 129959 2313373 wikitext text/x-wiki {{also|ネル}} =={{L|ja}}== ==={{verb}}:寝る=== {{ja-verb}}【[[寝]]る、[[寐]]る】 #[[睡眠]]をとる。[[ねむる]]。 #*「私は今夜寝る所もないので、どうしたものかと考えているのです」と、恐る恐る返事をしました。([[w:芥川龍之介|芥川龍之介]] 『杜子春』) #横たわる。 #*[[横臥]]したいと思ったが'''寝る'''所がないから机の上に[[つっぷす|突伏し]]て右に左に頭をもたせてみたが胸苦しさは増すばかりで全身は[[あせばむ|汗ばん]]で来た。([[w:寺田寅彦|寺田寅彦]] 『病中記』) #{{タグ|ja|婉曲}}(「〜とねる」の形で)[[性交]]する。 #*[[行状]]だってちっとも自慢することはない、素人の娘、ひとの[[かみさん]]、[[なか]](新吉原)には[[なじみ|馴染]]もいたし品川も知っている、酔ったときには[[けころ]]と'''寝た'''こともあるくらいで、ただ、[[しんそこ]][[ほれる|惚れ]]た相手がなかった、というのが[[とりえ|取り得]]といえばいえたかもしれない。([[w:山本周五郎|山本周五郎]]『おさん』) #[[活用]]されないままである。 ===={{conjug}}==== {{日本語下一段活用}} ===={{ant}}==== *[[おきる]] ===={{rel}}==== 語義1 *他動詞形:[[ねかす]]、[[ねかせる]]、[[ねせる]] *[[ねいる]]、[[ねこむ]]、[[ねちがえる]]、[[ねつく]]、[[ねむる]] *[[ねおき]]、[[ねごと]]、[[ねざめ]]、[[ねたきり]]、[[ねちがえ]]、[[ねつき]]、[[ねびえ]]、[[ねものがたり]] ===={{idiom}}==== 語義1 *[[ねてもさめても]] 語義3 *[[時代と寝る]] ===={{pron}}==== {{ja-pron|acc=2}} {{ja-accent-common|region=京阪|h||ねる}} ===={{trans}}==== {{trans-top|眠る}} *{{T|en}}: [[sleep]], [[go to bed]] *{{T|eo}}: [[dormi]] *{{T|fi}}: [[nukkua]], [[käydä nukkumaan]] *{{T|no}}: *:{{T|nb}}: [[sove]] {{trans-bottom}} {{trans-top|横たわる}} *{{T|en}}: [[lie]] *{{T|eo}}: [[kuŝiĝi]] *{{T|tr}}: [[yatmak]] *{{T|fi}}: [[maata]] {{trans-bottom}} {{trans-top|性交する}} *{{T|eo}}: [[koiti]] *{{T|fi}}: [[maata]] {{trans-bottom}} ===={{desc}}==== * {{desc|ycr|neru}} ==={{verb}}:練る=== '''ねる'''【[[練]]る [[錬]]る、[[煉]]る、[[邌]]る】 # [[ひ|火]]にかけるなどして、[[時間]]をかけて、[[むら]]のないように[[こねる|こね]][[かためる|固める]]。 #*小児が外に遊ぶ時は土を'''煉り'''て、様様の物を作る(新保磐次『日本読本』1887) # [[金属]]を[[やく|焼いて]][[硬質]]なものに[[きたえる]]。 # [[人格]]、[[学問]]、[[技能]]を鍛える。修行する。[[修養]]する。 #*先ず心境を'''練る'''ことをしないで、ただ先へとばかり進みたがるのは、多くの未成大家の弊である。([[w:豊島与志雄|豊島与志雄]]『旅人の言』「野に声なし」1924)<!--1955年没--> # よりよくするために[[内容]]を[[検討]]したり、[[て|手]]を[[くわえる|加え]]たりする。 #*美妙巧緻の文章をもて其の模範となし師表となしもて其文を'''練る'''べきなり(坪内逍遙『小説神髄』上「小説の裨益」1886) # [[海水]]を[[にる|煮て]][[しお|塩]]を[[精製]]する。 # [[行列]]を[[つくる|作って]][[ゆっくり]][[すすむ|進む]]。 #*太夫とおなじ顔して、'''練っ'''てゆくもおかし(浮世草子・傾城色三味線、1701) ===={{conjug}}==== {{日本語五段活用}} ===={{drv}}==== * [[ねりきり|練り切り]]{{wp|練り切り}}、[[ねりもの|練り物]]{{wp|練り物}} ====={{syn}}===== 語義1 *{{おくりがな2|捏|こ|ねる|こねる}} 語義2 *[[錬成]]する、[[鍛錬]]する 語義3 *[[錬成]]する、[[鍛錬]]する、[[修練]]する。 ====={{prov}}===== 語義1 *{{おくりがな3|捏|ね|り|固|かた|める|ねりかためる}} *{{おくりがな3|練|ね|り|固|かた|める|ねりかためる}} 語義4 *{{おくりがな3|練|ね|り|上|あ|げる|ねりあげる}} 語義6 *{{おくりがな3|練|ね|り|歩|ある|く|ねりあるく}} ===={{pron}}==== {{ja-pron|acc=1}} {{ja-accent-common|region=京阪|h|ね|る}} ===={{trans}}==== {{trans-top|語義1:こねる}} *{{T|eo}}: [[knedi]] {{trans-bottom}} {{trans-top|語義2:(金属を)鍛える}} *{{T|eo}}: [[forĝi]], [[hardi]] *{{T|en}}:{{t|en|forge}} {{trans-bottom}} {{trans-top|語義3:修養する}} *{{T|eo}}: [[forĝi]], [[hardi]] *{{T|en}}:{{t|en|train}}、{{t|en|polish}} {{trans-bottom}} {{trans-top|語義4:検討する}} *{{T|en}}:{{t|en|polish}}、{{t|en|elaborate}}、{{t|en|gestate}} {{trans-bottom}} f90hzo8pyaa4ezl6g6yps6uj6ksx1q4 plumbum 0 11842 2313118 1544957 2026-08-08T14:05:31Z M-30722 1202 2313118 wikitext text/x-wiki =={{L|ms}}== ==={{alter}}=== * {{l|ms|pelambam}} * {{l|ms|ڤلومبوم|sc=Arab}} * {{l|ms|ڤلمبم|sc=Arab}} ==={{etym}}=== {{etyl|la|ms}} {{m|la|plumbum}} ==={{pron}}=== * {{IPA|lang=ms|[plumbom]|[plumbəm]|[plambəm]}} * {{rhymes|umbom|bom|om}} ==={{noun}}=== {{ms-noun|j=ڤلومبوم}} #{{context|chemical element|metal|lang=ms}}{{ふりがな|鉛|なまり}}。 ===={{syn}}==== * {{l|ms|timah hitam}} / {{l|ms|تيمه هيتم|sc=Arab}} * {{l|ms|timbel}} / {{l|ms|تيمبل|sc=Arab}} =={{L|la}}== ==={{etym}}=== {{etyl|grc|la}} {{m|grc|μόλυβδος}} ==={{pron}}=== * {{la-IPA|plumbum}} ==={{noun}}=== {{la-noun+|plumbum<2>}} #{{context|chemical element|metal|uncountable|lang=la}}{{ふりがな|鉛|なまり}}。 # 鉛玉([[銃弾]])。 #{{context|tool|lang=la}}[[鉛筆]]。 {{la-ndecl|plumbum<2>}} ===={{drv}}==== * {{l|la|plumbum album}} * {{l|la|plumbum nigrum}} * 元素記号:[[Pb]] ===={{rel}}==== {{top}} * {{l|la|plumbāgo}} * {{l|la|plumbāre}} * {{l|la|plumbārium}} * {{l|la|plumbārius}} * {{l|la|plumbātūra}} * {{l|la|plumbātus}} * {{l|la|plumbea}} * {{l|la|plumbeum}} * {{l|la|plumbeus}} * {{l|la|plumbōsus}} {{bottom}} ===={{desc}}==== {{top}} * {{desc|ast|plomu}} * {{desc|rup|pliumbu}}, {{l|rup|pljumbu}} * {{desc|sq|plumb}} * {{desc|it|piombo}} * {{desc|cy|plwm}} * {{desc|vec|piònbo}} * {{desc|en|plumb}}, {{l|en|plumber}}, {{l|en|plumbing}} * {{desc|oc|plomb}} * {{desc|ca|plom}} * {{desc|gl|chumbo}} * {{desc|co|piombu}} * {{desc|sc|peumu}}, {{l|sc|piumbu}}, {{l|sc|piumu}}, {{l|sc|plumbu}} * {{desc|scn|chiummu}} * {{desc|es|plomo}} * {{desc|nap|cchiummo}} * {{desc|fr|plomb}}, {{l|fr|plombe}} ** {{desc|de|Plombe|bor=1}} * {{desc|fur|plomp}}, {{l|fur|plomb}} * {{desc|pt|chumbo}}, {{l|pt|prumo}} * {{desc|li|plómb}} * {{desc|ro|plumb}} * {{desc|rm|plum}}, {{l|rm|plùn|g=m}}, {{l|rm|plùm|g=m}}, {{l|rm|plom|g=m}} {{bottom}} norkk02hpwpbikk3822wmpcrz8pj5px 0 13047 2313357 2183945 2026-08-09T04:29:17Z Jiba1219 100610 /* {{L|zh}} */ 2313357 wikitext text/x-wiki {{kana-DEFAULTSORT|じゅう}} ==漢字== {{kanji|里|2}} {{kanji variants|𫟯=[[俗字]]}} {{筆順}} ===字源=== * [[象形文字|象形]]。荷物(音符「[[東]] {{phoneme|*TONG}}」を兼ねる)を背負った人物を象る<ref group="字源">丁山 『説文闕義箋』 中央研究院歴史語言研究所、1930年、28頁。<br>柯昌濟 『韡華閣集古録跋尾』 余園叢刻、1935年。<br>張世超、孫凌安、金国泰、馬如森 『金文形義通解』 中文出版社、1996年、2058頁。<br>林志強等評注 『《文源》評注』 中国社会科学出版社、2017年、564頁。</ref>。「[[おもい]]」を意味する[[漢語]]{重 {{phoneme|*drongɁ}}}を表す字。のち仮借して「[[かさねる]]」を意味する漢語{重 {{phoneme|*drong}}}にも用いる。 <references group="字源" /> ===音=== {| class="wikitable" style="text-align:center" |+ 字音一覧 ! rowspan=2 | !! colspan=4 | [[:w:中古音|中古音]] !! [[#中国語|現代中国語]] !! colspan=2|[[#日本語|日本語]] !! [[#朝鮮語|朝鮮語]] !! [[#ベトナム語|ベトナム語]] |- ! [[:w:三十六字母|三十六字母]] !! 中古音の[[四声]] !! 『[[w:広韻|広韻]]』 !! 『[[:s:zh:平水韻|平水韻]]』 !! [[普通話]] !! [[漢音]] !! [[呉音]] !! [[:w:朝鮮漢字音|朝鮮漢字音]] !! [[:w:チュハン|漢越語]] |- ! rowspan=2 | [[#A: 上声腫韻あるいは去声宋(用)韻|A]] | rowspan=3 | [[:w:zh:澄母|澄母]] || [[:w:四声|上声]] || colspan=2 | 腫韻 || rowspan=2 | zhòng || rowspan=3 | チョウ || rowspan=3 | ヂウ<br>ヂュウ || rowspan=3 | 중 || rowspan=2 | trọng |- | [[:w:四声|去声]] || 用韻 || 宋韻 |- ! [[#B: 平声冬(錘)韻|B]] | [[:w:四声|平声]] || 錘韻 || 冬韻 || rowspan="2" | chóng || trùng |} <span style="font-size:smaller;">(呉音を「ヂウ」とする字書も「ヂュウ」とする字書もある。)</span> ===意義=== (括弧内は『広韻』、外は『平水韻』に従う。一致する場合括弧は記さず。) ====A: 上声腫韻あるいは去声宋(用)韻==== ===== {{adj}} ===== #<span id="omoi">'''[[おもい]]'''</span>。 #*{{ant}}: 「'''[[軽]]'''」 #[[おもおもしい]]。 #*「[[厳重]]」、「[[丁重]]」、「[[慎重]]」、「[[重罪]]」、「{{ふりがな|自重|じちょう}}」 #([[:w:目的語|賓語]]を伴って)'''[[おもんじる]]'''。[[とうとぶ]]。大切にする。 #*{{drv}}: 「[[尊重]]」「[[丁重]]」 #*{{ant}}: 「'''[[軽]]'''」 ====={{noun}}===== #'''[[おもさ]]'''。 #*{{drv}}: 「[[軽重]]」、「{{ふりがな|自重|じじゅう}}」 #*{{ant}}: 「'''[[軽]]'''」 #[[ベトナム語]]の[[声調]]の一つ「'''[[:w:zh:越南語音系#聲調|重声]]'''」。[[thanh nặng]]のこと。 #[[:w:zh:日本漢字音的聲調#漢音的聲調|日本漢字音]]において[[四声]]の下位分類。低く始まる[[声調]]と推定されている。「重」<span style="font-size:smaller;">(全濁字)</span>など[[:w:声母|声母]]が[[:w:清濁|全濁]]または[[:w:清濁|次濁]]である字の[[漢音]]に確認される。 #*「平聲直低、有<sub>㆑</sub>輕有<sub>㆑</sub>'''重'''。」({{ふりがな|平聲|ひゃうしゃう|yomi2=へいせい|yomilink=n}}は直低にして、{{ふりがな|輕|けい|yomilink=n}}有りて{{ふりがな|重|ちょう|yomilink=n}}有り。) #*:[[:w:四声|平声]]は平らで低く、[[軽]]があるとともに'''重'''がある。<span style="font-size:smaller;">([[:w:安然|安然]]『悉曇藏』)</span> #*{{ant}}: 「'''[[軽]]'''」 #*{{rel}}: 「[[陽]]」 ====B: 平声冬(錘)韻==== ===== {{verb}} ===== #<span id="kasanaru">'''[[かさなる]]'''</span>。<span id="kasaneru">'''[[かさねる]]'''</span>。 #*「[[重複]]」、「[[重畳]]」、「[[重層的]]」 #*「'''重'''山'''重'''水'''重'''慶府」 #*:重なった山、重なった河川、{{ふりがな|[[w:重慶市|重慶府]]|ぢゅうけいふ|yomilink=n}}。<span style="font-size:smaller;">([[:w:zh:蒋一葵|蔣一葵]]『堯山堂外紀』)</span> ===== {{adv}} ===== #'''[[かさねて]]'''。[[ふたたび]]。 #*「爾時二子欲<sub>三</sub>重宣<sub>二</sub>其意<sub>一</sub>、」({{おくりがな2|爾|そ|の|その}}時に二子{{おくりがな2|重|かさ|ね|かさぬ}}て{{おくりがな2|其|そ|の|その}}意を{{おくりがな2|宣|の|べ|のぶ}}むと欲して、) #*:そのときに二人の子は''もう一度'' 自分の([[沙門]]になるという)意思を(母親に)告げようと思って、<span style="font-size:smaller;">([[:s:zh:妙法蓮華經/27|『妙法蓮華經』「妙莊嚴王本事品第二十七」]])</span> ===== 量詞 ===== #<span id="e">'''[[え]]'''</span>。どれほどかさなったかを表す。 #*「[[十重二十重]]」。 #*「輕舟已過萬'''重'''山」({{ふりがな|[[軽舟|輕舟]]|けいしゅう}}{{おくりがな2|已|すで|に|すでに}}{{おくりがな2|過|す|ぐ|すぐ}}{{ふりがな|[[万重|萬重]]|ばんちょう|yomilink=n}}の山) #*:(私の乗る)軽くて速く進む小舟がすでに幾重もの山の間を通り過ぎた。<span style="font-size:smaller;">(『[[:q:ja:李白|早發<sub>二</sub>白帝城<sub>一</sub>]]』)</span> =={{L|ja}}== [[Category:{{ja}}]] {{ja-kanji|常用=ジュウ,チョウ,え,おも-い,かさ-ねる,かさ-なる|施策=教育:3|呉音=ジュウ|漢音=チョウ|訓=え,おも-い,かさ-ねる,かさ-なる,しげ,おも-なう,おも-り,しげ-る,さね}} ==={{noun}}=== [[category:{{ja}}_{{noun}}]] #(ジュウ)[[重箱]]。お重。また重箱に入った料理。 ==={{suffix}}=== [[category:{{ja}}_{{suffix}}]] '''重'''(ジュウ、え) #(ジュウ)[[音読み]]の[[基数詞]]とともに、ものが重なり合っている状況の語を構成する。 #*{{ruby|[[二重顎]]|にじゅうあご}}、{{ruby|[[三重苦]]|さんじゅうく}}、{{ruby|[[四重奏]]|しじゅうそう}}、{{ruby|[[五重塔]]|ごじゅうのとう}}など。 #(え)「[[え#接尾辞]]」を参照のこと。 ==={{prov}}=== {{top}} *[[重重]] *[[重圧]] *[[重音]] *[[重荷]] *[[重金属]] *[[重元素]] *[[重言]] *[[重合]] *[[重婚]] *[[重重]] *[[重唱]] *[[重心]] *[[重臣]] *[[重水]] *[[重奏]] *[[重大]] *[[重点]] *[[重任]] *[[重版]] *[[重文]] *[[重用]] *[[重要]] *[[重量]] *[[重力]] *[[重傷]] *[[重厚]] *[[重刷]] *[[重度]] *[[重役]] *[[重刑]] *[[重箱]] *[[重犯]] *[[重複]] *[[重罰]] *[[重視]] *[[重機]] {{bottom}} {{top}} *[[自重]] *[[持重]] *[[加重]] *[[荷重]] *[[過重]] *[[比重]] *[[貴重]] *[[多重]] *[[厳重]] *[[鰻重]] *[[軽重]] *[[敬重]] *[[愛重]] *[[深重]] *[[慎重]] *[[体重]] {{bottom}} =={{L|zh}}== {{zh-cat|zhong4|常=1|adjective|noun|verb|adverb|hsk=甲|hsk2=5}} {{zh-han |m=zhòng,chóng |c=cung4 / cung5 / zung6 |mn=tāng/tiōng/têng/tiông |pfs=chhùng / chhûng / Tshùng |w-mini=zon1 / zon2 }} ** '''[[中古音]]''': *drjowngX, *drjowngH, *drjowng ** '''[[上古音]]''': *N-t‹r›oŋʔ, *N-t‹r›oŋʔ-s, *m-troŋ {*[m]-troŋ} ==={{adjective}}=== zhòng #{{おくりがな2|重|おも|い|おもい}}。 #{{おくりがな2|甚|はなは|だしい|はなはだしい}}。 ==={{noun}}=== zhòng #[[重量]]。 ==={{verb}}=== chóng #[[重複]]する。 zhòng #[[重視]]する。 ==={{adverb}}=== #(広東語 jung6)[[まだ]]。 #(広東語 jung6)[[もっと]]。 chóng #{{おくりがな2|再|ふたた|び|ふたたび}}。 ===量詞=== [[Category:{{zh}}_量詞|chong2]] chóng #[[層]]。 [[Category:{{yue}}|jung6]] [[Category:{{yue}}_{{adjective}}|chung5]] [[Category:{{yue}}_{{adverb}}|jung6]] ==={{prov}}=== {{rel-top}} *{{l|zh|重逢}} *{{l|zh|重印}} *{{l|zh|重演}} *{{l|zh|重温}} *{{l|zh|重温旧梦}} *{{l|zh|重活}}, {{l|zh|重活儿}} *{{l|zh|重刊}} *{{l|zh|重机关枪}} *{{l|zh|重起炉灶}} *{{l|zh|重金}} *{{l|zh|重九}} *{{l|zh|重沓}} *{{l|zh|重型}} *{{l|zh|重建}} *{{l|zh|重午}}, {{l|zh|重五}} *{{l|zh|重孝}} *{{l|zh|重工业}} *{{l|zh|重行}} *{{l|zh|重彩}} *{{l|zh|重施故技}} *{{l|zh|重修}} *{{l|zh|重修旧好}} *{{l|zh|重出}} *{{l|zh|重床叠屋}} *{{l|zh|重振}} *{{l|zh|重新}} *{{l|zh|重新做人}} *{{l|zh|重申}} *{{l|zh|重整旗鼓}} *{{l|zh|重生}} *{{l|zh|重生父母}} *{{l|zh|重足而立}} *{{l|zh|重托}} *{{l|zh|重担}} *{{l|zh|重地}} *{{l|zh|重提}} *{{l|zh|重播}} *{{l|zh|重犯}} *{{l|zh|重武器}} *{{l|zh|重文}} *{{l|zh|重兵}} *{{l|zh|重返}} *{{l|zh|重望}} *{{l|zh|重油}} *{{l|zh|重洋}} *{{l|zh|重来}} *{{l|zh|重炮}} *{{l|zh|重臂}} *{{l|zh|重蹈覆辙}} *{{l|zh|重霄}} *{{l|zh|重伤}} *{{l|zh|重创}} *{{l|zh|重剑}} (zhòngjiàn) *{{l|zh|重办}} *{{l|zh|重压}} *{{l|zh|重叠}} *{{l|zh|重围}} *{{l|zh|重圆}} *{{l|zh|重处}} *{{l|zh|重复}} *{{l|zh|重头戏}} *{{l|zh|重奖}} *{{l|zh|重孙}} *{{l|zh|重孙女}}, {{l|zh|重孙女儿}} *{{l|zh|重审}} *{{l|zh|重峦叠嶂}} *{{l|zh|重张}} *{{l|zh|重弹老调}} *{{l|zh|重惩}} *{{l|zh|重样}} *{{l|zh|重氢}} *{{l|zh|重现}} *{{l|zh|重茬}} *{{l|zh|重见天日}} *{{l|zh|重规叠矩}} *{{l|zh|重视}} *{{l|zh|重译}} *{{l|zh|重话}} *{{l|zh|重读}} *{{l|zh|重负}} *{{l|zh|重责}} *{{l|zh|重镇}} *{{l|zh|重阳}} *{{l|zh|繁重}} (fánzhòng) {{rel-bottom}} =={{L|ko}}== {{ko-han|중|eumhun=[[무겁다|무거울]] 중}} ==={{prov}}=== * {{l|ko|삼중살}} &lt;[[三重殺]]&gt; * {{l|ko|소중}} &lt;[[所重]]&gt; =={{L|vi}}== {{vi-han|trọng|trùng|pos=verb|pos2=name|cat2=人名}} ==={{verb}}=== trọng #{{おくりがな2|重|おも|んじる|おもんじる}}。 trùng #[[同時]]に{{おくりがな2|起|お|こる|おこる}}。 ==={{name}}=== [[Trọng]] #ベトナム人のミドルネームのひとつ。 =={{コード}}== {{文字コード|jis=1-29-37|mj={{mjmoji|026593|060258}}|gb=D6D8|cns=1-536C|big5=ADAB|ksx=1001-716C}} {{検字|倉頡=HJWG|四角=2010.4}} {{字典|dj=1791.070|hdz=63680.020|大字源=10482|大漢語林=11883|康煕=1291.030|新大字典=17651|新潮漢字=13167|諸橋=40132}} lbfw97tt5t5479mxq4lqn3wyoq433ew haw 0 15723 2313153 2111945 2026-08-08T22:38:16Z Kuroco2k 84207 2313153 wikitext text/x-wiki ==記号== ==={{code}}=== '''{{PAGENAME}}''' #{{ISO 639|2&3|haw}} ---- =={{ain}}== [[File:MapOfAinuLanguage-Voice.svg|thumb|400px|アイヌ語地図:声]] {{ain-kana}} ==={{pron}}=== * {{ain-IPA}} ==={{noun}}=== {{head|ain|noun|概念形||所属形|hawe|所属形|hawehe}} #(人間や動物の)[[声]];(バイオリンなどの)[[音]]。 ====派生語==== *[[hawas]] ハワㇱ 声がする、言っているのが聞こえる *[[hawe]] ハウェ ~と言うこと *[[hawean]] ハウェアン (単数)言う *[[hawekoyki]] ハウェコイキ 怒鳴りつける *[[haweoka]] ハウェオカ (沙流方言などで。複数)言う *[[haweokay]] ハウェオカイ (多くの方言で。複数)言う *[[hawkoas]] ハウコアㇱ 問題になる *[[hawkor]] ハウコㇿ 声を出す、ものを言う、しゃべる *[[hawpis]] ハウピㇱ 何か言う *[[hawsak]] ハウサㇰ 黙る、声を立てない ===={{syn}}==== * [[hum]] フㇺ (太鼓など一般の)音 ---- ==英語== [[Category:英語]] [[Category:英語 名詞]] ===発音=== *{{IPA|hɔː}} * {{audio|en|LL-Q1860 (eng)-Vealhurl-haw.wav|音声 (英)}} ===名詞=== # [[さんざし]]の実 ===関連語=== *[[hawthorn]] pkrjsp2xoordtefr1tgroel71qdlny6 愛情 0 15819 2313330 2148294 2026-08-09T02:45:22Z Jiba1219 100610 2313330 wikitext text/x-wiki {{kana-DEFAULTSORT|あいじょう}} =={{L|ja}}== {{ja-kanjitab|あい|じょう|yomi=o,goon}} ==={{pron}}=== {{ja-pron|あいじょう|acc=0}} {{ja-accent-common|region=京阪|h||あいじょー}} ==={{noun}}=== {{ja-noun|[[あいじょう]]}} # 対象を[[いつくしむ]][[気持ち]]。 ===={{rel}}==== *[[愛情表現]] ===={{trans}}==== {{trans-top}} *{{T|is}}: [[elska]], [[ást]] *{{T|ga}}: [[grá]] *{{T|af}}: [[liefde]] *{{T|ar}}: {{ARchar|[[حب]]}} (ħubb) *{{T|sq}}: [[dashuri]] {{f}} *{{T|hy}}: [[սեր]] (ser) *{{T|it}}: [[amore]] {{m}} *{{T|ia}}: [[amor]] *{{T|id}}: [[cinta]] *{{T|cy}}: [[cariad]] {{m}} *{{T|uk}}: [[кохання]] (kokhannja), [[любов]] (ljubov) *{{T|ur}}: {{URchar|[[محبت]]}} (muhabbat) {{f}}, {{URchar|[[عشق]]}} ('išq) {{m}}, {{URchar|[[پیار]]}} (pyār) {{m}} *{{T|en}}: [[love]], [[affection]] *{{T|ee}}: [[lɔlɔ̃]] *{{T|eo}}: [[amo]] *{{T|et}}: [[armastus]] *{{T|nl}}: [[liefde]] {{f}} *{{T|ca}}: [[amor]] {{m}} *{{T|el}}: [[αγάπη]] (agápi) *{{T|ky}}: [[сүйүү]] (süyüü), [[макаббат]] (maqabbat) *{{T|sm}}: [[alofa]] *{{T|sv}}: [[kärlek]] {{c}} *{{T|gd}}: [[gràdh]] {{m}}, [[spèis]] {{f}} *{{T|es}}: [[amor]] {{m}} *{{T|sk}}: [[láska]] {{f}} *{{T|sl}}: [[ljubezen]] {{f}} *{{T|sh}}: *:キリル文字: {{t|sh|љубав|f}} *:ラテン文字: {{t|sh|ljubav|f}} *{{T|th}}: {{lang|th|[[รัก]]}}、{{THchar|[[ความรัก]]}} (khwamrak) *{{T|tl}}: [[pag-ibig]] *{{T|tt}}: [[ярату]] *{{T|ta}}: [[காதல்]] (Kadhal, 男女間の性愛), [[அன்பு]], [[பாசம்]] *{{T|cs}}: [[láska]] {{f}} *{{T|cv}}: [[юрату]] *{{T|te}}: [[ప్రేమ]] (prEma) *{{T|da}}: [[kærlighed]] *{{T|de}}: [[Liebe]] {{f}} *{{T|tr}}: [[sevgi]] *{{T|no}}: [[kjærlighet]] *{{T|haw}}: [[aloha]] *{{T|hu}}: [[szeretet]] *{{T|hi}}: [[प्यार]] (pyār) {{m}}, [[प्रेम]] (prem) {{m}}, [[इश्क़]] (išq) {{m}}, [[मुहब्बत]] (muhabbat) {{f}} *{{T|fi}}: [[rakkaus]] *{{T|fr}}: [[amour]] {{m}} *{{T|br}}: [[karantez]] {{f}} *{{T|vi}}: [[tình yêu]] *{{T|he}}: {{he-translation|אהבה|ahavá}} {{f}} *{{T|fa}}: {{FAchar|[[عشق]]}} (‘eshq), {{FAchar|[[مهر]]}} (mehr),[[محبت]] (mahabbat), [[عاطفه]] (‘ātefe) *{{T|pl}}: [[miłość]] {{f}} *{{T|pt}}: [[amor]] *{{T|mi}}: [[aroha]] *{{T|mn}}: [[хайр]] *{{T|la}}: [[amor]] {{m}}, [[caritas]] {{f}} *{{T|lv}}: [[mīlestība]] {{f}}, [[mīla]] {{f}} *{{T|lt}}: [[meilė]] *{{T|ro}}: [[iubire]], [[dragoste]], [[amor]] *{{T|lb}}: [[Léift]] *{{T|ru}}: [[любовь]] (ljubóv’) {{f}} {{trans-bottom}} =={{L|zh}}== ==={{pron}}=== {{cmn-pron|àiqíng|a=y}} {{yue-pron|oi3 cing4}} {{nan-pron|ài-chêng|t=ain3 cêng5}} {{cpx-pron|pt,xy:ai4 *zing2}} {{hak-pron|oi-chhìn|h=oiˇ cin|gd=oi4 qin2}} {{wuu-pron|sh:5e zhin}} ==={{noun}}=== {{zhchars|s=爱情}} #(日本語に同じ。ただし特に男女間のものを言う)愛情。 {{zh-cat|ai4qing2|名詞}} {{yue-cat|ngoi3ching4|名詞}} {{nan-cat|ai3cheng5|名詞}} {{nan-tws-cat|ain3ceng5|名詞}} {{cpx-cat|ai4zing2|名詞}} {{hak-cat|oi4chhin2|名詞}} {{wuu-cat|e3zhin3|名詞}} =={{L|ko}}== ==={{noun}}=== {{ko-head|noun|애정}} #(日本語に同じ)愛情。 ===={{syn}}==== * {{l|ko|사랑}} =={{L|vi}}== ==={{noun}}=== {{vi-head|noun|ái|tình}} #(日本語に同じ)愛情。 4bzwmy2xta94m9j819pu7z9efqfyrrn 2313333 2313330 2026-08-09T02:48:44Z Jiba1219 100610 /* {{L|zh}} */ 2313333 wikitext text/x-wiki {{kana-DEFAULTSORT|あいじょう}} =={{L|ja}}== {{ja-kanjitab|あい|じょう|yomi=o,goon}} ==={{pron}}=== {{ja-pron|あいじょう|acc=0}} {{ja-accent-common|region=京阪|h||あいじょー}} ==={{noun}}=== {{ja-noun|[[あいじょう]]}} # 対象を[[いつくしむ]][[気持ち]]。 ===={{rel}}==== *[[愛情表現]] ===={{trans}}==== {{trans-top}} *{{T|is}}: [[elska]], [[ást]] *{{T|ga}}: [[grá]] *{{T|af}}: [[liefde]] *{{T|ar}}: {{ARchar|[[حب]]}} (ħubb) *{{T|sq}}: [[dashuri]] {{f}} *{{T|hy}}: [[սեր]] (ser) *{{T|it}}: [[amore]] {{m}} *{{T|ia}}: [[amor]] *{{T|id}}: [[cinta]] *{{T|cy}}: [[cariad]] {{m}} *{{T|uk}}: [[кохання]] (kokhannja), [[любов]] (ljubov) *{{T|ur}}: {{URchar|[[محبت]]}} (muhabbat) {{f}}, {{URchar|[[عشق]]}} ('išq) {{m}}, {{URchar|[[پیار]]}} (pyār) {{m}} *{{T|en}}: [[love]], [[affection]] *{{T|ee}}: [[lɔlɔ̃]] *{{T|eo}}: [[amo]] *{{T|et}}: [[armastus]] *{{T|nl}}: [[liefde]] {{f}} *{{T|ca}}: [[amor]] {{m}} *{{T|el}}: [[αγάπη]] (agápi) *{{T|ky}}: [[сүйүү]] (süyüü), [[макаббат]] (maqabbat) *{{T|sm}}: [[alofa]] *{{T|sv}}: [[kärlek]] {{c}} *{{T|gd}}: [[gràdh]] {{m}}, [[spèis]] {{f}} *{{T|es}}: [[amor]] {{m}} *{{T|sk}}: [[láska]] {{f}} *{{T|sl}}: [[ljubezen]] {{f}} *{{T|sh}}: *:キリル文字: {{t|sh|љубав|f}} *:ラテン文字: {{t|sh|ljubav|f}} *{{T|th}}: {{lang|th|[[รัก]]}}、{{THchar|[[ความรัก]]}} (khwamrak) *{{T|tl}}: [[pag-ibig]] *{{T|tt}}: [[ярату]] *{{T|ta}}: [[காதல்]] (Kadhal, 男女間の性愛), [[அன்பு]], [[பாசம்]] *{{T|cs}}: [[láska]] {{f}} *{{T|cv}}: [[юрату]] *{{T|te}}: [[ప్రేమ]] (prEma) *{{T|da}}: [[kærlighed]] *{{T|de}}: [[Liebe]] {{f}} *{{T|tr}}: [[sevgi]] *{{T|no}}: [[kjærlighet]] *{{T|haw}}: [[aloha]] *{{T|hu}}: [[szeretet]] *{{T|hi}}: [[प्यार]] (pyār) {{m}}, [[प्रेम]] (prem) {{m}}, [[इश्क़]] (išq) {{m}}, [[मुहब्बत]] (muhabbat) {{f}} *{{T|fi}}: [[rakkaus]] *{{T|fr}}: [[amour]] {{m}} *{{T|br}}: [[karantez]] {{f}} *{{T|vi}}: [[tình yêu]] *{{T|he}}: {{he-translation|אהבה|ahavá}} {{f}} *{{T|fa}}: {{FAchar|[[عشق]]}} (‘eshq), {{FAchar|[[مهر]]}} (mehr),[[محبت]] (mahabbat), [[عاطفه]] (‘ātefe) *{{T|pl}}: [[miłość]] {{f}} *{{T|pt}}: [[amor]] *{{T|mi}}: [[aroha]] *{{T|mn}}: [[хайр]] *{{T|la}}: [[amor]] {{m}}, [[caritas]] {{f}} *{{T|lv}}: [[mīlestība]] {{f}}, [[mīla]] {{f}} *{{T|lt}}: [[meilė]] *{{T|ro}}: [[iubire]], [[dragoste]], [[amor]] *{{T|lb}}: [[Léift]] *{{T|ru}}: [[любовь]] (ljubóv’) {{f}} {{trans-bottom}} =={{L|zh}}== ==={{pron}}=== {{cmn-pron|àiqíng|a=y}} {{yue-pron|oi3 cing4}} {{nan-pron|ài-chêng|t=ain3 cêng5}} {{cpx-pron|pt,xy:ai4 *zing2}} {{hak-pron|oi-chhìn|h=oiˇ cin|gd=oi4 qin2}} {{wuu-pron|sh:5e zhin}} ==={{noun}}=== {{zhchars|s=爱情}} #(日本語に同じ。ただし特に男女間のものを言う)愛情。 {{zh-cat|ai4qing2|名詞}} {{yue-cat|oi3ching4|名詞}} {{nan-cat|ai3cheng5|名詞}} {{nan-tws-cat|ain3ceng5|名詞}} {{cpx-cat|ai4zing2|名詞}} {{hak-cat|oi4chhin2|名詞}} {{wuu-cat|e3zhin3|名詞}} =={{L|ko}}== ==={{noun}}=== {{ko-head|noun|애정}} #(日本語に同じ)愛情。 ===={{syn}}==== * {{l|ko|사랑}} =={{L|vi}}== ==={{noun}}=== {{vi-head|noun|ái|tình}} #(日本語に同じ)愛情。 hdqzrs7bqi0y2h7chgk7v6983038wfr 2313337 2313333 2026-08-09T02:50:37Z Jiba1219 100610 /* {{L|zh}} */ wikipediaリンク追加 2313337 wikitext text/x-wiki {{kana-DEFAULTSORT|あいじょう}} =={{L|ja}}== {{ja-kanjitab|あい|じょう|yomi=o,goon}} ==={{pron}}=== {{ja-pron|あいじょう|acc=0}} {{ja-accent-common|region=京阪|h||あいじょー}} ==={{noun}}=== {{ja-noun|[[あいじょう]]}} # 対象を[[いつくしむ]][[気持ち]]。 ===={{rel}}==== *[[愛情表現]] ===={{trans}}==== {{trans-top}} *{{T|is}}: [[elska]], [[ást]] *{{T|ga}}: [[grá]] *{{T|af}}: [[liefde]] *{{T|ar}}: {{ARchar|[[حب]]}} (ħubb) *{{T|sq}}: [[dashuri]] {{f}} *{{T|hy}}: [[սեր]] (ser) *{{T|it}}: [[amore]] {{m}} *{{T|ia}}: [[amor]] *{{T|id}}: [[cinta]] *{{T|cy}}: [[cariad]] {{m}} *{{T|uk}}: [[кохання]] (kokhannja), [[любов]] (ljubov) *{{T|ur}}: {{URchar|[[محبت]]}} (muhabbat) {{f}}, {{URchar|[[عشق]]}} ('išq) {{m}}, {{URchar|[[پیار]]}} (pyār) {{m}} *{{T|en}}: [[love]], [[affection]] *{{T|ee}}: [[lɔlɔ̃]] *{{T|eo}}: [[amo]] *{{T|et}}: [[armastus]] *{{T|nl}}: [[liefde]] {{f}} *{{T|ca}}: [[amor]] {{m}} *{{T|el}}: [[αγάπη]] (agápi) *{{T|ky}}: [[сүйүү]] (süyüü), [[макаббат]] (maqabbat) *{{T|sm}}: [[alofa]] *{{T|sv}}: [[kärlek]] {{c}} *{{T|gd}}: [[gràdh]] {{m}}, [[spèis]] {{f}} *{{T|es}}: [[amor]] {{m}} *{{T|sk}}: [[láska]] {{f}} *{{T|sl}}: [[ljubezen]] {{f}} *{{T|sh}}: *:キリル文字: {{t|sh|љубав|f}} *:ラテン文字: {{t|sh|ljubav|f}} *{{T|th}}: {{lang|th|[[รัก]]}}、{{THchar|[[ความรัก]]}} (khwamrak) *{{T|tl}}: [[pag-ibig]] *{{T|tt}}: [[ярату]] *{{T|ta}}: [[காதல்]] (Kadhal, 男女間の性愛), [[அன்பு]], [[பாசம்]] *{{T|cs}}: [[láska]] {{f}} *{{T|cv}}: [[юрату]] *{{T|te}}: [[ప్రేమ]] (prEma) *{{T|da}}: [[kærlighed]] *{{T|de}}: [[Liebe]] {{f}} *{{T|tr}}: [[sevgi]] *{{T|no}}: [[kjærlighet]] *{{T|haw}}: [[aloha]] *{{T|hu}}: [[szeretet]] *{{T|hi}}: [[प्यार]] (pyār) {{m}}, [[प्रेम]] (prem) {{m}}, [[इश्क़]] (išq) {{m}}, [[मुहब्बत]] (muhabbat) {{f}} *{{T|fi}}: [[rakkaus]] *{{T|fr}}: [[amour]] {{m}} *{{T|br}}: [[karantez]] {{f}} *{{T|vi}}: [[tình yêu]] *{{T|he}}: {{he-translation|אהבה|ahavá}} {{f}} *{{T|fa}}: {{FAchar|[[عشق]]}} (‘eshq), {{FAchar|[[مهر]]}} (mehr),[[محبت]] (mahabbat), [[عاطفه]] (‘ātefe) *{{T|pl}}: [[miłość]] {{f}} *{{T|pt}}: [[amor]] *{{T|mi}}: [[aroha]] *{{T|mn}}: [[хайр]] *{{T|la}}: [[amor]] {{m}}, [[caritas]] {{f}} *{{T|lv}}: [[mīlestība]] {{f}}, [[mīla]] {{f}} *{{T|lt}}: [[meilė]] *{{T|ro}}: [[iubire]], [[dragoste]], [[amor]] *{{T|lb}}: [[Léift]] *{{T|ru}}: [[любовь]] (ljubóv’) {{f}} {{trans-bottom}} =={{L|zh}}== {{wikipedia|lang=zh}} {{wikipedia|lang=yue}} ==={{pron}}=== {{cmn-pron|àiqíng|a=y}} {{yue-pron|oi3 cing4}} {{nan-pron|ài-chêng|t=ain3 cêng5}} {{cpx-pron|pt,xy:ai4 *zing2}} {{hak-pron|oi-chhìn|h=oiˇ cin|gd=oi4 qin2}} {{wuu-pron|sh:5e zhin}} ==={{noun}}=== {{zhchars|s=爱情}} #(日本語に同じ。ただし特に男女間のものを言う)愛情。 {{zh-cat|ai4qing2|名詞}} {{yue-cat|oi3ching4|名詞}} {{nan-cat|ai3cheng5|名詞}} {{nan-tws-cat|ain3ceng5|名詞}} {{cpx-cat|ai4zing2|名詞}} {{hak-cat|oi4chhin2|名詞}} {{wuu-cat|e3zhin3|名詞}} =={{L|ko}}== ==={{noun}}=== {{ko-head|noun|애정}} #(日本語に同じ)愛情。 ===={{syn}}==== * {{l|ko|사랑}} =={{L|vi}}== ==={{noun}}=== {{vi-head|noun|ái|tình}} #(日本語に同じ)愛情。 1oos3708tjsw7vc9bwjwecfvt3zik1p 0 19845 2313381 2276748 2026-08-09T06:59:36Z Jiba1219 100610 /* {{L|zh}} */ 2313381 wikitext text/x-wiki {{kana-DEFAULTSORT|たい}} ==漢字== {{kanji|人|5}} {{kanji variants|體=[[旧字体]]/[[繁体字]]|躰=[[別体字]]|軆=[[別体字]]}} {{筆順}} ===字源=== 「体」には二種類の字が存在する(別字衝突)。 # 「ホン」と読まれる字。 #:[[形声文字|形声]]。「[[人]]」+音符「[[本]] {{phoneme|*PƏN}}」。「[[笨]]」の[[異体字]]。 # 「タイ」と読まれる字。 #:[[会意文字|会意]]。「[[人]]」+「[[本]]」(もと、基礎)。「[[體]]」の略体。宋の時代から用例が記録されている。 ===意義=== #[[からだ]]。 #[[かたち]]、[[すがた]]。 =={{L|ja}}== {{wikipedia}} {{Wikipedia|体 (数学)}} {{ja-kanji|常用=タイ,テイ,からだ|施策=教育:2|呉音=タイ|漢音=テイ|唐音=タ|訓=からだ,かたち,もと,すがた}} ==={{noun}}=== [[Category:{{ja}} {{noun}}]] '''体'''(からだ・タイ・テイ) #('''からだ''')「[[からだ]]」を参照。 #('''[[タイ]]''')(スポーツや武道などにおいて)[[身体]]。[[胴]]。[[体勢]]。 #*'''体'''さばき。'''体'''を入れかえる。 #('''タイ''')物事の[[本質]]。 #*[[名は体を現す|名は'''体'''を現す]]。 #('''タイ''')そのようなすがたのもの。接尾辞的にも使用される。 #*連続'''体'''、集合'''体'''、複合'''体'''、事業'''体''' [[Category:{{ja}} 助数詞|たい]] #('''タイ'''){{タグ|ja|代数学}}[[零]]による[[除算]]を除き、[[加減乗除]]が自由にできる[[代数系]]。[[加法単位元]]を除く[[任意]]の[[元]]に対して[[乗法]]における[[逆元]]が唯一存在するという性質を満たす[[可換環]]。[[実数]]や[[有理数]]の全体は体の一例で、実数に対して加減乗除を行う一般的な計算は、体の一種を扱っていることに相当する。 #('''[[テイ]]''')[[外見]]。[[みせかけ|見せかけ]]。[[様子]]。[[かたち]]。 #*[[満足]]の[[体]] #*[[事業]]の[[体]](タイ、テイ)をなしていない。 #*[[体]]のいい言い訳 ====語源==== *語義6:ドイツ語[[Körper]]の直訳より。 ===={{usage}}==== *語義6:記号としては、ドイツ語や英語の頭文字である K や F がよく使われる。 ===={{trans}}==== 語義6 *{{T|en}}: {{t|en|field}} *{{T|de}}: {{t|de|Körper|m}} ==={{suffix}}=== [[Category:{{ja}}_{{suffix}}]] [[category:{{ja}}_助数詞]] '''体'''(タイ) #('''[[タイ]]''')[[遺体]]、[[仏像]]等を数える時の[[助数詞]]。 ==={{drv}}=== *[[体する]] ==={{prov}}=== {{top||12em}} *[[体位]] *[[体育]] *[[体液]] *[[体温]] *[[体外]] *[[体格]] *[[体感]] *[[体技]] *[[体協]] *[[体躯]] *[[体刑]] *[[体型]] *[[体形]] *[[体系]] *[[体験]] *[[体現]] *[[体言]] *[[体腔]] *[[体質]] *[[体臭]] *[[体重]] *[[体術]] *[[体制]] *[[体勢]] *[[体積]] *[[体操]] *[[体中]] *[[体調]] *[[体長]] *[[体得]] *[[体内]] *[[体認]] *[[体熱]] *[[体罰]] *[[体表]] *[[体貌]] *[[体面]] *[[体毛]] *[[体様]] *[[体要]] *[[体量]] *[[体力]] *[[体裁]] *[[異体]] *[[液体]] *[[遺体]] *[[気体]] *[[機体]] *[[客体]] *[[固体]] *[[個体]] *[[抗体]] *[[鋼体]] *[[国体]] *[[錯体]] *[[死体]] *[[肢体]] *[[主体]] *[[正体]] *[[身体]] *[[錐体]] *[[生体]] *[[政体]] *[[素体]] *[[単体]] *[[団体]] *[[柱体]] *[[椎体]] *[[同体]] *[[胴体]] *[[変体]] *[[本体]] *[[融体]] *[[容体]] *[[立体]] *[[巨体]] *[[人体]] *[[風体]] *[[母体]] *[[車体]] *[[五体]] *[[図体]] *[[連体]] *[[屍体]] *[[媒体]] *[[天体]] *[[文体]] *[[女体]] *[[男体]] *[[黒体]] *[[共同体]] *[[病原体]] *[[筆記体]] *[[有機体]] *[[複合体]] *[[八面体]] *[[直方体]] *[[同位体]] *[[被写体]] *[[不導体]] *[[固溶体]] *[[六面体]] *[[多様体]] *[[染色体]] *[[拡大体]] *[[有限体]] *[[実数体]] *[[順序体]] *[[絶縁体]] *[[複素数体]] *[[有理数体]] {{bottom}} =={{L|zh}}== {{zh-cat|ti3|名詞|hsk=丁|常=1}} {{zh-han |m=tǐ|z=n |ma=Zh-ti.ogg |m-s=ti3 |m-x=tì |m-nj=tǐ }} ** '''[[広東語]]''' *** '''[[ピンイン]]''': [[ban6]], [[tai2]] *** '''[[イェール式]]''': tai2 ** '''[[閩南語]]''' *** '''[[POJ]]''': thái, thóe, thúiⁿ, thé ** '''[[閩東語]]''' *** '''[[平話字]]''': tā̤ ** '''[[閩北語]]''' *** '''[[KCR]]''': tǐ ** '''[[客家語]]''' *** '''[[白話字]]''': thí ** '''[[呉語]]''' *** '''[[ピンイン]]''': thi2, ben2 ** '''[[贛語]]''': ti3 ** '''[[晋語]]''': ti2 ** '''[[湘語]]''': ti3 ==={{noun}}=== #[[書体]]。 #{{タグ|zh|文法|sort=ti3}}[[相]]、[[アスペクト]]。 ===={{prov}}==== {{top}} *[[体察]] *[[体尝]] *[[体词]] *[[体大思精]] *[[体罚]] *[[体会]] *[[体积]] *[[体检]] *[[体力劳动]] *[[体例]] *[[体谅]] *[[体貌]] *[[体念]] *[[体膨胀]] *[[体魄]] *[[体腔]] *[[体式]] *[[体态]] *[[体坛]] *[[体贴]] *[[体统]] *[[体味]] *[[体温表]] *[[体温计]] *[[体无完肤]] *[[体惜]] *[[体现]] *[[体刑]] *[[体恤]] *[[体癣]] *[[体循环]] *[[体验]] *[[体育场]] *[[体育馆]] *[[体育运动]] *[[体征]] *[[体质]] {{bottom}} =={{L|ko}}== {{ko-han|체|분|eumhun=[[용렬하다|용렬할]] 분}} =={{L|vi}}== {{vi-han|thể}} =={{コード}}== {{文字コード|jis=1-34-46|mj={{mjmoji|006637|006638}}|gb=CCE5|cns=2-227E|big5=CA5E|ksx=1002-624D}} {{検字|倉頡=ODM|四角=2523.0}} {{字典|dj=0208.030|hdz=10130.010|大字源=203|大漢語林=258/260|康煕=0098.130|新大字典=399/401|新潮漢字=279/284|諸橋=509/540}} ==脚注== <references/> ipd88qhjmddb1mj3xggy4ar47iz9awh desertification 0 21471 2313132 1103948 2026-08-08T17:03:47Z 20041027 tatsu 59964 [[en:desertification]] 2026-08-06T14:05:56(UTC)版より追加 2313132 wikitext text/x-wiki {{also|désertification}} =={{L|en}}== {{wikipedia|lang=en}} ==={{etym}}=== {{affix|en|desert|-ification}} ==={{pron}}=== * {{IPA|lang=en|/dɪˌzɜː.tɪ.fɪˈkeɪ.ʃən/|a=UK}} ** {{audio|en|LL-Q1860 (eng)-Vealhurl-desertification.wav|a=Southern England}} * {{IPA|lang=en|/dɪˌzɝ.tɪ.fɪˈkeɪ.ʃən/|a=US}} ** {{audio|en|LL-Q1860 (eng)-Wodencafe-desertification.wav|a=US}} * {{hyph|en|de|sert|i|fi|ca|tion}} * {{rhymes|lang=en|eɪʃən|s=6}} ==={{noun}}=== {{en-noun|-}} #{{context|環境|lang=en}} [[砂漠化]]。 ===={{syn}}==== * {{l|en|desertization}} * {{l|en|land degradation}} ===={{ant}}==== * {{l|en|afforestation}} * {{l|en|reforestation}} * {{l|en|regreening}} ===={{drv}}==== * {{l|en|antidesertification}} ===={{rel}}==== * {{l|en|desert}} * {{l|en|desertify}} cupwnkqqxmrnwx6gtrmxtgbdt0unpo5 こと 0 23384 2313372 2215020 2026-08-09T06:21:55Z ちょこれ゚いとみんと 129959 /* 日本語 */ 2313372 wikitext text/x-wiki {{also|こど|ごと|ごど}} =={{L|ja}}== ==={{noun}}・事=== {{ja-noun|事}} #ある一[[時期]]におこる、まとまったひとつらなりの{{おくりがな2|動|うご|き|うごき}}。[[ことがら]]。[[できごと]]。 #*'''こと'''ここに至ってはやむを得ない。 #*'''こと'''古美術に関しては該博な知識を持っている。 #*'''こと'''が'''こと'''だけに心配だ。 #*落ち込んでいる人に何か元気が出るような'''こと'''をしてあげたい。 #*いつも話の種になる'''こと'''を探している。 #[[動詞]]に付いて、[[行為]]を[[あらわす]][[体言]]を[[つくる|作る]]。 #*言う'''こと'''とする'''こと'''が違う人。 #*やる'''こと'''がえげつない。 #形容詞などに付いて、性状をあらわす[[体言]]を作る。 #*楽しい'''こと'''。静かな'''こと'''。確実な'''こと'''。当然の'''こと'''。 #*非効率な'''こと'''はなはだしい。 #*そんな'''こと'''はありません。(=そうではない、の意) #*そんな'''こと'''ではいけません。 #*たいした'''こと'''はない。 #*都会ではもちろんの'''こと'''、地方でもよく見かけるようになった。 #関連する案件、できごと、事情、状況。 #*その'''こと'''で話がある。 #*阿鼻叫喚とはまさにこの'''こと'''かと思った。 #*父との'''こと'''では誤解もありました。 #*泉鏡花先生の'''こと''' #*私'''こと'''このたび転勤を命ぜられ名古屋支社に着任いたしました。 #事実。実際に起きた、あるいは起きているできごと。 #*その人がもう日本にいない'''こと'''はご存知ですか。 #*絵を見て特に感動する'''こと'''もなかった。 #*待つ'''こと'''五時間、ようやく救助された。 ##(「のこと」「のことだ」などの形で)時を表す。 ##*ところがその次の日の'''こと'''だ。あの畜産の担任が、助手を連れて又やって来た。(宮沢賢治「フランドン農学校の豚」) #[[事業]]、[[作業]]、[[行動]]など。 #*'''こと'''にあたる。 #*'''こと'''を行う。 #[[戦争]]、[[あらそい]]など。 #*'''こと'''を構える。 #{{タグ|ja|婉曲}}[[性交]]、[[犯罪]]など。 #*'''こと'''に及ぶ。 #[[おおごと]]。[[一大事]]。厄介事。 #*これは'''こと'''だな。 #(…ことがある/ない) 過去の経験を表す。 #*アメリカに行った'''こと'''があります。 #(…ことがある/ない) 起こり得るできごと、可能性などを表す。 #*私は電車に傘を忘れる'''こと'''がよくある。 #*X線検査で腫瘍が判明する'''こと'''もある。 #…についての話。…の意味。…という事情。 #*「すごく高いビルが中東にあるでしょ?」「ブルジュ・ハリファの'''こと'''?」 #*「積ん読って何?」「本を買ってきても読まないで放置する'''こと'''だよ」 #*「打てば響く」というのは山田くんの'''こと'''だね。 #*警察がここにいるという'''こと'''は、事件か事故でもあったのだろう。 #*「結局あいつが嘘をついていたって'''こと'''か」「そういう'''こと'''だ」 #(…のこと) 思考、知識、好き嫌い、動作などの対象として示す。 #*君の'''こと'''が好きだ。 #*仕事の'''こと'''ばかり考えている。 #*私の'''こと'''をばかにしてるんだから。 #*ぼくの'''こと'''、なぐったな。 #指摘や主張の趣旨を表す。 #*きつい'''こと'''を言ってしまった。 #*入試改革の背景には利権があるというような'''こと'''が書いてあった。 #(…とのこと、…ということ) …そうだ。伝聞を表す。 #*明日は晴れるとの'''こと'''だ。 #*議員からお話したいことがあるとの'''こと'''です。 #*結局会えなかったという'''こと'''だ。 #[[通称]]と[[正式]]な[[なまえ|名前]]を続いて言うときに間に入れる語。[[すなわち]]。 #*火付盗賊改方、鬼平'''こと'''長谷川平蔵。 #軽い命令、適切性などを表す。 #*宿題を忘れた者は立つ'''こと'''。 #*困った時は早めに相談する'''こと'''だな。 #(打消しを伴い)必要性などを表す。 #* 遅刻した者を待つ'''こと'''はない。 #(ことにする、ことになる、など) 意志や未来、必然など表す。 #*プールで泳ぐ'''こと'''にしよう。 #*出かける'''こと'''にしよう。 #*暴風雨の場合は中止される'''こと'''になります。 #(ことにする、ことになる、など) 意志による措定や、規則などによる同定などを表す。 #*見なかった'''こと'''にしてやるから早く行け。 #*数値を指定してもしなくても結果は同じ'''こと'''になる。 #(こととする、ことにしている、ことになっている、など) 習慣や、しくみ、制度などを表す。 #*あらかじめ警察に届け出る'''こと'''とする。 #*毎日ジョギングする'''こと'''にしている。 #*かの国では、厳然たる歴史的事実の多くが実際にはなかった'''こと'''になっている。 #詠嘆を表す。 #*どれほどうれしかった'''こと'''だろう。 #*まあ実に呆れた'''こと'''だ。 #*仲のよろしい'''こと'''で。 #*まったく何をやっている'''こと'''やら。 #*どれだけ心配させられた'''こと'''か。 #(…こと…こと、…ことといったら、…ことといったらない、など) とても…だ。強調を表す。 #*その恰好のおかしい'''こと'''おかしい'''こと'''。 #(…こと、…ことで、…ことだ、…ことだから、…ことだし、など) 接続助詞的に、当然に想定される事情や理由などを表す。 #*あいつの'''こと'''だ、今日も遅れて来るだろう。 #*お腹も空いた'''こと'''だし、レストランにでも行きましょうか。 #(…ことに、…ことには) 文修飾副詞的な機能を表す。 #*困った'''こと'''に彼はまだ未成年だ。 #*関係者の言う'''こと'''には、近く企業合併があるらしい。 #(…ないことには、…しないことには…しない)…なければ…しない、…してはじめて…する。 #*それは見てみない'''こと'''には何とも言えない。 #*ドライバーがない'''こと'''にはネジも外せない。 #{{タグ|ja|口語}}否定文中で、用言の連体形に付いて、動詞は未然形、他は連用形に相当する語句を形成する。 #*最近仕事が辛い'''こと'''はないか。(=辛くはないか) #*寒い'''こと'''ない?(=寒くない?) #*どうもうまい'''こと'''行かないな。(=うまく行かないな) #*接客の仕事ってけっこう疲れる'''こと'''ない?(=疲れない?) ===={{pron}}==== {{ja-pron|acc=2}} {{ja-accent-common|region=京阪|a|こ|と}} ===={{drv}}==== *[[ことがら]] *[[できごと]] *[[ものごと]] ====={{idiom}}===== {{top3}} *[[事にしている]] *[[事になっている]] *[[事とする]] *[[事によると]]  *[[事が足りる]] *[[事を運ぶ]] *[[事を起こす]] *[[事を好む]] *[[事を分ける]] *[[事を成し遂げる]] *[[事事しい]] *[[事と次第で]] *[[事も無げ]] *[[事改めて]] *[[事寄す]] *[[ことかく|事欠く]] *[[事誤り]] *[[事細か]] *[[事新しい]] *[[事切れる]] *[[ことたりる|事足りる]], [[ことたる|事足る]] *[[事珍しく]] *[[事無し]] *[[事無く]] *[[事勿れ主義]] *[[事立てる]] *[[ことほどさように]] *[[としたことが]] {{bottom}} ===={{trans}}==== *{{T|id}}: {{t|id|hal}} *{{T|de}}: {{t|de|Ding|n}}, {{t|de|Sache|f}} *{{T|en}}: {{t|en|thing}}, {{t|en|incident}}, {{t|en|event}}, {{t|en|affair}} *{{T|fr}}: {{t|fr|chose|f}} {{trans-top|体言をつくる}} *{{T|en}}: {{t|en|to}} + 動詞, {{t|en|-ing}} *{{T|ki}}: {{t|ki|kũ-}},(c、k、t、th の前で){{t|ki|gũ-}};(動詞語幹が o や u で始まる場合){{l|ki|ku-}}(動詞語幹が a や e で始まる場合){{t|ki|kw-}}, {{t|ki|gw-}} *{{T|pl}}: {{t|pl|-anie|n}}, {{t|pl|-enie}}, {{t|pl|-cie|n}} *{{T|li}}: {{t|lt|-imas|m}}, {{t|lt|-ymas|m}} {{trans-bottom}} {{trans-top|話}} *{{T|en}}: {{t|en|matter}} *{{T|kam}}: {{t|kam|ũvoo}} *{{T|ki}}: {{t|ki|ũhoro}} {{trans-bottom}} ==={{noun}}・言=== {{ja-noun|言}} #(主として複合語で)[[ことば]]。 ===={{pron}}==== {{ja-pron|acc=2}} {{ja-accent-common|region=京阪|a|こ|と}} ===={{rel}}==== *{{prov}}: {{おくりがな3|一|ひと||言|こと||ひとこと}}、{{おくりがな3|泣|な|き|言|ごと||なきごと}}、{{おくりがな3|詫|わ|び|言|ごと||わびごと}}、{{おくりがな3|言|こと||問|と|い|こととい}} ==={{noun}}・琴=== {{ja-noun|琴|筝}} #{{タグ|ja|楽器}}[[弦]]が並べられている[[楽器]]。 #{{タグ|ja|楽器}}(もっとも一般的には)[[箏]]。 #*琴(きん)は、いわゆる「こと」である[[箏]]とは別の楽器である。 ===={{pron}}==== {{ja-pron|acc=1}} {{ja-accent-common|region=京阪|o|こ|と}} ===={{rel}}==== *{{ふりがな|琴柱|ことじ}} *{{ふりがな|平調子|ひらぢょうし}} ==={{noun}}・異=== {{ja-noun|異|殊}} #[[差異]]。[[別個]]。[[同一]]ではない[[状態]]。{{ふりがな|他|ほか}}と[[区別]]されている状態。 #*雰囲気を'''異'''にする #*[[幽明界を異にする|幽明界を'''異'''にする]] ===={{drv}}==== *[[ことなる]] *[[幽明界を異にする]] ===={{ant}}==== *[[つね]] ==={{adverb}}=== {{ja-adv|殊}} #[[ことに]]、[[特]]に、とりたてて。 #*彼は普段から饒舌なのだが、'''殊'''、趣味の話となると誰も止められない。 #*犯人として疑われているが、'''殊'''彼女に限ってそんなことはしないだろう。 (これらは形容動詞の語幹を副詞的に用いたものとも考えられる。例、「'''当然'''しなければらなない」の当然。当然という語も'''当然なり'''という形容動詞の語幹である) ===={{drv}}==== *[[ことさら]] *[[ことに]] *[[ことのほか]] ==={{parti}}=== {{ja-parti}} {{タグ|ja|終助詞}} #{{タグ|ja|格式ばった表現}}活用語の終止形(連体形)、または、サ変動詞語幹になるような動作性のある名詞と格助詞「[[の]]」の組み合わせの後に付いて、[[命令]]や[[決定]][[事項]]を表す。~[[せよ]]。~[[しろ]]。~であるようにしろ。主に、箇条書きや補足のような一文で完結する様式の文で使う。 #*1946年、日本国憲法<ref>日本国憲法 第5章第73条1項、昭和21年11月3日公布 http://www.shugiin.go.jp/internet/itdb_annai.nsf/html/statics/shiryo/dl-constitution.htm</ref> #*:一 法律を誠実に執行し、国務を総理する'''こと'''。 #*1999年、文部科学省「盲学校,聾学校及び養護学校施設整備指針」<ref>『盲学校,聾学校及び養護学校施設整備指針』「第2章3節 平面計画」(文部科学省ホームページ)政府標準利用規約(第2.0版)公開 https://www.mext.go.jp/b_menu/shingi/chousa/shisetu/001/toushin/940401/02-3.htm#top 2020年10月11日参照。</ref> #*:日常生活技能の指導等で利用できる実習のための空間を計画することも有効である'''こと'''。 #*2016年、大西健介、第192回国会衆議院<ref>「第192回国会 衆議院 予算委員会 第3号 平成28年10月3日」国会会議録検索システム https://kokkai.ndl.go.jp/#/detail?minId=119205261X00320161003&spkNum=121&single 2020年10月11日参照。</ref> #*:いずれにしろ、立候補ファイルには、保証については保証ファイル参照の'''こと'''と書いてあるんですけれども、この保証ファイルを開示していただけませんでしょうか。 #女性の古風で上品な口調を表す。 #*素敵な眺めだ'''こと'''。 #*「お願いできます'''こと'''?」「ええ、かまいません'''こと'''よ」 ==={{kangokana}}=== {{ja-kangokana}} {{ja-k|糊塗|t=一時凌ぎに上辺だけを取り繕うこと。}} =={{L|ojp}}== [[Category:{{ojp}}]] ==={{noun}}・事=== [[Category:{{ojp}}_{{noun}}]] '''こと'''【[[事]]】 #{{ふりがな|出来事|できごと}}。[[事件]]。 #[[行為]]。 #[[行事]]。[[儀式]]。 #{{ふりがな|訳|わけ}}。[[事情]]。 #{{ふりがな|仕事|しごと}}。[[任務]]。 #(活用語の連体形に付いて)〜すること。 #文末に用いて感嘆の意を表す。〜ことだなあ。 ===={{etym}}==== 古代日本語: [[kötö]] < {{etyl|jpx-pro|ojp}} {{m|jpx-pro|*kətə}} ===={{pron}}==== {{ojp-pron-noun-2-3|こ|と}} ==={{noun}}・言=== '''こと'''【[[言]]】 #[[言語]]活動。[[ことば]]。 #{{ふりがな|噂|うわさ}}。[[評判]]。 #[[和歌]]。 ===={{etym}}==== 古代日本語: [[kötö]] < {{etyl|jpx-pro|ojp}} {{m|jpx-pro|*kətə}} ===={{pron}}==== {{ojp-pron-noun-2-3|こ|と}} ==={{noun}}・琴=== '''こと'''【[[琴]]】 #{{context|musical instrument|lang=ojp}}[[琴]]。[[筝]]。 #琴の[[奏法]]。 ===={{pron}}==== {{ojp-pron-noun-2-5|こ|と}} ==={{adjectivenoun}}=== '''こと'''【[[異]]、[[殊]]】 #[[例外的]]なさま。[[特殊]]なさま。 #*見るに'''異'''なることなきものの、文字に書きてことことしきもの。 (『枕草子』) {{古典日本語ナリ活用}} ==={{prefix}}=== {{head|ojp|prefix}}【[[異]]】 #名詞に付いて「[[別]]の」「[[ちがう|違っ]]た」などの意を表す接頭辞。 ==註== <references/> nme095f89qrnr3zriwg5iq5jde4xrcu 0 23428 2313380 2218146 2026-08-09T06:56:27Z Jiba1219 100610 /* {{L|zh}} */ 2313380 wikitext text/x-wiki {{kana-DEFAULTSORT|た}} ==漢字== {{kanji|人|3}} {{筆順}} ===字源=== * [[形声文字|形声]]。「[[人]]」+音符「[[它]] {{phoneme|*LAJ}}」。「[[ほか]]」を意味する[[漢語]]{[[他]] {{phoneme|*hlaaj}}}を表す字。 ===意義=== #[[ほか]]/ほかの、[[別]] #[[三人称]] =={{L|ja}}== {{ja-kanji|常用=タ,ほか|施策=教育:3|呉音=タ|漢音=タ|訓=ほか,あだ-し,ひと|名乗=おさ}} ==={{noun}}=== [[Category:{{ja}} {{noun}}|ほか]] #('''[[ほか]]'''/'''[[タ]]''')別のもの、それを除くもの、それ以外のもの。 ==={{prov}}=== {{top}} *[[他愛]] *[[他意]] *[[他界]] *[[他覚症]] *[[他覚的]] *[[他郷]] *[[他家]] *[[他見]] *[[他言]] *[[他行]] *[[他国]] *[[他殺]] *[[他山]] *[[他山之石]](他山の石) *[[他事]] *[[他日]] *[[他社]] *[[他者]] *[[他出]] *[[他所]] *[[他称]] *[[他心]] *[[他生]] *[[他薦]] *[[他動詞]] *[[他人]] *[[他念]] *[[他派]] *[[他物]] *[[他聞]] *[[他方]] *[[他面]] *[[他律]] *[[他流]] *[[他力]] *[[他力本願]] {{bottom}} =={{L|zh}}== {{zh-cat|ta1|代名詞|形容詞|hsk=甲|hsk2=1|常=1}} {{trans_link|zh|{{PAGENAME}}}} * '''ローマ字表記''' ** '''[[普通話]]''' *** '''[[ピンイン]]''': [[tā]] ([[ta1]]), [[tuō]] ([[tuo1]]) *** '''[[ウェード式]]''': [[t'a1|t'a<sup>1</sup>]] *** '''[[注音符号]]''': ㄊㄚ,ㄊㄨㄛ ** '''[[広東語]]''' *** '''[[イェール式]]''': [[ta1]] ==={{pronoun}}=== '''他''' (ピンイン: tā) #(三人称男性){{ふりがな|彼|かれ}}。 #*[[他们]](三人称複数彼ら) #*{{rel}}:[[她]]、[[它]]/[[牠]](tā) #別のもの ==={{adjective}}=== '''他''' (ピンイン: tā) #別の。 ==={{prov}}=== {{top}} *{{l|zh|他杀}} *{{l|zh|他乡}} *{{l|zh|吉他}} {{bottom}} =={{L|ko}}== {{ko-han|타|eumhun=[[다르다|다를]] 타|pos=noun}} ==={{noun}}=== #[[他人]]。 =={{L|vi}}== {{vi-han|tha}} =={{コード}}== {{文字コード|jis=1-34-30|mj={{mjmoji|006517}}|gb=CBFB|cns=1-456C|big5=A54C|ksx=1001-7662}} {{検字|倉頡=OPD|四角=2421.2}} {{字典|dj=0195.120|hdz=10115.060|大字源=151|大漢語林=187|康煕=0092.090|新大字典=305|新潮漢字=218|諸橋=370}} l9ics0zx8r1kfldpmkf5pzc8e7v7ryt 爱情 0 25576 2313332 1575153 2026-08-09T02:48:26Z Jiba1219 100610 2313332 wikitext text/x-wiki {{DEFAULTSORT:ai4qing2}} =={{L|zh}}== ==={{pron}}=== {{cmn-pron|àiqíng|a=y|z=n}} {{yue-pron|oi3 cing4|h=n}} {{nan-pron|ml:ài-chêng|t=ain3 cêng5}} {{cpx-pron|pt,xy:ai4 *zing2}} {{hak-pron|h=oiˇ cin|gd=oi4 qin2}} {{wuu-pron|sh:5e zhin}} ==={{noun}}=== {{zhchars|t=愛情}} #[[愛情]]。 {{zh-cat|ai4qing2|名詞|hsk=乙|hsk2=4}} {{yue-cat|oi3ching4|名詞}} {{nan-cat|ai3cheng5|名詞}} {{nan-tws-cat|ain3ceng5|名詞}} {{cpx-cat|ai4zing2|名詞}} {{wuu-cat|e3zhin3|名詞}} kfy84o5p1tftf7rp9q3yoi01ot87bym 2313338 2313332 2026-08-09T02:51:05Z Jiba1219 100610 /* {{L|zh}} */ wikipediaリンク追加 2313338 wikitext text/x-wiki {{DEFAULTSORT:ai4qing2}} =={{L|zh}}== {{wikipedia|lang=zh|愛情}} ==={{pron}}=== {{cmn-pron|àiqíng|a=y|z=n}} {{yue-pron|oi3 cing4|h=n}} {{nan-pron|ml:ài-chêng|t=ain3 cêng5}} {{cpx-pron|pt,xy:ai4 *zing2}} {{hak-pron|h=oiˇ cin|gd=oi4 qin2}} {{wuu-pron|sh:5e zhin}} ==={{noun}}=== {{zhchars|t=愛情}} #[[愛情]]。 {{zh-cat|ai4qing2|名詞|hsk=乙|hsk2=4}} {{yue-cat|oi3ching4|名詞}} {{nan-cat|ai3cheng5|名詞}} {{nan-tws-cat|ain3ceng5|名詞}} {{cpx-cat|ai4zing2|名詞}} {{wuu-cat|e3zhin3|名詞}} 3ixmgghevjlu8x4zui8kzmr76mt8irp 危険 0 26011 2313353 2206875 2026-08-09T04:10:25Z Jiba1219 100610 2313353 wikitext text/x-wiki {{kana-DEFAULTSORT|きけん}} {{also|危險|危险}} =={{L|ja}}== {{wikipedia}} ==={{pron}}=== {{ja-pron|きけん|acc=0}} ===名詞・形容動詞=== {{ja-noun|[[きけん]]|kyu=危險}} [[Category:日本語_形容動詞]] #{{おくりがな2|危|あぶ|ない|あぶない}}こと、{{おくりがな2|危|あや|うい|あやうい}}こと。[[将来]]において、[[事故]]や[[故障]]が発生する[[可能性]]があり、かつその[[確率]]が高いこと。 #*しかし[[安全]]も'''危険'''も実は[[相対的]]の言葉である。安全地帯の危険率も、危険地帯の安全率もゼロではない。({{w|寺田寅彦}} 『KからQまで』) #*警察官は、人の[[生命]][[若しくは]][[身体]]に'''危険'''を及ぼし、[[又は]]財産に重大な損害を及ぼす虞のある[[天災]]、[[事変]]、[[工作物]]の[[損壊]]、[[交通事故]]、危険物の[[爆発]]、[[狂犬]]、[[奔馬]]の類等の出現、[[極端]]な[[雑踏]]等'''危険な'''[[事態]]がある場合においては({{w|警察官職務執行法}}第4条) ===={{conjug}}==== {{日本語ダ活用|kana=きけん}} ===={{syn}}==== *[[リスク]](同義語ではないので注意) ===={{ant}}==== *[[安全]] ===={{trans}}==== 名詞 {{top}} *{{T|ain}}: {{t|ain|iyaykipte}} *{{T|it}}: {{t|it|pericolo|m}} *{{T|en}}: {{t|en|danger}}, {{t|en|hazard}}, {{t|en|jeopardy}} *{{T|nl}}: {{t+|nl|gevaar|n}} *{{T|ki}}: {{t-|ki|ũgwati|g=c14}} *{{T|es}}: {{t|es|peligro|m}} *{{T|zh}}: {{t|zh|危险}} / {{t|zh|危險}} *{{T|ko}}: {{t|ko|위험(危險)}} *{{T|de}}: {{t+|de|Gefahr|f}} *{{T|no}}: :*{{T|nb}}: {{t+|no|fare|m}} *{{T|fi}}: [[vaara]] *{{T|fr}}: {{t|fr|danger|m}} *{{T|pl}}: {{t|pl|niebezpieczeństwo|n}} *{{T|pt}}: {{t|pt|perigo|m}} *{{T|lt}}: {{t-|lt|pavojus|m}} *{{T|ro}}: {{t|ro|pericol}}, {{t|ro|primejdie}} *{{T|ru}}: {{t|ru|опасность|alt=опа́сность|tr=opásnost'|f}} {{bottom}} 形容表現 * ''「'''[[あぶない]]'''」を参照。'' cyn7djqxbppl3schlacwnxsrbzjf4d8 2313354 2313353 2026-08-09T04:12:58Z Jiba1219 100610 2313354 wikitext text/x-wiki {{kana-DEFAULTSORT|きけん}} {{also|危險|危险}} =={{L|ja}}== {{wikipedia}} ==={{pron}}=== {{ja-pron|きけん|acc=0|dev=1}} ===名詞・形容動詞=== {{ja-noun|[[きけん]]|kyu=危險}} [[Category:日本語_形容動詞]] #{{おくりがな2|危|あぶ|ない|あぶない}}こと、{{おくりがな2|危|あや|うい|あやうい}}こと。[[将来]]において、[[事故]]や[[故障]]が発生する[[可能性]]があり、かつその[[確率]]が高いこと。 #*しかし[[安全]]も'''危険'''も実は[[相対的]]の言葉である。安全地帯の危険率も、危険地帯の安全率もゼロではない。({{w|寺田寅彦}} 『KからQまで』) #*警察官は、人の[[生命]][[若しくは]][[身体]]に'''危険'''を及ぼし、[[又は]]財産に重大な損害を及ぼす虞のある[[天災]]、[[事変]]、[[工作物]]の[[損壊]]、[[交通事故]]、危険物の[[爆発]]、[[狂犬]]、[[奔馬]]の類等の出現、[[極端]]な[[雑踏]]等'''危険な'''[[事態]]がある場合においては({{w|警察官職務執行法}}第4条) ===={{conjug}}==== {{日本語ダ活用|kana=きけん}} ===={{syn}}==== *[[リスク]](同義語ではないので注意) ===={{ant}}==== *[[安全]] ===={{trans}}==== 名詞 {{top}} *{{T|ain}}: {{t|ain|iyaykipte}} *{{T|it}}: {{t|it|pericolo|m}} *{{T|en}}: {{t|en|danger}}, {{t|en|hazard}}, {{t|en|jeopardy}} *{{T|nl}}: {{t+|nl|gevaar|n}} *{{T|ki}}: {{t-|ki|ũgwati|g=c14}} *{{T|es}}: {{t|es|peligro|m}} *{{T|zh}}: {{t|zh|危险}} / {{t|zh|危險}} *{{T|ko}}: {{t|ko|위험(危險)}} *{{T|de}}: {{t+|de|Gefahr|f}} *{{T|no}}: :*{{T|nb}}: {{t+|no|fare|m}} *{{T|fi}}: [[vaara]] *{{T|fr}}: {{t|fr|danger|m}} *{{T|pl}}: {{t|pl|niebezpieczeństwo|n}} *{{T|pt}}: {{t|pt|perigo|m}} *{{T|lt}}: {{t-|lt|pavojus|m}} *{{T|ro}}: {{t|ro|pericol}}, {{t|ro|primejdie}} *{{T|ru}}: {{t|ru|опасность|alt=опа́сность|tr=opásnost'|f}} {{bottom}} 形容表現 * ''「'''[[あぶない]]'''」を参照。'' 3s3ld297rvso5p9yvy9t0qo1hucsgl4 ふとい 0 26225 2313431 2072013 2026-08-09T10:04:57Z M-30722 1202 2313431 wikitext text/x-wiki {{kana-DEFAULTSORT}} =={{L|ja}}== ==={{adj}}=== {{ja-adj}}【[[太]]い】 # [[胴回り]]が[[おおきい]]。肉付きがよく肥えている。 # [[はば|幅]]や[[直径]]などが大きい。 # 声が低く大きい。 # 物事に動じない。[[大胆]]である。 #*[[肝が太い]] # [[ずうずうしい|図々しい]]。[[ふてぶてしい]]。[[とんでもない]]。 #*ふとい野郎だ。 # [[金額]]が大きい。金払いが良い。 ===={{conjug}}==== {{日本語形容詞活用}} ===={{ant}}==== * {{おくりがな2|細|ほそ|い|ほそい}} ===={{drv}}==== *{{noun}}: [[ふとさ]]、動詞:[[ふとまる]]、[[ふとめる]] ===={{trans}}==== *{{T|en}}:[[big]]、[[thick]]、[[bold]] ==={{noun}}=== {{wikipedia|フトイ}} {{ja-noun}}【[[太]][[藺]]】【[[莞]]】 #{{タグ|ja|草}}イネ目カヤツリグサ科の多年草。 {{stub|ja}} g192z55t9h8fa8tp20vklwndjko6wz7 わかる 0 26977 2313313 2025402 2026-08-09T01:34:28Z Jiba1219 100610 水平線の削除、およびテンプレート適用 2313313 wikitext text/x-wiki =={{L|ja}}== ==={{etym}}=== *「{{おくりがな2|分|わ|く|わく}}(>{{おくりがな2|分|わ|ける|わける}})」より。 ==={{verb}}=== {{head|ja|verb}}【[[分]](か)る、[[解]]る、[[判]]る】 # (分かる、判る)(調べたことによって)[[事実]]が明らかになる、[[情報]]が得られる。[[判明]]する。[[知識]]がある。 #*捜査によって被害者の身元が'''わかる'''。 #*その件についてはよく'''わかり'''ません。 # (分かる、解る)ものごとの[[解釈]]などについて[[納得]]する、[[理解]]する、あるいはその[[能力]]がある。 #*大人になれば'''わかる'''だろうさ。 #*ヒンディー語は駄目だがタミル語なら'''わかる'''。 #*このあたり土地勘がなくて道がよく'''わから'''ないから案内してくれ。 # [[世情]]に通じ納得しやすい、ものわかりがよい、受容的で意地を張らない。 #*話の'''わかる'''人。 #*いつまでも'''わから'''ないことを言うんじゃない。 #*こいつはこうでもしないと'''わから'''ないんだよ。 # (多く逆接や譲歩を導いて)[[了解]]や[[納得]]ができる。[[説得力]]がある。一定の[[正当性]]がある。[[容認]]される。 #*軽食程度ならまだ'''わかる'''が、なぜこの時期に大人数で集まって深夜まで宴会したのか。 #*送別会は'''わかる'''がリモート開催する方法もあっただろう。 # [[予測]]がつく、[[推測]]できる。 #*首相は答弁がワンパターンだから次に何を言うかだいたい'''わかる'''。 #*このままいくとどうなるか'''わから'''ないぞ。 #*同点ホームランが出て試合は'''わから'''なくなった。 #*急に何を言い出すやら'''わから'''ないやつだな。 #*こんなことになるなんて、人生は'''わから'''ないものだ。 #*言うことをきかないと'''わかってる'''だろうな。(=「大変なことになるぞ」と脅す表現) # (否定語とともに)[[事情]]が[[ことなる]]かもしれない。[[可能性]]がありそうだ。 #*地元は不景気だが都会は'''わからない'''と思って東京に出た。 # (「かもわからない」などの形で)[[可能性]]を表す。かもしれない。 #{{context|colloquial|lang=ja}}(「わかる」の形で)共感を表す。 #*「自信を、お持ちになつていいのよ。あたし、うれしいの。泣きたいくらゐ。」嘘は、なかつた。/「'''わかる'''。'''わかる'''。」(太宰治『火の鳥』) #{{context|colloquial|lang=ja}}(「わかった」の形で)了解や[[同意]]を表す。 #*太陽は笑って、水草の訴えを聞いていましたが、「'''わかった'''、'''わかった'''。」と、その頭を振ってみせました。(小川未明『太陽とかわず』) ##相手の言い分を了解した上で、提案や行動を行うニュアンス。 ##*わかりました。ではこうしませんか。 ##これ以上話を聞きたくないというニュアンス。 ##*もういいもういい。わかったわかった。 ===={{conjug}}==== {{日本語五段活用}} ===={{syn}}==== *[[判明]]する *[[理解]]する ===={{trans}}==== *{{T|en}}: [[understand]], [[see]] *{{T|ko}}: {{l|ko|알다}} *{{T|zh}}: [[懂]], [[明白]] =={{L|ojp}}== ==={{pron}}=== {{ojp-pron-verb-4-2|わ|か|る|}} ==={{verb}}=== {{head|ojp|verb}}【[[分]]かる、[[別]]る】 #[[区別]]される、[[別別]]になる。 #[[離別]]する、[[死別]]する。 ===={{conjug}}==== {{古典日本語下二段活用|わか|る}} ===={{desc}}==== *現代{{ja}}: [[わかれる]] 7qy8fw4nprnmpia8piw1rgaji74yhnc ice 0 28516 2313197 2128141 2026-08-08T23:01:01Z Kuroco2k 84207 2313197 wikitext text/x-wiki ==記号== ==={{code}}=== '''{{PAGENAME}}''' #{{ISO 639|2B|is}} =={{L|en}}== ==={{etym}}=== {{etyl|enm}} {{m|enm|is}} < {{etyl|ang}} {{m|ang|īs}} < {{etyl|gmw-pro}} {{m|gmw-pro|*īs}} < {{etyl|gem-pro}} {{m|gem-pro|*īsą}} < {{etyl|ine-pro}} {{m|ine-pro|*h₁eyH-}} ==={{pron}}=== * {{IPA|lang=en|aɪs}} * {{音声|en|en-us-ice.ogg|a=米}} * {{音声|en|LL-Q1860 (eng)-Back ache-ice.wav|a=英}} ==={{noun}}=== {{en-noun}} #{{ふりがな|氷|こおり}}。 #{{context|菓子|lang=en}}[[氷菓子]]。 ===={{comp}}・{{idiom}}==== {{top}} *[[break the ice]] *[[dry ice]] *[[ice barrier]] *[[ice cap]] / [[icecap]] *[[ice cream]] *[[ice cube]] *[[ice dam]] *[[ice dancing]] *[[ice diving]] *[[ice field]] *[[ice fishing]] *[[ice floe]] *[[ice fog]] *[[ice foot]] *[[ice fractal]] *[[ice hockey]] *[[ice kachang]] *[[ice milk]] *[[ice needle]] *[[ice nucleus]] *[[ice-out]] *[[ice pack]] *[[ice palace]] *[[ice pick]] *[[ice plant]] *[[ice racing]] *[[ice rink]] *[[ice scour]] *[[ice scraper]] *[[ice sculpture]] *[[ice sheet]] *[[ice shelf]] *[[ice show]] *[[ice skate]] *[[ice skating]] *[[ice water]] *[[ice wedge]] *[[ice wine]] *[[ice worm]] *[[ice yachting]] *[[on thin ice]] {{bottom}} ===={{rel}}==== *[[deicer]] *[[icicle]] ==={{verb}}=== {{en-verb|ic|ing}} #氷で{{おくりがな2|冷|ひ|やす|ひやす}}。 #氷で{{おくりがな2|覆|おお|う|おおう}}。 #[[砂糖]]の{{ふりがな|衣|ころも}}をつける。 [[カテゴリ:ベーシック英語 850単語]] =={{L|ang}}== ==={{pron}}=== * {{ang-IPA|īċe}} ==={{verb}}=== {{head|ang|verb form|head=īċe}} #{{l|ang|īċan}}の直説法現在第一人称単数形。 #{{l|ang|īċan}}の接続法現在単数形。 =={{L|slr}}== ==={{pron}}=== * {{IPA|lang=slr|[eʝɑ]|a=Mengda|a2=Xunhua|a3=Qinghai}} ==={{noun}}=== {{slr-noun|si|ler}} #{{l|slr|ica}}の異形。 =={{L|sco}}== ==={{noun}}=== {{sco-noun}} #{{ふりがな|氷|こおり}} #{{context|菓子|lang=sco}}[[アイスクリーム]]。 ==={{verb}}=== {{head|sco|verb}} #{{context|スポーツ|lang=sco}}カーリングをする。 =={{L|es}}== ==={{pron}}=== {{es-pr}} ==={{verb}}=== {{es-verb-form|izar}} #{{l|es|izar}}の接続法現在第一人称単数形。 #{{l|es|izar}}の接続法現在第三人称単数形。 #{{l|es|izar}}の命令法第三人称単数形。 =={{L|enm}}== ==={{noun}}=== {{head|enm|noun}} #{{l|enm|is}}の異形。 =={{L|ha}}== ==={{pron}}=== * {{ha-IPA|icḕ}} ==={{noun}}=== {{ha-noun|m|icḕ}} #[[木材]]。 #{{タグ|ha|木|label=no|sort=*}}{{ふりがな|木|き}}。 #木の{{ふりがな|枝|えだ}}。 =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{l|pt|içar}}の接続法現在第一人称単数形。 #{{l|pt|içar}}の接続法現在第三人称単数形。 #{{l|pt|içar}}の命令法第三人称単数形。 =={{L|la}}== ==={{verb}}=== {{la-verb-form|īce}} #{{l|la|īcere}}の命令法能相現在第二人称単数形。 stiq0e7588qxztarlz1dyfb84p6a49u 0 30675 2313312 2245687 2026-08-09T01:32:57Z Jiba1219 100610 /* {{L|zh}} */ 2313312 wikitext text/x-wiki {{kana-DEFAULTSORT|ふ}} ==漢字== {{kanji|人|3}} {{kanji variants|附=別字}} ===字源=== * [[会意文字|会意]]。「[[人]]」+「[[寸]]」(手)、持っている物を人に与える様子。「与える」を意味する[[漢語]]{付 {{phoneme|*p(r)os}}}を表す字。<ref group="字源">何琳儀 『戦国古文字典』 中華書局、1998年、391頁。<br>黄徳寛主編 『古文字譜系疏証』 商務印書館、2007年、1070-1071頁。<br>林志強等評注 『《文源》評注』 中国社会科学出版社、2017年、258-259頁。</ref> * また一説に、背後から人を前に押して倒すさまを象った字。「押す」を意味する[[漢語]]{[[拊]] {{phoneme|*ph(r)oʔ}}}を表す字。のち仮借して{付}に用いる。<ref group="字源">張世超、孫凌安、金国泰、馬如森 『金文形義通解』 中文出版社、1996年、2000-2002頁。<br>陳剣 「釈殷墟甲骨文的“付”字」 『古文字研究』第31輯 中国古文字研究会等編、中華書局、2016年、35-41頁。</ref> {{字源}} <references group="字源" /> ===関連字=== {| class="wikitable" |+ 「[[付]]」を音符とする[[形声文字]] (諧声域=*PO) |- ! !! !! 幫母 !! 滂母 !! 並母 |- ! rowspan="4" | 一、二等 || 平声 侯韻 | - || - || [[𩚭]] |- ! 上声 厚韻 | || || |- ! 去声 候韻 | - || || (暮韻:[[䒀]]) |- ! 入声 屋韻 | || || |- ! !! !! 幫母 !! 滂母 !! 並母 |- ! rowspan="4" | 三等 || 平声 虞韻 | [[跗]][[𩿧]][[柎]][[𩬙]] || [[怤]][[𥹃]][[泭]][[䒀]][[姇]][[紨]] || [[符]][[苻]][[坿]][[泭]][[𣻜]][[𣘧]]<br>(尤韻:[[鉜]]) |- ! 上声 麌韻 | [[俯]][[府]][[腑]] || [[弣]][[拊]] || [[腐]][[㾈]] |- ! 去声 遇韻 | [[付]][[𩬙]] || || [[附]][[坿]][[祔]][[駙]][[鮒]][[䠵]][[蚹]][[跗]][[胕]] |- ! 入声 燭韻 | || - || |} ===意義=== # (附)[[つく]]、[[つける]]。 # (付)[[てわたす|手渡す]]、[[あたえる|与える]]、[[さずける|授ける]]。 # (付)[[とどける|届ける]]。 # (付)[[ゆだねる|委ねる]]、[[まかせる|任せる]]。 =={{L|ja}}== {{ja-kanji|常用=フ,つ-ける,つ-く|施策=教育:4|呉音=フ|漢音=フ|訓=つ-く,つ-ける,あた-える}} ==={{prov}}=== {{top}} *{{ふりがな|受け付け|うけつけ}} *{{ふりがな|付け入り|つけいり}} *{{ふりがな|付け込み|つけこみ}} *{{ふりがな|付け届け|つけとどけ}} *{{ふりがな|取り付け|とりつけ}} *{{ふりがな|下付|かふ}} *{{ふりがな|寄付|きふ}}(寄附) *{{ふりがな|給付|きゅうふ}} *{{ふりがな|嘱付|しょくふ}} *{{ふりがな|付火|つけび}} *{{ふりがな|付梓|ふし}} *{{ふりがな|付属|ふしょく}}(←[[付嘱]]) *{{ふりがな|付帯|ふたい}}([[附帯]]) *{{ふりがな|付託|ふたく}}([[附託]]、[[付托]]) *{{ふりがな|付与|ふよ}}([[附与]]) *{{ふりがな|分付|ぶんぷ}}(←[[吩咐]]) {{bottom}} ===代用字=== 「[[附]]」の代用字として使われる。過去、付は「与える、委ねる」、附は「くっつける、添える」で使い分けるとしていたが、混同されることもあった。 *{{ふりがな|添付|てんぷ}}←[[添附]] *{{ふりがな|貼付|ちょうふ}}←[[貼附]] *{{ふりがな|付加|ふか}}←[[附加]] *{{ふりがな|付箋|ふせん}}←[[附箋]] *{{ふりがな|付属|ふぞく}}←[[附属]] *{{ふりがな|付表|ふひょう}}←[[附表]] *{{ふりがな|付和雷同|ふわらいどう}}←[[附和雷同]] =={{L|zh}}== {{zh-cat|fu4|hsk=乙|常=1}} {{zh-han |m=fù,tòng |c=fu6 }} =={{L|ko}}== {{ko-han|부}} =={{L|vi}}== {{vi-han|phó}} =={{コード}}== {{文字コード|jis=1-41-53|mj={{mjmoji|006520}}|gb=B8B6|cns=1-4569|big5=A549|ksx=1001-5C75}} {{検字|倉頡=ODI|四角=2420.0}} {{字典|dj=0196.020|hdz=10112.050|大字源=154|大漢語林=191|康煕=0092.120|新大字典=309|新潮漢字=220|諸橋=373}} s43qw06ischgx22prl8f11mivslovfv 0 35699 2313096 2276463 2026-08-08T12:57:51Z うーむ 129171 /* 熟語 */ 2313096 wikitext text/x-wiki {{kana-DEFAULTSORT|ざ}} ==漢字== {{kanji|手3|7}} ===字源=== * [[形声文字|形声]]。「[[手]]」+音符「[[坐]] {{phoneme|*TSOJ}}」。「[[おさえつける]]」「[[くじく]]」「[[くじける]]」を意味する[[漢語]]{[[挫]] {{phoneme|*tsoojs}}}を表す字。 ===意義=== #足などの関節を不自然に曲げて痛める。[[くじく]]、[[くじける]]。 #*[[捻挫]]、[[挫傷]] #障害にあって進行が止まる。 #*[[挫折]]、[[頓挫]] ===語源=== * ビルマ語 [[စွဲ]](取り付ける、固定する)と同根。 =={{L|ja}}== {{ja-kanji|常用=ザ|施策=常用追加:2010,表外字体:印刷標準:ザ|呉音=サ|漢音=サ|慣用音=ザ|訓=くじ-く,くじ-ける}} ==={{prov}}=== *[[挫傷]] *[[挫折]] *[[摧挫]] *[[頓挫]] *[[捻挫]] =={{L|zh}}== {{zh-cat|cuo4|常=2}} {{trans_link|zh|{{PAGENAME}}}} * '''ローマ字表記''' ** '''[[普通話]]''' *** '''[[ピンイン]]''': [[cuò]] (cuo4), [[zhēn]] (zhen1), [[zhěn]] (zhen3) *** '''[[ウェード式]]''': [[ts'o]]<sup>4</sup>, [[chen]]<sup>1</sup>, chen<sup>3</sup> ** '''[[広東語]]''' *** '''[[イェール式]]''': [[cho3]] =={{L|ko}}== {{ko-han|좌|eumhun=꺽을 좌}} =={{L|vi}}== {{vi-han|doạ}} =={{コード}}== {{文字コード|jis=1-26-35|mj={{mjmoji|012356}}|gb=B4EC|cns=1-5562|big5=AEC0|ksx=1001-7129}} {{検字|倉頡=QOOG|四角=5801.4}} {{字典|dj=0780.290|hdz=31885.030|大字源=3359|大漢語林=3975|康煕=0431.220|新大字典=5558|新潮漢字=4061|諸橋=12087}} 07er8pmcirdcmbqyu64kf5ohrk1l0gy 0 39461 2313376 2038094 2026-08-09T06:42:10Z ちょこれ゚いとみんと 129959 2313376 wikitext text/x-wiki {{kana-DEFAULTSORT|しょう}} ==漢字== {{kanji|言|7}} {{kanji variants|诮=[[簡体字]]|譙}} ===字源=== *[[形声文字|形声]]。「[[言]]」+音符「[[肖]] {{phoneme|*SEW}}」。 {{字源}} ===字義=== #しっかり咎める。 =={{L|ja}}== {{ja-kanji|呉音=ジョウ<ゼウ|漢音=ショウ<セウ|訓=しか-る,せ-める,そし-る}} ==={{prov}}=== *[[誚譲]] *[[誚責]] *[[責誚]] =={{L|zh}}== {{zh-cat|qiao4}} {{yue-cat|chiu3}} {{zh-han|m=qiào|c=chiu3}} =={{L|ko}}== {{ko-han|초}} =={{コード}}== {{文字コード|jis=1-75-55|mj={{mjmoji|024510|024511}}|gb=D556|big5=BBA6|cns=1-6B2E|全={{全字庫|92974}}|ksx=1002-6F78|kps=10721-765D}} {{検字|四角=0962.7|倉頡=YRFB}} {{字典|康煕=1163.030|広韻=414.23|vt=B04670|諸橋=35529|新潮漢字=11957|大字源=9354|新大字典=15776|大漢語林=10717|dj=1627.160|ch=1247.204|hdz=63975.110}} 1kaermkrgasngsw9klr16635j6572qc 2313377 2313376 2026-08-09T06:43:30Z ちょこれ゚いとみんと 129959 2313377 wikitext text/x-wiki {{kana-DEFAULTSORT|しょう}} ==漢字== {{kanji|言|7}} {{kanji variants|诮=[[簡体字]]|譙}} ===字源=== *[[形声文字|形声]]。「[[言]]」+音符「[[肖]] {{phoneme|*SEW}}」。 {{字源}} ===字義=== #しっかり咎める。 =={{L|ja}}== {{ja-kanji|呉音=ジョウ<ゼウ|漢音=ショウ<セウ|訓=しか-る,せ-める,そし-る}} ==={{prov}}=== {{prov-top}} *[[誚譲]] *[[誚責]] *[[責誚]] *[[譏誚]] {{prov-bottom}} =={{L|zh}}== {{zh-cat|qiao4}} {{yue-cat|chiu3}} {{zh-han|m=qiào|c=chiu3}} =={{L|ko}}== {{ko-han|초}} =={{コード}}== {{文字コード|jis=1-75-55|mj={{mjmoji|024510|024511}}|gb=D556|big5=BBA6|cns=1-6B2E|全={{全字庫|92974}}|ksx=1002-6F78|kps=10721-765D}} {{検字|四角=0962.7|倉頡=YRFB}} {{字典|康煕=1163.030|広韻=414.23|vt=B04670|諸橋=35529|新潮漢字=11957|大字源=9354|新大字典=15776|大漢語林=10717|dj=1627.160|ch=1247.204|hdz=63975.110}} t0ldjoxwdd3puhlgkba81fkuflvukny 0 39620 2313352 2135878 2026-08-09T04:09:43Z Keikei kanji 129888 自明な形声文字だけに対する記述はほぼないです。漢字は形声文字が8~9割ですから基本的に形声文字と考える方が合理的です 2313352 wikitext text/x-wiki {{kana-DEFAULTSORT|しん}} == 漢字 == {{kanji|馬|7}} {{kanji variants|骎=[[簡体字]]}} ===字源=== * [[形声文字|形声]]。「[[馬]]」 + [[音符]]「[[侵]]{{phoneme|*TSƏM}}」。「[[すすむ]]」「[[はしる]]」を[[意味]]する[[漢語]]{[[駸]]{{phoneme|*tsʰəm}}}を表す字。 ==== 参考文献 ==== * [[上古音]]は布之道『[http://www.kaom.net/sgy_bzd.php 廣韻形聲考]』による。 ===意義=== # [[すすむ]]。[[はしる]]。 =={{L|ja}}== [[Category:{{ja}}]] {{ja-kanji|呉音=シン<シム|漢音=シン<シム}} ===={{prov}}==== * {{ふりがな|駸駸|しんしん|yomilink=no}} =={{L|zh}}== [[Category:{{zh}}|qin1]] {{trans_link|zh|{{PAGENAME}}}} * '''ローマ字表記''' ** '''[[普通話]]''' *** '''[[ピンイン]]''': [[qīn]] (qin1) *** '''[[ウェード式]]''': ch'in<sup>1</sup> ** '''[[広東語]]''' *** '''[[イェール式]]''': cham1 =={{L|ko}}== [[Category:{{ko}}|침]] {{ko-hanja|hangeul=[[침]]|eumhun=말 몰아 달릴 침|rv=chim|mr=ch'im|y=chim}} =={{L|vi}}== {{vi-han|xăm}} == {{コード}} == {{文字コード|jis=1-81-52|mj={{mjmoji|028705|028706}}|gb=F19F|cns=2-6069|big5=EF5D|ksx=1002-7129}} {{検字|倉頡=SFSME|四角=7734.7}} {{字典|dj=1963.210|hdz=74558.180|大字源=11518|大漢語林=13106|康煕=1439.100|新大字典=19498|新潮漢字=14443|諸橋=44759}} ddhootlnbcc7fkjhl8inmqqp76ktokm 2313447 2313352 2026-08-09T11:07:06Z ふゆくれ 95641 2313447 wikitext text/x-wiki {{kana-DEFAULTSORT|しん}} ==漢字== {{kanji|馬|7}} {{kanji variants|骎=[[簡体字]]|𩤿|浸=字義3|𩤨=[[同字]]}} ===字源=== * [[形声文字|形声]]。「[[馬]]」 + [[音符]]「[[侵]]{{phoneme|*TSƏM}}<ref group="字源" name="上古音">{{R:och:GYXSK}}</ref>」。「[[すすむ]]」「[[はしる]]」を[[意味]]する[[漢語]]{[[駸]]{{phoneme|*tsʰəm}}}を表す字。 ====参考文献==== <references group="字源"/> ===字義=== #[[すすむ]]。[[はしる]]。 #馬が走り集まるさま。 #「[[浸]]」の[[通字]](『字統网』掲載)。物事が段階的に進むさま。 =={{L|ja}}== {{ja-kanji|呉音=*|漢音=シン<シム}} ==={{prov}}=== *[[駸駸]] ===参考文献=== {{書誌・コトバンク|word={{PAGENAME}}|author=普及版 {{w|字通}}|accessdate=2026-08-09}} =={{L|zh}}== {{zh-cat|qin1}} {{yue-cat|cham1}} {{hak-cat|chhim1}} {{nan-cat|chhim1}} {{cpx-cat|cing1}} {{ltc-cat|tshim1}} {{och-cat|tshem}} {{zh-han|m=qīn|c=cam1|pfs=chhîm|hrs=cimˋ|gd=cim1|mn=chhim|px=pt,xy:cing1}} **'''[[中古音]]''': tshim, tsrhim **'''[[上古音]]''' ***'''Baxter–Sagart''': /*[tsʰ][i]m/, /*[tsʰ]r[i]m/ ***'''鄭張''': /*sʰim/, /*sʰrim/ ***'''布之道''': /*tsʰəm/, /*tsʰrəm/ ==={{prov}}=== *{{zh-l|駸駸}} =={{L|ko}}== {{ko-han|침|eumhun=말 몰아 달릴 침}} =={{L|vi}}== {{vi-han|xăm|xâm|nghiệm}} =={{コード}}== {{文字コード|jis=1-81-52|mj={{mjmoji|028705|028706}}|gb=F19F|cns=2-6069|全={{全字庫|155753}}|big5=EF5D|ksx=1002-7129|tcvn=6056-6C45}} {{検字|倉頡=SFSME|四角=7734.7}} {{字典|dj=1963.210|hdz=74558.180|大字源=11518|大漢語林=13106|康煕=1439.100|新大字典=19498|新潮漢字=14443|諸橋=44759|ch=1507.103|広韻=216.31/220.44|matthews=1111|mw=3266b|nelson=5214|vt=B05802}} 5pyygu655bh97lyavqu67tioh3w747v 2313448 2313447 2026-08-09T11:08:04Z ふゆくれ 95641 /* {{L|ja}} */ 2313448 wikitext text/x-wiki {{kana-DEFAULTSORT|しん}} ==漢字== {{kanji|馬|7}} {{kanji variants|骎=[[簡体字]]|𩤿|浸=字義3|𩤨=[[同字]]}} ===字源=== * [[形声文字|形声]]。「[[馬]]」 + [[音符]]「[[侵]]{{phoneme|*TSƏM}}<ref group="字源" name="上古音">{{R:och:GYXSK}}</ref>」。「[[すすむ]]」「[[はしる]]」を[[意味]]する[[漢語]]{[[駸]]{{phoneme|*tsʰəm}}}を表す字。 ====参考文献==== <references group="字源"/> ===字義=== #[[すすむ]]。[[はしる]]。 #馬が走り集まるさま。 #「[[浸]]」の[[通字]](『字統网』掲載)。物事が段階的に進むさま。 =={{L|ja}}== {{ja-kanji|呉音=*|漢音=シン<シム|訓=すす-む,はし-る|古訓=ゆく;{{w|名義抄}},はやきうま;{{w|字鏡集}}}} ==={{prov}}=== *[[駸駸]] ===参考文献=== {{書誌・コトバンク|word={{PAGENAME}}|author=普及版 {{w|字通}}|accessdate=2026-08-09}} =={{L|zh}}== {{zh-cat|qin1}} {{yue-cat|cham1}} {{hak-cat|chhim1}} {{nan-cat|chhim1}} {{cpx-cat|cing1}} {{ltc-cat|tshim1}} {{och-cat|tshem}} {{zh-han|m=qīn|c=cam1|pfs=chhîm|hrs=cimˋ|gd=cim1|mn=chhim|px=pt,xy:cing1}} **'''[[中古音]]''': tshim, tsrhim **'''[[上古音]]''' ***'''Baxter–Sagart''': /*[tsʰ][i]m/, /*[tsʰ]r[i]m/ ***'''鄭張''': /*sʰim/, /*sʰrim/ ***'''布之道''': /*tsʰəm/, /*tsʰrəm/ ==={{prov}}=== *{{zh-l|駸駸}} =={{L|ko}}== {{ko-han|침|eumhun=말 몰아 달릴 침}} =={{L|vi}}== {{vi-han|xăm|xâm|nghiệm}} =={{コード}}== {{文字コード|jis=1-81-52|mj={{mjmoji|028705|028706}}|gb=F19F|cns=2-6069|全={{全字庫|155753}}|big5=EF5D|ksx=1002-7129|tcvn=6056-6C45}} {{検字|倉頡=SFSME|四角=7734.7}} {{字典|dj=1963.210|hdz=74558.180|大字源=11518|大漢語林=13106|康煕=1439.100|新大字典=19498|新潮漢字=14443|諸橋=44759|ch=1507.103|広韻=216.31/220.44|matthews=1111|mw=3266b|nelson=5214|vt=B05802}} t114n83zc3xoftvhgpvnwcfdcky48i1 viande 0 40354 2313460 1834359 2026-08-09T11:45:40Z Kuroco2k 84207 /* {{desc}} */ 2313460 wikitext text/x-wiki {{also|viànde}} =={{L|fro}}== ==={{alter}}=== * {{l|fro|vïande}} ==={{etym}}=== {{etyl|VL.|fro}} {{m|VL.|*vīvanda}} < {{etyl|la|fro}} {{m|la|vīvenda}} < {{m|la|vivo|vīvō, vīvere}} ==={{noun}}=== {{fro-noun|f}} [[カテゴリ:{{fro}}_食品|*]] #[[食品]]。 ===={{usage}}==== * 16世紀までは「肉」としての意味では使われていなかった。 ===={{desc}}==== * {{desc|en|viand|bor=1}} * {{desc|roa-opt|vianda|bor=1}} ** {{desc|gl|vianda}} * {{desc|frm|viande}} ** {{desc|fr|viande}} * {{desc|nrf|viande|viànde}} ---- =={{L|frm}}== ==={{etym}}=== {{etyl|fro|frm}} {{m|fro|viande}} < {{etyl|VL.|frm}} {{m|VL.|*vīvanda}} < {{etyl|la|frm}} {{m|la|vīvenda}} < {{m|la|vivo|vīvō, vīvere}} ==={{noun}}=== {{frm-noun|f}} [[カテゴリ:{{frm}}_食品|*]] [[カテゴリ:{{frm}}_肉|*]] #[[食品]]。 #(16世紀以降){{ふりがな|肉|にく}}。 ===={{usage}}==== * 16世紀までは「肉」としての意味では使われていなかった。 ===={{desc}}==== * {{desc|fr|viande}} ---- =={{L|nrf}}== ==={{alter}}=== * {{l|nrf|viànde}} {{qualifier|ガーンジー島語}} * {{l|nrf|vyãd}} {{qualifier|サーク島語}} ==={{etym}}=== {{etyl|fro|nrf}} {{m|fro|viande}} < {{etyl|VL.|nrf}} {{m|VL.|*vīvanda}} < {{etyl|la|nrf}} {{m|la|vīvenda}} < {{m|la|vivo|vīvō, vīvere}} ==={{pron}}=== * {{音声|nrf|Jer-viande.ogg|音声 (ジャージー)}} ==={{noun}}=== {{nrf-noun|f}} #{{context|Jersey|lang=nrf}}{{ふりがな|肉|にく}}。 ===={{drv}}==== * {{l|nrf|viande dé vaque}} * {{l|nrf|viande au fou}} ---- =={{L|fr}}== ==={{etym}}=== {{etyl|fro|fr}} {{m|fro|viande}} < {{etyl|VL.|fr}} {{m|VL.|*vīvanda}} < {{etyl|la|fr}} {{m|la|vīvenda}} < {{m|la|vivo|vīvō, vīvere}} ==={{pron}}=== * {{fr-IPA}} * {{音声|fr|Fr-viande.ogg|音声 (フランス)}} * {{音声|fr|LL-Q150 (fra)-Guilhelma-viande.wav|音声}} * {{音声|fr|LL-Q150 (fra)-Roll-Morton-viande.wav|音声 (フランス)}} * {{音声|fr|LL-Q150 (fra)-X-Javier-viande.wav|音声 (フランス)}} * {{音声|fr|LL-Q150 (fra)-Fhala.K-viande.wav|音声 (フランス)}} * {{音声|fr|LL-Q150 (fra)-GrandCelinien-viande.wav|音声 (フランス)}} * {{音声|fr|LL-Q150 (fra)-Nattes à chat-viande.wav|音声 (スイス)}} * {{音声|fr|LL-Q150 (fra)-Lepticed7-viande.wav|音声 (フランス)}} * {{音声|fr|LL-Q150 (fra)-GAllegre-viande.wav|音声 (フランス)}} * {{音声|fr|LL-Q150 (fra)-Penegal-viande.wav|音声 (フランス)}} * {{音声|fr|LL-Q150 (fra)-DSwissK-viande.wav|音声 (スイス)}} * {{音声|fr|LL-Q150 (fra)-Justforoc-viande.wav|音声}} * {{音声|fr|LL-Q150 (fra)-Poslovitch-viande.wav|音声 (フランス)}} * {{音声|fr|LL-Q150 (fra)-Ash Crow-viande.wav|音声 (フランス)}} * {{音声|fr|LL-Q150 (fra)-LoquaxFR-viande.wav|音声 (フランス)}} * {{音声|fr|LL-Q150 (fra)-Madehub-viande.wav|音声}} * {{音声|fr|LL-Q150 (fra)-T. Le Berre-viande.wav|音声 (フランス)}} * {{音声|fr|LL-Q150 (fra)-Eihel-viande.wav|音声 (スイス)}} * {{音声|fr|LL-Q150 (fra)-Kaderousse-viande.wav|音声}} * {{音声|fr|LL-Q150 (fra)-val (Eavq)-viande.wav|音声 (フランス)}} * {{音声|fr|LL-Q150 (fra)-WikiLucas00-viande.wav|音声 (フランス)}} * {{音声|fr|LL-Q150 (fra)-Mecanautes-viande.wav|音声 (フランス)}} * {{音声|fr|LL-Q150 (fra)-Loizbec-viande.wav|音声 (フランス)}} * {{音声|fr|LL-Q150 (fra)-Fabe56-viande.wav|音声}} * {{音声|fr|LL-Q150 (fra)-Vampiro (ClasseNoes)-viande.wav|音声}} * {{音声|fr|LL-Q150 (fra)-Mathieu Kappler-viande.wav|音声 (フランス)}} * {{音声|fr|LL-Q150 (fra)-Sagnamadr-viande.wav|音声}} * {{音声|fr|LL-Q150 (fra)-Opsylac-viande.wav|音声 (フランス)}} ==={{noun}}=== {{fr-noun|f}} [[カテゴリ:{{fr}}_肉|*]] #{{ふりがな|肉|にく}}。 #{{context|food|lang=fr}}[[食肉]]。 #{{context|slang|lang=fr}}[[豊満]]な[[肉体]]を持つ人。 ===={{drv}}==== {{top}} * [[coupe de viande]] * [[couteau à viande]] * [[hachoir à viande]] * [[marchand de viande]] * [[mettre la viande dans le torchon]] * [[mouche à viande]] * [[moulin à viande]] * [[pain de viande]] * [[pièce de viande]] * [[sac à viande]] * [[viandard]] * [[viande à bagne]] * [[viande à chien]] * [[viande à pneu]] * [[viande blanche]] * [[viande cellulaire]] * [[viande creuse]] * [[viande de brousse]] * [[viande des Grisons]] * [[viande froide]] * [[viande hachée]] * [[viande noire]] * [[viande rouge]] * [[viande saoule]] * [[viander]] * [[viandox]] {{bottom}} ===={{syn}}==== * [[barbac]] * [[barbaque]] * [[bidoche]] * [[carne]] * [[chair]] ---- =={{L|roa-brg}}== ==={{etym}}=== {{etyl|la|roa-brg}} {{m|la|vivenda}} ==={{noun}}=== {{head|roa-brg|noun|g=f|複数|viandes}} [[カテゴリ:{{roa-brg}}_肉|*]] #{{ふりがな|肉|にく}}。 ===={{syn}}==== * [[châr]] * [[carne]] ---- =={{L|la}}== ==={{participle}}=== {{la-part-form|viande}} #{{l|la|viandus}}の男性単数呼格。 hxgw3cwhsadgip839hps3mjkivnuw7i ごとう 0 41790 2313235 2140765 2026-08-08T23:42:18Z 鍼灸 112313 2313235 wikitext text/x-wiki {{kana-DEFAULTSORT}} {{also|ことう|こどう|ごどう}} =={{ja}}== ==={{kangokana}}=== {{ja-kangokana}} *【[[五島]]】:五つの島。 *【[[後唐]]】:中国五代の国の一つ。 *【[[後藤]]】:姓の一つ。 *【[[御灯]]】:灯火の丁寧語。 *【[[梧桐]]】:あおぎり。 *【[[語頭]]】[[語]]の[[はじめ|始め]]の[[文字]]または[[おと|音]]。 *【[[誤答]]】:間違った答え。 *【[[五等]]】:第五位 *【[[五頭]]】:(動物が)五匹。 {{stub|homonym}} raoxq26lnro9amj1dpyyi65hfa0uuri 哀韻 0 42469 2313384 1468653 2026-08-09T07:07:54Z Jiba1219 100610 2313384 wikitext text/x-wiki {{kana-DEFAULTSORT|あいいん}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[あいいん]]}} # [[詩]]や[[音楽]]の、もの[[かなしい|悲しく]]て、[[あわれみ|哀れみ]]を[[さそう]]ような[[調子]]。 <!--発音 (日本語) アクセントや発音記号の記載のない限りコメントアウト ===={{pron|jpn}}==== ;(アクセント等の記載) :{{IPA|??}} :{{X-SAMPA|??}} --> ===={{trans}}==== *{{en}}: [[sad]] [[rhythm]] *{{zh}}: {{zh-ts|[[#{{zh}}|哀韻]]|哀韵}} ===={{rel}}==== * {{syn}}: [[哀歌]], [[哀感]], [[哀愁]], [[哀調]], [[悲調]] =={{L|zh}}== {{zh-cat|ai1yun4|noun}} ==={{noun}}=== {{zh-ts|哀韻|哀韵}} # もの[[かなしい|悲しく]]て、[[あわれみ|哀れみ]]を[[さそう]]ような[[調子]]。 iki0zkbwma6b80l3y2vbx283e5lmxp3 危险 0 50747 2313356 1575849 2026-08-09T04:20:56Z Jiba1219 100610 2313356 wikitext text/x-wiki =={{L|zh}}== {{zh-cat|wei1xian3|noun|adj|hsk=甲|hsk2=4}} {{yue-cat|ngai4him2|noun|adj}} {{nan-cat|gui5hiam2|noun|adj}} {{nan-tws-cat|nguin5hiam2|noun|adj}} {{hak-cat|ngui2hiam3|noun|adj}} {{wuu-cat|ngue3shi3|noun|adj}} ==={{pron}}=== {{cmn-pron|wēixiǎn|wéixiǎn|a=y|z=n}} {{yue-pron|ngai4 him2|h=n}} {{nan-pron|ml:gûi-hiám|t=nguin5 hiam2}} {{hak-pron|h=ngui hiamˊ|gd=ngui2 hiam3}} {{wuu-pron|sh:6we shi5,6ngue shi5;sj:2ngue shi3;cm:2nguei shie3;sz:2we shie3;cz:2wai shie3;tx:2wi shie3;hz:2wei shien3}} ==={{noun}}=== {{zhchars|t=危險}} #[[危険]]。 ==={{adjective}}=== {{zhchars|t=危險}} #危険な。 25k71fmfglnrfsf6lrd9i5uolsppd9m 危險 0 50748 2313351 1507877 2026-08-09T04:01:54Z Jiba1219 100610 2313351 wikitext text/x-wiki {{kana-DEFAULTSORT|きけん}} =={{L|ja}}== ==={{kyujitai}}=== {{ja-kyujitai|きけん}} #{{kyujitai of|危険}} =={{L|zh}}== {{zh-cat|wei1xian3|noun|adj}} {{yue-cat|ngai4him2|noun|adj}} {{nan-cat|gui5hiam2|noun|adj}} {{nan-tws-cat|nguin5hiam2|noun|adj}} {{hak-cat|ngui2hiam3|noun|adj}} {{wuu-cat|ngue3shi3|noun|adj}} ==={{pron}}=== {{cmn-pron|wēixiǎn|wéixiǎn|a=y}} {{yue-pron|ngai4 him2}} {{nan-pron|gûi-hiám|t=nguin5 hiam2}} {{hak-pron|ngùi-hiám|h=ngui hiamˊ|gd=ngui2 hiam3}} {{wuu-pron|sh:6we shi5,6ngue shi5;sj:2ngue shi3;cm:2nguei shie3;sz:2we shie3;cz:2wai shie3;tx:2wi shie3;hz:2wei shien3}} ==={{noun}}=== {{zhchars|s=危险}} #[[危険]]。 ==={{adjective}}=== {{zhchars|s=危险}} #危険な。 =={{L|ko}}== ==={{noun}}=== {{ko-head|noun|위험}} #[[危険]]。 =={{L|vi}}== ==={{noun}}=== {{vi-head|noun|nguy|hiểm}} #[[危険]]。 ==={{adjective}}=== {{vi-head|adjective|nguy|hiểm}} #危険な。 prtr7jbcfh37fi10klbclkmcgp7w8vj 0 51812 2313451 1830335 2026-08-09T11:16:31Z M-30722 1202 2313451 wikitext text/x-wiki ==ハングル== {{ハングル|ㅊ|ㅣ|ㅁ}} =={{L|ko}}== ==={{pron}}=== {{ko-IPA}} ==={{noun}}=== {{head|ko|noun}} #{{context|physiology|lang=ko}}{{ふりがな|唾|つば}}。 #: {{ux|ko|'''침'''[[을]] [[뱉다]]|唾を吐く}} ===漢字音=== [[Category:{{ko}} 漢字音]] [[侵]][[針]][[沈]][[浸]][[寢]][[枕]][[鍼]][[砧]][[琛]][[寖]][[忱]][[椹]][[沉]][[郴]][[鋟]][[駸]] =={{コード}}== {{ハングルコード}} 1w20xxjuonjqajbm4on7kum11enk1gd 爱惜 0 53020 2313358 1576108 2026-08-09T05:02:26Z Jiba1219 100610 2313358 wikitext text/x-wiki {{DEFAULTSORT:ai4xi1}} =={{L|zh}}== {{zh-cat|ai4xi1|動詞|hsk=丁|hsk2=5}} {{yue-cat|oi3sik1|動詞}} {{nan-cat|ai3sioh4|動詞}} {{nan-tws-cat|ain3sioh4|動詞}} {{hak-cat|oi4siak5|動詞}} {{wuu-cat|e3sih4|動詞}} {{hsn-cat|ngai4si6|動詞}} ==={{pron}}=== {{cmn-pron|àixī|àixí|a=Zh-àixi.ogg|z=n}} {{yue-pron|oi3 sik1,oi3 sek3|h=n}} {{nan-pron|ml:ài-sioh|t=ain3 sioh4}} {{hak-pron|oi-siak}} {{wuu-pron|sz:1e5 siq7}} {{hsn-pron|ngai4 si6}} ==={{verb}}=== {{zhchars|t=愛惜}} #[[大切]]にする。 dxtc2q9vynytb6jyqy65v1tjdaa8au7 2313361 2313358 2026-08-09T05:06:09Z Jiba1219 100610 2313361 wikitext text/x-wiki {{DEFAULTSORT:ai4xi1}} =={{L|zh}}== {{zh-cat|ai4xi1|動詞|hsk=丁|hsk2=5}} {{yue-cat|oi3sik1|動詞}} {{nan-cat|ai3sioh4|動詞}} {{nan-tws-cat|ain3sioh4|動詞}} {{wuu-cat|e3sih4|動詞}} {{hsn-cat|ngai4si6|動詞}} ==={{pron}}=== {{cmn-pron|àixī|àixí|a=Zh-àixi.ogg|z=n}} {{yue-pron|oi3 sik1,oi3 sek3|h=n}} {{nan-pron|ml:ài-sioh|t=ain3 sioh4}} {{wuu-pron|sz:1e5 siq7}} {{hsn-pron|ngai4 si6}} ==={{verb}}=== {{zhchars|t=愛惜}} #[[大切]]にする。 r4x6ewf9td5nc84fwzrfu9flvlatz4s テンプレート:ma 10 54742 2313230 1599139 2026-08-08T23:34:54Z Kuroco2k 84207 [[テンプレート:mk]] へのリダイレクトを解除しました 2313230 wikitext text/x-wiki {| class="sakujo" style="border:solid gray 1px; padding:0 0.5em; margin:1ex auto; font-size: small; width:80%" |- | [[ファイル:Icono aviso borrar.svg|50px|削除依頼に提出されています]] | このページは'''[[Wiktionary:削除の方針|削除の方針]]'''に従い'''[[Wiktionary:削除依頼|削除依頼]]'''に出されています。[[{{TALKSPACE}}:{{PAGENAME}}|このページのノート]]も参照してください。 この項目の削除可否についての議論が<span class="sakujo-request">[[Wiktionary:削除依頼/2026年8月/テンプレート:ma|該当する削除依頼]]</span>で進行中です。 この項目は'''まだ削除されていません'''。削除に異議のある方は<span class="sakujo-request">[[Wiktionary:削除依頼/2026年8月/テンプレート:ma|該当する削除依頼]]</span>に是非ご参加ください。該当する削除依頼が終了するまで'''このメッセージを剥がさないでください。''' [[カテゴリ:削除依頼中のページ]] |} 8mqzy3ykghcm04heafluo8t6j3b3v4f テンプレート:mac 10 54743 2313227 1599140 2026-08-08T23:30:18Z Kuroco2k 84207 [[テンプレート:mk]] へのリダイレクトを解除しました 2313227 wikitext text/x-wiki {{非推奨のテンプレート|メッセージ='''このテンプレートは使用されるべきではありません。代わりに[[テンプレート:mk]]を使用してください。'''|廃止=n}} <includeonly>[[カテゴリ:非推奨のテンプレートを使用しているページ]]</includeonly><noinclude>[[カテゴリ:言語表記テンプレート|{{PAGENAME}}]][[カテゴリ:ISO 639-2|{{PAGENAME}}]]</noinclude> tnd5i9pdxew7ywh5a4x6jk77jovb9ta moteriškas 0 55048 2313442 2044707 2026-08-09T10:44:45Z Kuroco2k 84207 2313442 wikitext text/x-wiki {{DEFAULTSORT:moteriskas moteriškas}} =={{L|lt}}== ==={{pron}}=== {{lt-pr|móteriškas}} *{{kanahyoki|lt|'''モー'''テリシュカス}} ==={{adjective}}=== {{head|lt|adjective|g=m|head=moteriškas|中性:|[[moteriška|móteriška]]|sort=moteriskas moteriškas}} #[[女性]]の。[[おんな|女]]の。 ===={{inflection}}==== ;原級: 非限定形(アクセント型: '''1'''<ref>村田郁夫・編『リトアニア語基礎一五〇〇語』大学書林、1994年、44頁。ISBN 4-475-01112-4</ref>): {{lt-infl-adj|男性単数主格=moteriškas|男性単数主格表示=móteriškas|女性単数主格=moteriška|女性単数主格表示=móteriška|男性複数主格=moteriški|男性複数主格表示=móteriški|女性複数主格=moteriškos|女性複数主格表示=móteriškos|男性単数属格=moteriško|男性単数属格表示=móteriško|女性単数属格=moteriškos|女性単数属格表示=móteriškos|男性複数属格=moteriškų|男性複数属格表示=móteriškų|女性複数属格=moteriškų|女性複数属格表示=móteriškų|男性単数与格=moteriškam|男性単数与格表示=móteriškam|女性単数与格=moteriškai|女性単数与格表示=móteriškai|男性複数与格=moteriškiems|男性複数与格表示=móteriškiems|女性複数与格=moteriškoms|女性複数与格表示=móteriškoms|男性単数対格=moterišką|男性単数対格表示=móterišką|女性単数対格=moterišką|女性単数対格表示=móterišką|男性複数対格=moteriškus|男性複数対格表示=móteriškus|女性複数対格=moteriškas|女性複数対格表示=móteriškas|男性単数具格=moterišku|男性単数具格表示=móterišku|女性単数具格=moteriška|女性単数具格表示=móteriška|男性複数具格=moteriškais|男性複数具格表示=móteriškais|女性複数具格=moteriškomis|女性複数具格表示=móteriškomis|男性単数位格=moteriškame|男性単数位格表示=móteriškame|女性単数位格=moteriškoje|女性単数位格表示=móteriškoje|男性複数位格=moteriškuose|男性複数位格表示=móteriškuose|女性複数位格=moteriškose|女性複数位格表示=móteriškose|男性単数呼格=moteriškas|男性単数呼格表示=móteriškas|女性単数呼格=moteriška|女性単数呼格表示=móteriška|男性複数呼格=moteriški|男性複数呼格表示=móteriški|女性複数呼格=moteriškos|女性複数呼格表示=móteriškos}} 限定形: {{lt-infl-adj|男性単数主格=moteriškasis|女性単数主格=moteriškoji|男性複数主格=moteriškieji|女性複数主格=moteriškosios|男性単数属格=moteriškojo|女性単数属格=moteriškosios|男性複数属格=moteriškųjų|女性複数属格=moteriškųjų|男性単数与格=moteriškajam|女性単数与格=moteriškajai|男性複数与格=moteriškiesiems|女性複数与格=moteriškosioms|男性単数対格=moteriškąjį|女性単数対格=moteriškąją|男性複数対格=moteriškuosius|女性複数対格=moteriškąsias|男性単数具格=moteriškuoju|女性単数具格=moteriškąja|男性複数具格=moteriškaisiais|女性複数具格=moteriškosiomis|男性単数位格=moteriškajame|女性単数位格=moteriškojoje|男性複数位格=moteriškuosiuose|女性複数位格=moteriškosiose|男性単数呼格=moteriškasis|女性単数呼格=moteriškoji|男性複数呼格=moteriškieji|女性複数呼格=moteriškosios}} {{lt-infl-adj-comp-super|moterišk|moterišk}} ===={{comp}}==== {{top}} 非限定・女性・単数・主格: *[[moteriška giminė|'''moteriška''' giminė]] - 《[[文法]]》 [[女性|'''女'''性]] {{bottom}} ===={{trans}}==== {{trans-see|女性}} ===={{ant}}==== *[[vyriškas]] ===={{rel}}==== ;{{noun}}: *[[moteris]] '''{{f}}''' *[[motina]] {{f}} ===脚注=== <references /> 9kkho8m1jw3vaii53ap96guf5xz254l 2313445 2313442 2026-08-09T10:47:23Z Kuroco2k 84207 /* {{inflection}} */ 2313445 wikitext text/x-wiki {{DEFAULTSORT:moteriskas moteriškas}} =={{L|lt}}== ==={{pron}}=== {{lt-pr|móteriškas}} *{{kanahyoki|lt|'''モー'''テリシュカス}} ==={{adjective}}=== {{head|lt|adjective|g=m|head=moteriškas|中性:|[[moteriška|móteriška]]|sort=moteriskas moteriškas}} #[[女性]]の。[[おんな|女]]の。 ===={{inflection}}==== {{lt-adj-as-1|moterišk|móterišk}} ===={{comp}}==== {{top}} 非限定・女性・単数・主格: *[[moteriška giminė|'''moteriška''' giminė]] - 《[[文法]]》 [[女性|'''女'''性]] {{bottom}} ===={{trans}}==== {{trans-see|女性}} ===={{ant}}==== *[[vyriškas]] ===={{rel}}==== ;{{noun}}: *[[moteris]] '''{{f}}''' *[[motina]] {{f}} ===脚注=== <references /> 11omm4db04tizfuob2vjuohexurigoy jij 0 67746 2313382 2091107 2026-08-09T07:00:50Z Jiba1219 100610 水平線の除去 2313382 wikitext text/x-wiki =={{L|nl}}== ==={{etym}}=== {{etyl|dum|nl}} ''[[ji]]'' < {{etyl|odt|nl}} {{m|odt|gī}} < {{etyl|gem-pro|nl}} {{m|gem-pro|*jīz}} < {{etyl|ine-pro|nl}} {{m|ine-pro|*yū́}} ==={{pron}}=== * {{rhymes|ɛi̯}} * {{IPA|lang=nl|jɛi̯}} (強勢あり), {{IPA|lang=nl|jə}} (強勢なし) * {{SAMPA|jEi}} * {{音声|nl|Nl-jij.ogg}} ==={{pronoun}}=== {{head|nl|pronoun}} #二人称単数主格。[[あなた]]。 {{nl-decl-personal pronouns}} ===={{rel}}==== * {{l|nl|je}} * {{l|nl|jullie}} ===={{desc}}==== *{{desc|af|jy}} ==={{verb}}=== {{nl-verb-form}} #[[jijen]]の直説法現在第一人称単数形。 #jijenの命令法。 =={{L|jbo}}== ===Rafsi=== {{jbo-rafsi}} #[[jijnu]]のrafsi。 cq0e4bhc4y6lggb4aie5ye4w8qpw5ez 諸処 0 71702 2313101 1921442 2026-08-08T13:10:19Z うーむ 129171 /* 別表記 */ 2313101 wikitext text/x-wiki {{kana-DEFAULTSORT|しょしょ}} =={{L|ja}}== {{ja-kanjitab|しょ|しょ|yomi=o}} ===別表記=== *[[諸所]] *[[所所]] ==={{pron}}=== {{ja-pron|しょしょ|acc=1}} ==={{noun}}=== {{ja-noun|[[しょしょ]]}} #{{ふりがな|諸諸|もろもろ}}の[[場所]]。[[いろいろ|色々]]な場所。 #*[[われら]][[三年]]の[[あいだ|間]]、'''諸処'''を[[へる|経]][[めぐる|めぐっ]]た[[こと|事]]が[[ござる]]。({{w|芥川龍之介}}『じゅりあの・吉助』) ===={{syn}}==== *[[あちこち]]、[[あちらこちら]]、[[ここかしこ]]、[[ところどころ]]、[[方方]] 0u6sbjp7ecb7sjde1dkseve929rv6u8 mac 0 74323 2313199 2306932 2026-08-08T23:01:01Z Kuroco2k 84207 2313199 wikitext text/x-wiki =={{symb}}== ==={{code}}=== '''{{PAGENAME}}''' #{{ISO 639|2B|mk}} =={{L|ga}}== ==={{etym}}=== {{etyl|mga|ga}} {{m|mga|mac}} < {{etyl|sga|ga}} {{m|sga|macc}} < {{etyl|pgl|ga}} {{m|pgl|ᚋᚐᚊᚊᚔ|pos=属格}} < {{etyl|cel-pro|ga}} {{m|cel-pro|*makkʷos}} ( {{m|cel-pro|*makʷos}} の異形) < {{etyl|ine-pro|ga}} {{m|ine-pro|*meh₂ḱ-}} ==={{pron}}=== * {{IPA|lang=ga|mˠak|mˠɑk}} ==={{noun}}=== {{ga-noun|g=m|mic|mic}} #{{タグ|ga|家族}}{{ふりがな|息子|むすこ}}。 {{ga-decl-m1|m|ac|ic|datpl=yes}} ===={{coor}}==== * {{l|ga|iníon}} * {{l|ga|Nic}} ===={{drv}}==== {{col3|lang=ga|garmhac|leasmhac|mac léinn|mac rí|mac tíre|millteán mic|leanbh mic|oidhre mic|páiste mic|Dia an Mac|An t[[Athair-Mhac]]|macra|mac an daba|macghníomh|Mac|macasamhail}} {{ga-mut}} =={{L|en}}== ==={{pron}}=== * {{enPR|măk}}, {{IPA|lang=en|mæk}} * {{音声|en|LL-Q1860 (eng)-Vealhurl-mac.wav|a=Southern England}} * {{rhymes|lang=en|æk|s=1}} * {{homophones|lang=en|Mac|mack|Mack}} ==={{etym}}1=== {{m|en|mackintosh}} の短縮。 ===={{noun}}==== {{en-noun}} #{{タグ|en|略語}}{{l|en|mackintosh}}の短縮。 #{{タグ|en|UK|US|Canada|Australia|俗語|offensive|derogatory|民族差別}}[[スコットランド]]系の人。 ====={{drv}}===== * [[pac-a-mac]] ==={{etym}}2=== {{m|en|macaroni}} の短縮。 ===={{noun}}==== {{en-noun|-}} #{{タグ|en|North America|略語|俗語}}{{l|en|macaroni}}の短縮。 ====={{drv}}===== * [[chili mac]] * {{l|en|mac and cheese}}, {{l|en|mac 'n' cheese}} * {{l|en|mac salad}} ==={{anag}}=== * {{anagrams|en|a=acm|ACM|AMC|C.M.A.|CAM|CMA|Cam|MCA|cam}} =={{L|csb}}== ==={{etym}}=== {{etyl|sla-pro|csb}} {{m|sla-pro|*màti}} ==={{noun}}=== {{csb-noun|f}} #{{タグ|csb|家族}}{{ふりがな|母|はは}}、{{ふりがな|母親|ははおや}}。 =={{L|ca}}== ==={{pron}}=== * {{ca-IPA}} ==={{noun}}=== {{ca-noun|m}} #{{ふりがな|小石|こいし}}。 #: {{syn|ca|còdol}} ===={{drv}}==== * {{l|ca|mac de torrent}} * {{l|ca|macar}} =={{L|quc}}== ==={{noun}}=== {{head|quc|noun}} #{{タグ|quc|Classical K'iche'|宗教}}{{ふりがな|罪|つみ}}、[[罪悪]]。 =={{L|sga}}== ==={{noun}}=== {{sga-noun|m|maic|maic|gen2=meic|pl2=meic}} #{{l|sga|macc}}の異綴。 {{sga-decl-o-masc|maic|gen_sg2=meic}} =={{L|gd}}== ==={{etym}}=== {{etyl|mga|gd}} {{m|mga|mac}} < {{etyl|sga|gd}} {{m|sga|macc}} < {{etyl|pgl|gd}} {{m|pgl|ᚋᚐᚊᚊᚔ|pos=属格}} < {{etyl|cel-pro|gd}} {{m|cel-pro|*makkʷos}} ( {{m|cel-pro|*makʷos}} の異形) < {{etyl|ine-pro|gd}} {{m|ine-pro|*meh₂ḱ-}} ==={{pron}}=== * {{IPA|lang=gd|maʰk|a=Lewis|a2=Wester Ross}} * {{IPA|lang=gd|maxk|a=Southern Hebridean|a2=Skye}} * {{hyph|gd|mac}} ==={{noun}}=== {{gd-noun|g=m|gen=mic|pl=mic}} #{{タグ|gd|家族}}{{ふりがな|息子|むすこ}}。 {{gd-decl-noun-m1|m|ac|ic}} ===={{drv}}==== * {{l|gd|macail}} * {{l|gd|mac-an-aba}} * {{l|gd|uchd-mhac}} {{gd-mut-cons|m|ac}} =={{L|zlw-slv}}== ==={{etym}}=== {{etyl|sla-pro|zlw-slv}} {{m|sla-pro|*màti}} ==={{noun}}=== {{head|zlw-slv|noun|g=f}} #{{タグ|zlw-slv|家族}}{{ふりがな|母|はは}}、{{ふりがな|母親|ははおや}}。 =={{L|so}}== ==={{adjective}}=== {{head|so|adj}} #{{おくりがな2|甘|あま|い|あまい}}。 ===={{drv}}==== *{{l|so|macaan}} ==={{seealso}}=== *{{l|so|qadhaadh}} =={{L|enm}}== ==={{noun}}=== {{head|enm|noun}} #{{l|enm|make}}の異形。 =={{L|mga}}== ==={{pron}}=== * {{IPA|lang=mga|mak}} ==={{etym}}1=== {{etyl|sga|mga}} {{m|sga|macc}} < {{etyl|pgl|mga}} {{m|pgl|ᚋᚐᚊᚊᚔ|pos=属格}} < {{etyl|cel-pro|mga}} {{m|cel-pro|*makkʷos}} ( {{m|cel-pro|*makʷos}} の異形) < {{etyl|ine-pro|mga}} {{m|ine-pro|*meh₂ḱ-}} ===={{noun}}==== {{mga-noun|m|mic|mic}} #{{タグ|mga|家族}}{{ふりがな|息子|むすこ}}。 ====={{desc}}===== * {{desc|ga|mac}} * {{desc|gd|mac}} * {{desc|gv|mac}} ==={{etym}}2=== {{etyl|cel-pro|mga}} {{m|cel-pro|*makkos}} ===={{noun}}==== {{mga-noun|m}} #[[保証]]。 {{mga-mutation|m|ac}} =={{L|dik}}== ==={{noun}}=== {{head|dik|noun|plural|mɛ̈c}} #{{ふりがな|火|ひ}}。 #[[刑務所]]、[[監獄]]。 =={{L|fr}}== ==={{pron}}=== * {{fr-IPA}} * {{音声|fr|LL-Q150 (fra)-LoquaxFR-mac.wav|a=Vosges}} ==={{etym}}1=== ===={{noun}}==== {{fr-noun|m}} #{{タグ|fr|略語|口語|俗語}}{{l|fr|maquereau}}の短縮。 ==={{etym}}2=== ===={{noun}}==== {{fr-noun|m}} #{{タグ|fr|略語|口語|情報技術}}{{l|fr|Macintosh}}の短縮。 =={{L|gv}}== ==={{etym}}=== {{etyl|sga|gv}} {{m|sga|macc}} < {{etyl|pgl|gv}} {{m|pgl|ᚋᚐᚊᚊᚔ|pos=属格}} < {{etyl|cel-pro|gv}} {{m|cel-pro|*makkʷos}} ( {{m|cel-pro|*makʷos}} の異形) < {{etyl|ine-pro|gv}} {{m|ine-pro|*meh₂ḱ-}} ==={{noun}}=== {{gv-noun|m|mec|mic}} #{{タグ|gv|家族}}{{ふりがな|息子|むすこ}}。 ===={{drv}}==== * {{l|gv|mac-}} {{gv-mut-cons|m|ac}} =={{L|ro}}== ==={{pron}}=== * {{IPA|lang=ro|ˈmak}} * {{rhymes|lang=ro|ak|s=1}} ==={{etym}}1=== {{bor|ro|cu||*макъ}} < {{etyl|sla-pro|ro}} {{m|sla-pro|*makъ}} ===={{noun}}==== {{ro-noun|m|maci}} #{{タグ|ro|可算|草}}{{ふりがな|芥子|けし}}、[[ポピー]]。 #{{タグ|ro|不可算}}芥子の{{ふりがな|実|み}}。 {{ro-noun-m}} ====={{drv}}===== * {{l|ro|mac cornut}} ==={{etym}}2=== オノマトペ ===={{interjection}}==== {{head|ro|interjection}} #{{タグ|ro|オノマトペ}}アヒルの鳴き声。くぁっ。 =={{L|jbo}}== ===Rafsi=== {{jbo-rafsi}} #{{l|jbo|manci}}のrafsi。 6sl5om9ir2hhmgs62kbgjhvlilq991g 常识 0 75561 2313383 2273470 2026-08-09T07:03:11Z Jiba1219 100610 2313383 wikitext text/x-wiki =={{L|zh}}== {{zh-cat|chang2shi2|noun|hsk=丙|hsk2=5}} {{yue-cat|seung4sik1|noun}} {{nan-cat|siong5sek4|noun}} {{nan-tws-cat|sion5seg4|noun}} ==={{pron}}=== {{cmn-pron|chángshí|chángshì|z=n}} {{yue-pron|soeng4 sik1|a=LL-Q9186 (yue)-Justinrleung-常識.wav|h=n}} {{nan-pron|xm:siông-sek/qz:siông-siak/zz:siâng-sit/ly:chhâng-sit|t=sion5 sêg4}} {{hak-pron|h=shong shid}} ==={{noun}}=== {{zhchars|t=常識}} #[[常識]]。 0p9if8o1acft3pdsfhnxlfbkkb5halv はけん 0 77820 2313455 1474869 2026-08-09T11:28:18Z M-30722 1202 2313455 wikitext text/x-wiki {{kana-DEFAULTSORT}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana|h=y}} *【[[派遣]]】[[命令]]して[[他]]の[[地]]へ[[いく|行か]]せること。 *【[[覇権]]】[[覇者]]としての[[権力]]。 ceh4bya944uz0925ebed1pceq461cha 仔細 0 79693 2313462 2212244 2026-08-09T11:46:59Z Kuroco2k 84207 /* {{desc}} */ 2313462 wikitext text/x-wiki {{kana-DEFAULTSORT|しさい}} =={{L|ja}}== {{ja-kanjitab|し|さい|yomi=o}} ==={{alter}}=== *[[子細]] ==={{pron}}=== {{ja-pron|しさい|acc=0|acc2=1}} ==={{noun}}=== {{ja-noun|[[しさい]]}} #{{おくりがな2|細|こま|かい|こまかい}}こと。{{おくりがな2|詳|くわ|しい|くわしい}}こと。 #詳しい[[事情]]。 #{{おくりがな3|差|さ|し|支|つか|え|さしつかえ}}。 ==={{adjectivenoun}}=== {{ja-adjectival noun|しさい}} {{日本語ダ活用}} =={{L|zh}}== {{拡大|仔|細|lang=zh}} ==={{alter}}=== *{{ZHtra|[[子細]]}} ==={{pron}}=== {{cmn-pron|zǐxì|a=zh-zixì.ogg}} {{yue-pron|zi2 sai3|a=LL-Q9186-Luilui6666-仔细.wav|a2=LL-Q9186 (yue)-Justinrleung-仔細.wav|t=du2 lhai1}} {{hak-pron|chṳ́-se}} {{nan-pron|xm,zz,kh:chú-sè/tp:chú-sòe/qz:chír-sè|t=ze2 soi3}} {{wuu-pron|sh:5tsy shi}} ==={{adj}}=== {{zh-cat|zi3xi4|adj|verb}} {{yue-cat|ji2sai3|adj|verb}} {{hak-cat|chii3se3|adj|verb}} {{nan-cat|chu2soe3|adj|verb}} {{nan-tws-cat|ze2soi3|adj|verb}} {{wuu-cat|tsy2si3|adj|verb}} {{zhchars}} ({{zh-ts||'''[[仔细]]'''}} ) #[[注意深い]]。 #{{q|官話}} [[質素]]な。[[倹約的]]な。 ==={{verb}}=== {{zhchars}} ({{zh-ts||'''[[仔细]]'''}} ) #[[注意]]する。[[用心]]する。 ==={{desc}}=== {{CJKV|仔細,子細|子細|j=しさい|j2=仔細|[[자세]]|tử tế|v=仔細}} [[Category:日中で意味が大きく異なる漢語]] =={{L|ko}}== ==={{noun}}=== {{ko-head|noun|자세}} #(日本語語義1に同じ)仔細。 ===={{alter}}==== *{{l|ko|子細}} =={{L|vi}}== ==={{adj}}=== {{vi-head|adj|tử|tế}} #[[礼儀正しい]]。[[親切]]な。 [[Category:日越で意味が大きく異なる漢語]] 5j7mpiwwvc0u3gihw8m7met9utgdc73 上面 0 81668 2313308 1714405 2026-08-09T01:24:09Z Jiba1219 100610 2313308 wikitext text/x-wiki {{kana-DEFAULTSORT|じょうめん}} =={{L|ja}}== [[Category:{{ja}}]] ==={{noun}}=== [[Category:{{ja}}_{{noun}}]] {{jachars}} #(じょうめん) [[もの|物]]の[[うえ|上]]を[[むく|向いた]]面。 #([[うわつら]]、[[うわっつら]]) ##[[表面]]。 ##外から見える表面的な部分。 ===={{ant}}==== 語義1 *[[下面]] =={{L|zh}}== {{zh-cat|shang4mian|方位詞|noun|hsk=乙}} {{yue-cat|seung6min6|noun}} {{nan-cat|chiunn76bin7|noun}} {{hak-cat|song4mien4|noun}} {{wuu-cat|zaon3mi3|noun}} {{hsn-cat|shan5mienn|noun}} ==={{pron}}=== {{cmn-pron|shàngmian|a=LL-Q9192 (cmn)-Luilui6666-上面.wav}} {{yue-pron|soeng6 min6|a=LL-Q9186 (yue)-Justinrleung-上面.wav|t=siang5 men5}} {{nan-pron|xm,qz:siōng-bīn/xm:siōng-biān/zz:siāng-bīn/zz:siāng-biān}} {{hak-pron|song-mien}} {{wuu-pron|sh:6zaon mi}} {{hsn-pron|shan5 mienn}} ===方位詞=== {{zhchars}} #{{ふりがな|上|うえ}}(に、で)。 #(順序){{ふりがな|前|まえ}}(に、で)。 ==={{noun}}=== {{zhchars}} #(物の)[[表面]]。 #[[方面]]。 #[[上級]][[機関]]、[[上司]]。 =={{L|ko}}== ==={{noun}}=== {{ko-head|noun|상면}} #[[もの|物]]の[[うえ|上]]を[[むく|向いた]]面。 dct1l66z53z0o4ff9l1go7qgh9fsxj6 상면 0 81671 2313310 2207078 2026-08-09T01:27:42Z Jiba1219 100610 2313310 wikitext text/x-wiki =={{L|ko}}== ==={{pron}}1=== {{ko-IPA|l=y}} ===={{noun}}==== {{head|ko|noun}} {{ko-h|上|面|hom=y}} #[[上面]]。 ==={{pron}}2=== {{ko-IPA}} ===={{noun}}==== {{head|ko|noun}} {{ko-h|相|面}} #[[対面]]。 #[[初対面]]の[[挨拶]]。 n5pkwyfa5h4634m7yfzpu2bcsf7ui16 波涛 0 83989 2313363 2097179 2026-08-09T05:18:49Z Jiba1219 100610 2313363 wikitext text/x-wiki {{kana-DEFAULTSORT|はとう}} =={{L|ja}}== {{ja-kanjitab|は|とう|yomi=o}} ===={{pron}}==== {{ja-pron|はとう|acc=h}} ==={{noun}}=== {{ja-noun|[[はとう]]|yomi=o}} #「[[波濤]]」の[[拡張新字体]]を用いた表記。 =={{L|zh}}== {{zh-cat|bo1tao1|noun}} {{yue-cat|boi1tou4|noun}} {{nan-cat|pho1to5|noun}} ==={{pron}}=== {{cmn-pron|bōtāo|bōtáo|z=n}} {{yue-pron|bo1 tou4|h=n}} {{nan-pron|qz:pho-tô͘/xm,zz:pho-tô/xm:po-tô}} ==={{noun}}=== {{zhchars|t=波濤}} #[[波濤]]。 lnbq5ktrjz8qe05sdkrc1ev4f2mv0av 波濤 0 83990 2313362 2097180 2026-08-09T05:18:06Z Jiba1219 100610 2313362 wikitext text/x-wiki {{kana-DEFAULTSORT|はとう}} =={{L|ja}}== {{ja-kanjitab|は|とう|yomi=o}} ===={{pron}}==== {{ja-pron|はとう|acc=h}} ==={{noun}}=== {{ja-noun|[[はとう]]|yomi=o}} #{{ふりがな|大波|おおなみ}}。 ===={{alter}}==== *[[波涛]]([[拡張新字体]]を用いた表記) =={{L|zh}}== {{zh-cat|bo1tao1|noun}} {{yue-cat|boi1tou4|noun}} {{nan-cat|pho1to5|noun}} ==={{pron}}=== {{cmn-pron|bōtāo|bōtáo}} {{yue-pron|bo1 tou4}} {{nan-pron|qz:pho-tô͘/tw,xm,zz:pho-tô/xm:po-tô}} ==={{noun}}=== {{zhchars|s=波涛}} #(日本語に同じ)波濤。 =={{L|ko}}== ==={{noun}}=== {{ko-head|noun|파도}} #(日本語に同じ)波濤。 =={{L|vi}}== ==={{noun}}=== {{vi-head|noun|ba|đào}} #(日本語に同じ)波濤。 #*「波濤,ba đào.」(阮秉『五千字譯國語』) 0brunhyh5bgvs0k0oea3hwh3spza6fr 堕落 0 88529 2313349 1923199 2026-08-09T03:16:38Z Jiba1219 100610 2313349 wikitext text/x-wiki {{kana-DEFAULTSORT|だらく}} {{wikipedia}} =={{L|ja}}== ==={{pron}}=== {{ja-pron|だらく|acc=0}} ==={{noun}}=== {{ja-noun-suru|だらく|kyu=墮落}} #[[健全]]な[[状態]]・[[態度]]を[[うしなう|失って]][[劣悪]]な状態・態度になること。 #{{context|Buddhism|lang=ja}}[[道心]]を失って[[欲]]に[[みちる|満ちた]][[生活]]をすること。 ===={{syn}}==== * [[腐敗]]、[[退廃]]、<small>(語義1・語義2、に共通で使える{{syn}})</small> 語義1 *[[いやしい|卑しい]]、[[転落]]、[[廃退]] 語義2 *[[不健全]]、[[背徳]] ===={{ant}}==== * [[健全]]<small>(語義1・語義2、に共通で使える{{ant}})</small> 語義1 * [[更生]] 語義2 * [[清廉]] ===={{rel}}==== *[[腐敗]]、[[退廃]] [[利権構造]] ===={{prov}}==== *[[堕落僧]] ===={{trans}}==== *{{T|en}}: {{t|en|corruption}} ==={{verb}}=== {{日本語サ変活用}} ===={{trans}}==== *{{T|en}}: {{t|en|corrupt}} =={{L|zh}}== {{zh-cat|duo4luo4|verb|hsk=丁|hsk2=6}} {{yue-cat|do6lok6|verb}} ==={{pron}}=== *ピンイン: duòluò *{{yue}}: do{{supra|6}}lok{{supra|6}} ==={{verb}}=== {{zhchars|t=墮落}} #堕落する。 dsnohh4zjd4g9l4he01jf6ioxnqp3eu 墮落 0 88530 2313348 1511914 2026-08-09T03:12:34Z Jiba1219 100610 2313348 wikitext text/x-wiki {{kana-DEFAULTSORT|だらく}} =={{L|ja}}== ==={{kyujitai}}=== {{ja-kyujitai|だらく}} #{{kyujitai of|堕落}} =={{L|zh}}== {{zh-cat|duo4luo4|verb}} {{yue-cat|do6lok6|verb}} {{nan-cat|tui7loh8|verb}} ==={{pron}}=== *ピンイン: duòluò *注音符号: ㄉㄨㄛˋ ㄌㄨㄛˋ *{{yue}}: do{{supra|6}}lok{{supra|6}} *{{nan}}: tūi-lo̍h ==={{verb}}=== {{zhchars|s=堕落}} #[[堕落]]する。 =={{L|ko}}== ==={{noun}}=== {{ko-head|noun|타락}} #[[堕落]]。 k145bl1dcswdv5002j5u2y4jonj3c0g テンプレート:pt-verb 10 105659 2313385 1808778 2026-08-09T07:12:46Z Kuroco2k 84207 内容の置換:「<onlyinclude>{{head|pt|verb}}</onlyinclude> [[カテゴリ:{{pt}} テンプレート|verb]]」 2313385 wikitext text/x-wiki <onlyinclude>{{head|pt|verb}}</onlyinclude> [[カテゴリ:{{pt}} テンプレート|verb]] k9dk5k5nf2waueic5gtappsz4b9kg7i 流氓 0 106570 2313466 2185616 2026-08-09T11:53:53Z Kuroco2k 84207 /* {{desc}} */ 2313466 wikitext text/x-wiki {{kana-DEFAULTSORT|りゅうぼう}} =={{L|ja}}== {{ja-kanjitab|りゅう|ぼう|yomi=o}} ==={{pron}}=== {{ja-pron|りゅうぼう|acc=0}} {{ja-accent-common|region=京阪|h||りゅーぼー}} ==={{noun}}=== {{ja-noun|[[りゅうぼう]]}} #[[流浪]]の{{ふりがな|民|たみ}}。[[流民]]。 =={{L|zh}}== {{zh-cat|liu2mang2|noun|古語・廃語|hsk=丙|hsk2=6}} {{yue-cat|lau4man4|noun|古語・廃語}} {{nan-cat|liu5bin5|noun|古語・廃語}} {{nan-tws-cat|liu5mang5|noun|古語・廃語}} {{cpx-cat|liu2morng2|noun|古語・廃語}} {{wuu-cat|lieu3maon1|noun}} ==={{pron}}=== {{cmn-pron|liúmáng|a=Zh-liúmáng.ogg}} {{yue-pron|lau4 man4,lau4 mong4,lau4 mang4,lau4 maang4|a=LL-Q9186-Luilui6666-流氓.wav}} {{nan-pron|qz,xm:liû-bâng/tw,zz:liû-bîn|t=liu5 mang5}} {{cpx-pron|pt,xy:liu2 morng2}} {{wuu-pron|sh:6lieu maon}} ==={{noun}}=== {{zhchars}} #{{context|古語・廃語|lang=wuu|skey=lieu3maon1}}(日本語に同じ)流氓。 #[[やくざ]]、[[ちんぴら]]。 #[[迷惑]][[行為]]。 [[Category:日中で意味が大きく異なる漢語]] ==={{desc}}=== {{CJKV||j=りゅうぼう|流氓|유맹,류맹}} =={{L|ko}}== ==={{noun}}=== {{ko-head|noun|유맹|류맹}} #(日本語に同じ)流氓。 e4f2i2pkgus68u3g2phf7z6mtczkoi4 くず 0 111591 2313283 2204783 2026-08-09T00:23:43Z 鍼灸 112313 2313283 wikitext text/x-wiki {{半保護S}}{{kana-DEFAULTSORT}} {{also|くす|ぐず}} =={{L|ja}}== ==={{noun}}:屑=== {{ja-noun|屑}} # [[よい]]ところを[[とる|とった]][[あと]]に[[のこる|のこった]]もの。[[本体]]からこぼれおちて[[不要]]になったもの。[[ごみ]]。 #*パンくず。かんなくず。消しゴムのくず。 # [[一面]]に散らばった、[[微小]]にみえるもの。 #*星屑。 # [[こわれる|こわれて]]、[[つかう|つかわなく]]なったもの。 # [[なに|なん]]の[[役にたつ|役にもたたない]]もの。 #{{context|derogatory|lang=ja}}倫理的、道義的に[[問題]]のある人。またその[[行為]]。 ===={{etym}}==== {{etyl|ojp|ja}}「{{m|ojp|くづ}}」の変化 ===={{pron}}==== {{ja-pron|acc=1}} {{ja-accent-common|region=京阪|o|く|ず}} ===={{syn}}==== * [[かす]] * [[ごみ]] * [[廃品]] * [[廃物]] ===={{drv}}==== * [[くずかご]] * [[くずかみ]] ===={{trans}}==== {{trans-top|つかわないもの}} {{T|en}}: {{t|en|rubbish}} {{trans-bottom}} {{trans-top|役にたたないもの}} {{T|en}}: {{t|en|trash}} {{trans-bottom}} {{trans-top|のこりもの}} {{T|en}}: {{t|en|waste}} {{trans-bottom}} ==={{noun}}:葛=== {{wikipedia|クズ}} {{ja-noun|葛}} #{{context|grass|秋|lang=ja}}大型の[[つる]]性[[多年草]]。[[まめ|マメ科]]に属する。[[秋の七草]]のひとつ。 ===={{etym}}==== 地名「{{topo|ja|国栖}}」より。 ===={{pron}}==== {{ja-pron|acc=1}} {{ja-accent-common|region=京阪|o|く|ず}} ===={{rel}}==== * [[葛根]] * [[くずこ]] * [[くずもち]] * [[くずゆ]] ==={{name}}=== {{ja-proper noun|国栖|国樔|国巣}} # かつて{{ふりがな|大和|やまと}}国吉野郡にあったとされる[[むら|村]]。その[[住民]]。 #*此者吉野'''国巣'''之祖(『{{w|古事記}}』中巻(神武天皇)) #*:これは吉野の'''くず'''の祖先 # {{ふりがな|常陸|ひたち}}国{{ruby|[[茨城]]|いばらき}}郡の[[土着]]民。 # 能の演目のひとつ。 ==={{kangokana}}=== {{ja-kangokana}} *【[[九頭]]】:九つの[[頭部]]。 g3kuwefai324n4m57mv07lkgn8i3ynp contributes 0 113799 2313458 2238618 2026-08-09T11:40:14Z M-30722 1202 2313458 wikitext text/x-wiki =={{L|en}}== ==={{verb}}=== {{head|en|verb form}} #{{l|en|contribute}}の直説法現在第三人称単数形。 t568phl28ahmha3glotuhrenyi80ior contributing 0 113800 2313457 2238619 2026-08-09T11:39:36Z M-30722 1202 2313457 wikitext text/x-wiki =={{L|en}}== ==={{pron}}=== * {{IPA|lang=en|kənˈtɹɪbjuːtɪŋ|ˈkɒntɹɪˌbjuːtɪŋ|a=RP}} * {{音声|en|LL-Q1860 (eng)-Vealhurl-contributing.wav|a=Southern England}} * {{音声|en|LL-Q1860 (eng)-Vealhurl-contributing2.wav|a=Southern England}} * {{IPA|lang=en|kənˈtɹɪbjutɪŋ|kənˈtɹɪbjətɪŋ|a=GA}} * {{hyph|en|con|trib|ut|ing}} ==={{verb}}=== {{head|en|verb form}} #{{l|en|contribute}}の動名詞又は現在分詞。 8cdbos818f4epq642gdlnv90td7wt75 contributed 0 113801 2313456 2238620 2026-08-09T11:38:31Z M-30722 1202 2313456 wikitext text/x-wiki =={{L|en}}== ==={{pron}}=== * {{IPA|lang=en|kənˈtɹɪbjuːtɪd}} * {{IPA|lang=en|ˈkɒntɹɪˌbjuːtɪd|a=less common|a2=UK}} ==={{verb}}=== {{head|en|verb form}} #{{l|en|contribute}}の過去形・過去分詞。 nl3ai8bzwirlgulvpf2eb80fy4k8bym しっとう 0 113988 2313322 1479969 2026-08-09T01:52:46Z 鍼灸 112313 2313322 wikitext text/x-wiki {{kana-DEFAULTSORT}} {{also|じっとう}} =={{ja}}== ==={{kangokana}}=== {{ja-kangokana|h=y}} *【[[失投]]】- [[野球]]の[[投手]]が[[失敗]]した[[投球]]をしたこと。 *【[[執刀]]】- [[手術]]などで[[メス]]をとること。 *【[[失当]]】- [[道理]]から[[はずす|はずれた]][[言動]]のこと。 2y44s45buiqagxi2wyby8nxaai4nuqg 2313346 2313322 2026-08-09T03:06:10Z うーむ 129171 /* */ 2313346 wikitext text/x-wiki {{kana-DEFAULTSORT}} {{also|じっとう|じつどう}} =={{ja}}== ==={{kangokana}}=== {{ja-kangokana|h=y}} *【[[失投]]】- [[野球]]の[[投手]]が[[失敗]]した[[投球]]をしたこと。 *【[[執刀]]】- [[手術]]などで[[メス]]をとること。 *【[[失当]]】- [[道理]]から[[はずす|はずれた]][[言動]]のこと。 ip9dgyz0qkrihz2q6i07xllcm9z2ppn 力量 0 115485 2313467 2156154 2026-08-09T11:53:53Z Kuroco2k 84207 /* {{desc}} */ 2313467 wikitext text/x-wiki {{kana-DEFAULTSORT|りきりょう}} =={{L|ja}}== {{ja-kanjitab|りき|りょう|yomi=o}} ==={{pron}}=== {{ja-pron|りきりょう|acc=0}} ==={{noun}}=== {{ja-noun|りきりょう}} #[[能力]]。 #*元来人間というものは自己の'''力量'''に慢じてみんな増長している。([[w:夏目漱石|夏目漱石]] 『[[w:吾輩は猫である|吾輩は猫である]]』) ===={{trans}}==== *{{T|en}}: [[ability]], [[competence]], [[biceps]],(英)[[calibre]]/ (米)[[caliber]] *{{T|zh}}: [[能力]] =={{L|zh}}== ==={{pron}}=== {{cmn-pron|lìliang|dg=ли1лён1}} {{yue-pron|lik6 loeng6|a=LL-Q9186-Luilui6666-力量.wav}} {{nan-pron|xm,tw,km:le̍k-liōng/qz:lia̍k-liōng/zz:le̍k-liāng/xm,qz:la̍t-liōng|t=lag8 liang6}} {{cpx-pron|pt:lih7 lyorng5/xy:lih7 lyoeng5}} {{cdo-pron|lĭk-liông}} {{hak-pron|li̍t-liong|h=lidˋ liong˖}} {{gan-pron|lit6 liong}} ==={{noun}}=== {{zhchars}} # {{ふりがな|力|ちから}}、[[ちからづよさ|ちからづよさ]]。 #*{{zh-l|化悲痛為力量}} #*: 悲しみを力とする。 {{zh-cat|li4liang|名詞|hsk=乙|hsk2=5}} {{yue-cat|lik6leung6|名詞}} {{nan-cat|lek8liang7|名詞}} {{nan-tws-cat|lag8liang6|名詞}} {{cpx-cat|lih7lyorng5|名詞}} {{cdo-cat|lik7liong6|名詞}} {{hak-cat|lit6liong4|名詞}} {{gan-cat|lit6liong|名詞}} {{dng-cat|лилён|名詞}} ==={{desc}}=== {{CJKV||力量|역량,력량|lực lượng}} =={{L|ko}}== ==={{noun}}=== {{ko-head|noun|역량|력량}} #力量、[[器量]]。 =={{L|vi}}== ==={{noun}}=== {{vi-head|noun|lực|lượng}} #力量、[[勢力]]。 cuthockwk2mfhjqtacohj6ilwt2e9dk suy 0 117011 2313151 2087596 2026-08-08T22:38:16Z Kuroco2k 84207 2313151 wikitext text/x-wiki {{DEFAULTSORT:suy1 suy}} ==記号== ==={{code}}=== '''{{PAGENAME}}''' #{{ISO 639|3|suy}} =={{L|ain}}== {{ain-kana}} ==={{pron}}=== * {{ain-IPA}} ==={{adv}}=== {{head|ain|adv}} # また。{{おくりがな2|再|ふたた|び|ふたたび}}。 #* {{quote|ain|“[[i=]][[ekari]] [[suy]] [[arki]] [[yan]]” [[sekor]] [[kane]] [[hawean]] [[kor]].|「それを作るのに'''また'''来てください」と、言っていました。|ref=<ref>{{citation|author=平賀さだも|title=7-2 ウエペケㇾ 「ケソラㇷ゚ カムイ イレス」(孔雀の神に育てられた)|publisher=文化庁 アイヌ語の保存・継承に必要なアーカイブ化に関する調査研究事業|journal=第2年次調査研究報告書1/3|year=1969|publication-date=2015年3月}}</ref>}} #* {{quote|ain|[[ukaun]] [[ukaun]] [[honkor]] [[hine]] [[suy]] [[matkaci]] [[kor]].|重ねて妊娠して、'''また'''女の子を産んだ。|ref=<ref>{{citation|author=平賀さだも|title=11-1 ウエペケㇾ「ウラユシウンクㇽ」(ウラユシの人)|publisher=文化庁 アイヌ語の保存・継承に必要なアーカイブ化に関する調査研究事業|journal=第2年次調査研究報告書1/3|year=1969|publication-date=2015年3月}}</ref>}} #* {{quote|ain|[[ayne]] [[sine]] [[pa]] [[he]] [[turano]] [[oka]][[=an]] [[kor]] [[suy]] [[nea]] [[a=]][[maci]] [[suy]] [[a=]][[rayke]] [[rusuy]], [[neun]] [[a=]][[eyaynita]] [[yakka]] [[a=]][[eyaynita]] [[ka]] [[koyaykus]].|そうして1年ほど一緒に過ごしたのですが、やはりその嫁も、'''また'''殺したくなりました。いくら我慢しようとしても我慢できません。|ref=<ref>{{citation|author=平目よし|title=18-4 ウエペケㇾ「ウッコッナイ アイヌ アネ」途中でテープ切れ(好色が元で死んだ男の話)|publisher=文化庁 アイヌ語の保存・継承に必要なアーカイブ化に関する調査研究事業|journal=第2年次調査研究報告書1/3|year=1969|publication-date=2015年3月}}</ref>}} #* {{quote|ain|[[ora]] [[ne]] [[ancikari]] [[wentarap]][[=an]] [[ak]] [[u]] [[suy]] [[kawkaw]] [[noka]] [[o]] [[kosonte]] [[mi]] [[kur]] [[an]] [[wa]] [[puyar]] [[orikekatt]] [[a]] [[hine]] [[ene]] [[hawean]] [[hi]].|そうしてその夜、私は夢を見たところ、'''再び'''霰の模様が入った小袖を着た人が窓のところをグイと引き上げ、このように言いました。|ref=<ref>{{citation|author=木村きみ|title=20-4 ウエペケㇾ「カウカウ ノカ オマ コソンテ ミ カムイ アオナハ ネ」(霰模様の小袖を着た神が私の父だった)|publisher=文化庁 アイヌ語の保存・継承に必要なアーカイブ化に関する調査研究事業|journal=第2年次調査研究報告書1/3|year=1969|publication-date=2015年3月}}</ref>}} #* {{quote|ain|[[nep]] [[a=]][[e]] [[rusuy]] [[nep]] [[a=]][[kor]] [[rusuy]] [[ka]] [[somo]] [[ki]] [[ora]] [[nea]] [[a=]][[saha]] [[tu]] [[suy]] [[re]] [[suy]] [[i=]][[soyke]] [[ta]] [[ek]].|何を食べたい、何を欲しいとも思わずにいて姉は二'''度'''三'''度'''、私の家の外に来ていた。|ref=<ref>{{citation|author=木村きみ|title=21-2 ウエペケㇾ「アサハ セタネ イカㇻ」(姉が私を犬にした)|publisher=文化庁 アイヌ語の保存・継承に必要なアーカイブ化に関する調査研究事業|journal=第2年次調査研究報告書1/3|year=1969|publication-date=2015年3月}}</ref>}} ===参考文献=== {{Reflist}} =={{L|vi}}== [[Category:{{vi}}]] ==={{pron}}=== {{vi-pron}} ==={{verb}}=== [[Category:{{vi}}_{{verb}}]] '''{{PAGENAME}}'''【[[推]]】 #[[推察]]する。 '''{{PAGENAME}}'''【[[衰]]】 #[[低下]]する、[[衰弱]]する。 bk2bcatpifrddt4zjuouzktzsw8v2hv テンプレート:ca-conj 10 121391 2313411 2308022 2026-08-09T09:28:51Z Kuroco2k 84207 内容の置換:「{{#invoke:ca-verb|show}}<noinclude>{{documentation}}</noinclude>」 2313411 wikitext text/x-wiki {{#invoke:ca-verb|show}}<noinclude>{{documentation}}</noinclude> 05auau6232h31xuuoeo71ynl9lag0fy 2313413 2313411 2026-08-09T09:30:16Z Kuroco2k 84207 2313413 wikitext text/x-wiki {{#invoke:ca-verb|show}}<noinclude>{{documentation}}[[Category:{{ca}}_テンプレート]]</noinclude> a5ffjqp9qc11oylqiiwz2j3xdekswgo 2313419 2313413 2026-08-09T09:39:54Z Kuroco2k 84207 [[poder]]で不具合が...。 2313419 wikitext text/x-wiki {{ca-conj-table<!-- -->| {{{title|{{{verb|{{{infinitive}}}}}}}}}<!-- -->| {{{infinitive|{{{verb}}}}}}<!-- -->| [[{{{pres_part}}}#カタルーニャ語|{{{pres_part}}}]]<!-- -->| [[{{{past_part}}}#カタルーニャ語|{{{past_part}}}]]<!-- -->| [[{{{pres_ind_1_sg}}}#カタルーニャ語|{{{pres_ind_1_sg}}}]]<!-- -->| [[{{{pres_ind_2_sg}}}#カタルーニャ語|{{{pres_ind_2_sg}}}]]<!-- -->| [[{{{pres_ind_3_sg}}}#カタルーニャ語|{{{pres_ind_3_sg}}}]]<!-- -->| [[{{{pres_ind_1_pl}}}#カタルーニャ語|{{{pres_ind_1_pl}}}]]<!-- -->| [[{{{pres_ind_2_pl}}}#カタルーニャ語|{{{pres_ind_2_pl}}}]]<!-- -->| [[{{{pres_ind_3_pl}}}#カタルーニャ語|{{{pres_ind_3_pl}}}]]<!-- -->| [[{{{impf_ind_1_sg}}}#カタルーニャ語|{{{impf_ind_1_sg}}}]]<!-- -->| [[{{{impf_ind_2_sg}}}#カタルーニャ語|{{{impf_ind_2_sg}}}]]<!-- -->| [[{{{impf_ind_3_sg}}}#カタルーニャ語|{{{impf_ind_3_sg}}}]]<!-- -->| [[{{{impf_ind_1_pl}}}#カタルーニャ語|{{{impf_ind_1_pl}}}]]<!-- -->| [[{{{impf_ind_2_pl}}}#カタルーニャ語|{{{impf_ind_2_pl}}}]]<!-- -->| [[{{{impf_ind_3_pl}}}#カタルーニャ語|{{{impf_ind_3_pl}}}]]<!-- -->| [[{{{futr_ind_1_sg}}}#カタルーニャ語|{{{futr_ind_1_sg}}}]]<!-- -->| [[{{{futr_ind_2_sg}}}#カタルーニャ語|{{{futr_ind_2_sg}}}]]<!-- -->| [[{{{futr_ind_3_sg}}}#カタルーニャ語|{{{futr_ind_3_sg}}}]]<!-- -->| [[{{{futr_ind_1_pl}}}#カタルーニャ語|{{{futr_ind_1_pl}}}]]<!-- -->| [[{{{futr_ind_2_pl}}}#カタルーニャ語|{{{futr_ind_2_pl}}}]]<!-- -->| [[{{{futr_ind_3_pl}}}#カタルーニャ語|{{{futr_ind_3_pl}}}]]<!-- -->| [[{{{pret_ind_1_sg}}}#カタルーニャ語|{{{pret_ind_1_sg}}}]]<!-- -->| [[{{{pret_ind_2_sg}}}#カタルーニャ語|{{{pret_ind_2_sg}}}]]<!-- -->| [[{{{pret_ind_3_sg}}}#カタルーニャ語|{{{pret_ind_3_sg}}}]]<!-- -->| [[{{{pret_ind_1_pl}}}#カタルーニャ語|{{{pret_ind_1_pl}}}]]<!-- -->| [[{{{pret_ind_2_pl}}}#カタルーニャ語|{{{pret_ind_2_pl}}}]]<!-- -->| [[{{{pret_ind_3_pl}}}#カタルーニャ語|{{{pret_ind_3_pl}}}]]<!-- -->| [[{{{cond_1_sg}}}#カタルーニャ語|{{{cond_1_sg}}}]]<!-- -->| [[{{{cond_2_sg}}}#カタルーニャ語|{{{cond_2_sg}}}]]<!-- -->| [[{{{cond_3_sg}}}#カタルーニャ語|{{{cond_3_sg}}}]]<!-- -->| [[{{{cond_1_pl}}}#カタルーニャ語|{{{cond_1_pl}}}]]<!-- -->| [[{{{cond_2_pl}}}#カタルーニャ語|{{{cond_2_pl}}}]]<!-- -->| [[{{{cond_3_pl}}}#カタルーニャ語|{{{cond_3_pl}}}]]<!-- -->| [[{{{pres_sub_1_sg}}}#カタルーニャ語|{{{pres_sub_1_sg}}}]]<!-- -->| [[{{{pres_sub_2_sg}}}#カタルーニャ語|{{{pres_sub_2_sg}}}]]<!-- -->| [[{{{pres_sub_3_sg}}}#カタルーニャ語|{{{pres_sub_3_sg}}}]]<!-- -->| [[{{{pres_sub_1_pl}}}#カタルーニャ語|{{{pres_sub_1_pl}}}]]<!-- -->| [[{{{pres_sub_2_pl}}}#カタルーニャ語|{{{pres_sub_2_pl}}}]]<!-- -->| [[{{{pres_sub_3_pl}}}#カタルーニャ語|{{{pres_sub_3_pl}}}]]<!-- -->| [[{{{impf_sub_1_sg}}}#カタルーニャ語|{{{impf_sub_1_sg}}}]]<!-- -->| [[{{{impf_sub_2_sg}}}#カタルーニャ語|{{{impf_sub_2_sg}}}]]<!-- -->| [[{{{impf_sub_3_sg}}}#カタルーニャ語|{{{impf_sub_3_sg}}}]]<!-- -->| [[{{{impf_sub_1_pl}}}#カタルーニャ語|{{{impf_sub_1_pl}}}]]<!-- -->| [[{{{impf_sub_2_pl}}}#カタルーニャ語|{{{impf_sub_2_pl}}}]]<!-- -->| [[{{{impf_sub_3_pl}}}#カタルーニャ語|{{{impf_sub_3_pl}}}]]<!-- -->| [[{{{impr_2_sg}}}#カタルーニャ語|{{{impr_2_sg}}}]]<!-- -->| [[{{{impr_3_sg}}}#カタルーニャ語|{{{impr_3_sg}}}]]<!-- -->| [[{{{impr_1_pl}}}#カタルーニャ語|{{{impr_1_pl}}}]]<!-- -->| [[{{{impr_2_pl}}}#カタルーニャ語|{{{impr_2_pl}}}]]<!-- -->| [[{{{impr_3_pl}}}#カタルーニャ語|{{{impr_3_pl}}}]]<!-- -->| infinitive_irreg={{{infinitive_irreg|}}}<!-- -->| pres_part_irreg={{{pres_part_irreg|}}}<!-- -->| past_part_irreg={{{past_part_irreg|}}}<!-- -->| pres_ind_1_sg_irreg={{{pres_ind_1_sg_irreg|}}}<!-- -->| pres_ind_2_sg_irreg={{{pres_ind_2_sg_irreg|}}}<!-- -->| pres_ind_3_sg_irreg={{{pres_ind_3_sg_irreg|}}}<!-- -->| pres_ind_1_pl_irreg={{{pres_ind_1_pl_irreg|}}}<!-- -->| pres_ind_2_pl_irreg={{{pres_ind_2_pl_irreg|}}}<!-- -->| pres_ind_3_pl_irreg={{{pres_ind_3_pl_irreg|}}}<!-- -->| impf_ind_1_sg_irreg={{{impf_ind_1_sg_irreg|}}}<!-- -->| impf_ind_2_sg_irreg={{{impf_ind_2_sg_irreg|}}}<!-- -->| impf_ind_3_sg_irreg={{{impf_ind_3_sg_irreg|}}}<!-- -->| impf_ind_1_pl_irreg={{{impf_ind_1_pl_irreg|}}}<!-- -->| impf_ind_2_pl_irreg={{{impf_ind_2_pl_irreg|}}}<!-- -->| impf_ind_3_pl_irreg={{{impf_ind_3_pl_irreg|}}}<!-- -->| futr_ind_1_sg_irreg={{{futr_ind_1_sg_irreg|}}}<!-- -->| futr_ind_2_sg_irreg={{{futr_ind_2_sg_irreg|}}}<!-- -->| futr_ind_3_sg_irreg={{{futr_ind_3_sg_irreg|}}}<!-- -->| futr_ind_1_pl_irreg={{{futr_ind_1_pl_irreg|}}}<!-- -->| futr_ind_2_pl_irreg={{{futr_ind_2_pl_irreg|}}}<!-- -->| futr_ind_3_pl_irreg={{{futr_ind_3_pl_irreg|}}}<!-- -->| pret_ind_1_sg_irreg={{{pret_ind_1_sg_irreg|}}}<!-- -->| pret_ind_2_sg_irreg={{{pret_ind_2_sg_irreg|}}}<!-- -->| pret_ind_3_sg_irreg={{{pret_ind_3_sg_irreg|}}}<!-- -->| pret_ind_1_pl_irreg={{{pret_ind_1_pl_irreg|}}}<!-- -->| pret_ind_2_pl_irreg={{{pret_ind_2_pl_irreg|}}}<!-- -->| pret_ind_3_pl_irreg={{{pret_ind_3_pl_irreg|}}}<!-- -->| cond_1_sg_irreg={{{cond_1_sg_irreg|}}}<!-- -->| cond_2_sg_irreg={{{cond_2_sg_irreg|}}}<!-- -->| cond_3_sg_irreg={{{cond_3_sg_irreg|}}}<!-- -->| cond_1_pl_irreg={{{cond_1_pl_irreg|}}}<!-- -->| cond_2_pl_irreg={{{cond_2_pl_irreg|}}}<!-- -->| cond_3_pl_irreg={{{cond_3_pl_irreg|}}}<!-- -->| pres_sub_1_sg_irreg={{{pres_sub_1_sg_irreg|}}}<!-- -->| pres_sub_2_sg_irreg={{{pres_sub_2_sg_irreg|}}}<!-- -->| pres_sub_3_sg_irreg={{{pres_sub_3_sg_irreg|}}}<!-- -->| pres_sub_1_pl_irreg={{{pres_sub_1_pl_irreg|}}}<!-- -->| pres_sub_2_pl_irreg={{{pres_sub_2_pl_irreg|}}}<!-- -->| pres_sub_3_pl_irreg={{{pres_sub_3_pl_irreg|}}}<!-- -->| impf_sub_1_sg_irreg={{{impf_sub_1_sg_irreg|}}}<!-- -->| impf_sub_2_sg_irreg={{{impf_sub_2_sg_irreg|}}}<!-- -->| impf_sub_3_sg_irreg={{{impf_sub_3_sg_irreg|}}}<!-- -->| impf_sub_1_pl_irreg={{{impf_sub_1_pl_irreg|}}}<!-- -->| impf_sub_2_pl_irreg={{{impf_sub_2_pl_irreg|}}}<!-- -->| impf_sub_3_pl_irreg={{{impf_sub_3_pl_irreg|}}}<!-- -->| impr_2_sg_irreg={{{impr_2_sg_irreg|}}}<!-- -->| impr_3_sg_irreg={{{impr_3_sg_irreg|}}}<!-- -->| impr_1_pl_irreg={{{impr_1_pl_irreg|}}}<!-- -->| impr_2_pl_irreg={{{impr_2_pl_irreg|}}}<!-- -->| impr_3_pl_irreg={{{impr_3_pl_irreg|}}}<!-- -->| bottom={{{bottom|}}}<!-- -->}}<!-- --><noinclude>{{documentation}} [[Category:{{ca}}_テンプレート]]</noinclude> tpko3iwlnw4cyn88ntocbpwozua2uq9 モジュール:ca-verb 828 121393 2313408 1835428 2026-08-09T09:25:55Z Kuroco2k 84207 [[:en:Module:ca-verb]]。500件くらいエラーが出ると思うが、数日我慢してほしい。 2313408 Scribunto text/plain --[=[ This module implements {{ca-conj}} and provides the underlying conjugation functions for {{ca-verb}} (whose actual formatting is done in [[Module:ca-headword]]). Authorship: Ben Wing <benwing2> ]=] local export = {} --[=[ TERMINOLOGY: -- "slot" = A particular combination of tense/mood/person/number/etc. Example slot names for verbs are "pres_1s" (present indicative first-person singular), "pres_sub_2s" (present subjunctive second-person singular) "impf_sub_3p" (imperfect subjunctive third-person plural). Each slot is filled with zero or more forms. -- "form" = The conjugated Catalan form representing the value of a given slot. -- "lemma" = The dictionary form of a given Catalan term. For Catalan, always the infinitive. ]=] --[=[ FIXME: --]=] local lang = require("Module:languages").getByCode("ca") local m_string_utilities = require("Module:string utilities") local m_links = require("Module:links") local m_table = require("Module:table") local iut = require("Module:inflection utilities") local put = require("Module:parse utilities") local com = require("Module:ca-common") local force_cat = false -- set to true for debugging local check_for_red_links = false -- set to false for debugging local rfind = mw.ustring.find local rmatch = mw.ustring.match local rsplit = mw.text.split local rsubn = mw.ustring.gsub local rsub = com.rsub local u = mw.ustring.char local unpack = unpack or table.unpack -- Lua 5.2 compatibility -- version of rsubn() that returns a 2nd argument boolean indicating whether a substitution was made. local function rsubb(term, foo, bar) local retval, nsubs = rsubn(term, foo, bar) return retval, nsubs > 0 end local function link_term(term, display, face) return m_links.full_link({ lang = lang, term = term, alt = display }, face) end local front_vowel = "eèéiíï" local front_vowel_c = "[" .. front_vowel .. "]" local V = com.V -- vowel regex class local C = com.C -- consonant regex class -- IS_USER_STEM_OVERRIDE is prepended to user-supplied stem overrides to prevent `base.prefix` from being prepended. -- IS_USER_FORM_OVERRIDE is similar but also prevents final devoicing (cf. Balearic pres_1s 'trob' of [[trobar]]). -- Don't use 0xFFF0 in case we call a [[Module:parse-utilities]] function that uses it temporarily. local IS_USER_STEM_OVERRIDE = u(0xFFF1) local IS_USER_FORM_OVERRIDE = u(0xFFF2) --[=[ Irregular verbs: -ldre/-ndre verbs: infinitive pres1s pres3s pres1p impf1s fut1s pret1s sub1s sub1p pp caldre - cal [calent] calia caldrà calgué calgui - calgut,- coldre colc col colem colia coldré colguí colgui colguem colt,colta doldre dolc dol dolem dolia doldré dolguí dolgui dolguem dolgut,dolguda moldre molc mol molem molia moldré molguí molgui molguem molt,molta oldre olc ol olem olia oldré olguí olgui olguem olgut,olguda -soldre -solc -sol -solem -solia -soldré -solguí -solgui -solguem -solt,-solta (absoldre, dissoldre, resoldre) toldre tolc tol tolem tolia toldré tolguí tolgui tolguem tolt,tolta romandre romanc roman romanem romania romandré romanguí romangui romanguem romàs,romasa,romasos encendre encenc encén encenem encenia encendré encenguí encengui encenguem encès,encesa,encesos fendre fenc fen/-fèn fenem fenia fendré fenguí fengui fenguem fes/-fès,fesa,fesos (defendre, ofendre) -pendre -depenc -pèn -penem -penia -pendré -penguí -pengui -penguem -pès,-pesa,-pesos (dependre,despendre,expendre,suspendre) prendre prenc pren/-prèn prenem prenia prendré prenguí prengui prenguem pres/-près,presa,presos (aprendre, comprendre, desprendre, emprendre, reprendre, sorprendre) -tendre -tenc -tén -tenem -tenia -tendré -tenguí -tengui -tenguem -tès,-tesa,-tesos (pres2s: atens, pres3p: atenen) (atendre, contendre, distendre, entendre, estendre, pretendre) vendre venc ven venem venia vendré venguí vengui venguem venut,venuda (malvendre, revendre) fondre fonc fon fonem fonia fondré fonguí fongui fonguem fos/-fós,fosa,fosos (confondre, difondre, infondre, refondre) enfondre enfonc enfon enfonem enfonia enfondré enfonguí enfongui enfonguem enfús,enfusa,enfusos pondre ponc pon ponem ponia pondré ponguí pongui ponguem post,posta,postos (compondre, correspondre, descompondre, respondre) tondre tonc ton tonem tonia tondré tonguí tongui tonguem tos,tosa,tosos cerndre cerno cern cernem cernia cerndré cerní cerni cernem cernut,cernuda -ler verbs (mostly like -ldre verbs): infinitive pres1s pres3s pres1p impf1s fut1s pret1s sub1s sub1p pp caler (var. of caldre) doler (var. of doldre) soler solc sol solem solia soldré solguí solgui solguem solgut,solguda valer/valdre valc val valem valia valdré valguí valgui valguem valgut,valguda (prevaler, equivaler) other -dre/-tre verbs (regular except sometimes pp): infinitive pres1s pres3s pres1p impf1s fut1s pret1s sub1s sub1p pp batre bato bat batem batia batré batí bati batem batut,batuda -metre -meto -met -metem -metia -metré -metí -meti -metem -mès,-mesa,-mesos (ad-, co-, compro-, e-, entremetre's, mal-, o-, per-, pro-, read-, re-, retrans-, sot-, tra-, trans-) perdre perdo perd perdem perdia perdré perdí perdi perdem perdut,perduda -ure verbs infinitive pres1s pres3s pres1p impf1s impf1p fut1s pret1s sub1s sub1p pp caure caic cau caiem queia quèiem cauré caiguí caigui caiguem caigut,caiguda (decaure, recaure) plaure plac plau plaem plaïa plaíem plauré plaguí plagui plaguem plagut,plaguda (complaure) raure rac rau raem raïa raíem rauré raguí ragui raguem ragut,raguda beure bec beu bevem bevia bevíem beuré beguí begui beguem begut,beguda (embeure) creure crec creu creiem creia crèiem creuré creguí cregui creguem cregut,creguda deure dec deu devem devia devíem deuré deguí degui deguem degut,deguda jeure jec jeu jaiem jeia jèiem jauré jaguí jegui jaguem jagut,jaguda (ajeure) lleure - lleu [-] llevia - lleurà llegué llegui - llegut,- seure sec seu seiem seia sèiem seuré seguí segui seguem segut,seguda (asseure) treure trec treu traiem treia trèiem trauré traguí tregui traguem tret,treta (abstreure, atreure, contreure, distreure, extreure, retreure, sostreure) veure veig veu veiem veia vèiem veuré viu,veieres/veres, vegi vegem vist,vista,vists/vistos (entreveure, preveure, reveure) veié/veu,veiérem/vérem riure ric riu riem reia rèiem riuré riguí rigui riguem rigut,riguda (somriure) (e)scriure escric escriu escrivim escrivia escrivíem escriuré escriví/escriguí escrigui escriguem escrit,escrita (circumscriure, descriure, inscriure, prescriure, proscriure, subscriure, transcriure) viure visc viu vivim vivia vivíem viuré visquí visqui visquem viscut,viscuda (conviure, sobreviure) cloure cloc clou cloem cloïa cloíem clouré cloguí clogui cloguem clos,closa,closos (concloure, descloure, encloure, excloure, incloure, recloure) encloure encloc enclou encloem encloïa encloíem enclouré encloguí enclogui encloguem enclòs,enclosa,enclosos coure coc cou coem coïa coíem couré coguí cogui coguem cuit/cogut,cuita/coguda moure moc mou movem movia movíem mouré moguí mogui moguem mogut,moguda (promoure) noure noc nou noem noïa noíem nouré noguí nogui noguem nogut,noguda ploure - plou [plovent] plovia - plourà plogué plogui - plogut,ploguda -nyer verbs (regular except pp) infinitive pres1s pres3s pres1p impf1s fut1s pret1s sub1s sub1p pp atènyer atenyo ateny atenyem atenyia atenyeré atenyí atenyi atenyem atès,atesa,atesos empènyer empenyo empeny empenyem empenyia empenyeré empenyí empenyi empenyem empès,empesa,empesos estrènyer estrenyo estreny estrenyem estrenyia estrenyeré estrenyí estrenyi estrenyem estret,estreta estrènyer (constrènyer,restrènyer) fènyer fenyo feny fenyem fenyia fenyeré fenyí/fenguí fenyi fenyem fenyut/fengut,fenyuda/fenguda pertànyer pertanyo pertany pertanyem pertanyia pertanyeré pertanyí/pertanguí pertanyi pertanyem pertanyut/pertangut,pertanyuda/pertanguda plànyer planyo plany planyem planyia planyeré planyí/planguí planyi planyem plangut/planyut,planguda/planyuda -xer verbs (NOTE: pres2s in -xes) infinitive pres1s pres3s pres1p impf1s fut1s pret1s sub1s sub1p pp créixer creixo creix creixem creixia creixeré creixí/cresquí creixi creixem crescut,crescuda (acréixer,decréixer) conèixer conec coneix coneixem coneixia coneixeré coneguí conegui coneguem conegut,coneguda (desconèixer,reconèixer) merèixer mereixo mereix mereixem mereixia mereixeré mereixí/meresquí mereixi mereixem merescut,merescuda néixer/ neixo/ neix/ naixem naixia naixeré naixí/nasquí neixi/ naixem/nasquem nascut,nascuda nàixer naixo naix naixi (renéixer) parèixer parec pareix pareixem pareixia pareixeré pareguí paregui pareguem paregut,pareguda (aparèixer,comparèixer,desaparèixer,reaparèixer) péixer peixo peix paixem paixia paixeré paixí peixi paixem pascut,pascuda misc. -er verbs infinitive pres1s pres3s pres1p impf1s impf1p fut1s pret1s sub1s sub1p pp córrer corro corre correm corria corríem correré correguí corri correm corregut,correguda fúmer fumo fum fumem fumia fumíem fumeré fumí fumi fumem fumut,fumuda prémer premo prem premem premia premíem premeré premí premi premem premut,premuda (es-, re-) témer temo tem temem temia temíem temeré temí temi temem temut,temuda trémer [regular] tòrcer torço torç torcem torcia torcíem torceré torcí torci torcem torçut,torçuda (des-) [pres2s torces] vèncer venço venç vencem vencia vencíem venceré vencí venci vencem vençut,vençuda (con-, re-) [pres2s vences] cabre/caber cabo cap cabem cabia cabíem cabré cabí càpiga capiguem cabut,cabuda [sub2s càpigues] haver he/haig ha havem/hem havia havíem hauré haguí hagi hàgim/haguem hagut,haguda [noimp] [cond1s hauria/haguera; impsub2s haguessis/haguesses] poder puc pot podem podia podíem podré poguí pugui puguem pogut,poguda saber sé sap sabem sabia sabíem sabré sabí sàpiga sapiguem sabut,sabuda [imp2s sàpigues, imp2p sapigueu] voler vull vol volem volia volíem voldré volguí vulgui vulguem volgut,volguda ser/ésser soc és som era érem seré fui sigui siguem estat/sigut,estada/siguda [ger sent/essent] [cond1s seria/fora] [pres: soc,ets,éts,som,sou,són; pret: fui,fores,fou,fórem,fóreu,foren; impsub: fos,fossis,fos,fóssim,fóssiu,fossin] [imp: sigues,sigueu] fer faig fa fem feia fèiem faré fiu faci fem fet,feta [pres3p fan] [pret: fiu,feres,feu,férem,féreu,feren] ]=] local all_persons_numbers = { ["1s"] = "1|s", ["2s"] = "2|s", ["3s"] = "3|s", ["1p"] = "1|p", ["2p"] = "2|p", ["3p"] = "3|p", } local person_number_list = {"1s", "2s", "3s", "1p", "2p", "3p"} local imp_person_number_list = {"2s", "3s", "1p", "2p", "3p"} local neg_imp_person_number_list = {"2s", "3s", "1p", "2p", "3p"} proclitic_non_elided_person_number_to_reflexive_pronoun = { ["1s"] = "em ", ["2s"] = "et ", ["3s"] = "es ", ["1p"] = "ens ", ["2p"] = "us ", ["3p"] = "es ", } proclitic_elided_person_number_to_reflexive_pronoun = { ["1s"] = "m'", ["2s"] = "t'", ["3s"] = "s'", ["1p"] = "ens ", ["2p"] = "us ", ["3p"] = "s'", } enclitic_non_elided_person_number_to_reflexive_pronoun = { ["1s"] = "-me", ["2s"] = "-te", ["3s"] = "-se", ["1p"] = "-nos", ["2p"] = "-vos", ["3p"] = "-se", } enclitic_elided_person_number_to_reflexive_pronoun = { ["1s"] = "'m", ["2s"] = "'t", ["3s"] = "'s", ["1p"] = "'ns", ["2p"] = "-us", ["3p"] = "'s", } local indicator_flags = m_table.listToSet { "no_pres_stressed", "only3s", "only3sp", "only3p", "noimp", "pp_inv", "irreg", "no_built_in", } -- Initialize all the slots for which we generate forms. local function add_slots(alternant_multiword_spec) -- "Basic" slots: All slots that go into the regular table (not the reflexive form-of table). alternant_multiword_spec.verb_slots_basic = { {"infinitive", "inf"}, {"infinitive_linked", "inf"}, {"gerund", "ger"}, {"pp_ms", "m|s|past|part"}, {"pp_fs", "f|s|past|part"}, {"pp_mp", "m|p|past|part"}, {"pp_fp", "f|p|past|part"}, } -- Special slots used to handle non-reflexive parts of reflexive verbs in {{ca-verb form of}}. For example, for a -- reflexive-only verb like [[arrepentirse]], we want to be able to use {{ca-verb form of}} on [[arrepinta]] (which -- should mention that it is a part of 'me arrepinta', first-person singular present subjunctive, and -- 'se arrepinta', third-person singular present subjunctive) or on [[arrepentimos]] (which should mention that it -- is a part of 'arrepentímonos', first-person plural present indicative or preterite). Similarly, we want to use -- {{ca-verb form of}} on [[arrepentindo]] (which should mention that it is a part of 'se ... arrepentindo', -- syntactic variant of [[arrepentíndose]], which is the gerund of [[arrepentirse]]). To do this, we need to be -- able to map non-reflexive parts like [[arrepinta]], [[arrepentimos]], [[arrepentindo]], etc. to their reflexive -- equivalent(s), to the tag(s) of the equivalent(s), and, in the case of forms like [[arrepentindo]], -- [[arrepentir]] and imperatives, to the separated syntactic variant of the verb+clitic combination. We do this by -- creating slots for the non-reflexive part equivalent of each basic reflexive slot, and for the separated -- syntactic-variant equivalent of each basic reflexive slot that is formed of verb+clitic. We use slots in this -- way to deal with multiword lemmas. Note that we run into difficulties mapping between reflexive verbs, -- non-reflexive part equivalents, and separated syntactic variants if a slot contains more than one form. To -- handle this, if there are the same number of forms in two slots we're trying to match up, we assume the forms -- match one-to-one; otherwise we don't match up the two slots (which means {{ca-verb form of}} won't work in this -- case, but such a case is extremely rare and not worth worrying about). Alternatives that handle this "properly" -- are significantly more complicated and require non-trivial modifications to [[Module:inflection utilities]]. local need_special_verb_form_of_slots = alternant_multiword_spec.source_template == "ca-verb form of" and alternant_multiword_spec.refl if need_special_verb_form_of_slots then alternant_multiword_spec.verb_slots_reflexive_verb_form_of = { {"infinitive_non_reflexive", "-"}, {"infinitive_variant", "-"}, {"gerund_non_reflexive", "-"}, {"gerund_variant", "-"}, } else alternant_multiword_spec.verb_slots_reflexive_verb_form_of = {} end -- Add entries for a slot with person/number variants. -- `verb_slots` is the table to add to. -- `slot_prefix` is the prefix of the slot, typically specifying the tense/aspect. -- `tag_suffix` is a string listing the set of inflection tags to add after the person/number tags. -- `person_number_list` is a list of the person/number slot suffixes to add to `slot_prefix`. local function add_personal_slot(verb_slots, slot_prefix, tag_suffix, person_number_list) for _, persnum in ipairs(person_number_list) do local persnum_tag = all_persons_numbers[persnum] local slot = slot_prefix .. "_" .. persnum local accel = tag_suffix .. "|" .. persnum_tag table.insert(verb_slots, {slot, accel}) end end -- Add a personal slot (i.e. a slot with person/number variants) to `verb_slots_basic`. local function add_basic_personal_slot(slot_prefix, tag_suffix, person_number_list, no_special_verb_form_of_slot) add_personal_slot(alternant_multiword_spec.verb_slots_basic, slot_prefix, tag_suffix, person_number_list) -- Add special slots for handling non-reflexive parts of reflexive verbs in {{ca-verb form of}}. -- See comment above in `need_special_verb_form_of_slots`. if need_special_verb_form_of_slots and not no_special_verb_form_of_slot then for _, persnum in ipairs(person_number_list) do local persnum_tag = all_persons_numbers[persnum] local basic_slot = slot_prefix .. "_" .. persnum local accel = tag_suffix .. "|" .. persnum_tag table.insert(alternant_multiword_spec.verb_slots_reflexive_verb_form_of, {basic_slot .. "_non_reflexive", "-"}) end end end add_basic_personal_slot("pres", "直説法|現在", person_number_list) add_basic_personal_slot("impf", "直説法|不完全過去", person_number_list) add_basic_personal_slot("pret", "直説法|完全過去", person_number_list) add_basic_personal_slot("fut", "直説法|未来", person_number_list) add_basic_personal_slot("cond", "可能法", person_number_list) add_basic_personal_slot("pres_sub", "接続法|現在", person_number_list) add_basic_personal_slot("impf_sub", "接続法|過去", person_number_list) add_basic_personal_slot("imp", "命令法", imp_person_number_list) -- Don't need special non-reflexive-part slots because the negative imperative is multiword, of which the -- individual words are 'no' + subjunctive. add_basic_personal_slot("neg_imp", "命令法|禁止", neg_imp_person_number_list, "no special verb form of") -- Don't need special non-reflexive-part slots because we don't want [[arrependendo]] mapping to [[arrependendo-me]] -- (only [[arrependendo-se]]) or [[arrepender]] mapping to [[arrepender-me]] (only [[arrepender-se]]). add_basic_personal_slot("infinitive", "inf", person_number_list, "no special verb form of") add_basic_personal_slot("gerund", "ger", person_number_list, "no special verb form of") -- Generate the list of all slots. alternant_multiword_spec.all_verb_slots = {} for _, slot_and_accel in ipairs(alternant_multiword_spec.verb_slots_basic) do table.insert(alternant_multiword_spec.all_verb_slots, slot_and_accel) end for _, slot_and_accel in ipairs(alternant_multiword_spec.verb_slots_reflexive_verb_form_of) do table.insert(alternant_multiword_spec.all_verb_slots, slot_and_accel) end alternant_multiword_spec.verb_slots_basic_map = {} for _, slotaccel in ipairs(alternant_multiword_spec.verb_slots_basic) do local slot, accel = unpack(slotaccel) alternant_multiword_spec.verb_slots_basic_map[slot] = accel end end local overridable_stems = {} local function allow_multiple_values_for_override(separated_groups, data, is_form_override) local retvals = {} for _, separated_group in ipairs(separated_groups) do local footnotes = data.fetch_footnotes(separated_group) local form = separated_group[1] -- Prepend marker to prevent prefixing with `base.prefix`, and (in the case of form overrides) prevent -- final devoicing. if is_form_override then form = IS_USER_FORM_OVERRIDE .. form else form = IS_USER_STEM_OVERRIDE .. form end local retval = {form = form, footnotes = footnotes} table.insert(retvals, retval) end return retvals end for _, overridable_stem in ipairs { "stem", "stressed_stem", "unstressed_stem", "pres_unstressed", "pres_stressed", "pres3s", -- overrides just pres_2s and pres_3s -- Don't include pres1s, pres3p; use pres_1s etc. if you need to override just those forms "impf1", "impf2", "pret", "fut", "cond", "pres_sub_stressed", "pres_sub_unstressed", "impf_sub", "pp", "g_infix", "eix_infix", } do -- Written so we can substitute a different validator; parallel code in [[Module:es-verb]] and [[Module:pt-verb]] -- has simple_choice validators. overridable_stems[overridable_stem] = allow_multiple_values_for_override end -- Useful as the value of the `match` property of a built-in verb. `main_verb_spec` is a Lua pattern that should match -- the non-prefixed part of a verb, and `prefix_specs` is a list of Lua patterns that should match the prefixed part of -- a verb. If a prefix spec is preceded by ^, it must match exactly at the beginning of the verb; otherwise, additional -- prefixes (e.g. re-, des-) may precede. Return the prefix and main verb. local function match_against_verbs(main_verb_spec, prefix_specs) return function(verb) for _, prefix_spec in ipairs(prefix_specs) do if prefix_spec:find("^%^") then -- must match exactly prefix_spec = prefix_spec:gsub("^%^", "") if prefix_spec == "" then -- We can't use the second branch of the if-else statement because an empty () returns the current position -- in rmatch(). local main_verb = rmatch(verb, "^(" .. main_verb_spec .. ")$") if main_verb then return "", main_verb end else local prefix, main_verb = rmatch(verb, "^(" .. prefix_spec .. ")(" .. main_verb_spec .. ")$") if prefix then return prefix, main_verb end end else local prefix, main_verb = rmatch(verb, "^(.*" .. prefix_spec .. ")(" .. main_verb_spec .. ")$") if prefix then return prefix, main_verb end end end return nil end end --[=[ Built-in (usually irregular) conjugations. Each entry is processed in turn and consists of an object with two fields: 1. match=: Specifies the built-in verbs that match this object. 2. forms=: Specifies the built-in stems and forms for these verbs. The value of match= is either a string beginning with "^" (match only the specified verb), a string not beginning with "^" (match any verb ending in that string), or a function that is passed in the verb and should return the prefix of the verb if it matches, otherwise nil. The function match_against_verbs() is provided to facilitate matching a set of verbs with a common ending and specific prefixes (e.g. [[ter]] and [[ater]] but not [[abater]], etc.). The value of forms= is a table specifying stems and individual override forms. Each key of the table names either a stem (e.g. `pres_stressed`), a stem property (e.g. `g_infix`) or an individual override form (e.g. `pres_1s`). Each value of a stem can either be a string (a single stem), a list of strings, or a list of objects of the form {form = STEM, footnotes = {FOONOTES}}. Each value of an individual override should be of exactly the same form except that the strings specify full forms rather than stems. The values of a stem property depend on the specific property but are generally strings or booleans. In order to understand how the stem specifications work, it's important to understand the phonetic modifications done by combine_stem_ending(). In general, the complexities of predictable prefix, stem and ending modifications are all handled in this function. In particular: 1. Spelling-based modifications (c/qu, ç/c, g/gu, j/g, gu/gü, qu/qü) occur automatically as appropriate for the ending. 2. If the ending begins with an asterisk, this is a signal to delete the accent on the last syllable of the stem, e.g. veié -> veierem. 3. If ending begins with i, it may turn into í or ï after an unstressed vowel (in some but not all cases) to prevent the two merging into a diphthong. See combine_stem_ending() for specifics. The following stems are recognized [FIXME: This is not correct for Catalan, needs rewriting]: -- pres_unstressed: The present indicative unstressed stem (1p, 2p). Also controls the imperative 2p and gerund. Defaults to the infinitive stem (minus the ending -ar/-er/-ir/-or). -- pres_stressed: The present indicative stressed stem (1s, 2s, 3s, 3p). Also controls the imperative 2s. Default is empty if indicator `no_pres_stressed`, else a vowel alternation if such an indicator is given (e.g. `ue`, `ì`), else the infinitive stem. -- pres1: Special stem for 1s present indicative. Normally, do not set this explicitly. If you need to specify an irregular 1s present indicative, use the form override pres_1s= to specify the entire form. Defaults to pres_stressed. -- pres_sub_unstressed: The present subjunctive unstressed stem (1p, 2p). Defaults to the infinitive stem. -- pres_sub_stressed: The present subjunctive stressed stem (1s, 2s, 3s, 1p). Defaults to pres1. -- impf: The imperfect stem (not including the -av-/-i- stem suffix, which is determined by the conjugation). Defaults to the infinitive stem. -- pret: The full preterite stem missing only the endings (-ste, -mos, etc.), e.g. 'fige', 'fo'. Only used for verbs with irregular preterites (pret_conj == "irreg") such as [[facer]], [[poder]], [[traer]], etc. Defaults to `pret_base` + the conjugation vowel. -- fut: The future stem. Defaults to the infinitive stem + the conjugation vowel. -- cond: The conditional stem. Defaults to `fut`. -- impf_sub: The imperfect subjunctive stem. Defaults to `pret`. -- pp: The masculine singular past participle. Default is based on the verb conjugation: infinitive stem + '-ado' for -ar verbs, otherwise infinitive stem + '-ido'. -- pp_inv: `true` if the past participle exists only in the masculine singular. ]=] local built_in_conjugations = { -------------------------------------------------------------------------------------------- -- -ar -- -------------------------------------------------------------------------------------------- -- Orthographic consonant alternations in endings are handled automatically in combine_stem_ending(). { -- [[aguar]]: -- pres agúo, agúes, agúa, agüem, agüeu, agúen -- pres_sub aguï, aguïs, aguï, agüem, agüeu, aguïn -- contrast a more typical verb in -guar, [[enaiguar]]: -- pres enaiguo, enaigües, enaigua, enaigüem, enaigüeu, enaigüen -- pres_sub enaigüi, enaigüis, enaigüi, enaigüem, enaigüeu, enaigüin match = "^aguar", forms = { pres_stressed = "agú", pres_sub_stressed = "aguï", irreg = true, } }, { -- [[anar]] (full verb); highly irregular match = "^anar", var = "full", forms = { fut = "anir", pres_1s = "vaj", -- will be converted to 'vaig'; 'vaig' gets converted to 'vaic' pres_2s = "vas", pres_3s = "va", pres_3p = "van", pres_sub_stressed = "vagi", imp_2s = "ves", irreg = true, } }, { -- [[anar]] (auxiliary); highly irregular match = "^anar", var = "aux", forms = { pres_1s = "vaj", -- will be converted to 'vaig'; 'vaig' gets converted to 'vaic' pres_2s = {"vas", "vares"}, pres_3s = "va", pres_1p = {"vam", "vàrem"}, pres_2p = {"vau", "vàreu"}, pres_3p = {"van", "varen"}, pres_sub_stressed = "vagi", pres_sub_unstressed = "vàgi", impf1 = {}, impf2 = {}, fut = {}, pret = {}, pp = {}, gerund = {}, noimp = true, irreg = true, } }, { -- [[dar]] match = "^dar", forms = { pres_1s = {form = "do", footnotes = {"[obsolete]"}}, pres_2s = {form = "das", footnotes = {"[obsolete]"}}, pres_3s = {form = "da", footnotes = {"[obsolete]"}}, pres_3p = {form = "dan", footnotes = {"[obsolete]"}}, pres_sub_1s = {form = "de", footnotes = {"[obsolete]"}}, pres_sub_2s = {form = "des", footnotes = {"[obsolete]"}}, pres_sub_3s = {form = "de", footnotes = {"[obsolete]"}}, pres_sub_3p = {form = "den", footnotes = {"[obsolete]"}}, pret_1s = "di", -- regular except for lack of accent pret_3s = "da", -- regular except for lack of accent impf_sub_1s = "des", -- regular except for lack of accent impf_sub_3s = "des", -- regular except for lack of accent irreg = true, } }, { -- [[estar]]; highly irregular match = "^estar", forms = { pres_2s = "estàs", pres_3s = "està", pres_3p = "estan", g_infix = "estig", imp_2s = "estigues", imp_2p = "estigueu", pp = "estad", } }, -------------------------------------------------------------------------------------------- -- -er/-re -- -------------------------------------------------------------------------------------------- -- Regular verbs not needing entries here: -- -- [[rebre]], [[concebre]], [[decebre]], [[percebre]] -- [[rompre]] -- [[fúmer]], [[prémer]], [[témer]], [[trémer]] -- [[perdre]], [[batre]], [[botre]], [[fotre]], [[retre]] -- [[tòrcer]], [[vèncer]] -- etc. ------------------------------------------- -ldre/-ler/-lre -------------------------------------- { -- [[caldre]], [[doldre]], [[condoldre's]], [[oldre]] match = match_against_verbs("ldre", {"ca", "do", "^o"}), forms = { -- g_infix implies irreg = true -- g_infix adds -g to pres_1s, sub, pret and pp stems; combine_stem_ending() changes final -g to -c g_infix = "+", } }, { -- [[caler]] match = "caler", like = "caldre", }, { -- [[doler]] and compounds match = "doler", like = "doldre", }, { -- [[dolre]] match = "dolre", forms = { -- see above for g_infix effects g_infix = "+", } }, { -- [[valer]], [[equivaler]], [[prevaler]], [[sobrevaler]] match = "valer", forms = { -- see above for g_infix effects fut = "valdr", g_infix = "+", } }, { -- [[valdre]] and compounds match = "valdre", like = "valer", }, { -- [[soler]] match = "^soler", -- this must precede -oldre rule below for alt form [[soldre]] forms = { -- see above for g_infix effects fut = {}, pret = {}, impf_sub = "solgué", -- regular, but we disabled the preterite, which would normally disable impf_sub too g_infix = "+", pp = {}, noimp = true, } }, { -- [[soldre]] match = "^soldre", -- this must precede -oldre rule below like = "soler", }, { -- [[coldre]], [[moldre]], [[absoldre]], [[dissoldre]], [[resoldre]], [[toldre]] match = "oldre", -- this must follow [[doldre]]/[[oldre]] rule above forms = { -- see above for g_infix effects g_infix = "+", pp = "olt", } }, { -- [[voler]], [[malvoler]] match = "voler", forms = { fut = "voldr", pres_1s = "vull", pres_sub_stressed = "vulgui", pres_sub_unstressed = "vulgue", g_infix = "+", imp_2s = "vulgues", imp_2p = "vulgueu", } }, --------------------------------------------- -ndre ---------------------------------------- { -- [[romandre]]; write it this way so there's a prefix with a vowel to prevent against the accent in the pp -- from being removed while still removing it in the feminine. match = match_against_verbs("mandre", {"^ro"}), forms = { -- see above for g_infix effects g_infix = "+", pp = "màs#", } }, { -- [[encendre]], [[atendre]], [[contendre]], [[desentendre's]], [[distendre]], [[entendre]], [[estendre]], -- [[pretendre]] match = match_against_verbs("endre", {"enc", "t"}), forms = { pres_3s = "én#", -- remove final accent without prefix with vowel; also removed when adding a suffix -- see above for g_infix effects g_infix = "+", pp = "ès#", -- see above for effect of final # } }, { -- [[vendre]], [[malvendre]], [[revendre]] match = "vendre", forms = { pres_3s = "vèn#", -- see above for effect of final # -- see above for g_infix effects g_infix = "+", pp = "venud", -- g_infix would normally make it vengud } }, { -- [[fendre]], [[defendre]], [[ofendre]], [[dependre]], [[despendre]], [[expendre]], [[suspendre]], [[prendre]], -- [[aprendre]], [[comprendre]], [[desprendre]], [[emprendre]], [[reprendre]], [[sorprendre]] match = "endre", -- this must follow previous -endre rules above forms = { pres_3s = "èn#", -- see above for effect of final # -- see above for g_infix effects g_infix = "+", pp = "ès#", -- see above for effect of final # } }, { -- [[enfondre]]; write it this way so there's a prefix with a vowel to prevent against the accent in the pp -- from being removed while still removing it in the feminine. match = match_against_verbs("fondre", {"^en"}), forms = { -- see above for g_infix effects g_infix = "+", pp = "fús#", } }, { -- [[pondre]], [[compondre]], [[correspondre]], [[descompondre]], [[despondre's]], [[respondre]] match = "pondre", forms = { -- see above for g_infix effects g_infix = "+", pp = "post", } }, { -- [[fondre]], [[confondre]], [[difondre]], [[infondre]], [[refondre]], [[tondre]] match = "ondre", -- this must follow previous -ondre rules above forms = { -- see above for g_infix effects g_infix = "+", pp = "ós#", -- see above for effect of final # } }, --------------------------------------------- -nyer ---------------------------------------- { -- [[atènyer]]; write it this way so there's a prefix with a vowel to prevent against the accent in the pp -- from being removed while still removing it in the feminine. match = match_against_verbs("tènyer", {"^a"}), forms = { pp = "tès#", irreg = true, } }, { -- [[empènyer]], [[espènyer]] match = match_against_verbs("pènyer", {"^em", "^es"}), forms = { pp = "pès#", irreg = true, } }, { -- [[estrènyer]], [[constrènyer]], [[destrènyer]], [[restrènyer]] match = match_against_verbs("strènyer", {"^e", "con", "^de", "^re"}), forms = { pp = "stret", irreg = true, } }, { -- [[fènyer]] match = "fènyer", forms = { pp = {"fengud", "fenyud"}, irreg = true, } }, { -- [[júnyer]] match = "júnyer", like = "junyir", }, { -- [[plànyer]], [[complànyer]], [[pertànyer]] match = match_against_verbs("ànyer", {"pl", "pert"}), forms = { pp = {"angud", "anyud"}, irreg = true, } }, --------------------------------------------- -aure ---------------------------------------- { -- [[caure]], [[decaure]], [[recaure]] match = "caure", forms = { -- stem ending in -ai and imperfect in -ia causes special stressed imperfect logic to take effect; we get -- impf1s queia, impf1p quèiem (preceding vowel changed to è and attached to initial consonant using -- combine_stem_ending(), which changes c- to qu-) stem = "caie", -- i dropped by g_infix before u -- g_infix implies irreg = true -- g_infix adds -g to pres_1s, sub, pret and pp stems; combine_stem_ending() changes final -g to -c -- g_infix sets pres_stressed to end in -u, removing a preceding -i or -v g_infix = "+", } }, { -- [[plaure]], [[complaure]] match = "plaure", forms = { stem = "plae", -- ï in impf1s -aïa gets generated automatically by combine_stem_ending() g_infix = "+", } }, { -- [[raure]] match = "^raure", forms = { stem = "rae", -- ï in impf1s -aïa gets generated automatically by combine_stem_ending() g_infix = "+", pp = {"ragud", "ras"}, } }, --------------------------------------------- -eure ---------------------------------------- { -- [[beure]], [[embeure]], [[deure]], [[lleure]] match = match_against_verbs("eure", {"b", "d", "ll"}), forms = { stem = "eve", -- v dropped by g_infix before g and u g_infix = "+", } }, { -- [[creure]], [[seure]], [[asseure]] match = match_against_verbs("eure", {"cr", "s"}), forms = { stem = "ee", pres_unstressed = "eie", -- affects pres_1p, pres_2p, gerund, imperfect (see [[caure]]) g_infix = "+", } }, { -- [[jeure]], [[ajeure]] match = "jeure", forms = { fut = "jaur", -- affects future and cond stressed_stem = "jee", -- affects stressed forms, which get g added by g_infix by added except for -- pres_stressed, which gets u added (controls pres_3s, pres_2s, pres_3p) unstressed_stem = "jae", -- affects unstressed_stem, which get g added by g_infix pres_stressed = {"jeu", "jau"}, pres_unstressed = "jaie", -- affects pres_1p, pres_2p, gerund, imperfect (see [[caure]]) pres_1s = {"jec", "jac"}, impf1 = "jei", -- otherwise we'd get impf_1s '#geia' etc. impf2 = "jèi", g_infix = "+", } }, { match = "jaure", like = "jeure", }, { -- [[treure]], [[abstreure]], [[atreure]], [[bestreure]], [[contreure]], [[detreure]], [[distreure]], -- [[extreure]], [[retreure], [[retrotreure]], [[sostreure]] match = "treure", forms = { -- like [[jeure]] except for irregular pp fut = "traur", stressed_stem = "tree", unstressed_stem = "trae", pres_stressed = {"treu", "trau"}, pres_unstressed = "traie", pres_1s = {"trec", "trac"}, g_infix = "+", pp = "tret", } }, { match = "traure", like = "treure", }, { -- [[veure]], [[entreveure]], [[preveure]], [[reveure]] match = "veure", forms = { stem = "veie", -- impf1s veia, impf1p vèiem (preceding vowel changed to è) pres_stressed = "veu", pres_1s = "vej", -- will be converted to 'veig'; 'veig' gets converted to 'veic' pres_sub_stressed = "vegi", pres_sub_unstressed = "vege", pret = {"veié", "vé"}, pret_1s = "viu", pret_3s = {"veié", "veu"}, impf_sub = "veié", pp = "vist", imp_2s = "veges", imp_2p = {"vegeu", "veieu"}, irreg = true, } }, --------------------------------------------- -iure ---------------------------------------- { -- [[escriure]], [[circumscriure]], [[descriure]], [[inscriure]], [[prescriure]], [[proscriure]], -- [[subscriure]], [[transcriure]] match = "scriure", forms = { stem = "scrivi", -- v dropped by g_infix before g and u; pres_1p/pres_2p have -ir endings g_infix = "+", pret = {"scriví", "scrigué"}, pp = "scrit", } }, { -- [[riure]], [[somriure]] match = "riure", -- must follow rule for 'scriure' forms = { stem = "rie", -- impf1s reia, impf1p rèiem (preceding vowel changed to è) g_infix = "+", } }, { -- [[viure]], [[conviure]], [[desviure's]], [[sobreviure]] match = "viure", forms = { stem = "vivi", -- v dropped by g_infix before g and u; pres_1p/pres_2p have -ir endings g_infix = "visc", -- applies to pres1s, sub, pret, pp } }, --------------------------------------------- -oure ---------------------------------------- { -- [[cloure]], [[concloure]], [[descloure]], [[encloure]], [[excloure]], [[incloure]], [[recloure]] match = "cloure", forms = { stem = "cloe", -- ï in impf1s cloïa gets generated automatically by combine_stem_ending() g_infix = "+", pp = "clòs#", -- remove final accent without prefix with vowel; also removed when adding a suffix } }, { -- [[coure]] "to cook" match = "coure", var = "cook", forms = { stem = "coe", -- ï in impf1s coïa gets generated automatically by combine_stem_ending() g_infix = "+", pp = "cuit", } }, { -- [[coure]] "to sting" match = "coure", var = "sting", forms = { stem = "coe", -- ï in impf1s coïa gets generated automatically by combine_stem_ending() g_infix = "+", -- pp regular 'cogud' } }, { -- [[moure]], [[promoure]], [[remoure]], [[somoure]], [[ploure]] match = match_against_verbs("oure", {"m", "pl"}), forms = { stem = "ove", -- v dropped by g_infix before g and u g_infix = "+", } }, { -- [[noure]] match = "noure", forms = { stem = "noe", -- ï in impf1s -aïa gets generated automatically by combine_stem_ending() g_infix = "+", } }, --------------------------------------------- -xer ---------------------------------------- { -- [[conèixer]], [[desconèixer]], [[reconèixer]] match = "conèixer", forms = { g_infix = "coneg", } }, { -- [[créixer]], [[acréixer]], [[decréixer]], [[recréixer]], [[sobrecréixer]] match = "créixer", forms = { pret = {"creixé", "cresqué"}, pres_sub_unstressed = {"creixe", "cresque"}, pp = "crescud", irreg = true, } }, { -- [[merèixer]], [[desmerèixer]], [[irèixer-se]] match = match_against_verbs("rèixer", {"me", "^i"}), forms = { pret = {"reixé", "resqué"}, pres_sub_unstressed = {"reixe", "resque"}, pp = "rescud", irreg = true, } }, { -- [[néixer]]/[[nàixer]], [[renéixer]]/[[renàixer]], [[sobrenéixer]]/[[sobrenàixer]], [[péixer]]/[[pàixer]] match = match_against_verbs("éixer", {"n", "p"}), forms = { stem = "aixe", fut = "aixer", pres_stressed = {"eix", "aix"}, pres_1s = "eixo", pret = {"aixé", "asqué"}, pres_sub_stressed = "eixi", pres_sub_unstressed = {"aixe", "asque"}, pp = "ascud", irreg = true, } }, { match = "àixer", like = "éixer", }, { -- [[parèixer]], [[aparèixer]], [[comparèixer]], [[desaparèixer]], [[reaparèixer]] match = "parèixer", forms = { g_infix = "pareg", } }, --------------------------------------------- misc ---------------------------------------- { -- [[cabre]] match = "cabre", forms = { pres_sub_stressed = "càpiga", pres_sub_unstressed = "capigue", irreg = true, } }, { -- [[caber]] match = "caber", like = "cabre", }, { -- [[saber]] match = "saber", forms = { fut = "sabr", pres_1s = "sé", pres_sub_stressed = "sàpiga", pres_sub_unstressed = "sapigue", imp_2s = "sàpiga", imp_2p = "sapigueu", irreg = true, } }, { -- [[poder]] match = "poder", forms = { fut = "podr", pres_1s = "puc", pres_sub_stressed = "pugui", pres_sub_unstressed = "pugue", g_infix = "pog", imp_2s = "pugues", imp_2p = "pugueu", irreg = true, } }, { -- [[córrer]], [[acórrer]], [[concórrer]], [[decórrer]], [[descórrer]], [[discórrer]], [[encórrer]], -- [[escórrer]], [[incórrer]], [[ocórrer]], [[recórrer]], [[socórrer]], [[transcórrer]] match = "córrer", forms = { pret = "corregué", pres_sub_unstressed = {"corre", "corregue"}, pp = "corregud", irreg = true, } }, { -- [[metre]], [[admetre]], [[arremetre]], [[cometre]], [[comprometre]], [[demetre]], [[descomprometre]], -- [[emetre]], [[entremetre's]], [[escometre]], [[malmetre]], [[manumetre]], [[ometre]], [[permetre]], -- [[prometre]], [[readmetre]], [[remetre]], [[retransmetre]], [[sotmetre]], [[trametre]], [[transmetre]] match = "metre", forms = { pp = "mès#", irreg = true, } }, -------------------------------------------------------------------------------------------- -- -ir -- -------------------------------------------------------------------------------------------- { -- [[acudir]]; NOTE: Separation by meaning does not occur in DCC, DIEC, DEIEC, and DCVB says the distinction -- is geographical and makes no mention of distinction by meaning. OTOH ca.wikt does say that the pronominal -- sense "to occur" tends to conjugate non-inchoative. match = "acudir", forms = { eix_infix = {{ form = "+", footnotes = {'[especially in the sense "to turn up, to be present"]'} }, { form = "-", footnotes = {'[especially in the pronominal sense "to occur"]'} }} } }, -- [[afegir]]: -- non-inchoative in Valencia, inchoative elsewhere { -- [[ajupir]] -- [[buixir]] -- [[bullir]], [[rebullir]] -- [[cruixir]], [[escruixir]] (Routledge says this is inchoative but DIEC, DEIEC and DCC all disagree; note -- pres_2s 'cruixes', handled automatically) -- [[dormir]], [[adormir]] -- [[funyir]] -- [[grunyir]] -- [[munyir]], [[esmunyir]] -- [[pudir]] -- [[punyir]] -- [[retrunyir]] -- [[sallir]] -- [[sentir]], [[pressentir]], [[ressentir-se]]; not [[consentir]], with can be either non-inchoative or -- inchoative, and not [[assentir]] or [[dissentir]], which are only inchoative match = match_against_verbs("ir", {"ajup", "buix", "bull", "cruix", "dorm", "funy", "gruny", "muny", "pud", "puny", "retruny", "^sent", "pressent", "^ressent", "sall"}), forms = { eix_infix = "-", } }, { -- [[arrupir-se]]; -- [[brumir]]; -- [[brunzir]]; -- [[consumir]], [[resumir]], [[presumir]] (not [[sumir]], [[assumir]], [[subsumir]], which are regular) -- [[mentir]], [[desmentir]] -- [[percudir]]; cf. also [[acudir]], which to some extent has separate conjugations per meaning -- [[consentir]] match = match_against_verbs("ir", {"arrup", "brum", "brunz", "consum", "^resum", "presum", "ment", "percud", "consent"}), forms = { eix_infix = {"+", "-"}, } }, -- [[cenyir]]: -- non-inchoative or inchoative in Balearics, inchoative elsewhere { -- [[cobrir]], [[descobrir]], [[encobrir]], [[recobrir]], [[redescobrir]] match = "cobrir", forms = { pp = "cobert", irreg = true, } }, { -- [[collir]], [[acollir]], [[escollir]], [[recollir]] match = "collir", forms = { stressed_stem = "culli", eix_infix = "-", irreg = true, } }, { -- [[complir]], [[acomplir]], [[incomplir]] match = "complir", forms = { pp = {"complert", "complid"}, irreg = true, } }, { -- [[cosir]], [[descosir]], [[recosir]] match = "cosir", forms = { stressed_stem = "cusi", pres_3s = "cús#", eix_infix = "-", irreg = true, } }, { -- [[eixir]], [[deseixir-se]]; not [[teixir]] or [[entreteixir]], and not [[reeixir]] or [[sobreeixir]], -- which have an ï in the stem-stressed forms match = match_against_verbs("eixir", {"^", "des"}), forms = { stressed_stem = "ixi", eix_infix = "-", irreg = true, } }, { -- [[reeixir]], [[sobreeixir]] match = match_against_verbs("eixir", {"^re", "sobre"}), forms = { stressed_stem = "ïxi", eix_infix = "-", irreg = true, } }, -- [[engolir]]: -- non-inchoative in Valencia, inchoative elsewhere { -- [[escopir]] match = "escopir", forms = { stressed_stem = "escupi", eix_infix = "-", irreg = true, } }, { -- [[establir]], [[preestablir]], [[restablir]] match = "establir", forms = { pp = {"establert", "establid"}, irreg = true, } }, -- [[ferir]]: -- non-inchoative in Balearics, inchoative elsewhere -- [[fregir]]: -- non-inchoative in Valencia, inchoative elsewhere { -- [[fugir]], [[confugir]], [[defugir]], [[enfugir-se]]; pres sing ''fujo, fuges, fuig'' handled by -- combine_stem_ending(); can't be handled by rule above that lists many non-inchoative verbs because the -- prefix would be 'fug' and the front-back alternation code doesn't apply to prefixes. match = "fugir", forms = { eix_infix = "-", } }, { -- [[imprimir]], [[reimprimir]], [[sobreimprimir]]; not any other verbs in -primir; write it this way so -- there's a prefix with a vowel to prevent against the accent in the pp from being removed while still -- removing it in the feminine. match = match_against_verbs("primir", {"im"}), forms = { pp = "près#", irreg = true, } }, -- [[llegir]]: -- non-inchoative in Valencia and Minorca, inchoative elsewhere { -- [[lluir]]: regular inchoative in the figurative meaning "to display (something), to be showy" also in the -- legal meaning "free from a pecuniary obligation, such as a land-based tax (emphyteusis)"; irregular in the -- literal meaning "to shine"; use <no_built_in> to get regular conjugation. In the regular conjugation, -- umlauts appear in the following forms: pres_1p/pres_sub_1p/imp_1p lluïm, pres_2p/pres_sub_2p/imp_2p lluïu, -- impf_1s/impf_3s lluïa, impf_2s lluïes, impf_3p lluïen, pret_2s lluïres, pret_3p lluïren, -- impf_sub_2s lluïssis, impf_sub_3p lluïssin, throughout the pp: lluït, lluïda, lluïts, lluïdes. IN the -- irregular conjugation, umlauts appear in the same places as well as elsewhere in the present subjunctive: -- pres_sub_1s/pres_sub_3s/imp_3s lluï, pres_sub_2s lluïs, pres_sub_3p/imp_3p lluïn. Notably, they do *NOT* -- appear in the gerund lluint, the infinitive lluir, or anywhere in the future or conditional. Note that -- verbs.cat [https://www.verbs.cat/en/conjugation/899-lluir.html] lists additional irregular forms pres_1s -- lluu, and alternative impf_sub forms in -e- instead of -i- (lluïsses, lluíssem, lluísseu, lluïssen), but -- these are nonstandard or dialectal per both Routledge and DEIEC. match = "^lluir", forms = { eix_infix = "-", pres3s = {"lluu", "llu"}, -- generates pres_2s, imp_2s irreg = true, } }, { -- [[entrelluir]] "to be half-seen", [[relluir]] "to shine", [[traslluir-se]] "to be translucent"; either -- inchoative or non-inchoative, not distinguished by meaning; note, [[deslluir]] and [[enlluir]] are regular -- inchoative verbs. match = match_against_verbs("lluir", {"entre", "^re", "tras"}), forms = { eix_infix = {"+", "-"}, pres3s = {"llueix", "lluu", "llú"}, -- generates pres_2s, imp_2s; note, pres_2s will end in -es due to -- combine_stem_ending() irreg = true, } }, { -- [[morir]], [[premorir]]; but not [[atemorir]] match = match_against_verbs("morir", {"^", "pre"}), forms = { eix_infix = "-", pp = "mort", irreg = true, } }, { -- [[obrir]], [[entreobrir]], [[reobrir]]; not [[cobrir]] and derivatives, not [[empobrir]], so we have to list -- them individually match = match_against_verbs("obrir", {"^", "entre", "^re"}), forms = { eix_infix = "-", pp = "obert", irreg = true, } }, { -- [[oferir]]; but not [[proferir]] match = "^oferir", forms = { pp = {"ofert", "oferid"}, irreg = true, } }, -- [[oir]], [[desoir]], [[entreoir]]: -- per Routledge, non-inchoative or inchoative normally but only -- non-inchoative in Valencian; but all dictionaries disagree and say it is a regular inchoative-only verb. -- It has the same umlauts as lluir (and [[corroir]], another regular inchoative verb). { -- [[omplir]], [[desomplir-se]], [[reomplir]]; not [[complir]] and derivatives, so we have to list them -- individually match = match_against_verbs("omplir", {"^", "des", "^re"}), forms = { eix_infix = "-", pp = {"omplert", "omplid"}, irreg = true, } }, -- [[penedir-se]]: -- non-inchoative in Balearics, inchoative elsewhere { -- [[pruir]] "to itch": same umlauts as in [[lluir]]. match = "^pruir", forms = { eix_infix = "-", pres3s = {"pruu", "pru"}, -- generates pres_2s, imp_2s irreg = true, } }, { -- [[reblir]] match = "^reblir", forms = { pp = {"reblert", "reblid"}, irreg = true, } }, -- [[renyir]]: -- non-inchoative in Valencia, inchoative elsewhere { -- [[sofrir]] match = "^sofrir", forms = { pp = {"sofert", "sofrid"}, irreg = true, } }, { -- [[sortir]], [[ressortir]], [[sobresortir]]; but not [[assortir]], which is regular inchoative match = match_against_verbs("sortir", {"^", "^res", "sobre"}), forms = { stressed_stem = "surti", eix_infix = "-", irreg = true, } }, { -- [[suplir]] match = "^suplir", forms = { pp = {"suplert", "suplid"}, irreg = true, } }, -- [[teixir]], [[entreteixir]]: -- non-inchoative in Valencia, inchoative elsewhere { -- [[tenir]] but not any compounds; highly irregular match = "^tenir", forms = { fut = "tindr", pres_stressed = "ten", pres_3s = "té", imp_2s = {"té", "ten", "tingues"}, imp_2p = {"teniu", "tingueu"}, g_infix = "ting", } }, { -- [[abstenir-se]], [[atenir-se]], [[captenir-se]], [[cartenir]], [[contenir]], [[detenir]], [[entretenir]], -- [[mantenir]], [[menystenir]], [[obtenir]], [[retenir]], [[sostenir]], [[viltenir]]; highly irregular match = "tenir", forms = { fut = "tindr", pres_stressed = "ten", pres_3s = "té", imp_2s = {"tén", "tingues"}, imp_2p = {"teniu", "tingueu"}, g_infix = "ting", } }, { -- [[tindre]]: variant of [[tenir]] match = "tindre", like = "tenir", }, -- [[tenyir]], [[destenyir]]: -- non-inchoative in Valencia, but [[retenyir]] inchoative or non-inchoative in -- Valencia? (per Routledge); regular inchoative elsewhere { -- [[tossir]] "to cough" match = "^tossir", forms = { stressed_stem = "tussi", -- pres_2s gets 'tusses' pres_3s = "tus", -- note, pres_3s (a single form override) not pres3s (a stem override, which also affects -- pres_2s; but imp_2s is physically copied from pres_3s, so imp_2s correctly gets 'tus') eix_infix = "-", irreg = true, } }, { -- [[venir]] but not any compounds; highly irregular match = "^venir", forms = { fut = "vindr", pres_stressed = "ven", pres_3s = "ve", imp_2s = "vine", g_infix = "ving", } }, { -- compounds of [[venir]]: [[advenir]], [[avenir]], [[contravenir]], [[convenir]], [[desavenir-se]], -- [[desconvenir]], [[entrevenir]], [[esdevenir]], [[intervenir]], [[obvenir]], [[pervenir]], [[prevenir]], -- [[provenir]], [[reconvenir]], [[revenir]], [[sobrevenir]], [[subvenir]]; but not [[enjovenir]] or -- [[rejovenir]]; highly irregular match = match_against_verbs("venir", {"^ad", "^a", "contra", "con", "desa", "entre", "esde", "inter", "ob", "per", "pre", "pro", "^re", "sobre", "sub"}), forms = { fut = "vindr", pres_stressed = "ven", pres_3s = "vé", imp_2s = "vén", g_infix = "ving", } }, { -- [[vindre]]: variant of [[venir]] match = "vindre", like = "venir", }, -- [[vestir]], [[desvestir]], [[revestir]], maybe [[transvestir]]: non-inchoative in Valencia, inchoative or -- non-inchoative in the Balearics; regular inchoative elsewhere; but not [[envestir]] or [[investir]], which are -- regular inchoative everywhere { -- [[fer]], [[contrafer]], [[desfer]], [[estrafer]], [[perfer]], [[refer]], [[satisfer]]; highly irregular match = "fer", forms = { fut = "far", pres_1s = "faj", -- will be converted to 'faig'; 'faig' gets converted to 'faic' pres_2s = "fàs#", pres_3s = "fà#", pres_3p = "fan", pres_unstressed = "fe", impf1 = "fei", impf2 = "fèi", pres_sub_stressed = "faci", pres_sub_unstressed = "fe", pret = "fé", pret_1s = "fiu", pret_3s = "feu", impf_sub_1s = "fés#", -- regular except for base form [[fes]], lacking an accent impf_sub_3s = "fés#", -- same imp_2s = "fés#", pp = "fet", irreg = true, } }, { -- [[dir]], [[adir-se]], [[contradir]], [[desdir]], [[entredir]], [[interdir]], [[maldir]], [[predir]], [[redir]]; -- behaves like an -er/-re verb match = match_against_verbs("dir", {"^", "^a", "contra", "des", "entre", "inter", "mal", "pre", "^re"}), forms = { stem = "die", g_infix = "+", imp_2s = "digues", imp_2p = "digueu", pp = "dit", } }, { -- [[dur]], [[endur-se]]; behaves like an -er/-re verb match = "dur", forms = { stem = "due", g_infix = "+", pres3s = {"duu", "du"}, -- generates pres_2s, imp_2s impf1 = "dui", impf2 = "dúi", pp = "dut", } }, { -- [[ser]]; highly irregular match = "^ser", forms = { pres_1s = "soc", pres_2s = "ets", pres_3s = "és", pres_1p = "som", pres_2p = "sou", pres_3p = "són", impf1 = "er", impf2 = "ér", pres_sub_stressed = "sigui", pres_sub_unstressed = "sigue", pret = "fó", pret_1s = "fui", pret_3s = "fou", impf_sub_1s = "fos", -- regular except for lack of accent impf_sub_3s = "fos", -- same cond = {"serí", "fór"}, imp_2s = "sigues", imp_2p = "sigueu", pp = {"estad", "sigud"}, gerund = {"sent", "essent"}, irreg = true, } }, { -- [[ésser]]; variant of [[ser]] match = "^ésser", like = "ser", }, { -- [[haver]] as auxiliary; highly irregular match = "^haver", var = "aux", forms = { pres_1s = "he", pres_2s = "has", pres_3s = "ha", pres_1p = "hem", pres_2p = "heu", pres_3p = "han", fut = "haur", cond = {"haurí", "haguér"}, pres_sub_stressed = "hagi", pres_sub_unstressed = "hàgi", noimp = true, g_infix = "+", } }, { -- [[haver]] as full verb; highly irregular match = "^haver", var = "full", forms = { pres_1s = {"hec", "hac"}, pres_stressed = {"heu", "hau"}, fut = "haur", pres_sub_stressed = "hegui", g_infix = "+", } }, { -- [[heure]]; variant of full verb [[haver]] match = "^heure", like = "haver", likevar = "full", }, { -- [[haure]]; variant of full verb [[haver]] match = "^haure", like = "haver", likevar = "full", }, } local function skip_slot(base, slot, allow_overrides) if not allow_overrides and (base.basic_overrides[slot] or base.refl and base.basic_reflexive_only_overrides[slot]) then -- Skip any slots for which there are overrides. return true end if base.only3s and (slot:find("^pp_f") or slot:find("^pp_mp")) then -- diluviar, atardecer, neviscar; impersonal verbs have only masc sing pp return true end if not slot:find("[123]") then -- Don't skip non-personal slots. return false end if base.nofinite then return true end if (base.only3s or base.only3sp or base.only3p) and (slot:find("^imp_") or slot:find("^neg_imp_")) then return true end if base.only3s and not slot:find("3s") then -- diluviar, atardecer, neviscar return true end if base.only3sp and not slot:find("3[sp]") then -- atañer, concernir return true end if base.only3p and not slot:find("3p") then -- [[caer cuatro gotas]], [[caer chuzos de punta]], [[entrarle los siete males]] return true end return false end local function add_stem_ending(stem, ending) if ending == "" then return stem end if stem:find("#$") then -- remove final accent when adding a suffix stem = com.remove_accents((stem:gsub("#$", "")), "final syllable only") end return stem .. ending end local function process_stem(stem, fn) if stem:find("#$") then local stem_no_pound_sign = stem:match("^(.*)#$") return fn(stem_no_pound_sign) .. "#" else return fn(stem) end end -- Add the `stem` to the `ending` and apply any phonetic modifications. `is_full_word` indicates that we're creating -- a "full word" not a stem, and turns on devoicing of final consonants. `dont_include_prefix` is used when creating -- stems and indicates not to prepend the prefix in `base.prefix` to the result. `is_pres_sub_stressed` is used when -- creating the pres_sub_stressed stem, to correctly handle both [[desaiguar]] and [[argüir]], whose respective -- interactions between ü and i/ï are very tricky. -- -- WARNING: This function is written very carefully; changes to it can easily have unintended consequences. local function combine_stem_ending(base, stem, ending, is_full_word, dont_include_prefix, is_pres_sub_stressed) -- Include the prefix in the stem unless dont_include_prefix is given (used in construct_stems()), or the value of -- `stem` comes from a user-specified stem or form override. if not dont_include_prefix and not stem:find(IS_USER_STEM_OVERRIDE) and not stem:find(IS_USER_FORM_OVERRIDE) then stem = base.prefix .. stem end -- A * at the beginning of the ending is a signal to remove a stressed accent from the stem. This may feed any of -- the following rules. if ending:find("^%*") then ending = ending:gsub("^%*", "") stem = com.remove_accents(stem, "final syllable only") end -- If ending begins with s and stem ends in a sibilant, we need an e in between; cf. pres_2s 'apareixes' of -- [[aparèixer]], pres_2s 'torces' of [[tòrcer]], pres_2s 'fuges' of [[fugir]], pres_2s 'brunzes' of [[brunzir]]. -- This may feed the next rule. if ending:find("^s") and rfind(stem, "[çjsxz]$") then ending = "e" .. ending end -- By default, stems are in their "back" (standalone) form. Before a front vowel, convert the final consonant to -- its "front" form so the pronunciation doesn't change. if rfind(ending, "^" .. front_vowel_c) then -- adequar -> adeqües -- enaiguar -> enaigües -- pegar -> pegues -- arranjar -> arranges -- marcar -> marques -- abraçar -> abraces stem = com.back_to_front(stem) end -- Ending beginning in -i after diphthong ending in V + i compresses the two i's into one (cf. pret_1s 'desmaí' and -- pres_sub_1s 'desmaï' of [[desmaiar]]). This rule doesn't apply after pseudo-vowel u in gu/qu; cf. pret_1s 'guií' -- of [[guiar]] and contrast pret_1s 'cruí' of [[cruiar]]. This may feed the next rule. if rfind(ending, "^[iíï]") and rfind(stem, V .. "i$") and not rfind(stem, "[gq][uü]i$") then stem = stem:gsub("i$", "") end -- If ending begins with i (not í), it must get a diaeresis after a true vowel (not gu/qu, cf. pres_1p 'delinquim' -- of [[delinquir]], not '#delinquïm'; also not a diphthong ending in u, cf. pres_sub_1s 'apreui' of [[apreuar]] -- not '#apreuï') to prevent the two merging into a diphthong. Note that ü -> u before ï, but to simplify things -- we leave the double umlauts in place and remove the first one during postprocessing, in fix_double_umlauts(). -- Cf.: -- * impf_1s 'raïa' of [[raure]]; -- * pres_sub_1s 'creï' of [[crear]]; -- * pres_sub_1s 'associï' of [[associar]]; -- * impf_1s 'cloïa' of [[cloure]]; -- * pres_1p 'lluïm' of [[lluir]]; -- * pres_1p 'arguïm' of [[argüir]]. if ending:find("^i") and rfind(stem, "[aeiouü]$") and not stem:find("[aeiogq]u$") and -- Unstressed subjunctive endings of [[enaiguar]] remain without umlaut: enaigüi/enaigüis/enaigüin; -- but stressed endings of [[argüir]] that begin with 'i' do get an umlaut: arguït, impf. arguïa, including -- stressed subjunctive endings arguïm/arguïu. In both cases the ending is '-i' as part of the creation of -- the respective stems. There seems no way of distinguishing the two cases other than with a special flag. not (rfind(stem, "[gq]ü$") and ending == "i" and is_pres_sub_stressed) then ending = ending:gsub("^i", "ï") end local retval = add_stem_ending(stem, ending) if retval:find("#$") then -- remove final accent if no vowels in prefix retval = retval:gsub("#$", "") if not rfind(base.prefix, V) then retval = com.remove_accents(retval, "final syllable only") end end if is_full_word then local saw_is_user_form_override retval, saw_is_user_form_override = rsubb(retval, IS_USER_FORM_OVERRIDE, "") retval = retval:gsub(IS_USER_STEM_OVERRIDE, "") if not saw_is_user_form_override then -- Devoice final voiced obstruent (cf. pres_2s 'caps', pres_3s 'cap' of [[cabre]]). But not after a -- consonant (cf. pres_2s 'perds', pres_3s 'perd' of [[perdre]]), except for g -> c, which operates -- even after a consonant (pres_1s 'resolc' of [[resoldre]], pres_1s 'tinc' of [[tenir]]). retval = retval:gsub("g(s?)$", "c%1") retval = rsub(retval, "(" .. V .. ")([bdj])(s?)$", function(before, voiced, after) local devoice = { b = "p", d = "t", j = "ig", -- pres_3s 'fuj' of [[fugir]] -> 'fuig' } return before .. devoice[voiced] .. after end) end end return retval end local function add3(base, slot, stems, endings, footnotes, allow_overrides) if skip_slot(base, slot, allow_overrides) then return end local function do_combine_stem_ending(stem, ending) return combine_stem_ending(base, stem, ending, "is full word") end iut.add_forms(base.forms, slot, stems, endings, do_combine_stem_ending, nil, nil, footnotes) end local function insert_form(base, slot, form) if not skip_slot(base, slot) then iut.insert_form(base.forms, slot, form) end end local function insert_forms(base, slot, forms) if not skip_slot(base, slot) then iut.insert_forms(base.forms, slot, forms) end end local function add_single_stem_tense(base, slot_pref, stems, s1, s2, s3, p1, p2, p3) local function addit(slot, ending) add3(base, slot_pref .. "_" .. slot, stems, ending) end addit("1s", s1) addit("2s", s2) addit("3s", s3) addit("1p", p1) addit("2p", p2) addit("3p", p3) end local function map_general(stemforms, fn) return iut.map_forms(iut.convert_to_general_list_form(stemforms), fn) end local function flatmap_general(stemforms, fn) return iut.flatmap_forms(iut.convert_to_general_list_form(stemforms), fn) end -- Given a stem ending in a conjugation vowel -a/-e/-i/-ï, split into stem base and conjugation vowel, converting the -- stem base to "back" form if the conjugation vowel is front (hence 'torce' of [[tòrcer]] splits into 'torç' and 'e', -- and 'fugi' of [[fugir]] splits into 'fuj' and 'i'). local function split_conj_vowel(stem) local stem_base, conj_vowel = rmatch(stem, "^(.*)([aeiï])$") if not stem_base then error(("Internal error: Stem '%s' doesn't end in conjugation vowel a/e/i"):format(stem)) end if conj_vowel == "ï" then -- To simplify handling of ï, convert to i. It will be converted back to ï as necessary in -- combine_stem_ending(). conj_vowel = "i" end if rfind(conj_vowel, front_vowel_c) then stem_base = com.front_to_back(stem_base) end return stem_base, conj_vowel end local function construct_stems(base) base.output_stems = {} local stems = base.output_stems local bst = base.input_stems -- YUCK, see combine_stem_ending() for the necessity of is_pres_sub_stressed. local function combine(stem, ending, is_pres_sub_stressed) return combine_stem_ending(base, stem, ending, false, "dont include prefix", is_pres_sub_stressed) end stems.irreg = bst.irreg or bst.g_infix -- NOTE: Some stems end in a conjugation or similar vowel, specifically: -- * `stem` (ends in conjugation vowel -a/-e/-i); -- * `stressed_stem` (likewise); -- * `unstressed_stem` (likewise); -- * `pres_unstressed` (which assumes the form of the gerund minus the -nt; note that `pres_stressed` does *NOT* -- end in a conjugation vowel, but assumes the stem form; the value of pres_3s will be derived by adding -a for -- -ar verbs and otherwise adding an -e prop vowel when required, as in [[cobrir]], and otherwise adding no -- vowel); -- * `pres_sub_stressed` (which assumes the form of pres_sub_3s and hence usually ends in -i, occasionally -a); -- * `pres_sub_unstressed` (which assumes the form of pres_sub_1p minus the -m, hence ends in -e or -i). -- Save stem for use in add_categories_and_annotation() for determining the conjugation class. stems.stem = bst.stem or base.stem local eix_infix_stem if base.conj_vowel == "i" then -- Save eix_infix value for use in add_categories_and_annotation() for determining whether consonant -- alternations exist. stems.eix_infix = bst.eix_infix or bst.g_infix and "-" or "+" eix_infix_stem = flatmap_general(stems.eix_infix, function(form) if form == "+" then return map_general(stems.stem, function(form) local stem_base, conj_vowel = split_conj_vowel(form) return combine(stem_base, "eixe") end) elseif form == "-" then return stems.stem else return form end end) end local stressed_stem = bst.stressed_stem or eix_infix_stem or stems.stem local unstressed_stem = bst.unstressed_stem or stems.stem -- Add the 'g' that is characteristic of g-infix verbs. We remove a stem-final v, e.g. [[beure]] with stem 'beve' -- becomes 'beg'. local function add_g(stemforms) return map_general(stemforms, function(form) local stem_base, conj_vowel = split_conj_vowel(form) stem_base = stem_base:gsub("v$", "") return combine(stem_base, "g") end) end -- Add the 'u' of the pres_3s that is characteristic of g-infix verbs (and conjugation vowel 'e', later removed). -- We remove a stem-final v, as well as i as part of a diphthong, e.g. [[beure]] with stem 'beve' becomes 'beue' -- and [[veure]] with stem 'veie' becomes 'veue' (but [[riure]] with stem 'rie' becomes 'riue' not '#rue'). We -- don't add -u after a consonant, e.g. [[doldre]] with stem 'dole' becomes 'dole' not '#dolue'. local function add_u(stemforms) return map_general(stemforms, function(form) local stem_base, conj_vowel = split_conj_vowel(form) if stem_base:find("v$") then stem_base = stem_base:gsub("v$", "") else stem_base = rsub(stem_base, "(" .. V .. ")i$", "%1") end -- Add u after vowel but not after another u, so we get pres_3p 'duen' of [[dur]] not '#duuen'. if rfind(stem_base, V .. "$") and not stem_base:find("u$") then return combine(stem_base, "u") else return stem_base end end) end local stressed_g_infix, unstressed_g_infix, g_infix_pres_stressed if bst.g_infix then local function flatmap_g_infix(default) return flatmap_general(bst.g_infix, function(form) if form == "+" then return default else return form end end) end stressed_g_infix = flatmap_g_infix(add_g(stressed_stem)) unstressed_g_infix = flatmap_g_infix(add_g(unstressed_stem)) g_infix_pres_stressed = add_u(stressed_stem) end stems.pres_unstressed = bst.pres_unstressed or unstressed_stem stems.pres_stressed = -- If no_pres_stressed given, pres_stressed stem should be empty so no forms are generated. base.no_pres_stressed and {} or bst.pres_stressed or g_infix_pres_stressed or map_general(stressed_stem, function(form) local stem_base, conj_vowel = split_conj_vowel(form) return stem_base end) stems.pres1s = -- If no_pres_stressed given, pres1s stem should be empty so no forms are generated. base.no_pres_stressed and {} or stressed_g_infix or map_general(stems.pres_stressed, function(form) return combine(form, "o") end) stems.pres3s = -- If no_pres_stressed given, pres3s stem should be empty so no forms are generated. base.no_pres_stressed and {} or bst.pres3s or map_general(stems.pres_stressed, function(form) if base.conj_vowel == "a" then return combine(form, "a") elseif rfind(form, C .. "[lr]$") and not rfind(form, V .. "ll$") then return combine(form, "e") else return form end end) stems.pres3p = -- If no_pres_stressed given, pres3p stem should be empty so no forms are generated. base.no_pres_stressed and {} or map_general(stems.pres_stressed, function(form) return combine(form, "en") end) local function compute_impf_stem(with_accent) return map_general(stems.pres_unstressed, function(form) local stem_base, conj_vowel = split_conj_vowel(form) if conj_vowel == "a" then return combine(stem_base, with_accent and "àv" or "av") elseif stem_base:find("i#?$") then form = form:gsub("i#?$", "") return combine(rmatch(stem_base, "^(.-)" .. V .. "*$"), with_accent and "èi" or "ei") else return combine(stem_base, with_accent and "í" or "i") -- i -> ï after a vowel end end) end stems.impf1 = bst.impf1 or compute_impf_stem(false) stems.impf2 = bst.impf2 or compute_impf_stem(true) stems.pret = bst.pret or unstressed_g_infix and map_general(unstressed_g_infix, function(form) return combine(form, "é") end ) or map_general(unstressed_stem, function(form) local accent_conj_vowel = { a = "à", e = "é", i = "í", } local stem_base, conj_vowel = split_conj_vowel(form) return combine(stem_base, accent_conj_vowel[conj_vowel]) end) stems.fut = bst.fut or base.inf_stem stems.cond = bst.cond or map_general(stems.fut, function(form) return combine(form, "í") end) stems.pres_sub_stressed = bst.pres_sub_stressed or stressed_g_infix and map_general(stressed_g_infix, function(form) return combine(form, "i") end) or map_general(stressed_stem, function(form) local stem_base, conj_vowel = split_conj_vowel(form) return combine(stem_base, "i", "is pres_sub_stressed") end) stems.pres_sub_unstressed = bst.pres_sub_unstressed or unstressed_g_infix and map_general(unstressed_g_infix, function(form) return combine(form, "e") end) or map_general(unstressed_stem, function(form) local stem_base, conj_vowel = split_conj_vowel(form) return combine(stem_base, conj_vowel == "i" and conj_vowel or "e") end) stems.impf_sub = bst.impf_sub or map_general(stems.pret, function(form) local stem_base = rmatch(form, "^(.*)à$") -- already in "back" form, no need to convert if stem_base then return combine(stem_base, "é") else return form end end) stems.pp = bst.pp or unstressed_g_infix and map_general(unstressed_g_infix, function(form) return combine(form, "ud") end ) or map_general(unstressed_stem, function(form) local stem_base, conj_vowel = split_conj_vowel(form) -- use combine() so we get 'abduïd' from 'abdu-' of [[abduir]], 'seguid' from 'seg-' from [[seguir]], etc. return combine(stem_base, (conj_vowel == "e" and "u" or conj_vowel) .. "d") end) end local function a_to_e(base, stems, suffix) return map_general(stems, function(form) local stem_base = form:match("^(.-)a$") if stem_base then suffix = "e" .. suffix else stem_base = form end return combine_stem_ending(base, stem_base, suffix, "is full word") end) end local function add_present_indic(base) local stems = base.output_stems local function addit(slot, stems, ending) add3(base, "pres_" .. slot, stems, ending) end addit("1s", stems.pres1s, "") insert_forms(base, "pres_2s", a_to_e(base, stems.pres3s, "s")) addit("3s", stems.pres3s, "") insert_forms(base, "pres_1p", a_to_e(base, stems.pres_unstressed, "m")) insert_forms(base, "pres_2p", a_to_e(base, stems.pres_unstressed, "u")) addit("3p", stems.pres3p, "") end local function add_present_subj(base) local stems = base.output_stems local function addit(slot, stems, ending) add3(base, "pres_sub_" .. slot, stems, ending) end -- Regular -ar verb: [[amar]]: ami, amis, ami, amem, ameu, amin -- Regular -re verb: [[batre]]: bati, batis, bati, batem, bateu, batin (same as -ar verb) -- Regular -ir verb, no -eix- infix: [[dormir]]: dormi, dormis, dormi, dormim, dormiu, dormin -- Regular -ir verb, -eix- infix: [[imprimir]]: imprimeixi, imprimeixis, imprimeixi, imprimim, imprimiu, imprimeixin -- Stem changing in 123s/3p vs. 12p: -- * -eix- infix (-eix- in all stressed forms: 123s/3p of pres ind/sub, 2s imp) -- * [[collir]]: culli, cullis, culli, collim, colliu, cullin (cull- in all stressed forms) -- * [[cabre]]: càpiga, càpigues, càpiga, capiguem, capigueu, càpiguen (also different endings) addit("1s", stems.pres_sub_stressed, "") insert_forms(base, "pres_sub_2s", a_to_e(base, stems.pres_sub_stressed, "s")) addit("3s", stems.pres_sub_stressed, "") addit("1p", stems.pres_sub_unstressed, "m") addit("2p", stems.pres_sub_unstressed, "u") insert_forms(base, "pres_sub_3p", a_to_e(base, stems.pres_sub_stressed, "n")) end local function add_finite_non_present(base) local stems = base.output_stems local function add_tense(slot, stem, s1, s2, s3, p1, p2, p3) add_single_stem_tense(base, slot, stem, s1, s2, s3, p1, p2, p3) end add_tense("impf", stems.impf1, "a", "es", "a", nil, nil, "en") add_tense("impf", stems.impf2, nil, nil, nil, "em", "eu", nil) -- pret_1s ends in -í regardless of the normal vowel of the stem. insert_forms(base, "pret_1s", map_general(stems.pret, function(form) local stem_base, conj_vowel = rmatch(form, "^(.*)(" .. V .. ")$") if not stem_base then error(("Internal error: Preterite stem '%s' doesn't end in vowel"):format(form)) end if rfind(conj_vowel, front_vowel_c) then stem_base = com.front_to_back(stem_base) end -- Use combine_stem_ending() to handle back-to-front conversions, e.g. pegà -> peguí for [[pegar]] and ensure -- that the prefix gets added. return combine_stem_ending(base, stem_base, "í", "is full word") end)) -- * at the beginning of the ending means to remove an accent from the last vowel of the preterite stem. add_tense("pret", stems.pret, nil, "*res", "", "rem", "reu", "*ren") -- * at the beginning of the ending means to remove an accent from the last vowel of the imperfect subjunctive stem. add_tense("impf_sub", stems.impf_sub, "s", "*ssis", "s", "ssim", "ssiu", "*ssin") add_tense("fut", stems.fut, "é", "às", "à", "em", "eu", "an") add_tense("cond", stems.cond, "*a", "*es", "*a", "em", "eu", "*en") end local function add_non_finite_forms(base) local stems = base.output_stems local function addit(slot, stems, ending, footnotes) add3(base, slot, stems, ending, footnotes) end insert_form(base, "infinitive", {form = base.orig_verb}) -- Also insert "infinitive + reflexive pronoun" combinations if we're handling a reflexive verb. See comment below -- for "gerund + reflexive pronoun" combinations. if base.refl then for _, persnum in ipairs(person_number_list) do insert_form(base, "infinitive_" .. persnum, {form = base.orig_verb}) end end -- Gerunds don't have an umlaut over the i in cases like 'abduint' of 'abduir' (not '#abduïnt'). local pres_unstressed_no_umlaut = map_general(stems.pres_unstressed, function(form) return rsub(form, "ï$", "i") end) addit("gerund", pres_unstressed_no_umlaut, "nt") -- Also insert "gerund + reflexive pronoun" combinations if we're handling a reflexive verb. We insert exactly the -- same form as for the bare gerund; later on in add_reflexive_or_fixed_clitic_to_forms(), we add the appropriate -- clitic pronouns. It's important not to do this for non-reflexive verbs, because in that case, the clitic -- pronouns won't be added, and {{ca-verb form of}} will wrongly consider all these combinations as possible -- inflections of the bare gerund. Thanks to [[User:JeffDoozan]] for this bug fix. if base.refl then for _, persnum in ipairs(person_number_list) do addit("gerund_" .. persnum, pres_unstressed_no_umlaut, "nt") end end addit("pp_ms", stems.pp, "") if not base.pp_inv then addit("pp_fs", stems.pp, "a") -- make_plural() handles the complexities of e.g. 'vist' of [[veure]] -> 'vistos'/'vists' and 'romàs' of -- [[romandre]] -> 'romasos'. We need to use flatmap_general() because make_plural() may return more than one -- plural, and we need to use map_general() on the result, applying combine_stem_ending(), to ensure that -- prefixes get properly added and plurals like 'amads' of stem 'amad' of [[amar]] get converted to 'amats'. insert_forms(base, "pp_mp", map_general(flatmap_general(stems.pp, function(form) -- Remove any # indicating that an accent will be dropped; it will be dropped in any case by make_plural(). form = form:gsub("#$", "") return com.make_plural(form, "m") end), function(form) return combine_stem_ending(base, form, "", "is full word") end)) addit("pp_fp", stems.pp, "es") end end local function add_imperatives(base) if base.noimp then return end -- Copy pres3s to imperative since they are almost always the same. insert_forms(base, "imp_2s", iut.map_forms(base.forms.pres_3s, function(form) return form end)) -- Copy pres2p to imperative plural since they are almost always the same. insert_forms(base, "imp_2p", iut.map_forms(base.forms.pres_2p, function(form) return form end)) -- Copy subjunctives to imperatives. for _, persnum in ipairs({"3s", "1p", "3p"}) do local from = "pres_sub_" .. persnum local to = "imp_" .. persnum insert_forms(base, to, iut.map_forms(base.forms[from], function(form) return form end)) end end local function fix_double_umlauts(base) for slot, forms in pairs(base.forms) do for _, form in ipairs(forms) do form.form = form.form:gsub("üï", "uï") end end end local function process_slot_overrides(base, filter_slot, reflexive_only) local overrides = reflexive_only and base.basic_reflexive_only_overrides or base.basic_overrides for slot, forms in pairs(overrides) do if not filter_slot or filter_slot(slot) then add3(base, slot, forms, "", nil, "allow overrides") end end end local function link_clitic(clitic) return (clitic:gsub("([^ %-]+)", "[[%1]]")) end -- Prefix `form` with `clitic`, adding fixed text `between` between them. Add links as appropriate unless the user -- requested no links. Check whether form already has brackets (as will be the case if the form has a fixed clitic). local function prefix_clitic_to_form(base, clitic, between, form) if base.alternant_multiword_spec.args.noautolinkverb then return clitic .. between .. form else local clitic_pref = link_clitic(clitic) .. between if form:find("%[%[") then return clitic_pref .. form else return clitic_pref .. "[[" .. form .. "]]" end end end -- Suffix `form` with `clitic`. Add links as appropriate unless the user requested no links. Check whether form already -- has brackets (as will be the case if the form has a fixed clitic). local function suffix_clitic_to_form(base, clitic, form) local autolink = not base.alternant_multiword_spec.args.noautolinkverb if base.alternant_multiword_spec.args.noautolinkverb then return form .. clitic else local clitic_suf = link_clitic(clitic) if form:find("%[%[") then return form .. clitic_suf else return "[[" .. form .. "]]" .. clitic_suf end end end -- Add a reflexive pronoun or fixed clitic (FIXME: not working), as appropriate to the base forms that were generated. -- `do_joined` means to do only the forms where the pronoun is joined to the end of the form; otherwise, do only the -- forms where it is not joined and precedes the form. local function add_reflexive_or_fixed_clitic_to_forms(base, do_reflexive, do_joined) for _, slotaccel in ipairs(base.alternant_multiword_spec.verb_slots_basic) do local slot, accel = unpack(slotaccel) local persnum if slot:find("[123]") then persnum = slot:match("^.*_(.-)$") else persnum = "3s" end local function get_proclitic(form) --if not do_reflexive then -- return base.clitic if form:find("^[aeiouh]") then return proclitic_elided_person_number_to_reflexive_pronoun[persnum] else return proclitic_non_elided_person_number_to_reflexive_pronoun[persnum] end end local function get_enclitic(form) --if not do_reflexive then -- return base.clitic if rfind(form, C .. "$") or rfind(form, V .. "[iu]$") and not form:find("[gq]ui$") then return enclitic_non_elided_person_number_to_reflexive_pronoun[persnum] else return enclitic_elided_person_number_to_reflexive_pronoun[persnum] end end if base.forms[slot] then if do_reflexive and slot:find("^pp_") or slot == "infinitive_linked" then -- do nothing with reflexive past participles or with infinitive linked (handled at the end) elseif slot:find("^neg_imp_") then error("Internal error: Should not have forms set for negative imperative at this stage") else local slot_has_suffixed_clitic = slot:find("infinitive") or slot:find("gerund") or slot:find("^imp_") -- Maybe generate non-reflexive parts and separated syntactic variants for use in -- {{ca-verb form of}}. See comment in add_slots() above `need_special_verb_form_of_slots`. -- Check for do_joined so we only run this code once. if do_reflexive and do_joined and base.alternant_multiword_spec.source_template == "ca-verb form of" and -- Skip personal variants of infinitives and gerunds so we don't think [[arrependendo]] is a -- non-reflexive equivalent of [[arrependendo-me]]. not slot:find("infinitive_") and not slot:find("gerund_") then -- Clone the forms because we will be destructively modifying them just below, adding the reflexive -- pronoun. insert_forms(base, slot .. "_non_reflexive", mw.clone(base.forms[slot])) if slot_has_suffixed_clitic then insert_forms(base, slot .. "_variant", iut.map_forms(base.forms[slot], function(form) return prefix_clitic_to_form(base, get_proclitic(form), "... ", form) end)) end end if slot_has_suffixed_clitic then if do_joined then -- Add clitic after form. for _, form in ipairs(base.forms[slot]) do form.form = suffix_clitic_to_form(base, get_enclitic(form.form), form.form) end end elseif not do_joined then -- Add clitic before form. for _, form in ipairs(base.forms[slot]) do form.form = prefix_clitic_to_form(base, get_proclitic(form.form), "", form.form) end end end end end end local function handle_infinitive_linked(base) -- Compute linked versions of potential lemma slots, for use in {{ca-verb}}. -- We substitute the original lemma (before removing links) for forms that -- are the same as the lemma, if the original lemma has links. for _, slot in ipairs({"infinitive"}) do insert_forms(base, slot .. "_linked", iut.map_forms(base.forms[slot], function(form) if form == base.lemma and rfind(base.linked_lemma, "%[%[") then return base.linked_lemma else return form end end)) end end local function generate_negative_imperatives(base) if base.noimp then return end -- Copy subjunctives to negative imperatives, preceded by "no". for _, persnum in ipairs(neg_imp_person_number_list) do local from = "pres_sub_" .. persnum local to = "neg_imp_" .. persnum insert_forms(base, to, iut.map_forms(base.forms[from], function(form) if base.alternant_multiword_spec.args.noautolinkverb then return "no " .. form elseif form:find("%[%[") then -- already linked, e.g. when reflexive return "[[no]] " .. form else return "[[no]] [[" .. form .. "]]" end end)) end end -- Process specs given by the user using 'addnote[SLOTSPEC][FOOTNOTE][FOOTNOTE][...]'. local function process_addnote_specs(base) for _, spec in ipairs(base.addnote_specs) do for _, slot_spec in ipairs(spec.slot_specs) do slot_spec = "^" .. slot_spec .. "$" for slot, forms in pairs(base.forms) do if rfind(slot, slot_spec) then -- To save on memory, side-effect the existing forms. for _, form in ipairs(forms) do form.footnotes = iut.combine_footnotes(form.footnotes, spec.footnotes) end end end end end end local function add_missing_links_to_forms(base) -- Any forms without links should get them now. Redundant ones will be stripped later. for slot, forms in pairs(base.forms) do for _, form in ipairs(forms) do if not form.form:find("%[%[") then form.form = "[[" .. form.form .. "]]" end end end end local function conjugate_verb(base) construct_stems(base) add_present_indic(base) add_present_subj(base) add_finite_non_present(base) add_non_finite_forms(base) fix_double_umlauts(base) -- do non-reflexive non-imperative slot overrides process_slot_overrides(base, function(slot) return not slot:find("^imp_") and not slot:find("^neg_imp_") end) -- This should happen after process_slot_overrides() in case a derived slot is based on an override -- (as with the imp_3s of [[dar]], [[estar]]). add_imperatives(base) -- do non-reflexive positive imperative slot overrides process_slot_overrides(base, function(slot) return slot:find("^imp_") end) -- We need to add joined reflexives, then joined and non-joined clitics, then non-joined reflexives, so we get -- [[arrepéndete]] but [[no]] [[te]] [[arrependas]]. if base.refl then add_reflexive_or_fixed_clitic_to_forms(base, "do reflexive", "do joined") process_slot_overrides(base, nil, "do reflexive") -- do reflexive-only slot overrides add_reflexive_or_fixed_clitic_to_forms(base, "do reflexive", false) end -- This should happen after add_reflexive_or_fixed_clitic_to_forms() so negative imperatives get the reflexive pronoun -- and clitic in them. generate_negative_imperatives(base) -- do non-reflexive negative imperative slot overrides -- FIXME: What about reflexive negative imperatives? process_slot_overrides(base, function(slot) return slot:find("^neg_imp_") end) -- This should happen before add_missing_links_to_forms() so that the comparison `form == base.lemma` -- in handle_infinitive_linked() works correctly and compares unlinked forms to unlinked forms. handle_infinitive_linked(base) process_addnote_specs(base) if not base.alternant_multiword_spec.args.noautolinkverb then add_missing_links_to_forms(base) end end local function parse_indicator_spec(angle_bracket_spec) -- Store the original angle bracket spec so we can reconstruct the overall conj spec with the lemma(s) in them. local base = { angle_bracket_spec = angle_bracket_spec, user_basic_overrides = {}, user_stems = {}, addnote_specs = {}, } local function parse_err(msg) error(msg .. ": " .. angle_bracket_spec) end local function fetch_footnotes(separated_group) local footnotes for j = 2, #separated_group - 1, 2 do if separated_group[j + 1] ~= "" then parse_err("Extraneous text after bracketed footnotes: '" .. table.concat(separated_group) .. "'") end if not footnotes then footnotes = {} end table.insert(footnotes, separated_group[j]) end return footnotes end local inside = angle_bracket_spec:match("^<(.*)>$") assert(inside) if inside == "" then return base end local segments = put.parse_balanced_segment_run(inside, "[", "]") local dot_separated_groups = put.split_alternating_runs(segments, "%.") for i, dot_separated_group in ipairs(dot_separated_groups) do local first_element = dot_separated_group[1] if first_element == "addnote" then local spec_and_footnotes = fetch_footnotes(dot_separated_group) if #spec_and_footnotes < 2 then parse_err("Spec with 'addnote' should be of the form 'addnote[SLOTSPEC][FOOTNOTE][FOOTNOTE][...]'") end local slot_spec = table.remove(spec_and_footnotes, 1) local slot_spec_inside = rmatch(slot_spec, "^%[(.*)%]$") if not slot_spec_inside then parse_err("Internal error: slot_spec " .. slot_spec .. " should be surrounded with brackets") end local slot_specs = rsplit(slot_spec_inside, ",") -- FIXME: Here, [[Module:it-verb]] called strip_spaces(). Generally we don't do this. Should we? table.insert(base.addnote_specs, {slot_specs = slot_specs, footnotes = spec_and_footnotes}) elseif indicator_flags[first_element] then if #dot_separated_group > 1 then parse_err("No footnotes allowed with '" .. first_element .. "' spec") end if base[first_element] then parse_err("Spec '" .. first_element .. "' specified twice") end base[first_element] = true elseif first_element:find("^var:") then if #dot_separated_group > 1 then parse_err(("Can't attach footnotes to 'var:' spec '%s'"):format(first_element)) end base.var = first_element:match("^var:(.*)$") elseif first_element:find(":") then local colon_separated_groups = put.split_alternating_runs(dot_separated_group, "%s*:%s*") local first_element = colon_separated_groups[1][1] if #colon_separated_groups[1] > 1 then parse_err("Can't attach footnotes directly to '" .. first_element .. "' spec; attach them to the " .. "colon-separated values following the initial colon") end if overridable_stems[first_element] then if base.user_stems[first_element] then parse_err("Overridable stem '" .. first_element .. "' specified twice") end table.remove(colon_separated_groups, 1) base.user_stems[first_element] = overridable_stems[first_element](colon_separated_groups, {prefix = first_element, base = base, parse_err = parse_err, fetch_footnotes = fetch_footnotes}) else -- assume a basic override; we validate further later when the possible slots are available if base.user_basic_overrides[first_element] then parse_err("Basic override '" .. first_element .. "' specified twice") end table.remove(colon_separated_groups, 1) base.user_basic_overrides[first_element] = allow_multiple_values_for_override(colon_separated_groups, {prefix = first_element, base = base, parse_err = parse_err, fetch_footnotes = fetch_footnotes}, "is form override") end else parse_err("Unrecognized spec '" .. first_element .. "'") end end return base end -- Normalize all lemmas, substituting the pagename for blank lemmas and adding links to multiword lemmas. local function normalize_all_lemmas(alternant_multiword_spec, head) -- (1) Add links to all before and after text. Remember the original text so we can reconstruct the verb spec later. if not alternant_multiword_spec.args.noautolinktext then iut.add_links_to_before_and_after_text(alternant_multiword_spec, "remember original") end -- (2) Remove any links from the lemma, but remember the original form so we can use it below in the 'lemma_linked' -- form. iut.map_word_specs(alternant_multiword_spec, function(base) if base.lemma == "" then base.lemma = head end base.user_specified_lemma = base.lemma base.lemma = m_links.remove_links(base.lemma) local refl_verb = base.lemma local verb, refl = rmatch(refl_verb, "^(.-)%-(se)$") if not verb then verb, refl = rmatch(refl_verb, "^(.-)('s)$") end if not verb then verb, refl = refl_verb, nil end base.user_specified_verb = verb base.refl = refl base.verb = base.user_specified_verb local linked_lemma if alternant_multiword_spec.args.noautolinkverb or base.user_specified_lemma:find("%[%[") then linked_lemma = base.user_specified_lemma elseif base.refl then -- Reconstruct the linked lemma with separate links around base verb, reflexive pronoun and clitic. linked_lemma = base.user_specified_verb == base.verb and "[[" .. base.user_specified_verb .. "]]" or "[[" .. base.verb .. "|" .. base.user_specified_verb .. "]]" linked_lemma = linked_lemma .. (refl and "-[[" .. refl .. "]]" or "") else -- Add links to the lemma so the user doesn't specifically need to, since we preserve links in multiword -- lemmas and include links in non-lemma forms rather than allowing the entire form to be a link. linked_lemma = iut.add_links(base.user_specified_lemma) end base.linked_lemma = linked_lemma end) end local function detect_indicator_spec(base) if (base.only3s and 1 or 0) + (base.only3sp and 1 or 0) + (base.only3p and 1 or 0) > 1 then error("Only one of 'only3s', 'only3sp' and 'only3p' can be specified") end base.forms = {} base.input_stems = {} base.basic_overrides = {} base.basic_reflexive_only_overrides = {} base.orig_verb = base.verb -- in case of a 'like = "..."' redirect if not base.no_built_in then local function match_built_in_spec(verb, built_in_spec) local prefix, non_prefixed_verb if type(built_in_spec.match) == "function" then prefix, non_prefixed_verb = built_in_spec.match(verb) elseif built_in_spec.match:find("^%^") and rsub(built_in_spec.match, "^%^", "") == verb then -- begins with ^, for exact match, and matches prefix, non_prefixed_verb = "", verb else prefix, non_prefixed_verb = rmatch(verb, "^(.*)(" .. built_in_spec.match .. ")$") end return prefix, non_prefixed_verb end local function find_built_in(verb, var) for _, built_in_spec in ipairs(built_in_conjugations) do local prefix, non_prefixed_verb = match_built_in_spec(verb, built_in_spec) if prefix then if not built_in_spec.var then if var then error(("Can't specify a variant spec 'var:%s' with verb '%s'"):format(var, verb)) end return prefix, non_prefixed_verb, built_in_spec elseif not var then local possible_vars = {} for _, built_in_spec in ipairs(built_in_conjugations) do local prefix, non_prefixed_verb = match_built_in_spec(verb, built_in_spec) if prefix then table.insert(possible_vars, built_in_spec.var) end end error(("For verb '%s', must specify a variant using 'var:...'; possible values are %s"):format( verb, table.concat(possible_vars, ", "))) elseif built_in_spec.var == var then return prefix, non_prefixed_verb, built_in_spec end end end return nil end local prefix, non_prefixed_verb, built_in_spec = find_built_in(base.verb, base.var) if prefix then -- we found a built-in verb if built_in_spec.like then -- we found a redirect to another verb that has the same conjugation, just a different infinitive base.verb = prefix .. built_in_spec.like local new_prefix, new_non_prefixed_verb, new_built_in_spec = find_built_in(base.verb, built_in_spec.likevar) if new_prefix then -- redirected to another built-in verb base.prefix = new_prefix base.non_prefixed_verb = new_non_prefixed_verb built_in_spec = new_built_in_spec else built_in_spec = nil end else base.prefix = prefix base.non_prefixed_verb = non_prefixed_verb end end if built_in_spec then -- we found a built-in verb, possibly redirecting to another built-in verb for stem, forms in pairs(built_in_spec.forms) do if type(forms) == "function" then forms = forms(base, base.prefix) end if stem:find("^refl_") then stem = stem:gsub("^refl_", "") if not base.alternant_multiword_spec.verb_slots_basic_map[stem] then error("Internal error: setting for 'refl_" .. stem .. "' does not refer to a basic verb slot") end base.basic_reflexive_only_overrides[stem] = forms elseif base.alternant_multiword_spec.verb_slots_basic_map[stem] then -- an individual form override of a basic form base.basic_overrides[stem] = forms else base.input_stems[stem] = forms end end end end -- Override built-in-verb stems and overrides with user-specified ones. for stem, values in pairs(base.user_stems) do base.input_stems[stem] = values end for override, values in pairs(base.user_basic_overrides) do if not base.alternant_multiword_spec.verb_slots_basic_map[override] then error("Unrecognized override '" .. override .. "': " .. base.angle_bracket_spec) end base.basic_overrides[override] = values end base.prefix = base.prefix or "" base.non_prefixed_verb = base.non_prefixed_verb or base.verb local inf_stem, suffix = rmatch(base.non_prefixed_verb, "^(.*)(re)$") if not inf_stem then inf_stem, suffix = rmatch(base.non_prefixed_verb, "^(.*)([aeiu]r)$") end if not inf_stem then error("Unrecognized infinitive: " .. base.verb) end -- Remove accents from e.g. [[parèixer]], [[córrer]]. inf_stem = com.remove_accents(inf_stem) -- Save full infinitive stem for use in future and conditional. base.inf_stem = (inf_stem .. suffix):gsub("e$", "") local stem = inf_stem if suffix == "re" then -- verbs in -ldre, -ndre have stem without the d stem = stem:gsub("([ln])d$", "%1") elseif suffix == "ur" then stem = stem .. "u" end base.conj_vowel = (suffix == "re" or suffix == "ur") and "e" or suffix:gsub("r$", "") -- If the stem is followed by a front vowel, convert it to its "back" form before calling combine_stem_ending(), -- which expects the "back" form of the stem and may convert it back to the "front" form. Don't do this conversion -- for ï so we leave [[arguïr]] (underlyingly 'argüïr') as 'argu' ("back" form), which becomes 'argü' ("front" form) -- before front vowel ï and we end up with base.stem containing the underlying form 'argüï'. We remove the first of -- two umlauts in a row in a postprocessing step (fix_double_umlauts()). if rfind(suffix, "^[ei]") then stem = com.front_to_back(stem) end -- Use combine_stem_ending() so we get ï if necessary. base.stem = combine_stem_ending(base, stem, base.conj_vowel, false, "dont include prefix") -- Propagate built-in-verb indicator flags to `base` and combine with user-specified flags. for indicator_flag, _ in pairs(indicator_flags) do base[indicator_flag] = base[indicator_flag] or base.input_stems[indicator_flag] end end local function detect_all_indicator_specs(alternant_multiword_spec) -- Propagate some settings up; some are used internally, others by [[Module:pt-headword]]. iut.map_word_specs(alternant_multiword_spec, function(base) -- Internal indicator flags. Do these before calling detect_indicator_spec() because add_slots() uses them. for _, prop in ipairs { "refl", "clitic" } do if base[prop] then alternant_multiword_spec[prop] = true end end base.alternant_multiword_spec = alternant_multiword_spec end) add_slots(alternant_multiword_spec) iut.map_word_specs(alternant_multiword_spec, function(base) detect_indicator_spec(base) -- User-specified indicator flags. Do these after calling detect_indicator_spec() because the latter may set these -- indicators for built-in verbs. for prop, _ in pairs(indicator_flags) do if base[prop] then alternant_multiword_spec[prop] = true end end end) end local function add_categories_and_annotation(alternant_multiword_spec, base, multiword_lemma) local function insert_ann(anntype, value) m_table.insertIfNot(alternant_multiword_spec.annotation[anntype], value) end local function insert_cat(cat, also_when_multiword) -- Don't place multiword terms in categories like 'Catalan verbs ending in -ar' to avoid spamming the -- categories with such terms. if also_when_multiword or not multiword_lemma then m_table.insertIfNot(alternant_multiword_spec.categories, "カタルーニャ語 " .. cat) end end if check_for_red_links and alternant_multiword_spec.source_template == "ca-conj" and multiword_lemma then for _, slot_and_accel in ipairs(alternant_multiword_spec.all_verb_slots) do local slot = slot_and_accel[1] local forms = base.forms[slot] local must_break = false if forms then for _, form in ipairs(forms) do if not form.form:find("%[%[") then local title = mw.title.new(form.form) if title and not title.exists then insert_cat("活用表に赤リンクを含む動詞") must_break = true break end end end end if must_break then break end end end map_general(base.output_stems.stem, function(stem) local stem_base, conj_vowel = split_conj_vowel(stem) local need_no_eix_infix = true if conj_vowel ~= base.conj_vowel then insert_ann("conj", "[[付録:カタルーニャ語の動詞#不規則動詞|混合活用]]") elseif conj_vowel == "a" then insert_ann("conj", "[[付録:カタルーニャ語の動詞#第一変化動詞|第一変化]]") insert_cat("第一変化動詞") elseif conj_vowel == "e" then insert_ann("conj", "[[付録:カタルーニャ語の動詞#第二変化動詞|第二変化]]") insert_cat("第二変化動詞") elseif conj_vowel == "i" then insert_ann("conj", "[[付録:カタルーニャ語の動詞#第三変化動詞|第三変化]]") insert_cat("第三変化動詞") need_no_eix_infix = false map_general(base.output_stems.eix_infix, function(form) if form == "+" then insert_ann("eix_infix", "接中辞-eix-有り") insert_cat("-eix-を含む第三変化動詞") elseif form == "-" then insert_ann("eix_infix", "接中辞-eix-無し") insert_cat("-eix-を含まない第三変化動詞") end end) else error(("Internal error: Stem '%s' doesn't end in conjugation vowel a/e/i and split_conj_vowel() didn't catch it" ):format(stem)) end if need_no_eix_infix then insert_ann("eix_infix", "接中辞無し") end end) if base.input_stems.g_infix then insert_ann("g_infix", "軟口蓋接中辞有り") insert_cat("軟口蓋接中辞を含む動詞") else insert_ann("g_infix", "接中辞無し") end if base.output_stems.irreg then insert_ann("irreg", "不規則") insert_cat("不規則動詞") else insert_ann("irreg", "規則") end if base.only3s then insert_ann("defective", "非人称") insert_cat("非人称動詞") elseif base.only3sp then insert_ann("defective", "第三人称のみ") insert_cat("第三人称動詞") elseif base.only3p then insert_ann("defective", "第三人称複数のみ") insert_cat("第三人称複数動詞") elseif base.no_pres_stressed then insert_ann("defective", "欠如") insert_cat("欠如動詞") else insert_ann("defective", "規則") end --if base.clitic then -- insert_cat("verbs with lexical clitics") --end if base.refl then insert_cat("再帰動詞") end local stem_base, conj_vowel = split_conj_vowel(base.stem) local cons_alt if conj_vowel == "i" and base.output_stems.eix_infix == "+" then -- no alternations in verbs like [[afligir]] because all endings are front elseif stem_base:find("ç$") then cons_alt = "ç-c" elseif stem_base:find("c$") then cons_alt = "c-qu" elseif stem_base:find("g$") then cons_alt = "g-gu" elseif stem_base:find("gu$") then cons_alt = "gu-gü" elseif stem_base:find("j$") then cons_alt = "j-g" elseif stem_base:find("qu$") then cons_alt = "qu-qü" end if cons_alt then local desc = cons_alt .. " alternation" insert_ann("cons_alt", desc) insert_cat(desc .. "交替の動詞") else insert_ann("cons_alt", "non-alternating") end end -- Compute the categories to add the verb to, as well as the annotation to display in the -- conjugation title bar. We combine the code to do these functions as both categories and -- title bar contain similar information. local function compute_categories_and_annotation(alternant_multiword_spec) alternant_multiword_spec.categories = {} local ann = {} alternant_multiword_spec.annotation = ann ann.conj = {} ann.g_infix = {} ann.eix_infix = {} ann.irreg = {} ann.defective = {} ann.cons_alt = {} local multiword_lemma = false for _, form in ipairs(alternant_multiword_spec.forms.infinitive) do if form.form:find(" ") then multiword_lemma = true break end end iut.map_word_specs(alternant_multiword_spec, function(base) add_categories_and_annotation(alternant_multiword_spec, base, multiword_lemma) end) local ann_parts = {} local conj = table.concat(ann.conj, " or ") if conj ~= "" then table.insert(ann_parts, conj) end local eix_infix = table.concat(ann.eix_infix, " or ") if eix_infix ~= "" and eix_infix ~= "no infix" then table.insert(ann_parts, eix_infix) end local irreg = table.concat(ann.irreg, " or ") if irreg ~= "" and irreg ~= "regular" then table.insert(ann_parts, irreg) end local g_infix = table.concat(ann.g_infix, " or ") if g_infix ~= "" and g_infix ~= "no infix" then table.insert(ann_parts, g_infix) end local defective = table.concat(ann.defective, " or ") if defective ~= "" and defective ~= "regular" then table.insert(ann_parts, defective) end local cons_alt = table.concat(ann.cons_alt, " or ") if cons_alt ~= "" and cons_alt ~= "non-alternating" then table.insert(ann_parts, cons_alt) end alternant_multiword_spec.annotation = table.concat(ann_parts, ", ") end local function show_forms(alternant_multiword_spec) local lemmas = alternant_multiword_spec.forms.infinitive alternant_multiword_spec.lemmas = lemmas -- save for later use in make_table() local reconstructed_verb_spec = iut.reconstruct_original_spec(alternant_multiword_spec) local function transform_accel_obj(slot, formobj, accel_obj) -- No accelerators for negative imperatives, which are always multiword and derived directly from the -- present subjunctive. if slot:find("^neg_imp") then return nil end if accel_obj then accel_obj.form = "verb-form-" .. reconstructed_verb_spec end return accel_obj end local props = { lang = lang, lemmas = lemmas, transform_accel_obj = transform_accel_obj, slot_list = alternant_multiword_spec.verb_slots_basic, } iut.show_forms(alternant_multiword_spec.forms, props) alternant_multiword_spec.footnote_basic = alternant_multiword_spec.forms.footnote end local notes_template = [=[ <div class="roa-footnote-outer-div" style="width:100%;"> <div class="roa-footnote-inner-div"> {footnote} </div></div> ]=] local basic_table = [=[ {description}<div class="NavFrame"> <div class="NavHead">&nbsp; &nbsp; Central Catalan conjugation of {title}</div> <div class="NavContent"> {\op}| class="roa-inflection-table" data-toggle-category="inflection" |- ! colspan="3" class="roa-nonfinite-header" | <span title="infinitiu">infinitive</span> | colspan="5" | {infinitive} |- ! colspan="3" class="roa-nonfinite-header" | <span title="gerundi">gerund</span> | colspan="5" | {gerund} |- ! rowspan="3" colspan="2" class="roa-nonfinite-header" | <span title="participi passat">past participle</span> | colspan="2" class="roa-nonfinite-header" | ! colspan="2" class="roa-nonfinite-header" | 男性 ! colspan="2" class="roa-nonfinite-header" | 女性 |- ! colspan="2" class="roa-nonfinite-header" | 単数 | colspan="2" | {pp_ms} | colspan="2" | {pp_fs} |- ! colspan="2" class="roa-nonfinite-header" | 複数 | colspan="2" | {pp_mp} | colspan="2" | {pp_fp} |- ! colspan="2" rowspan="2" class="roa-person-number-header" | person ! colspan="3" class="roa-person-number-header" | 単数 ! colspan="3" class="roa-person-number-header" | 複数 |- ! class="roa-person-number-header" style="width:12.5%;" | 第一人称 ! class="roa-person-number-header" style="width:12.5%;" | 第二人称 ! class="roa-person-number-header" style="width:12.5%;" | 第三人称 ! class="roa-person-number-header" style="width:12.5%;" | 第一人称 ! class="roa-person-number-header" style="width:12.5%;" | 第二人称 ! class="roa-person-number-header" style="width:12.5%;" | 第三人称 |- ! rowspan="6" class="roa-indicative-left-rail" | <span title="indicatiu">直説法</span> ! class="roa-indicative-left-rail" | ! class="roa-indicative-left-rail" | <<jo>> ! class="roa-indicative-left-rail" | <<tu>> ! class="roa-indicative-left-rail" | <<ell>>/<<ella>><br /><<vostè>> ! class="roa-indicative-left-rail" | <<nosaltres>><br /><<nós>> ! class="roa-indicative-left-rail" | <<vosaltres>><br /><<vós>> ! class="roa-indicative-left-rail" | <<ells>>/<<elles>><br /><<vostès>> |- ! class="roa-indicative-left-rail" style="height:3em;" | <span title="present">現在</span> | {pres_1s} | {pres_2s} | {pres_3s} | {pres_1p} | {pres_2p} | {pres_3p} |- ! class="roa-indicative-left-rail" style="height:3em;" | <span title="imperfet">不完了過去</span> | {impf_1s} | {impf_2s} | {impf_3s} | {impf_1p} | {impf_2p} | {impf_3p} |- ! class="roa-indicative-left-rail" style="height:3em;" | <span title="futur">未来</span> | {fut_1s} | {fut_2s} | {fut_3s} | {fut_1p} | {fut_2p} | {fut_3p} |- ! class="roa-indicative-left-rail" style="height:3em;" | <span title="passat">完了過去</span> | {pret_1s} | {pret_2s} | {pret_3s} | {pret_1p} | {pret_2p} | {pret_3p} |- ! class="roa-indicative-left-rail" style="height:3em;" | <span title="condicional">可能法</span> | {cond_1s} | {cond_2s} | {cond_3s} | {cond_1p} | {cond_2p} | {cond_3p} |- ! class="roa-subjunctive-left-rail" rowspan="3" | <span title="subjuntiu">接続法</span> ! class="roa-subjunctive-left-rail" | ! class="roa-subjunctive-left-rail" | <<jo>> ! class="roa-subjunctive-left-rail" | <<tu>> ! class="roa-subjunctive-left-rail" | <<ell>>/<<ella>><br /><<vostè>> ! class="roa-subjunctive-left-rail" | <<nosaltres>><br /><<nós>> ! class="roa-subjunctive-left-rail" | <<vosaltres>><br /><<vós>> ! class="roa-subjunctive-left-rail" | <<ells>>/<<elles>><br /><<vostès>> |- ! class="roa-subjunctive-left-rail" style="height:3em;" | <span title="present">現在</span> | {pres_sub_1s} | {pres_sub_2s} | {pres_sub_3s} | {pres_sub_1p} | {pres_sub_2p} | {pres_sub_3p} |- ! class="roa-subjunctive-left-rail" style="height:3em;" rowspan="1" | <span title="imperfet">過去</span> | {impf_sub_1s} | {impf_sub_2s} | {impf_sub_3s} | {impf_sub_1p} | {impf_sub_2p} | {impf_sub_3p} |- ! rowspan="3" class="roa-imperative-left-rail" style="height:3em;" | <span title="imperatiu">命令法</span> ! class="roa-imperative-left-rail" | ! class="roa-imperative-left-rail" | &mdash; ! class="roa-imperative-left-rail" | <<tu>> ! class="roa-imperative-left-rail" | <<vostè>> ! class="roa-imperative-left-rail" | <<nosaltres>> ! class="roa-imperative-left-rail" | <<vosaltres>><br /><<vós>> ! class="roa-imperative-left-rail" | <<vostès>> |- ! class="roa-imperative-left-rail" style="height:3em;" | <span title="afirmatiu">-</span> | &mdash; | {imp_2s} | {imp_3s} | {imp_1p} | {imp_2p} | {imp_3p} |- ! class="roa-imperative-left-rail" style="height:3em;" | <span title="negatiu">禁止</span> (<<no>>) | &mdash; | {neg_imp_2s} | {neg_imp_3s} | {neg_imp_1p} | {neg_imp_2p} | {neg_imp_3p} |{\cl}{notes_clause}</div></div>]=] local function make_table(alternant_multiword_spec) local forms = alternant_multiword_spec.forms forms.title = link_term(alternant_multiword_spec.lemmas[1].form, nil, "term") local ann_parts = {} if alternant_multiword_spec.annotation ~= "" then table.insert(ann_parts, alternant_multiword_spec.annotation) end if alternant_multiword_spec.args.titlenote then table.insert(ann_parts, alternant_multiword_spec.args.titlenote) end local annotation = table.concat(ann_parts, ", ") if annotation ~= "" then forms.title = forms.title .. " (" .. annotation .. ")" end forms.description = "" -- Format the table. forms.footnote = alternant_multiword_spec.footnote_basic forms.notes_clause = forms.footnote ~= "" and m_string_utilities.format(notes_template, forms) or "" local table_with_pronouns = rsub(basic_table, "<<([^<>|]-)|([^<>|]-)>>", link_term) local table_with_pronouns = rsub(table_with_pronouns, "<<(.-)>>", link_term) return require("Module:TemplateStyles")("Module:roa-verb/style.css") .. m_string_utilities.format(table_with_pronouns, forms) end -- Externally callable function to parse and conjugate a verb given user-specified arguments. -- Return value is WORD_SPEC, an object where the conjugated forms are in `WORD_SPEC.forms` -- for each slot. If there are no values for a slot, the slot key will be missing. The value -- for a given slot is a list of objects {form=FORM, footnotes=FOOTNOTES}. function export.do_generate_forms(args, source_template, headword_head) local PAGENAME = mw.loadData("Module:headword/data").pagename local function in_template_space() return mw.title.getCurrentTitle().nsText == "テンプレート" end -- Determine the verb spec we're being asked to generate the conjugation of. This may be taken from the -- current page title or the value of |pagename=; but not when called from {{ca-verb form of}}, where the -- page title is a non-lemma form. Note that the verb spec may omit the infinitive; e.g. it may be "<i-e>". -- For this reason, we use the value of `pagename` computed here down below, when calling normalize_all_lemmas(). local pagename = source_template ~= "ca-verb form of" and args.pagename or PAGENAME local head = headword_head or pagename local arg1 = args[1] if not arg1 then if (pagename == "ca-conj" or pagename == "ca-verb" or pagename == "ca-verb form of") and in_template_space() then arg1 = "amar<>" else arg1 = "<>" end end -- When called from {{ca-verb form of}}, determine the non-lemma form whose inflections we're being asked to -- determine. This normally comes from the page title or the value of |pagename=. local verb_form_of_form if source_template == "ca-verb form of" then verb_form_of_form = args.pagename if not verb_form_of_form then if PAGENAME == "ca-verb form of" and in_template_space() then verb_form_of_form = "ami" else verb_form_of_form = PAGENAME end end end local incorporated_headword_head_into_lemma = false if arg1:find("^<.*>$") then -- missing lemma if head:find(" ") then -- If multiword lemma, try to add arg spec after the first word. -- Try to preserve the brackets in the part after the verb, but don't do it -- if there aren't the same number of left and right brackets in the verb -- (which means the verb was linked as part of a larger expression). local refl_clitic_verb, post = rmatch(head, "^(.-)( .*)$") local left_brackets = rsub(refl_clitic_verb, "[^%[]", "") local right_brackets = rsub(refl_clitic_verb, "[^%]]", "") if #left_brackets == #right_brackets then arg1 = iut.remove_redundant_links(refl_clitic_verb) .. arg1 .. post incorporated_headword_head_into_lemma = true else -- Try again using the form without links. local linkless_head = m_links.remove_links(head) if linkless_head:find(" ") then refl_clitic_verb, post = rmatch(linkless_head, "^(.-)( .*)$") arg1 = refl_clitic_verb .. arg1 .. post else error("Unable to incorporate <...> spec into explicit head due to a multiword linked verb or " .. "unbalanced brackets; please include <> explicitly: " .. arg1) end end else -- Will be incorporated through `head` below in the call to normalize_all_lemmas(). incorporated_headword_head_into_lemma = true end end local function split_bracketed_runs_into_words(bracketed_runs) return put.split_alternating_runs(bracketed_runs, " ", "preserve splitchar") end local parse_props = { parse_indicator_spec = parse_indicator_spec, -- Split words only on spaces, not on hyphens, because that messes up reflexive verb parsing. split_bracketed_runs_into_words = split_bracketed_runs_into_words, allow_default_indicator = true, allow_blank_lemma = true, } local alternant_multiword_spec = iut.parse_inflected_text(arg1, parse_props) alternant_multiword_spec.pos = pos or "verbs" alternant_multiword_spec.args = args alternant_multiword_spec.source_template = source_template alternant_multiword_spec.verb_form_of_form = verb_form_of_form alternant_multiword_spec.incorporated_headword_head_into_lemma = incorporated_headword_head_into_lemma normalize_all_lemmas(alternant_multiword_spec, head) detect_all_indicator_specs(alternant_multiword_spec) local inflect_props = { slot_list = alternant_multiword_spec.all_verb_slots, inflect_word_spec = conjugate_verb, -- We add links around the generated verbal forms rather than allow the entire multiword -- expression to be a link, so ensure that user-specified links get included as well. include_user_specified_links = true, } iut.inflect_multiword_or_alternant_multiword_spec(alternant_multiword_spec, inflect_props) -- Remove redundant brackets around entire forms. for slot, forms in pairs(alternant_multiword_spec.forms) do for _, form in ipairs(forms) do form.form = iut.remove_redundant_links(form.form) end end compute_categories_and_annotation(alternant_multiword_spec) if args.json and source_template == "ca-conj" then return require("Module:JSON").toJSON(alternant_multiword_spec.forms) end return alternant_multiword_spec end -- Entry point for {{ca-conj}}. Template-callable function to parse and conjugate a verb given -- user-specified arguments and generate a displayable table of the conjugated forms. function export.show(frame) local parent_args = frame:getParent().args local params = { [1] = {}, ["titlenote"] = {}, ["noautolinktext"] = {type = "boolean"}, ["noautolinkverb"] = {type = "boolean"}, ["pagename"] = {}, -- for testing/documentation pages ["json"] = {type = "boolean"}, -- for bot use } local args = require("Module:parameters").process(parent_args, params) local alternant_multiword_spec = export.do_generate_forms(args, "ca-conj") if type(alternant_multiword_spec) == "string" then -- JSON return value return alternant_multiword_spec end show_forms(alternant_multiword_spec) return make_table(alternant_multiword_spec) .. require("Module:utilities").format_categories(alternant_multiword_spec.categories, lang, nil, nil, force_cat) end return export d0xf7r28hku8j8avdtwml2ofc5zf8ie 2313409 2313408 2026-08-09T09:27:53Z Kuroco2k 84207 2313409 Scribunto text/plain --[=[ This module implements {{ca-conj}} and provides the underlying conjugation functions for {{ca-verb}} (whose actual formatting is done in [[Module:ca-headword]]). Authorship: Ben Wing <benwing2> ]=] local export = {} --[=[ TERMINOLOGY: -- "slot" = A particular combination of tense/mood/person/number/etc. Example slot names for verbs are "pres_1s" (present indicative first-person singular), "pres_sub_2s" (present subjunctive second-person singular) "impf_sub_3p" (imperfect subjunctive third-person plural). Each slot is filled with zero or more forms. -- "form" = The conjugated Catalan form representing the value of a given slot. -- "lemma" = The dictionary form of a given Catalan term. For Catalan, always the infinitive. ]=] --[=[ FIXME: --]=] local lang = require("Module:languages").getByCode("ca") local m_string_utilities = require("Module:string utilities") local m_links = require("Module:links") local m_table = require("Module:table") local iut = require("Module:inflection utilities") local put = require("Module:parse utilities") local com = require("Module:ca-common") local force_cat = false -- set to true for debugging local check_for_red_links = false -- set to false for debugging local rfind = mw.ustring.find local rmatch = mw.ustring.match local rsplit = mw.text.split local rsubn = mw.ustring.gsub local rsub = com.rsub local u = mw.ustring.char local unpack = unpack or table.unpack -- Lua 5.2 compatibility -- version of rsubn() that returns a 2nd argument boolean indicating whether a substitution was made. local function rsubb(term, foo, bar) local retval, nsubs = rsubn(term, foo, bar) return retval, nsubs > 0 end local function link_term(term, display, face) return m_links.full_link({ lang = lang, term = term, alt = display }, face) end local front_vowel = "eèéiíï" local front_vowel_c = "[" .. front_vowel .. "]" local V = com.V -- vowel regex class local C = com.C -- consonant regex class -- IS_USER_STEM_OVERRIDE is prepended to user-supplied stem overrides to prevent `base.prefix` from being prepended. -- IS_USER_FORM_OVERRIDE is similar but also prevents final devoicing (cf. Balearic pres_1s 'trob' of [[trobar]]). -- Don't use 0xFFF0 in case we call a [[Module:parse-utilities]] function that uses it temporarily. local IS_USER_STEM_OVERRIDE = u(0xFFF1) local IS_USER_FORM_OVERRIDE = u(0xFFF2) --[=[ Irregular verbs: -ldre/-ndre verbs: infinitive pres1s pres3s pres1p impf1s fut1s pret1s sub1s sub1p pp caldre - cal [calent] calia caldrà calgué calgui - calgut,- coldre colc col colem colia coldré colguí colgui colguem colt,colta doldre dolc dol dolem dolia doldré dolguí dolgui dolguem dolgut,dolguda moldre molc mol molem molia moldré molguí molgui molguem molt,molta oldre olc ol olem olia oldré olguí olgui olguem olgut,olguda -soldre -solc -sol -solem -solia -soldré -solguí -solgui -solguem -solt,-solta (absoldre, dissoldre, resoldre) toldre tolc tol tolem tolia toldré tolguí tolgui tolguem tolt,tolta romandre romanc roman romanem romania romandré romanguí romangui romanguem romàs,romasa,romasos encendre encenc encén encenem encenia encendré encenguí encengui encenguem encès,encesa,encesos fendre fenc fen/-fèn fenem fenia fendré fenguí fengui fenguem fes/-fès,fesa,fesos (defendre, ofendre) -pendre -depenc -pèn -penem -penia -pendré -penguí -pengui -penguem -pès,-pesa,-pesos (dependre,despendre,expendre,suspendre) prendre prenc pren/-prèn prenem prenia prendré prenguí prengui prenguem pres/-près,presa,presos (aprendre, comprendre, desprendre, emprendre, reprendre, sorprendre) -tendre -tenc -tén -tenem -tenia -tendré -tenguí -tengui -tenguem -tès,-tesa,-tesos (pres2s: atens, pres3p: atenen) (atendre, contendre, distendre, entendre, estendre, pretendre) vendre venc ven venem venia vendré venguí vengui venguem venut,venuda (malvendre, revendre) fondre fonc fon fonem fonia fondré fonguí fongui fonguem fos/-fós,fosa,fosos (confondre, difondre, infondre, refondre) enfondre enfonc enfon enfonem enfonia enfondré enfonguí enfongui enfonguem enfús,enfusa,enfusos pondre ponc pon ponem ponia pondré ponguí pongui ponguem post,posta,postos (compondre, correspondre, descompondre, respondre) tondre tonc ton tonem tonia tondré tonguí tongui tonguem tos,tosa,tosos cerndre cerno cern cernem cernia cerndré cerní cerni cernem cernut,cernuda -ler verbs (mostly like -ldre verbs): infinitive pres1s pres3s pres1p impf1s fut1s pret1s sub1s sub1p pp caler (var. of caldre) doler (var. of doldre) soler solc sol solem solia soldré solguí solgui solguem solgut,solguda valer/valdre valc val valem valia valdré valguí valgui valguem valgut,valguda (prevaler, equivaler) other -dre/-tre verbs (regular except sometimes pp): infinitive pres1s pres3s pres1p impf1s fut1s pret1s sub1s sub1p pp batre bato bat batem batia batré batí bati batem batut,batuda -metre -meto -met -metem -metia -metré -metí -meti -metem -mès,-mesa,-mesos (ad-, co-, compro-, e-, entremetre's, mal-, o-, per-, pro-, read-, re-, retrans-, sot-, tra-, trans-) perdre perdo perd perdem perdia perdré perdí perdi perdem perdut,perduda -ure verbs infinitive pres1s pres3s pres1p impf1s impf1p fut1s pret1s sub1s sub1p pp caure caic cau caiem queia quèiem cauré caiguí caigui caiguem caigut,caiguda (decaure, recaure) plaure plac plau plaem plaïa plaíem plauré plaguí plagui plaguem plagut,plaguda (complaure) raure rac rau raem raïa raíem rauré raguí ragui raguem ragut,raguda beure bec beu bevem bevia bevíem beuré beguí begui beguem begut,beguda (embeure) creure crec creu creiem creia crèiem creuré creguí cregui creguem cregut,creguda deure dec deu devem devia devíem deuré deguí degui deguem degut,deguda jeure jec jeu jaiem jeia jèiem jauré jaguí jegui jaguem jagut,jaguda (ajeure) lleure - lleu [-] llevia - lleurà llegué llegui - llegut,- seure sec seu seiem seia sèiem seuré seguí segui seguem segut,seguda (asseure) treure trec treu traiem treia trèiem trauré traguí tregui traguem tret,treta (abstreure, atreure, contreure, distreure, extreure, retreure, sostreure) veure veig veu veiem veia vèiem veuré viu,veieres/veres, vegi vegem vist,vista,vists/vistos (entreveure, preveure, reveure) veié/veu,veiérem/vérem riure ric riu riem reia rèiem riuré riguí rigui riguem rigut,riguda (somriure) (e)scriure escric escriu escrivim escrivia escrivíem escriuré escriví/escriguí escrigui escriguem escrit,escrita (circumscriure, descriure, inscriure, prescriure, proscriure, subscriure, transcriure) viure visc viu vivim vivia vivíem viuré visquí visqui visquem viscut,viscuda (conviure, sobreviure) cloure cloc clou cloem cloïa cloíem clouré cloguí clogui cloguem clos,closa,closos (concloure, descloure, encloure, excloure, incloure, recloure) encloure encloc enclou encloem encloïa encloíem enclouré encloguí enclogui encloguem enclòs,enclosa,enclosos coure coc cou coem coïa coíem couré coguí cogui coguem cuit/cogut,cuita/coguda moure moc mou movem movia movíem mouré moguí mogui moguem mogut,moguda (promoure) noure noc nou noem noïa noíem nouré noguí nogui noguem nogut,noguda ploure - plou [plovent] plovia - plourà plogué plogui - plogut,ploguda -nyer verbs (regular except pp) infinitive pres1s pres3s pres1p impf1s fut1s pret1s sub1s sub1p pp atènyer atenyo ateny atenyem atenyia atenyeré atenyí atenyi atenyem atès,atesa,atesos empènyer empenyo empeny empenyem empenyia empenyeré empenyí empenyi empenyem empès,empesa,empesos estrènyer estrenyo estreny estrenyem estrenyia estrenyeré estrenyí estrenyi estrenyem estret,estreta estrènyer (constrènyer,restrènyer) fènyer fenyo feny fenyem fenyia fenyeré fenyí/fenguí fenyi fenyem fenyut/fengut,fenyuda/fenguda pertànyer pertanyo pertany pertanyem pertanyia pertanyeré pertanyí/pertanguí pertanyi pertanyem pertanyut/pertangut,pertanyuda/pertanguda plànyer planyo plany planyem planyia planyeré planyí/planguí planyi planyem plangut/planyut,planguda/planyuda -xer verbs (NOTE: pres2s in -xes) infinitive pres1s pres3s pres1p impf1s fut1s pret1s sub1s sub1p pp créixer creixo creix creixem creixia creixeré creixí/cresquí creixi creixem crescut,crescuda (acréixer,decréixer) conèixer conec coneix coneixem coneixia coneixeré coneguí conegui coneguem conegut,coneguda (desconèixer,reconèixer) merèixer mereixo mereix mereixem mereixia mereixeré mereixí/meresquí mereixi mereixem merescut,merescuda néixer/ neixo/ neix/ naixem naixia naixeré naixí/nasquí neixi/ naixem/nasquem nascut,nascuda nàixer naixo naix naixi (renéixer) parèixer parec pareix pareixem pareixia pareixeré pareguí paregui pareguem paregut,pareguda (aparèixer,comparèixer,desaparèixer,reaparèixer) péixer peixo peix paixem paixia paixeré paixí peixi paixem pascut,pascuda misc. -er verbs infinitive pres1s pres3s pres1p impf1s impf1p fut1s pret1s sub1s sub1p pp córrer corro corre correm corria corríem correré correguí corri correm corregut,correguda fúmer fumo fum fumem fumia fumíem fumeré fumí fumi fumem fumut,fumuda prémer premo prem premem premia premíem premeré premí premi premem premut,premuda (es-, re-) témer temo tem temem temia temíem temeré temí temi temem temut,temuda trémer [regular] tòrcer torço torç torcem torcia torcíem torceré torcí torci torcem torçut,torçuda (des-) [pres2s torces] vèncer venço venç vencem vencia vencíem venceré vencí venci vencem vençut,vençuda (con-, re-) [pres2s vences] cabre/caber cabo cap cabem cabia cabíem cabré cabí càpiga capiguem cabut,cabuda [sub2s càpigues] haver he/haig ha havem/hem havia havíem hauré haguí hagi hàgim/haguem hagut,haguda [noimp] [cond1s hauria/haguera; impsub2s haguessis/haguesses] poder puc pot podem podia podíem podré poguí pugui puguem pogut,poguda saber sé sap sabem sabia sabíem sabré sabí sàpiga sapiguem sabut,sabuda [imp2s sàpigues, imp2p sapigueu] voler vull vol volem volia volíem voldré volguí vulgui vulguem volgut,volguda ser/ésser soc és som era érem seré fui sigui siguem estat/sigut,estada/siguda [ger sent/essent] [cond1s seria/fora] [pres: soc,ets,éts,som,sou,són; pret: fui,fores,fou,fórem,fóreu,foren; impsub: fos,fossis,fos,fóssim,fóssiu,fossin] [imp: sigues,sigueu] fer faig fa fem feia fèiem faré fiu faci fem fet,feta [pres3p fan] [pret: fiu,feres,feu,férem,féreu,feren] ]=] local all_persons_numbers = { ["1s"] = "1|s", ["2s"] = "2|s", ["3s"] = "3|s", ["1p"] = "1|p", ["2p"] = "2|p", ["3p"] = "3|p", } local person_number_list = {"1s", "2s", "3s", "1p", "2p", "3p"} local imp_person_number_list = {"2s", "3s", "1p", "2p", "3p"} local neg_imp_person_number_list = {"2s", "3s", "1p", "2p", "3p"} proclitic_non_elided_person_number_to_reflexive_pronoun = { ["1s"] = "em ", ["2s"] = "et ", ["3s"] = "es ", ["1p"] = "ens ", ["2p"] = "us ", ["3p"] = "es ", } proclitic_elided_person_number_to_reflexive_pronoun = { ["1s"] = "m'", ["2s"] = "t'", ["3s"] = "s'", ["1p"] = "ens ", ["2p"] = "us ", ["3p"] = "s'", } enclitic_non_elided_person_number_to_reflexive_pronoun = { ["1s"] = "-me", ["2s"] = "-te", ["3s"] = "-se", ["1p"] = "-nos", ["2p"] = "-vos", ["3p"] = "-se", } enclitic_elided_person_number_to_reflexive_pronoun = { ["1s"] = "'m", ["2s"] = "'t", ["3s"] = "'s", ["1p"] = "'ns", ["2p"] = "-us", ["3p"] = "'s", } local indicator_flags = m_table.listToSet { "no_pres_stressed", "only3s", "only3sp", "only3p", "noimp", "pp_inv", "irreg", "no_built_in", } -- Initialize all the slots for which we generate forms. local function add_slots(alternant_multiword_spec) -- "Basic" slots: All slots that go into the regular table (not the reflexive form-of table). alternant_multiword_spec.verb_slots_basic = { {"infinitive", "inf"}, {"infinitive_linked", "inf"}, {"gerund", "ger"}, {"pp_ms", "m|s|past|part"}, {"pp_fs", "f|s|past|part"}, {"pp_mp", "m|p|past|part"}, {"pp_fp", "f|p|past|part"}, } -- Special slots used to handle non-reflexive parts of reflexive verbs in {{ca-verb form of}}. For example, for a -- reflexive-only verb like [[arrepentirse]], we want to be able to use {{ca-verb form of}} on [[arrepinta]] (which -- should mention that it is a part of 'me arrepinta', first-person singular present subjunctive, and -- 'se arrepinta', third-person singular present subjunctive) or on [[arrepentimos]] (which should mention that it -- is a part of 'arrepentímonos', first-person plural present indicative or preterite). Similarly, we want to use -- {{ca-verb form of}} on [[arrepentindo]] (which should mention that it is a part of 'se ... arrepentindo', -- syntactic variant of [[arrepentíndose]], which is the gerund of [[arrepentirse]]). To do this, we need to be -- able to map non-reflexive parts like [[arrepinta]], [[arrepentimos]], [[arrepentindo]], etc. to their reflexive -- equivalent(s), to the tag(s) of the equivalent(s), and, in the case of forms like [[arrepentindo]], -- [[arrepentir]] and imperatives, to the separated syntactic variant of the verb+clitic combination. We do this by -- creating slots for the non-reflexive part equivalent of each basic reflexive slot, and for the separated -- syntactic-variant equivalent of each basic reflexive slot that is formed of verb+clitic. We use slots in this -- way to deal with multiword lemmas. Note that we run into difficulties mapping between reflexive verbs, -- non-reflexive part equivalents, and separated syntactic variants if a slot contains more than one form. To -- handle this, if there are the same number of forms in two slots we're trying to match up, we assume the forms -- match one-to-one; otherwise we don't match up the two slots (which means {{ca-verb form of}} won't work in this -- case, but such a case is extremely rare and not worth worrying about). Alternatives that handle this "properly" -- are significantly more complicated and require non-trivial modifications to [[Module:inflection utilities]]. local need_special_verb_form_of_slots = alternant_multiword_spec.source_template == "ca-verb form of" and alternant_multiword_spec.refl if need_special_verb_form_of_slots then alternant_multiword_spec.verb_slots_reflexive_verb_form_of = { {"infinitive_non_reflexive", "-"}, {"infinitive_variant", "-"}, {"gerund_non_reflexive", "-"}, {"gerund_variant", "-"}, } else alternant_multiword_spec.verb_slots_reflexive_verb_form_of = {} end -- Add entries for a slot with person/number variants. -- `verb_slots` is the table to add to. -- `slot_prefix` is the prefix of the slot, typically specifying the tense/aspect. -- `tag_suffix` is a string listing the set of inflection tags to add after the person/number tags. -- `person_number_list` is a list of the person/number slot suffixes to add to `slot_prefix`. local function add_personal_slot(verb_slots, slot_prefix, tag_suffix, person_number_list) for _, persnum in ipairs(person_number_list) do local persnum_tag = all_persons_numbers[persnum] local slot = slot_prefix .. "_" .. persnum local accel = tag_suffix .. "|" .. persnum_tag table.insert(verb_slots, {slot, accel}) end end -- Add a personal slot (i.e. a slot with person/number variants) to `verb_slots_basic`. local function add_basic_personal_slot(slot_prefix, tag_suffix, person_number_list, no_special_verb_form_of_slot) add_personal_slot(alternant_multiword_spec.verb_slots_basic, slot_prefix, tag_suffix, person_number_list) -- Add special slots for handling non-reflexive parts of reflexive verbs in {{ca-verb form of}}. -- See comment above in `need_special_verb_form_of_slots`. if need_special_verb_form_of_slots and not no_special_verb_form_of_slot then for _, persnum in ipairs(person_number_list) do local persnum_tag = all_persons_numbers[persnum] local basic_slot = slot_prefix .. "_" .. persnum local accel = tag_suffix .. "|" .. persnum_tag table.insert(alternant_multiword_spec.verb_slots_reflexive_verb_form_of, {basic_slot .. "_non_reflexive", "-"}) end end end add_basic_personal_slot("pres", "直説法|現在", person_number_list) add_basic_personal_slot("impf", "直説法|不完全過去", person_number_list) add_basic_personal_slot("pret", "直説法|完全過去", person_number_list) add_basic_personal_slot("fut", "直説法|未来", person_number_list) add_basic_personal_slot("cond", "可能法", person_number_list) add_basic_personal_slot("pres_sub", "接続法|現在", person_number_list) add_basic_personal_slot("impf_sub", "接続法|過去", person_number_list) add_basic_personal_slot("imp", "命令法", imp_person_number_list) -- Don't need special non-reflexive-part slots because the negative imperative is multiword, of which the -- individual words are 'no' + subjunctive. add_basic_personal_slot("neg_imp", "命令法|禁止", neg_imp_person_number_list, "no special verb form of") -- Don't need special non-reflexive-part slots because we don't want [[arrependendo]] mapping to [[arrependendo-me]] -- (only [[arrependendo-se]]) or [[arrepender]] mapping to [[arrepender-me]] (only [[arrepender-se]]). add_basic_personal_slot("infinitive", "inf", person_number_list, "no special verb form of") add_basic_personal_slot("gerund", "ger", person_number_list, "no special verb form of") -- Generate the list of all slots. alternant_multiword_spec.all_verb_slots = {} for _, slot_and_accel in ipairs(alternant_multiword_spec.verb_slots_basic) do table.insert(alternant_multiword_spec.all_verb_slots, slot_and_accel) end for _, slot_and_accel in ipairs(alternant_multiword_spec.verb_slots_reflexive_verb_form_of) do table.insert(alternant_multiword_spec.all_verb_slots, slot_and_accel) end alternant_multiword_spec.verb_slots_basic_map = {} for _, slotaccel in ipairs(alternant_multiword_spec.verb_slots_basic) do local slot, accel = unpack(slotaccel) alternant_multiword_spec.verb_slots_basic_map[slot] = accel end end local overridable_stems = {} local function allow_multiple_values_for_override(separated_groups, data, is_form_override) local retvals = {} for _, separated_group in ipairs(separated_groups) do local footnotes = data.fetch_footnotes(separated_group) local form = separated_group[1] -- Prepend marker to prevent prefixing with `base.prefix`, and (in the case of form overrides) prevent -- final devoicing. if is_form_override then form = IS_USER_FORM_OVERRIDE .. form else form = IS_USER_STEM_OVERRIDE .. form end local retval = {form = form, footnotes = footnotes} table.insert(retvals, retval) end return retvals end for _, overridable_stem in ipairs { "stem", "stressed_stem", "unstressed_stem", "pres_unstressed", "pres_stressed", "pres3s", -- overrides just pres_2s and pres_3s -- Don't include pres1s, pres3p; use pres_1s etc. if you need to override just those forms "impf1", "impf2", "pret", "fut", "cond", "pres_sub_stressed", "pres_sub_unstressed", "impf_sub", "pp", "g_infix", "eix_infix", } do -- Written so we can substitute a different validator; parallel code in [[Module:es-verb]] and [[Module:pt-verb]] -- has simple_choice validators. overridable_stems[overridable_stem] = allow_multiple_values_for_override end -- Useful as the value of the `match` property of a built-in verb. `main_verb_spec` is a Lua pattern that should match -- the non-prefixed part of a verb, and `prefix_specs` is a list of Lua patterns that should match the prefixed part of -- a verb. If a prefix spec is preceded by ^, it must match exactly at the beginning of the verb; otherwise, additional -- prefixes (e.g. re-, des-) may precede. Return the prefix and main verb. local function match_against_verbs(main_verb_spec, prefix_specs) return function(verb) for _, prefix_spec in ipairs(prefix_specs) do if prefix_spec:find("^%^") then -- must match exactly prefix_spec = prefix_spec:gsub("^%^", "") if prefix_spec == "" then -- We can't use the second branch of the if-else statement because an empty () returns the current position -- in rmatch(). local main_verb = rmatch(verb, "^(" .. main_verb_spec .. ")$") if main_verb then return "", main_verb end else local prefix, main_verb = rmatch(verb, "^(" .. prefix_spec .. ")(" .. main_verb_spec .. ")$") if prefix then return prefix, main_verb end end else local prefix, main_verb = rmatch(verb, "^(.*" .. prefix_spec .. ")(" .. main_verb_spec .. ")$") if prefix then return prefix, main_verb end end end return nil end end --[=[ Built-in (usually irregular) conjugations. Each entry is processed in turn and consists of an object with two fields: 1. match=: Specifies the built-in verbs that match this object. 2. forms=: Specifies the built-in stems and forms for these verbs. The value of match= is either a string beginning with "^" (match only the specified verb), a string not beginning with "^" (match any verb ending in that string), or a function that is passed in the verb and should return the prefix of the verb if it matches, otherwise nil. The function match_against_verbs() is provided to facilitate matching a set of verbs with a common ending and specific prefixes (e.g. [[ter]] and [[ater]] but not [[abater]], etc.). The value of forms= is a table specifying stems and individual override forms. Each key of the table names either a stem (e.g. `pres_stressed`), a stem property (e.g. `g_infix`) or an individual override form (e.g. `pres_1s`). Each value of a stem can either be a string (a single stem), a list of strings, or a list of objects of the form {form = STEM, footnotes = {FOONOTES}}. Each value of an individual override should be of exactly the same form except that the strings specify full forms rather than stems. The values of a stem property depend on the specific property but are generally strings or booleans. In order to understand how the stem specifications work, it's important to understand the phonetic modifications done by combine_stem_ending(). In general, the complexities of predictable prefix, stem and ending modifications are all handled in this function. In particular: 1. Spelling-based modifications (c/qu, ç/c, g/gu, j/g, gu/gü, qu/qü) occur automatically as appropriate for the ending. 2. If the ending begins with an asterisk, this is a signal to delete the accent on the last syllable of the stem, e.g. veié -> veierem. 3. If ending begins with i, it may turn into í or ï after an unstressed vowel (in some but not all cases) to prevent the two merging into a diphthong. See combine_stem_ending() for specifics. The following stems are recognized [FIXME: This is not correct for Catalan, needs rewriting]: -- pres_unstressed: The present indicative unstressed stem (1p, 2p). Also controls the imperative 2p and gerund. Defaults to the infinitive stem (minus the ending -ar/-er/-ir/-or). -- pres_stressed: The present indicative stressed stem (1s, 2s, 3s, 3p). Also controls the imperative 2s. Default is empty if indicator `no_pres_stressed`, else a vowel alternation if such an indicator is given (e.g. `ue`, `ì`), else the infinitive stem. -- pres1: Special stem for 1s present indicative. Normally, do not set this explicitly. If you need to specify an irregular 1s present indicative, use the form override pres_1s= to specify the entire form. Defaults to pres_stressed. -- pres_sub_unstressed: The present subjunctive unstressed stem (1p, 2p). Defaults to the infinitive stem. -- pres_sub_stressed: The present subjunctive stressed stem (1s, 2s, 3s, 1p). Defaults to pres1. -- impf: The imperfect stem (not including the -av-/-i- stem suffix, which is determined by the conjugation). Defaults to the infinitive stem. -- pret: The full preterite stem missing only the endings (-ste, -mos, etc.), e.g. 'fige', 'fo'. Only used for verbs with irregular preterites (pret_conj == "irreg") such as [[facer]], [[poder]], [[traer]], etc. Defaults to `pret_base` + the conjugation vowel. -- fut: The future stem. Defaults to the infinitive stem + the conjugation vowel. -- cond: The conditional stem. Defaults to `fut`. -- impf_sub: The imperfect subjunctive stem. Defaults to `pret`. -- pp: The masculine singular past participle. Default is based on the verb conjugation: infinitive stem + '-ado' for -ar verbs, otherwise infinitive stem + '-ido'. -- pp_inv: `true` if the past participle exists only in the masculine singular. ]=] local built_in_conjugations = { -------------------------------------------------------------------------------------------- -- -ar -- -------------------------------------------------------------------------------------------- -- Orthographic consonant alternations in endings are handled automatically in combine_stem_ending(). { -- [[aguar]]: -- pres agúo, agúes, agúa, agüem, agüeu, agúen -- pres_sub aguï, aguïs, aguï, agüem, agüeu, aguïn -- contrast a more typical verb in -guar, [[enaiguar]]: -- pres enaiguo, enaigües, enaigua, enaigüem, enaigüeu, enaigüen -- pres_sub enaigüi, enaigüis, enaigüi, enaigüem, enaigüeu, enaigüin match = "^aguar", forms = { pres_stressed = "agú", pres_sub_stressed = "aguï", irreg = true, } }, { -- [[anar]] (full verb); highly irregular match = "^anar", var = "full", forms = { fut = "anir", pres_1s = "vaj", -- will be converted to 'vaig'; 'vaig' gets converted to 'vaic' pres_2s = "vas", pres_3s = "va", pres_3p = "van", pres_sub_stressed = "vagi", imp_2s = "ves", irreg = true, } }, { -- [[anar]] (auxiliary); highly irregular match = "^anar", var = "aux", forms = { pres_1s = "vaj", -- will be converted to 'vaig'; 'vaig' gets converted to 'vaic' pres_2s = {"vas", "vares"}, pres_3s = "va", pres_1p = {"vam", "vàrem"}, pres_2p = {"vau", "vàreu"}, pres_3p = {"van", "varen"}, pres_sub_stressed = "vagi", pres_sub_unstressed = "vàgi", impf1 = {}, impf2 = {}, fut = {}, pret = {}, pp = {}, gerund = {}, noimp = true, irreg = true, } }, { -- [[dar]] match = "^dar", forms = { pres_1s = {form = "do", footnotes = {"[obsolete]"}}, pres_2s = {form = "das", footnotes = {"[obsolete]"}}, pres_3s = {form = "da", footnotes = {"[obsolete]"}}, pres_3p = {form = "dan", footnotes = {"[obsolete]"}}, pres_sub_1s = {form = "de", footnotes = {"[obsolete]"}}, pres_sub_2s = {form = "des", footnotes = {"[obsolete]"}}, pres_sub_3s = {form = "de", footnotes = {"[obsolete]"}}, pres_sub_3p = {form = "den", footnotes = {"[obsolete]"}}, pret_1s = "di", -- regular except for lack of accent pret_3s = "da", -- regular except for lack of accent impf_sub_1s = "des", -- regular except for lack of accent impf_sub_3s = "des", -- regular except for lack of accent irreg = true, } }, { -- [[estar]]; highly irregular match = "^estar", forms = { pres_2s = "estàs", pres_3s = "està", pres_3p = "estan", g_infix = "estig", imp_2s = "estigues", imp_2p = "estigueu", pp = "estad", } }, -------------------------------------------------------------------------------------------- -- -er/-re -- -------------------------------------------------------------------------------------------- -- Regular verbs not needing entries here: -- -- [[rebre]], [[concebre]], [[decebre]], [[percebre]] -- [[rompre]] -- [[fúmer]], [[prémer]], [[témer]], [[trémer]] -- [[perdre]], [[batre]], [[botre]], [[fotre]], [[retre]] -- [[tòrcer]], [[vèncer]] -- etc. ------------------------------------------- -ldre/-ler/-lre -------------------------------------- { -- [[caldre]], [[doldre]], [[condoldre's]], [[oldre]] match = match_against_verbs("ldre", {"ca", "do", "^o"}), forms = { -- g_infix implies irreg = true -- g_infix adds -g to pres_1s, sub, pret and pp stems; combine_stem_ending() changes final -g to -c g_infix = "+", } }, { -- [[caler]] match = "caler", like = "caldre", }, { -- [[doler]] and compounds match = "doler", like = "doldre", }, { -- [[dolre]] match = "dolre", forms = { -- see above for g_infix effects g_infix = "+", } }, { -- [[valer]], [[equivaler]], [[prevaler]], [[sobrevaler]] match = "valer", forms = { -- see above for g_infix effects fut = "valdr", g_infix = "+", } }, { -- [[valdre]] and compounds match = "valdre", like = "valer", }, { -- [[soler]] match = "^soler", -- this must precede -oldre rule below for alt form [[soldre]] forms = { -- see above for g_infix effects fut = {}, pret = {}, impf_sub = "solgué", -- regular, but we disabled the preterite, which would normally disable impf_sub too g_infix = "+", pp = {}, noimp = true, } }, { -- [[soldre]] match = "^soldre", -- this must precede -oldre rule below like = "soler", }, { -- [[coldre]], [[moldre]], [[absoldre]], [[dissoldre]], [[resoldre]], [[toldre]] match = "oldre", -- this must follow [[doldre]]/[[oldre]] rule above forms = { -- see above for g_infix effects g_infix = "+", pp = "olt", } }, { -- [[voler]], [[malvoler]] match = "voler", forms = { fut = "voldr", pres_1s = "vull", pres_sub_stressed = "vulgui", pres_sub_unstressed = "vulgue", g_infix = "+", imp_2s = "vulgues", imp_2p = "vulgueu", } }, --------------------------------------------- -ndre ---------------------------------------- { -- [[romandre]]; write it this way so there's a prefix with a vowel to prevent against the accent in the pp -- from being removed while still removing it in the feminine. match = match_against_verbs("mandre", {"^ro"}), forms = { -- see above for g_infix effects g_infix = "+", pp = "màs#", } }, { -- [[encendre]], [[atendre]], [[contendre]], [[desentendre's]], [[distendre]], [[entendre]], [[estendre]], -- [[pretendre]] match = match_against_verbs("endre", {"enc", "t"}), forms = { pres_3s = "én#", -- remove final accent without prefix with vowel; also removed when adding a suffix -- see above for g_infix effects g_infix = "+", pp = "ès#", -- see above for effect of final # } }, { -- [[vendre]], [[malvendre]], [[revendre]] match = "vendre", forms = { pres_3s = "vèn#", -- see above for effect of final # -- see above for g_infix effects g_infix = "+", pp = "venud", -- g_infix would normally make it vengud } }, { -- [[fendre]], [[defendre]], [[ofendre]], [[dependre]], [[despendre]], [[expendre]], [[suspendre]], [[prendre]], -- [[aprendre]], [[comprendre]], [[desprendre]], [[emprendre]], [[reprendre]], [[sorprendre]] match = "endre", -- this must follow previous -endre rules above forms = { pres_3s = "èn#", -- see above for effect of final # -- see above for g_infix effects g_infix = "+", pp = "ès#", -- see above for effect of final # } }, { -- [[enfondre]]; write it this way so there's a prefix with a vowel to prevent against the accent in the pp -- from being removed while still removing it in the feminine. match = match_against_verbs("fondre", {"^en"}), forms = { -- see above for g_infix effects g_infix = "+", pp = "fús#", } }, { -- [[pondre]], [[compondre]], [[correspondre]], [[descompondre]], [[despondre's]], [[respondre]] match = "pondre", forms = { -- see above for g_infix effects g_infix = "+", pp = "post", } }, { -- [[fondre]], [[confondre]], [[difondre]], [[infondre]], [[refondre]], [[tondre]] match = "ondre", -- this must follow previous -ondre rules above forms = { -- see above for g_infix effects g_infix = "+", pp = "ós#", -- see above for effect of final # } }, --------------------------------------------- -nyer ---------------------------------------- { -- [[atènyer]]; write it this way so there's a prefix with a vowel to prevent against the accent in the pp -- from being removed while still removing it in the feminine. match = match_against_verbs("tènyer", {"^a"}), forms = { pp = "tès#", irreg = true, } }, { -- [[empènyer]], [[espènyer]] match = match_against_verbs("pènyer", {"^em", "^es"}), forms = { pp = "pès#", irreg = true, } }, { -- [[estrènyer]], [[constrènyer]], [[destrènyer]], [[restrènyer]] match = match_against_verbs("strènyer", {"^e", "con", "^de", "^re"}), forms = { pp = "stret", irreg = true, } }, { -- [[fènyer]] match = "fènyer", forms = { pp = {"fengud", "fenyud"}, irreg = true, } }, { -- [[júnyer]] match = "júnyer", like = "junyir", }, { -- [[plànyer]], [[complànyer]], [[pertànyer]] match = match_against_verbs("ànyer", {"pl", "pert"}), forms = { pp = {"angud", "anyud"}, irreg = true, } }, --------------------------------------------- -aure ---------------------------------------- { -- [[caure]], [[decaure]], [[recaure]] match = "caure", forms = { -- stem ending in -ai and imperfect in -ia causes special stressed imperfect logic to take effect; we get -- impf1s queia, impf1p quèiem (preceding vowel changed to è and attached to initial consonant using -- combine_stem_ending(), which changes c- to qu-) stem = "caie", -- i dropped by g_infix before u -- g_infix implies irreg = true -- g_infix adds -g to pres_1s, sub, pret and pp stems; combine_stem_ending() changes final -g to -c -- g_infix sets pres_stressed to end in -u, removing a preceding -i or -v g_infix = "+", } }, { -- [[plaure]], [[complaure]] match = "plaure", forms = { stem = "plae", -- ï in impf1s -aïa gets generated automatically by combine_stem_ending() g_infix = "+", } }, { -- [[raure]] match = "^raure", forms = { stem = "rae", -- ï in impf1s -aïa gets generated automatically by combine_stem_ending() g_infix = "+", pp = {"ragud", "ras"}, } }, --------------------------------------------- -eure ---------------------------------------- { -- [[beure]], [[embeure]], [[deure]], [[lleure]] match = match_against_verbs("eure", {"b", "d", "ll"}), forms = { stem = "eve", -- v dropped by g_infix before g and u g_infix = "+", } }, { -- [[creure]], [[seure]], [[asseure]] match = match_against_verbs("eure", {"cr", "s"}), forms = { stem = "ee", pres_unstressed = "eie", -- affects pres_1p, pres_2p, gerund, imperfect (see [[caure]]) g_infix = "+", } }, { -- [[jeure]], [[ajeure]] match = "jeure", forms = { fut = "jaur", -- affects future and cond stressed_stem = "jee", -- affects stressed forms, which get g added by g_infix by added except for -- pres_stressed, which gets u added (controls pres_3s, pres_2s, pres_3p) unstressed_stem = "jae", -- affects unstressed_stem, which get g added by g_infix pres_stressed = {"jeu", "jau"}, pres_unstressed = "jaie", -- affects pres_1p, pres_2p, gerund, imperfect (see [[caure]]) pres_1s = {"jec", "jac"}, impf1 = "jei", -- otherwise we'd get impf_1s '#geia' etc. impf2 = "jèi", g_infix = "+", } }, { match = "jaure", like = "jeure", }, { -- [[treure]], [[abstreure]], [[atreure]], [[bestreure]], [[contreure]], [[detreure]], [[distreure]], -- [[extreure]], [[retreure], [[retrotreure]], [[sostreure]] match = "treure", forms = { -- like [[jeure]] except for irregular pp fut = "traur", stressed_stem = "tree", unstressed_stem = "trae", pres_stressed = {"treu", "trau"}, pres_unstressed = "traie", pres_1s = {"trec", "trac"}, g_infix = "+", pp = "tret", } }, { match = "traure", like = "treure", }, { -- [[veure]], [[entreveure]], [[preveure]], [[reveure]] match = "veure", forms = { stem = "veie", -- impf1s veia, impf1p vèiem (preceding vowel changed to è) pres_stressed = "veu", pres_1s = "vej", -- will be converted to 'veig'; 'veig' gets converted to 'veic' pres_sub_stressed = "vegi", pres_sub_unstressed = "vege", pret = {"veié", "vé"}, pret_1s = "viu", pret_3s = {"veié", "veu"}, impf_sub = "veié", pp = "vist", imp_2s = "veges", imp_2p = {"vegeu", "veieu"}, irreg = true, } }, --------------------------------------------- -iure ---------------------------------------- { -- [[escriure]], [[circumscriure]], [[descriure]], [[inscriure]], [[prescriure]], [[proscriure]], -- [[subscriure]], [[transcriure]] match = "scriure", forms = { stem = "scrivi", -- v dropped by g_infix before g and u; pres_1p/pres_2p have -ir endings g_infix = "+", pret = {"scriví", "scrigué"}, pp = "scrit", } }, { -- [[riure]], [[somriure]] match = "riure", -- must follow rule for 'scriure' forms = { stem = "rie", -- impf1s reia, impf1p rèiem (preceding vowel changed to è) g_infix = "+", } }, { -- [[viure]], [[conviure]], [[desviure's]], [[sobreviure]] match = "viure", forms = { stem = "vivi", -- v dropped by g_infix before g and u; pres_1p/pres_2p have -ir endings g_infix = "visc", -- applies to pres1s, sub, pret, pp } }, --------------------------------------------- -oure ---------------------------------------- { -- [[cloure]], [[concloure]], [[descloure]], [[encloure]], [[excloure]], [[incloure]], [[recloure]] match = "cloure", forms = { stem = "cloe", -- ï in impf1s cloïa gets generated automatically by combine_stem_ending() g_infix = "+", pp = "clòs#", -- remove final accent without prefix with vowel; also removed when adding a suffix } }, { -- [[coure]] "to cook" match = "coure", var = "cook", forms = { stem = "coe", -- ï in impf1s coïa gets generated automatically by combine_stem_ending() g_infix = "+", pp = "cuit", } }, { -- [[coure]] "to sting" match = "coure", var = "sting", forms = { stem = "coe", -- ï in impf1s coïa gets generated automatically by combine_stem_ending() g_infix = "+", -- pp regular 'cogud' } }, { -- [[moure]], [[promoure]], [[remoure]], [[somoure]], [[ploure]] match = match_against_verbs("oure", {"m", "pl"}), forms = { stem = "ove", -- v dropped by g_infix before g and u g_infix = "+", } }, { -- [[noure]] match = "noure", forms = { stem = "noe", -- ï in impf1s -aïa gets generated automatically by combine_stem_ending() g_infix = "+", } }, --------------------------------------------- -xer ---------------------------------------- { -- [[conèixer]], [[desconèixer]], [[reconèixer]] match = "conèixer", forms = { g_infix = "coneg", } }, { -- [[créixer]], [[acréixer]], [[decréixer]], [[recréixer]], [[sobrecréixer]] match = "créixer", forms = { pret = {"creixé", "cresqué"}, pres_sub_unstressed = {"creixe", "cresque"}, pp = "crescud", irreg = true, } }, { -- [[merèixer]], [[desmerèixer]], [[irèixer-se]] match = match_against_verbs("rèixer", {"me", "^i"}), forms = { pret = {"reixé", "resqué"}, pres_sub_unstressed = {"reixe", "resque"}, pp = "rescud", irreg = true, } }, { -- [[néixer]]/[[nàixer]], [[renéixer]]/[[renàixer]], [[sobrenéixer]]/[[sobrenàixer]], [[péixer]]/[[pàixer]] match = match_against_verbs("éixer", {"n", "p"}), forms = { stem = "aixe", fut = "aixer", pres_stressed = {"eix", "aix"}, pres_1s = "eixo", pret = {"aixé", "asqué"}, pres_sub_stressed = "eixi", pres_sub_unstressed = {"aixe", "asque"}, pp = "ascud", irreg = true, } }, { match = "àixer", like = "éixer", }, { -- [[parèixer]], [[aparèixer]], [[comparèixer]], [[desaparèixer]], [[reaparèixer]] match = "parèixer", forms = { g_infix = "pareg", } }, --------------------------------------------- misc ---------------------------------------- { -- [[cabre]] match = "cabre", forms = { pres_sub_stressed = "càpiga", pres_sub_unstressed = "capigue", irreg = true, } }, { -- [[caber]] match = "caber", like = "cabre", }, { -- [[saber]] match = "saber", forms = { fut = "sabr", pres_1s = "sé", pres_sub_stressed = "sàpiga", pres_sub_unstressed = "sapigue", imp_2s = "sàpiga", imp_2p = "sapigueu", irreg = true, } }, { -- [[poder]] match = "poder", forms = { fut = "podr", pres_1s = "puc", pres_sub_stressed = "pugui", pres_sub_unstressed = "pugue", g_infix = "pog", imp_2s = "pugues", imp_2p = "pugueu", irreg = true, } }, { -- [[córrer]], [[acórrer]], [[concórrer]], [[decórrer]], [[descórrer]], [[discórrer]], [[encórrer]], -- [[escórrer]], [[incórrer]], [[ocórrer]], [[recórrer]], [[socórrer]], [[transcórrer]] match = "córrer", forms = { pret = "corregué", pres_sub_unstressed = {"corre", "corregue"}, pp = "corregud", irreg = true, } }, { -- [[metre]], [[admetre]], [[arremetre]], [[cometre]], [[comprometre]], [[demetre]], [[descomprometre]], -- [[emetre]], [[entremetre's]], [[escometre]], [[malmetre]], [[manumetre]], [[ometre]], [[permetre]], -- [[prometre]], [[readmetre]], [[remetre]], [[retransmetre]], [[sotmetre]], [[trametre]], [[transmetre]] match = "metre", forms = { pp = "mès#", irreg = true, } }, -------------------------------------------------------------------------------------------- -- -ir -- -------------------------------------------------------------------------------------------- { -- [[acudir]]; NOTE: Separation by meaning does not occur in DCC, DIEC, DEIEC, and DCVB says the distinction -- is geographical and makes no mention of distinction by meaning. OTOH ca.wikt does say that the pronominal -- sense "to occur" tends to conjugate non-inchoative. match = "acudir", forms = { eix_infix = {{ form = "+", footnotes = {'[especially in the sense "to turn up, to be present"]'} }, { form = "-", footnotes = {'[especially in the pronominal sense "to occur"]'} }} } }, -- [[afegir]]: -- non-inchoative in Valencia, inchoative elsewhere { -- [[ajupir]] -- [[buixir]] -- [[bullir]], [[rebullir]] -- [[cruixir]], [[escruixir]] (Routledge says this is inchoative but DIEC, DEIEC and DCC all disagree; note -- pres_2s 'cruixes', handled automatically) -- [[dormir]], [[adormir]] -- [[funyir]] -- [[grunyir]] -- [[munyir]], [[esmunyir]] -- [[pudir]] -- [[punyir]] -- [[retrunyir]] -- [[sallir]] -- [[sentir]], [[pressentir]], [[ressentir-se]]; not [[consentir]], with can be either non-inchoative or -- inchoative, and not [[assentir]] or [[dissentir]], which are only inchoative match = match_against_verbs("ir", {"ajup", "buix", "bull", "cruix", "dorm", "funy", "gruny", "muny", "pud", "puny", "retruny", "^sent", "pressent", "^ressent", "sall"}), forms = { eix_infix = "-", } }, { -- [[arrupir-se]]; -- [[brumir]]; -- [[brunzir]]; -- [[consumir]], [[resumir]], [[presumir]] (not [[sumir]], [[assumir]], [[subsumir]], which are regular) -- [[mentir]], [[desmentir]] -- [[percudir]]; cf. also [[acudir]], which to some extent has separate conjugations per meaning -- [[consentir]] match = match_against_verbs("ir", {"arrup", "brum", "brunz", "consum", "^resum", "presum", "ment", "percud", "consent"}), forms = { eix_infix = {"+", "-"}, } }, -- [[cenyir]]: -- non-inchoative or inchoative in Balearics, inchoative elsewhere { -- [[cobrir]], [[descobrir]], [[encobrir]], [[recobrir]], [[redescobrir]] match = "cobrir", forms = { pp = "cobert", irreg = true, } }, { -- [[collir]], [[acollir]], [[escollir]], [[recollir]] match = "collir", forms = { stressed_stem = "culli", eix_infix = "-", irreg = true, } }, { -- [[complir]], [[acomplir]], [[incomplir]] match = "complir", forms = { pp = {"complert", "complid"}, irreg = true, } }, { -- [[cosir]], [[descosir]], [[recosir]] match = "cosir", forms = { stressed_stem = "cusi", pres_3s = "cús#", eix_infix = "-", irreg = true, } }, { -- [[eixir]], [[deseixir-se]]; not [[teixir]] or [[entreteixir]], and not [[reeixir]] or [[sobreeixir]], -- which have an ï in the stem-stressed forms match = match_against_verbs("eixir", {"^", "des"}), forms = { stressed_stem = "ixi", eix_infix = "-", irreg = true, } }, { -- [[reeixir]], [[sobreeixir]] match = match_against_verbs("eixir", {"^re", "sobre"}), forms = { stressed_stem = "ïxi", eix_infix = "-", irreg = true, } }, -- [[engolir]]: -- non-inchoative in Valencia, inchoative elsewhere { -- [[escopir]] match = "escopir", forms = { stressed_stem = "escupi", eix_infix = "-", irreg = true, } }, { -- [[establir]], [[preestablir]], [[restablir]] match = "establir", forms = { pp = {"establert", "establid"}, irreg = true, } }, -- [[ferir]]: -- non-inchoative in Balearics, inchoative elsewhere -- [[fregir]]: -- non-inchoative in Valencia, inchoative elsewhere { -- [[fugir]], [[confugir]], [[defugir]], [[enfugir-se]]; pres sing ''fujo, fuges, fuig'' handled by -- combine_stem_ending(); can't be handled by rule above that lists many non-inchoative verbs because the -- prefix would be 'fug' and the front-back alternation code doesn't apply to prefixes. match = "fugir", forms = { eix_infix = "-", } }, { -- [[imprimir]], [[reimprimir]], [[sobreimprimir]]; not any other verbs in -primir; write it this way so -- there's a prefix with a vowel to prevent against the accent in the pp from being removed while still -- removing it in the feminine. match = match_against_verbs("primir", {"im"}), forms = { pp = "près#", irreg = true, } }, -- [[llegir]]: -- non-inchoative in Valencia and Minorca, inchoative elsewhere { -- [[lluir]]: regular inchoative in the figurative meaning "to display (something), to be showy" also in the -- legal meaning "free from a pecuniary obligation, such as a land-based tax (emphyteusis)"; irregular in the -- literal meaning "to shine"; use <no_built_in> to get regular conjugation. In the regular conjugation, -- umlauts appear in the following forms: pres_1p/pres_sub_1p/imp_1p lluïm, pres_2p/pres_sub_2p/imp_2p lluïu, -- impf_1s/impf_3s lluïa, impf_2s lluïes, impf_3p lluïen, pret_2s lluïres, pret_3p lluïren, -- impf_sub_2s lluïssis, impf_sub_3p lluïssin, throughout the pp: lluït, lluïda, lluïts, lluïdes. IN the -- irregular conjugation, umlauts appear in the same places as well as elsewhere in the present subjunctive: -- pres_sub_1s/pres_sub_3s/imp_3s lluï, pres_sub_2s lluïs, pres_sub_3p/imp_3p lluïn. Notably, they do *NOT* -- appear in the gerund lluint, the infinitive lluir, or anywhere in the future or conditional. Note that -- verbs.cat [https://www.verbs.cat/en/conjugation/899-lluir.html] lists additional irregular forms pres_1s -- lluu, and alternative impf_sub forms in -e- instead of -i- (lluïsses, lluíssem, lluísseu, lluïssen), but -- these are nonstandard or dialectal per both Routledge and DEIEC. match = "^lluir", forms = { eix_infix = "-", pres3s = {"lluu", "llu"}, -- generates pres_2s, imp_2s irreg = true, } }, { -- [[entrelluir]] "to be half-seen", [[relluir]] "to shine", [[traslluir-se]] "to be translucent"; either -- inchoative or non-inchoative, not distinguished by meaning; note, [[deslluir]] and [[enlluir]] are regular -- inchoative verbs. match = match_against_verbs("lluir", {"entre", "^re", "tras"}), forms = { eix_infix = {"+", "-"}, pres3s = {"llueix", "lluu", "llú"}, -- generates pres_2s, imp_2s; note, pres_2s will end in -es due to -- combine_stem_ending() irreg = true, } }, { -- [[morir]], [[premorir]]; but not [[atemorir]] match = match_against_verbs("morir", {"^", "pre"}), forms = { eix_infix = "-", pp = "mort", irreg = true, } }, { -- [[obrir]], [[entreobrir]], [[reobrir]]; not [[cobrir]] and derivatives, not [[empobrir]], so we have to list -- them individually match = match_against_verbs("obrir", {"^", "entre", "^re"}), forms = { eix_infix = "-", pp = "obert", irreg = true, } }, { -- [[oferir]]; but not [[proferir]] match = "^oferir", forms = { pp = {"ofert", "oferid"}, irreg = true, } }, -- [[oir]], [[desoir]], [[entreoir]]: -- per Routledge, non-inchoative or inchoative normally but only -- non-inchoative in Valencian; but all dictionaries disagree and say it is a regular inchoative-only verb. -- It has the same umlauts as lluir (and [[corroir]], another regular inchoative verb). { -- [[omplir]], [[desomplir-se]], [[reomplir]]; not [[complir]] and derivatives, so we have to list them -- individually match = match_against_verbs("omplir", {"^", "des", "^re"}), forms = { eix_infix = "-", pp = {"omplert", "omplid"}, irreg = true, } }, -- [[penedir-se]]: -- non-inchoative in Balearics, inchoative elsewhere { -- [[pruir]] "to itch": same umlauts as in [[lluir]]. match = "^pruir", forms = { eix_infix = "-", pres3s = {"pruu", "pru"}, -- generates pres_2s, imp_2s irreg = true, } }, { -- [[reblir]] match = "^reblir", forms = { pp = {"reblert", "reblid"}, irreg = true, } }, -- [[renyir]]: -- non-inchoative in Valencia, inchoative elsewhere { -- [[sofrir]] match = "^sofrir", forms = { pp = {"sofert", "sofrid"}, irreg = true, } }, { -- [[sortir]], [[ressortir]], [[sobresortir]]; but not [[assortir]], which is regular inchoative match = match_against_verbs("sortir", {"^", "^res", "sobre"}), forms = { stressed_stem = "surti", eix_infix = "-", irreg = true, } }, { -- [[suplir]] match = "^suplir", forms = { pp = {"suplert", "suplid"}, irreg = true, } }, -- [[teixir]], [[entreteixir]]: -- non-inchoative in Valencia, inchoative elsewhere { -- [[tenir]] but not any compounds; highly irregular match = "^tenir", forms = { fut = "tindr", pres_stressed = "ten", pres_3s = "té", imp_2s = {"té", "ten", "tingues"}, imp_2p = {"teniu", "tingueu"}, g_infix = "ting", } }, { -- [[abstenir-se]], [[atenir-se]], [[captenir-se]], [[cartenir]], [[contenir]], [[detenir]], [[entretenir]], -- [[mantenir]], [[menystenir]], [[obtenir]], [[retenir]], [[sostenir]], [[viltenir]]; highly irregular match = "tenir", forms = { fut = "tindr", pres_stressed = "ten", pres_3s = "té", imp_2s = {"tén", "tingues"}, imp_2p = {"teniu", "tingueu"}, g_infix = "ting", } }, { -- [[tindre]]: variant of [[tenir]] match = "tindre", like = "tenir", }, -- [[tenyir]], [[destenyir]]: -- non-inchoative in Valencia, but [[retenyir]] inchoative or non-inchoative in -- Valencia? (per Routledge); regular inchoative elsewhere { -- [[tossir]] "to cough" match = "^tossir", forms = { stressed_stem = "tussi", -- pres_2s gets 'tusses' pres_3s = "tus", -- note, pres_3s (a single form override) not pres3s (a stem override, which also affects -- pres_2s; but imp_2s is physically copied from pres_3s, so imp_2s correctly gets 'tus') eix_infix = "-", irreg = true, } }, { -- [[venir]] but not any compounds; highly irregular match = "^venir", forms = { fut = "vindr", pres_stressed = "ven", pres_3s = "ve", imp_2s = "vine", g_infix = "ving", } }, { -- compounds of [[venir]]: [[advenir]], [[avenir]], [[contravenir]], [[convenir]], [[desavenir-se]], -- [[desconvenir]], [[entrevenir]], [[esdevenir]], [[intervenir]], [[obvenir]], [[pervenir]], [[prevenir]], -- [[provenir]], [[reconvenir]], [[revenir]], [[sobrevenir]], [[subvenir]]; but not [[enjovenir]] or -- [[rejovenir]]; highly irregular match = match_against_verbs("venir", {"^ad", "^a", "contra", "con", "desa", "entre", "esde", "inter", "ob", "per", "pre", "pro", "^re", "sobre", "sub"}), forms = { fut = "vindr", pres_stressed = "ven", pres_3s = "vé", imp_2s = "vén", g_infix = "ving", } }, { -- [[vindre]]: variant of [[venir]] match = "vindre", like = "venir", }, -- [[vestir]], [[desvestir]], [[revestir]], maybe [[transvestir]]: non-inchoative in Valencia, inchoative or -- non-inchoative in the Balearics; regular inchoative elsewhere; but not [[envestir]] or [[investir]], which are -- regular inchoative everywhere { -- [[fer]], [[contrafer]], [[desfer]], [[estrafer]], [[perfer]], [[refer]], [[satisfer]]; highly irregular match = "fer", forms = { fut = "far", pres_1s = "faj", -- will be converted to 'faig'; 'faig' gets converted to 'faic' pres_2s = "fàs#", pres_3s = "fà#", pres_3p = "fan", pres_unstressed = "fe", impf1 = "fei", impf2 = "fèi", pres_sub_stressed = "faci", pres_sub_unstressed = "fe", pret = "fé", pret_1s = "fiu", pret_3s = "feu", impf_sub_1s = "fés#", -- regular except for base form [[fes]], lacking an accent impf_sub_3s = "fés#", -- same imp_2s = "fés#", pp = "fet", irreg = true, } }, { -- [[dir]], [[adir-se]], [[contradir]], [[desdir]], [[entredir]], [[interdir]], [[maldir]], [[predir]], [[redir]]; -- behaves like an -er/-re verb match = match_against_verbs("dir", {"^", "^a", "contra", "des", "entre", "inter", "mal", "pre", "^re"}), forms = { stem = "die", g_infix = "+", imp_2s = "digues", imp_2p = "digueu", pp = "dit", } }, { -- [[dur]], [[endur-se]]; behaves like an -er/-re verb match = "dur", forms = { stem = "due", g_infix = "+", pres3s = {"duu", "du"}, -- generates pres_2s, imp_2s impf1 = "dui", impf2 = "dúi", pp = "dut", } }, { -- [[ser]]; highly irregular match = "^ser", forms = { pres_1s = "soc", pres_2s = "ets", pres_3s = "és", pres_1p = "som", pres_2p = "sou", pres_3p = "són", impf1 = "er", impf2 = "ér", pres_sub_stressed = "sigui", pres_sub_unstressed = "sigue", pret = "fó", pret_1s = "fui", pret_3s = "fou", impf_sub_1s = "fos", -- regular except for lack of accent impf_sub_3s = "fos", -- same cond = {"serí", "fór"}, imp_2s = "sigues", imp_2p = "sigueu", pp = {"estad", "sigud"}, gerund = {"sent", "essent"}, irreg = true, } }, { -- [[ésser]]; variant of [[ser]] match = "^ésser", like = "ser", }, { -- [[haver]] as auxiliary; highly irregular match = "^haver", var = "aux", forms = { pres_1s = "he", pres_2s = "has", pres_3s = "ha", pres_1p = "hem", pres_2p = "heu", pres_3p = "han", fut = "haur", cond = {"haurí", "haguér"}, pres_sub_stressed = "hagi", pres_sub_unstressed = "hàgi", noimp = true, g_infix = "+", } }, { -- [[haver]] as full verb; highly irregular match = "^haver", var = "full", forms = { pres_1s = {"hec", "hac"}, pres_stressed = {"heu", "hau"}, fut = "haur", pres_sub_stressed = "hegui", g_infix = "+", } }, { -- [[heure]]; variant of full verb [[haver]] match = "^heure", like = "haver", likevar = "full", }, { -- [[haure]]; variant of full verb [[haver]] match = "^haure", like = "haver", likevar = "full", }, } local function skip_slot(base, slot, allow_overrides) if not allow_overrides and (base.basic_overrides[slot] or base.refl and base.basic_reflexive_only_overrides[slot]) then -- Skip any slots for which there are overrides. return true end if base.only3s and (slot:find("^pp_f") or slot:find("^pp_mp")) then -- diluviar, atardecer, neviscar; impersonal verbs have only masc sing pp return true end if not slot:find("[123]") then -- Don't skip non-personal slots. return false end if base.nofinite then return true end if (base.only3s or base.only3sp or base.only3p) and (slot:find("^imp_") or slot:find("^neg_imp_")) then return true end if base.only3s and not slot:find("3s") then -- diluviar, atardecer, neviscar return true end if base.only3sp and not slot:find("3[sp]") then -- atañer, concernir return true end if base.only3p and not slot:find("3p") then -- [[caer cuatro gotas]], [[caer chuzos de punta]], [[entrarle los siete males]] return true end return false end local function add_stem_ending(stem, ending) if ending == "" then return stem end if stem:find("#$") then -- remove final accent when adding a suffix stem = com.remove_accents((stem:gsub("#$", "")), "final syllable only") end return stem .. ending end local function process_stem(stem, fn) if stem:find("#$") then local stem_no_pound_sign = stem:match("^(.*)#$") return fn(stem_no_pound_sign) .. "#" else return fn(stem) end end -- Add the `stem` to the `ending` and apply any phonetic modifications. `is_full_word` indicates that we're creating -- a "full word" not a stem, and turns on devoicing of final consonants. `dont_include_prefix` is used when creating -- stems and indicates not to prepend the prefix in `base.prefix` to the result. `is_pres_sub_stressed` is used when -- creating the pres_sub_stressed stem, to correctly handle both [[desaiguar]] and [[argüir]], whose respective -- interactions between ü and i/ï are very tricky. -- -- WARNING: This function is written very carefully; changes to it can easily have unintended consequences. local function combine_stem_ending(base, stem, ending, is_full_word, dont_include_prefix, is_pres_sub_stressed) -- Include the prefix in the stem unless dont_include_prefix is given (used in construct_stems()), or the value of -- `stem` comes from a user-specified stem or form override. if not dont_include_prefix and not stem:find(IS_USER_STEM_OVERRIDE) and not stem:find(IS_USER_FORM_OVERRIDE) then stem = base.prefix .. stem end -- A * at the beginning of the ending is a signal to remove a stressed accent from the stem. This may feed any of -- the following rules. if ending:find("^%*") then ending = ending:gsub("^%*", "") stem = com.remove_accents(stem, "final syllable only") end -- If ending begins with s and stem ends in a sibilant, we need an e in between; cf. pres_2s 'apareixes' of -- [[aparèixer]], pres_2s 'torces' of [[tòrcer]], pres_2s 'fuges' of [[fugir]], pres_2s 'brunzes' of [[brunzir]]. -- This may feed the next rule. if ending:find("^s") and rfind(stem, "[çjsxz]$") then ending = "e" .. ending end -- By default, stems are in their "back" (standalone) form. Before a front vowel, convert the final consonant to -- its "front" form so the pronunciation doesn't change. if rfind(ending, "^" .. front_vowel_c) then -- adequar -> adeqües -- enaiguar -> enaigües -- pegar -> pegues -- arranjar -> arranges -- marcar -> marques -- abraçar -> abraces stem = com.back_to_front(stem) end -- Ending beginning in -i after diphthong ending in V + i compresses the two i's into one (cf. pret_1s 'desmaí' and -- pres_sub_1s 'desmaï' of [[desmaiar]]). This rule doesn't apply after pseudo-vowel u in gu/qu; cf. pret_1s 'guií' -- of [[guiar]] and contrast pret_1s 'cruí' of [[cruiar]]. This may feed the next rule. if rfind(ending, "^[iíï]") and rfind(stem, V .. "i$") and not rfind(stem, "[gq][uü]i$") then stem = stem:gsub("i$", "") end -- If ending begins with i (not í), it must get a diaeresis after a true vowel (not gu/qu, cf. pres_1p 'delinquim' -- of [[delinquir]], not '#delinquïm'; also not a diphthong ending in u, cf. pres_sub_1s 'apreui' of [[apreuar]] -- not '#apreuï') to prevent the two merging into a diphthong. Note that ü -> u before ï, but to simplify things -- we leave the double umlauts in place and remove the first one during postprocessing, in fix_double_umlauts(). -- Cf.: -- * impf_1s 'raïa' of [[raure]]; -- * pres_sub_1s 'creï' of [[crear]]; -- * pres_sub_1s 'associï' of [[associar]]; -- * impf_1s 'cloïa' of [[cloure]]; -- * pres_1p 'lluïm' of [[lluir]]; -- * pres_1p 'arguïm' of [[argüir]]. if ending:find("^i") and rfind(stem, "[aeiouü]$") and not stem:find("[aeiogq]u$") and -- Unstressed subjunctive endings of [[enaiguar]] remain without umlaut: enaigüi/enaigüis/enaigüin; -- but stressed endings of [[argüir]] that begin with 'i' do get an umlaut: arguït, impf. arguïa, including -- stressed subjunctive endings arguïm/arguïu. In both cases the ending is '-i' as part of the creation of -- the respective stems. There seems no way of distinguishing the two cases other than with a special flag. not (rfind(stem, "[gq]ü$") and ending == "i" and is_pres_sub_stressed) then ending = ending:gsub("^i", "ï") end local retval = add_stem_ending(stem, ending) if retval:find("#$") then -- remove final accent if no vowels in prefix retval = retval:gsub("#$", "") if not rfind(base.prefix, V) then retval = com.remove_accents(retval, "final syllable only") end end if is_full_word then local saw_is_user_form_override retval, saw_is_user_form_override = rsubb(retval, IS_USER_FORM_OVERRIDE, "") retval = retval:gsub(IS_USER_STEM_OVERRIDE, "") if not saw_is_user_form_override then -- Devoice final voiced obstruent (cf. pres_2s 'caps', pres_3s 'cap' of [[cabre]]). But not after a -- consonant (cf. pres_2s 'perds', pres_3s 'perd' of [[perdre]]), except for g -> c, which operates -- even after a consonant (pres_1s 'resolc' of [[resoldre]], pres_1s 'tinc' of [[tenir]]). retval = retval:gsub("g(s?)$", "c%1") retval = rsub(retval, "(" .. V .. ")([bdj])(s?)$", function(before, voiced, after) local devoice = { b = "p", d = "t", j = "ig", -- pres_3s 'fuj' of [[fugir]] -> 'fuig' } return before .. devoice[voiced] .. after end) end end return retval end local function add3(base, slot, stems, endings, footnotes, allow_overrides) if skip_slot(base, slot, allow_overrides) then return end local function do_combine_stem_ending(stem, ending) return combine_stem_ending(base, stem, ending, "is full word") end iut.add_forms(base.forms, slot, stems, endings, do_combine_stem_ending, nil, nil, footnotes) end local function insert_form(base, slot, form) if not skip_slot(base, slot) then iut.insert_form(base.forms, slot, form) end end local function insert_forms(base, slot, forms) if not skip_slot(base, slot) then iut.insert_forms(base.forms, slot, forms) end end local function add_single_stem_tense(base, slot_pref, stems, s1, s2, s3, p1, p2, p3) local function addit(slot, ending) add3(base, slot_pref .. "_" .. slot, stems, ending) end addit("1s", s1) addit("2s", s2) addit("3s", s3) addit("1p", p1) addit("2p", p2) addit("3p", p3) end local function map_general(stemforms, fn) return iut.map_forms(iut.convert_to_general_list_form(stemforms), fn) end local function flatmap_general(stemforms, fn) return iut.flatmap_forms(iut.convert_to_general_list_form(stemforms), fn) end -- Given a stem ending in a conjugation vowel -a/-e/-i/-ï, split into stem base and conjugation vowel, converting the -- stem base to "back" form if the conjugation vowel is front (hence 'torce' of [[tòrcer]] splits into 'torç' and 'e', -- and 'fugi' of [[fugir]] splits into 'fuj' and 'i'). local function split_conj_vowel(stem) local stem_base, conj_vowel = rmatch(stem, "^(.*)([aeiï])$") if not stem_base then error(("Internal error: Stem '%s' doesn't end in conjugation vowel a/e/i"):format(stem)) end if conj_vowel == "ï" then -- To simplify handling of ï, convert to i. It will be converted back to ï as necessary in -- combine_stem_ending(). conj_vowel = "i" end if rfind(conj_vowel, front_vowel_c) then stem_base = com.front_to_back(stem_base) end return stem_base, conj_vowel end local function construct_stems(base) base.output_stems = {} local stems = base.output_stems local bst = base.input_stems -- YUCK, see combine_stem_ending() for the necessity of is_pres_sub_stressed. local function combine(stem, ending, is_pres_sub_stressed) return combine_stem_ending(base, stem, ending, false, "dont include prefix", is_pres_sub_stressed) end stems.irreg = bst.irreg or bst.g_infix -- NOTE: Some stems end in a conjugation or similar vowel, specifically: -- * `stem` (ends in conjugation vowel -a/-e/-i); -- * `stressed_stem` (likewise); -- * `unstressed_stem` (likewise); -- * `pres_unstressed` (which assumes the form of the gerund minus the -nt; note that `pres_stressed` does *NOT* -- end in a conjugation vowel, but assumes the stem form; the value of pres_3s will be derived by adding -a for -- -ar verbs and otherwise adding an -e prop vowel when required, as in [[cobrir]], and otherwise adding no -- vowel); -- * `pres_sub_stressed` (which assumes the form of pres_sub_3s and hence usually ends in -i, occasionally -a); -- * `pres_sub_unstressed` (which assumes the form of pres_sub_1p minus the -m, hence ends in -e or -i). -- Save stem for use in add_categories_and_annotation() for determining the conjugation class. stems.stem = bst.stem or base.stem local eix_infix_stem if base.conj_vowel == "i" then -- Save eix_infix value for use in add_categories_and_annotation() for determining whether consonant -- alternations exist. stems.eix_infix = bst.eix_infix or bst.g_infix and "-" or "+" eix_infix_stem = flatmap_general(stems.eix_infix, function(form) if form == "+" then return map_general(stems.stem, function(form) local stem_base, conj_vowel = split_conj_vowel(form) return combine(stem_base, "eixe") end) elseif form == "-" then return stems.stem else return form end end) end local stressed_stem = bst.stressed_stem or eix_infix_stem or stems.stem local unstressed_stem = bst.unstressed_stem or stems.stem -- Add the 'g' that is characteristic of g-infix verbs. We remove a stem-final v, e.g. [[beure]] with stem 'beve' -- becomes 'beg'. local function add_g(stemforms) return map_general(stemforms, function(form) local stem_base, conj_vowel = split_conj_vowel(form) stem_base = stem_base:gsub("v$", "") return combine(stem_base, "g") end) end -- Add the 'u' of the pres_3s that is characteristic of g-infix verbs (and conjugation vowel 'e', later removed). -- We remove a stem-final v, as well as i as part of a diphthong, e.g. [[beure]] with stem 'beve' becomes 'beue' -- and [[veure]] with stem 'veie' becomes 'veue' (but [[riure]] with stem 'rie' becomes 'riue' not '#rue'). We -- don't add -u after a consonant, e.g. [[doldre]] with stem 'dole' becomes 'dole' not '#dolue'. local function add_u(stemforms) return map_general(stemforms, function(form) local stem_base, conj_vowel = split_conj_vowel(form) if stem_base:find("v$") then stem_base = stem_base:gsub("v$", "") else stem_base = rsub(stem_base, "(" .. V .. ")i$", "%1") end -- Add u after vowel but not after another u, so we get pres_3p 'duen' of [[dur]] not '#duuen'. if rfind(stem_base, V .. "$") and not stem_base:find("u$") then return combine(stem_base, "u") else return stem_base end end) end local stressed_g_infix, unstressed_g_infix, g_infix_pres_stressed if bst.g_infix then local function flatmap_g_infix(default) return flatmap_general(bst.g_infix, function(form) if form == "+" then return default else return form end end) end stressed_g_infix = flatmap_g_infix(add_g(stressed_stem)) unstressed_g_infix = flatmap_g_infix(add_g(unstressed_stem)) g_infix_pres_stressed = add_u(stressed_stem) end stems.pres_unstressed = bst.pres_unstressed or unstressed_stem stems.pres_stressed = -- If no_pres_stressed given, pres_stressed stem should be empty so no forms are generated. base.no_pres_stressed and {} or bst.pres_stressed or g_infix_pres_stressed or map_general(stressed_stem, function(form) local stem_base, conj_vowel = split_conj_vowel(form) return stem_base end) stems.pres1s = -- If no_pres_stressed given, pres1s stem should be empty so no forms are generated. base.no_pres_stressed and {} or stressed_g_infix or map_general(stems.pres_stressed, function(form) return combine(form, "o") end) stems.pres3s = -- If no_pres_stressed given, pres3s stem should be empty so no forms are generated. base.no_pres_stressed and {} or bst.pres3s or map_general(stems.pres_stressed, function(form) if base.conj_vowel == "a" then return combine(form, "a") elseif rfind(form, C .. "[lr]$") and not rfind(form, V .. "ll$") then return combine(form, "e") else return form end end) stems.pres3p = -- If no_pres_stressed given, pres3p stem should be empty so no forms are generated. base.no_pres_stressed and {} or map_general(stems.pres_stressed, function(form) return combine(form, "en") end) local function compute_impf_stem(with_accent) return map_general(stems.pres_unstressed, function(form) local stem_base, conj_vowel = split_conj_vowel(form) if conj_vowel == "a" then return combine(stem_base, with_accent and "àv" or "av") elseif stem_base:find("i#?$") then form = form:gsub("i#?$", "") return combine(rmatch(stem_base, "^(.-)" .. V .. "*$"), with_accent and "èi" or "ei") else return combine(stem_base, with_accent and "í" or "i") -- i -> ï after a vowel end end) end stems.impf1 = bst.impf1 or compute_impf_stem(false) stems.impf2 = bst.impf2 or compute_impf_stem(true) stems.pret = bst.pret or unstressed_g_infix and map_general(unstressed_g_infix, function(form) return combine(form, "é") end ) or map_general(unstressed_stem, function(form) local accent_conj_vowel = { a = "à", e = "é", i = "í", } local stem_base, conj_vowel = split_conj_vowel(form) return combine(stem_base, accent_conj_vowel[conj_vowel]) end) stems.fut = bst.fut or base.inf_stem stems.cond = bst.cond or map_general(stems.fut, function(form) return combine(form, "í") end) stems.pres_sub_stressed = bst.pres_sub_stressed or stressed_g_infix and map_general(stressed_g_infix, function(form) return combine(form, "i") end) or map_general(stressed_stem, function(form) local stem_base, conj_vowel = split_conj_vowel(form) return combine(stem_base, "i", "is pres_sub_stressed") end) stems.pres_sub_unstressed = bst.pres_sub_unstressed or unstressed_g_infix and map_general(unstressed_g_infix, function(form) return combine(form, "e") end) or map_general(unstressed_stem, function(form) local stem_base, conj_vowel = split_conj_vowel(form) return combine(stem_base, conj_vowel == "i" and conj_vowel or "e") end) stems.impf_sub = bst.impf_sub or map_general(stems.pret, function(form) local stem_base = rmatch(form, "^(.*)à$") -- already in "back" form, no need to convert if stem_base then return combine(stem_base, "é") else return form end end) stems.pp = bst.pp or unstressed_g_infix and map_general(unstressed_g_infix, function(form) return combine(form, "ud") end ) or map_general(unstressed_stem, function(form) local stem_base, conj_vowel = split_conj_vowel(form) -- use combine() so we get 'abduïd' from 'abdu-' of [[abduir]], 'seguid' from 'seg-' from [[seguir]], etc. return combine(stem_base, (conj_vowel == "e" and "u" or conj_vowel) .. "d") end) end local function a_to_e(base, stems, suffix) return map_general(stems, function(form) local stem_base = form:match("^(.-)a$") if stem_base then suffix = "e" .. suffix else stem_base = form end return combine_stem_ending(base, stem_base, suffix, "is full word") end) end local function add_present_indic(base) local stems = base.output_stems local function addit(slot, stems, ending) add3(base, "pres_" .. slot, stems, ending) end addit("1s", stems.pres1s, "") insert_forms(base, "pres_2s", a_to_e(base, stems.pres3s, "s")) addit("3s", stems.pres3s, "") insert_forms(base, "pres_1p", a_to_e(base, stems.pres_unstressed, "m")) insert_forms(base, "pres_2p", a_to_e(base, stems.pres_unstressed, "u")) addit("3p", stems.pres3p, "") end local function add_present_subj(base) local stems = base.output_stems local function addit(slot, stems, ending) add3(base, "pres_sub_" .. slot, stems, ending) end -- Regular -ar verb: [[amar]]: ami, amis, ami, amem, ameu, amin -- Regular -re verb: [[batre]]: bati, batis, bati, batem, bateu, batin (same as -ar verb) -- Regular -ir verb, no -eix- infix: [[dormir]]: dormi, dormis, dormi, dormim, dormiu, dormin -- Regular -ir verb, -eix- infix: [[imprimir]]: imprimeixi, imprimeixis, imprimeixi, imprimim, imprimiu, imprimeixin -- Stem changing in 123s/3p vs. 12p: -- * -eix- infix (-eix- in all stressed forms: 123s/3p of pres ind/sub, 2s imp) -- * [[collir]]: culli, cullis, culli, collim, colliu, cullin (cull- in all stressed forms) -- * [[cabre]]: càpiga, càpigues, càpiga, capiguem, capigueu, càpiguen (also different endings) addit("1s", stems.pres_sub_stressed, "") insert_forms(base, "pres_sub_2s", a_to_e(base, stems.pres_sub_stressed, "s")) addit("3s", stems.pres_sub_stressed, "") addit("1p", stems.pres_sub_unstressed, "m") addit("2p", stems.pres_sub_unstressed, "u") insert_forms(base, "pres_sub_3p", a_to_e(base, stems.pres_sub_stressed, "n")) end local function add_finite_non_present(base) local stems = base.output_stems local function add_tense(slot, stem, s1, s2, s3, p1, p2, p3) add_single_stem_tense(base, slot, stem, s1, s2, s3, p1, p2, p3) end add_tense("impf", stems.impf1, "a", "es", "a", nil, nil, "en") add_tense("impf", stems.impf2, nil, nil, nil, "em", "eu", nil) -- pret_1s ends in -í regardless of the normal vowel of the stem. insert_forms(base, "pret_1s", map_general(stems.pret, function(form) local stem_base, conj_vowel = rmatch(form, "^(.*)(" .. V .. ")$") if not stem_base then error(("Internal error: Preterite stem '%s' doesn't end in vowel"):format(form)) end if rfind(conj_vowel, front_vowel_c) then stem_base = com.front_to_back(stem_base) end -- Use combine_stem_ending() to handle back-to-front conversions, e.g. pegà -> peguí for [[pegar]] and ensure -- that the prefix gets added. return combine_stem_ending(base, stem_base, "í", "is full word") end)) -- * at the beginning of the ending means to remove an accent from the last vowel of the preterite stem. add_tense("pret", stems.pret, nil, "*res", "", "rem", "reu", "*ren") -- * at the beginning of the ending means to remove an accent from the last vowel of the imperfect subjunctive stem. add_tense("impf_sub", stems.impf_sub, "s", "*ssis", "s", "ssim", "ssiu", "*ssin") add_tense("fut", stems.fut, "é", "às", "à", "em", "eu", "an") add_tense("cond", stems.cond, "*a", "*es", "*a", "em", "eu", "*en") end local function add_non_finite_forms(base) local stems = base.output_stems local function addit(slot, stems, ending, footnotes) add3(base, slot, stems, ending, footnotes) end insert_form(base, "infinitive", {form = base.orig_verb}) -- Also insert "infinitive + reflexive pronoun" combinations if we're handling a reflexive verb. See comment below -- for "gerund + reflexive pronoun" combinations. if base.refl then for _, persnum in ipairs(person_number_list) do insert_form(base, "infinitive_" .. persnum, {form = base.orig_verb}) end end -- Gerunds don't have an umlaut over the i in cases like 'abduint' of 'abduir' (not '#abduïnt'). local pres_unstressed_no_umlaut = map_general(stems.pres_unstressed, function(form) return rsub(form, "ï$", "i") end) addit("gerund", pres_unstressed_no_umlaut, "nt") -- Also insert "gerund + reflexive pronoun" combinations if we're handling a reflexive verb. We insert exactly the -- same form as for the bare gerund; later on in add_reflexive_or_fixed_clitic_to_forms(), we add the appropriate -- clitic pronouns. It's important not to do this for non-reflexive verbs, because in that case, the clitic -- pronouns won't be added, and {{ca-verb form of}} will wrongly consider all these combinations as possible -- inflections of the bare gerund. Thanks to [[User:JeffDoozan]] for this bug fix. if base.refl then for _, persnum in ipairs(person_number_list) do addit("gerund_" .. persnum, pres_unstressed_no_umlaut, "nt") end end addit("pp_ms", stems.pp, "") if not base.pp_inv then addit("pp_fs", stems.pp, "a") -- make_plural() handles the complexities of e.g. 'vist' of [[veure]] -> 'vistos'/'vists' and 'romàs' of -- [[romandre]] -> 'romasos'. We need to use flatmap_general() because make_plural() may return more than one -- plural, and we need to use map_general() on the result, applying combine_stem_ending(), to ensure that -- prefixes get properly added and plurals like 'amads' of stem 'amad' of [[amar]] get converted to 'amats'. insert_forms(base, "pp_mp", map_general(flatmap_general(stems.pp, function(form) -- Remove any # indicating that an accent will be dropped; it will be dropped in any case by make_plural(). form = form:gsub("#$", "") return com.make_plural(form, "m") end), function(form) return combine_stem_ending(base, form, "", "is full word") end)) addit("pp_fp", stems.pp, "es") end end local function add_imperatives(base) if base.noimp then return end -- Copy pres3s to imperative since they are almost always the same. insert_forms(base, "imp_2s", iut.map_forms(base.forms.pres_3s, function(form) return form end)) -- Copy pres2p to imperative plural since they are almost always the same. insert_forms(base, "imp_2p", iut.map_forms(base.forms.pres_2p, function(form) return form end)) -- Copy subjunctives to imperatives. for _, persnum in ipairs({"3s", "1p", "3p"}) do local from = "pres_sub_" .. persnum local to = "imp_" .. persnum insert_forms(base, to, iut.map_forms(base.forms[from], function(form) return form end)) end end local function fix_double_umlauts(base) for slot, forms in pairs(base.forms) do for _, form in ipairs(forms) do form.form = form.form:gsub("üï", "uï") end end end local function process_slot_overrides(base, filter_slot, reflexive_only) local overrides = reflexive_only and base.basic_reflexive_only_overrides or base.basic_overrides for slot, forms in pairs(overrides) do if not filter_slot or filter_slot(slot) then add3(base, slot, forms, "", nil, "allow overrides") end end end local function link_clitic(clitic) return (clitic:gsub("([^ %-]+)", "[[%1]]")) end -- Prefix `form` with `clitic`, adding fixed text `between` between them. Add links as appropriate unless the user -- requested no links. Check whether form already has brackets (as will be the case if the form has a fixed clitic). local function prefix_clitic_to_form(base, clitic, between, form) if base.alternant_multiword_spec.args.noautolinkverb then return clitic .. between .. form else local clitic_pref = link_clitic(clitic) .. between if form:find("%[%[") then return clitic_pref .. form else return clitic_pref .. "[[" .. form .. "]]" end end end -- Suffix `form` with `clitic`. Add links as appropriate unless the user requested no links. Check whether form already -- has brackets (as will be the case if the form has a fixed clitic). local function suffix_clitic_to_form(base, clitic, form) local autolink = not base.alternant_multiword_spec.args.noautolinkverb if base.alternant_multiword_spec.args.noautolinkverb then return form .. clitic else local clitic_suf = link_clitic(clitic) if form:find("%[%[") then return form .. clitic_suf else return "[[" .. form .. "]]" .. clitic_suf end end end -- Add a reflexive pronoun or fixed clitic (FIXME: not working), as appropriate to the base forms that were generated. -- `do_joined` means to do only the forms where the pronoun is joined to the end of the form; otherwise, do only the -- forms where it is not joined and precedes the form. local function add_reflexive_or_fixed_clitic_to_forms(base, do_reflexive, do_joined) for _, slotaccel in ipairs(base.alternant_multiword_spec.verb_slots_basic) do local slot, accel = unpack(slotaccel) local persnum if slot:find("[123]") then persnum = slot:match("^.*_(.-)$") else persnum = "3s" end local function get_proclitic(form) --if not do_reflexive then -- return base.clitic if form:find("^[aeiouh]") then return proclitic_elided_person_number_to_reflexive_pronoun[persnum] else return proclitic_non_elided_person_number_to_reflexive_pronoun[persnum] end end local function get_enclitic(form) --if not do_reflexive then -- return base.clitic if rfind(form, C .. "$") or rfind(form, V .. "[iu]$") and not form:find("[gq]ui$") then return enclitic_non_elided_person_number_to_reflexive_pronoun[persnum] else return enclitic_elided_person_number_to_reflexive_pronoun[persnum] end end if base.forms[slot] then if do_reflexive and slot:find("^pp_") or slot == "infinitive_linked" then -- do nothing with reflexive past participles or with infinitive linked (handled at the end) elseif slot:find("^neg_imp_") then error("Internal error: Should not have forms set for negative imperative at this stage") else local slot_has_suffixed_clitic = slot:find("infinitive") or slot:find("gerund") or slot:find("^imp_") -- Maybe generate non-reflexive parts and separated syntactic variants for use in -- {{ca-verb form of}}. See comment in add_slots() above `need_special_verb_form_of_slots`. -- Check for do_joined so we only run this code once. if do_reflexive and do_joined and base.alternant_multiword_spec.source_template == "ca-verb form of" and -- Skip personal variants of infinitives and gerunds so we don't think [[arrependendo]] is a -- non-reflexive equivalent of [[arrependendo-me]]. not slot:find("infinitive_") and not slot:find("gerund_") then -- Clone the forms because we will be destructively modifying them just below, adding the reflexive -- pronoun. insert_forms(base, slot .. "_non_reflexive", mw.clone(base.forms[slot])) if slot_has_suffixed_clitic then insert_forms(base, slot .. "_variant", iut.map_forms(base.forms[slot], function(form) return prefix_clitic_to_form(base, get_proclitic(form), "... ", form) end)) end end if slot_has_suffixed_clitic then if do_joined then -- Add clitic after form. for _, form in ipairs(base.forms[slot]) do form.form = suffix_clitic_to_form(base, get_enclitic(form.form), form.form) end end elseif not do_joined then -- Add clitic before form. for _, form in ipairs(base.forms[slot]) do form.form = prefix_clitic_to_form(base, get_proclitic(form.form), "", form.form) end end end end end end local function handle_infinitive_linked(base) -- Compute linked versions of potential lemma slots, for use in {{ca-verb}}. -- We substitute the original lemma (before removing links) for forms that -- are the same as the lemma, if the original lemma has links. for _, slot in ipairs({"infinitive"}) do insert_forms(base, slot .. "_linked", iut.map_forms(base.forms[slot], function(form) if form == base.lemma and rfind(base.linked_lemma, "%[%[") then return base.linked_lemma else return form end end)) end end local function generate_negative_imperatives(base) if base.noimp then return end -- Copy subjunctives to negative imperatives, preceded by "no". for _, persnum in ipairs(neg_imp_person_number_list) do local from = "pres_sub_" .. persnum local to = "neg_imp_" .. persnum insert_forms(base, to, iut.map_forms(base.forms[from], function(form) if base.alternant_multiword_spec.args.noautolinkverb then return "no " .. form elseif form:find("%[%[") then -- already linked, e.g. when reflexive return "[[no]] " .. form else return "[[no]] [[" .. form .. "]]" end end)) end end -- Process specs given by the user using 'addnote[SLOTSPEC][FOOTNOTE][FOOTNOTE][...]'. local function process_addnote_specs(base) for _, spec in ipairs(base.addnote_specs) do for _, slot_spec in ipairs(spec.slot_specs) do slot_spec = "^" .. slot_spec .. "$" for slot, forms in pairs(base.forms) do if rfind(slot, slot_spec) then -- To save on memory, side-effect the existing forms. for _, form in ipairs(forms) do form.footnotes = iut.combine_footnotes(form.footnotes, spec.footnotes) end end end end end end local function add_missing_links_to_forms(base) -- Any forms without links should get them now. Redundant ones will be stripped later. for slot, forms in pairs(base.forms) do for _, form in ipairs(forms) do if not form.form:find("%[%[") then form.form = "[[" .. form.form .. "]]" end end end end local function conjugate_verb(base) construct_stems(base) add_present_indic(base) add_present_subj(base) add_finite_non_present(base) add_non_finite_forms(base) fix_double_umlauts(base) -- do non-reflexive non-imperative slot overrides process_slot_overrides(base, function(slot) return not slot:find("^imp_") and not slot:find("^neg_imp_") end) -- This should happen after process_slot_overrides() in case a derived slot is based on an override -- (as with the imp_3s of [[dar]], [[estar]]). add_imperatives(base) -- do non-reflexive positive imperative slot overrides process_slot_overrides(base, function(slot) return slot:find("^imp_") end) -- We need to add joined reflexives, then joined and non-joined clitics, then non-joined reflexives, so we get -- [[arrepéndete]] but [[no]] [[te]] [[arrependas]]. if base.refl then add_reflexive_or_fixed_clitic_to_forms(base, "do reflexive", "do joined") process_slot_overrides(base, nil, "do reflexive") -- do reflexive-only slot overrides add_reflexive_or_fixed_clitic_to_forms(base, "do reflexive", false) end -- This should happen after add_reflexive_or_fixed_clitic_to_forms() so negative imperatives get the reflexive pronoun -- and clitic in them. generate_negative_imperatives(base) -- do non-reflexive negative imperative slot overrides -- FIXME: What about reflexive negative imperatives? process_slot_overrides(base, function(slot) return slot:find("^neg_imp_") end) -- This should happen before add_missing_links_to_forms() so that the comparison `form == base.lemma` -- in handle_infinitive_linked() works correctly and compares unlinked forms to unlinked forms. handle_infinitive_linked(base) process_addnote_specs(base) if not base.alternant_multiword_spec.args.noautolinkverb then add_missing_links_to_forms(base) end end local function parse_indicator_spec(angle_bracket_spec) -- Store the original angle bracket spec so we can reconstruct the overall conj spec with the lemma(s) in them. local base = { angle_bracket_spec = angle_bracket_spec, user_basic_overrides = {}, user_stems = {}, addnote_specs = {}, } local function parse_err(msg) error(msg .. ": " .. angle_bracket_spec) end local function fetch_footnotes(separated_group) local footnotes for j = 2, #separated_group - 1, 2 do if separated_group[j + 1] ~= "" then parse_err("Extraneous text after bracketed footnotes: '" .. table.concat(separated_group) .. "'") end if not footnotes then footnotes = {} end table.insert(footnotes, separated_group[j]) end return footnotes end local inside = angle_bracket_spec:match("^<(.*)>$") assert(inside) if inside == "" then return base end local segments = put.parse_balanced_segment_run(inside, "[", "]") local dot_separated_groups = put.split_alternating_runs(segments, "%.") for i, dot_separated_group in ipairs(dot_separated_groups) do local first_element = dot_separated_group[1] if first_element == "addnote" then local spec_and_footnotes = fetch_footnotes(dot_separated_group) if #spec_and_footnotes < 2 then parse_err("Spec with 'addnote' should be of the form 'addnote[SLOTSPEC][FOOTNOTE][FOOTNOTE][...]'") end local slot_spec = table.remove(spec_and_footnotes, 1) local slot_spec_inside = rmatch(slot_spec, "^%[(.*)%]$") if not slot_spec_inside then parse_err("Internal error: slot_spec " .. slot_spec .. " should be surrounded with brackets") end local slot_specs = rsplit(slot_spec_inside, ",") -- FIXME: Here, [[Module:it-verb]] called strip_spaces(). Generally we don't do this. Should we? table.insert(base.addnote_specs, {slot_specs = slot_specs, footnotes = spec_and_footnotes}) elseif indicator_flags[first_element] then if #dot_separated_group > 1 then parse_err("No footnotes allowed with '" .. first_element .. "' spec") end if base[first_element] then parse_err("Spec '" .. first_element .. "' specified twice") end base[first_element] = true elseif first_element:find("^var:") then if #dot_separated_group > 1 then parse_err(("Can't attach footnotes to 'var:' spec '%s'"):format(first_element)) end base.var = first_element:match("^var:(.*)$") elseif first_element:find(":") then local colon_separated_groups = put.split_alternating_runs(dot_separated_group, "%s*:%s*") local first_element = colon_separated_groups[1][1] if #colon_separated_groups[1] > 1 then parse_err("Can't attach footnotes directly to '" .. first_element .. "' spec; attach them to the " .. "colon-separated values following the initial colon") end if overridable_stems[first_element] then if base.user_stems[first_element] then parse_err("Overridable stem '" .. first_element .. "' specified twice") end table.remove(colon_separated_groups, 1) base.user_stems[first_element] = overridable_stems[first_element](colon_separated_groups, {prefix = first_element, base = base, parse_err = parse_err, fetch_footnotes = fetch_footnotes}) else -- assume a basic override; we validate further later when the possible slots are available if base.user_basic_overrides[first_element] then parse_err("Basic override '" .. first_element .. "' specified twice") end table.remove(colon_separated_groups, 1) base.user_basic_overrides[first_element] = allow_multiple_values_for_override(colon_separated_groups, {prefix = first_element, base = base, parse_err = parse_err, fetch_footnotes = fetch_footnotes}, "is form override") end else parse_err("Unrecognized spec '" .. first_element .. "'") end end return base end -- Normalize all lemmas, substituting the pagename for blank lemmas and adding links to multiword lemmas. local function normalize_all_lemmas(alternant_multiword_spec, head) -- (1) Add links to all before and after text. Remember the original text so we can reconstruct the verb spec later. if not alternant_multiword_spec.args.noautolinktext then iut.add_links_to_before_and_after_text(alternant_multiword_spec, "remember original") end -- (2) Remove any links from the lemma, but remember the original form so we can use it below in the 'lemma_linked' -- form. iut.map_word_specs(alternant_multiword_spec, function(base) if base.lemma == "" then base.lemma = head end base.user_specified_lemma = base.lemma base.lemma = m_links.remove_links(base.lemma) local refl_verb = base.lemma local verb, refl = rmatch(refl_verb, "^(.-)%-(se)$") if not verb then verb, refl = rmatch(refl_verb, "^(.-)('s)$") end if not verb then verb, refl = refl_verb, nil end base.user_specified_verb = verb base.refl = refl base.verb = base.user_specified_verb local linked_lemma if alternant_multiword_spec.args.noautolinkverb or base.user_specified_lemma:find("%[%[") then linked_lemma = base.user_specified_lemma elseif base.refl then -- Reconstruct the linked lemma with separate links around base verb, reflexive pronoun and clitic. linked_lemma = base.user_specified_verb == base.verb and "[[" .. base.user_specified_verb .. "]]" or "[[" .. base.verb .. "|" .. base.user_specified_verb .. "]]" linked_lemma = linked_lemma .. (refl and "-[[" .. refl .. "]]" or "") else -- Add links to the lemma so the user doesn't specifically need to, since we preserve links in multiword -- lemmas and include links in non-lemma forms rather than allowing the entire form to be a link. linked_lemma = iut.add_links(base.user_specified_lemma) end base.linked_lemma = linked_lemma end) end local function detect_indicator_spec(base) if (base.only3s and 1 or 0) + (base.only3sp and 1 or 0) + (base.only3p and 1 or 0) > 1 then error("Only one of 'only3s', 'only3sp' and 'only3p' can be specified") end base.forms = {} base.input_stems = {} base.basic_overrides = {} base.basic_reflexive_only_overrides = {} base.orig_verb = base.verb -- in case of a 'like = "..."' redirect if not base.no_built_in then local function match_built_in_spec(verb, built_in_spec) local prefix, non_prefixed_verb if type(built_in_spec.match) == "function" then prefix, non_prefixed_verb = built_in_spec.match(verb) elseif built_in_spec.match:find("^%^") and rsub(built_in_spec.match, "^%^", "") == verb then -- begins with ^, for exact match, and matches prefix, non_prefixed_verb = "", verb else prefix, non_prefixed_verb = rmatch(verb, "^(.*)(" .. built_in_spec.match .. ")$") end return prefix, non_prefixed_verb end local function find_built_in(verb, var) for _, built_in_spec in ipairs(built_in_conjugations) do local prefix, non_prefixed_verb = match_built_in_spec(verb, built_in_spec) if prefix then if not built_in_spec.var then if var then error(("Can't specify a variant spec 'var:%s' with verb '%s'"):format(var, verb)) end return prefix, non_prefixed_verb, built_in_spec elseif not var then local possible_vars = {} for _, built_in_spec in ipairs(built_in_conjugations) do local prefix, non_prefixed_verb = match_built_in_spec(verb, built_in_spec) if prefix then table.insert(possible_vars, built_in_spec.var) end end error(("For verb '%s', must specify a variant using 'var:...'; possible values are %s"):format( verb, table.concat(possible_vars, ", "))) elseif built_in_spec.var == var then return prefix, non_prefixed_verb, built_in_spec end end end return nil end local prefix, non_prefixed_verb, built_in_spec = find_built_in(base.verb, base.var) if prefix then -- we found a built-in verb if built_in_spec.like then -- we found a redirect to another verb that has the same conjugation, just a different infinitive base.verb = prefix .. built_in_spec.like local new_prefix, new_non_prefixed_verb, new_built_in_spec = find_built_in(base.verb, built_in_spec.likevar) if new_prefix then -- redirected to another built-in verb base.prefix = new_prefix base.non_prefixed_verb = new_non_prefixed_verb built_in_spec = new_built_in_spec else built_in_spec = nil end else base.prefix = prefix base.non_prefixed_verb = non_prefixed_verb end end if built_in_spec then -- we found a built-in verb, possibly redirecting to another built-in verb for stem, forms in pairs(built_in_spec.forms) do if type(forms) == "function" then forms = forms(base, base.prefix) end if stem:find("^refl_") then stem = stem:gsub("^refl_", "") if not base.alternant_multiword_spec.verb_slots_basic_map[stem] then error("Internal error: setting for 'refl_" .. stem .. "' does not refer to a basic verb slot") end base.basic_reflexive_only_overrides[stem] = forms elseif base.alternant_multiword_spec.verb_slots_basic_map[stem] then -- an individual form override of a basic form base.basic_overrides[stem] = forms else base.input_stems[stem] = forms end end end end -- Override built-in-verb stems and overrides with user-specified ones. for stem, values in pairs(base.user_stems) do base.input_stems[stem] = values end for override, values in pairs(base.user_basic_overrides) do if not base.alternant_multiword_spec.verb_slots_basic_map[override] then error("Unrecognized override '" .. override .. "': " .. base.angle_bracket_spec) end base.basic_overrides[override] = values end base.prefix = base.prefix or "" base.non_prefixed_verb = base.non_prefixed_verb or base.verb local inf_stem, suffix = rmatch(base.non_prefixed_verb, "^(.*)(re)$") if not inf_stem then inf_stem, suffix = rmatch(base.non_prefixed_verb, "^(.*)([aeiu]r)$") end if not inf_stem then error("Unrecognized infinitive: " .. base.verb) end -- Remove accents from e.g. [[parèixer]], [[córrer]]. inf_stem = com.remove_accents(inf_stem) -- Save full infinitive stem for use in future and conditional. base.inf_stem = (inf_stem .. suffix):gsub("e$", "") local stem = inf_stem if suffix == "re" then -- verbs in -ldre, -ndre have stem without the d stem = stem:gsub("([ln])d$", "%1") elseif suffix == "ur" then stem = stem .. "u" end base.conj_vowel = (suffix == "re" or suffix == "ur") and "e" or suffix:gsub("r$", "") -- If the stem is followed by a front vowel, convert it to its "back" form before calling combine_stem_ending(), -- which expects the "back" form of the stem and may convert it back to the "front" form. Don't do this conversion -- for ï so we leave [[arguïr]] (underlyingly 'argüïr') as 'argu' ("back" form), which becomes 'argü' ("front" form) -- before front vowel ï and we end up with base.stem containing the underlying form 'argüï'. We remove the first of -- two umlauts in a row in a postprocessing step (fix_double_umlauts()). if rfind(suffix, "^[ei]") then stem = com.front_to_back(stem) end -- Use combine_stem_ending() so we get ï if necessary. base.stem = combine_stem_ending(base, stem, base.conj_vowel, false, "dont include prefix") -- Propagate built-in-verb indicator flags to `base` and combine with user-specified flags. for indicator_flag, _ in pairs(indicator_flags) do base[indicator_flag] = base[indicator_flag] or base.input_stems[indicator_flag] end end local function detect_all_indicator_specs(alternant_multiword_spec) -- Propagate some settings up; some are used internally, others by [[Module:pt-headword]]. iut.map_word_specs(alternant_multiword_spec, function(base) -- Internal indicator flags. Do these before calling detect_indicator_spec() because add_slots() uses them. for _, prop in ipairs { "refl", "clitic" } do if base[prop] then alternant_multiword_spec[prop] = true end end base.alternant_multiword_spec = alternant_multiword_spec end) add_slots(alternant_multiword_spec) iut.map_word_specs(alternant_multiword_spec, function(base) detect_indicator_spec(base) -- User-specified indicator flags. Do these after calling detect_indicator_spec() because the latter may set these -- indicators for built-in verbs. for prop, _ in pairs(indicator_flags) do if base[prop] then alternant_multiword_spec[prop] = true end end end) end local function add_categories_and_annotation(alternant_multiword_spec, base, multiword_lemma) local function insert_ann(anntype, value) m_table.insertIfNot(alternant_multiword_spec.annotation[anntype], value) end local function insert_cat(cat, also_when_multiword) -- Don't place multiword terms in categories like 'Catalan verbs ending in -ar' to avoid spamming the -- categories with such terms. if also_when_multiword or not multiword_lemma then m_table.insertIfNot(alternant_multiword_spec.categories, "カタルーニャ語 " .. cat) end end if check_for_red_links and alternant_multiword_spec.source_template == "ca-conj" and multiword_lemma then for _, slot_and_accel in ipairs(alternant_multiword_spec.all_verb_slots) do local slot = slot_and_accel[1] local forms = base.forms[slot] local must_break = false if forms then for _, form in ipairs(forms) do if not form.form:find("%[%[") then local title = mw.title.new(form.form) if title and not title.exists then insert_cat("活用表に赤リンクを含む動詞") must_break = true break end end end end if must_break then break end end end map_general(base.output_stems.stem, function(stem) local stem_base, conj_vowel = split_conj_vowel(stem) local need_no_eix_infix = true if conj_vowel ~= base.conj_vowel then insert_ann("conj", "[[付録:カタルーニャ語の動詞#不規則動詞|混合活用]]") elseif conj_vowel == "a" then insert_ann("conj", "[[付録:カタルーニャ語の動詞#第一変化動詞|第一変化]]") insert_cat("第一変化動詞") elseif conj_vowel == "e" then insert_ann("conj", "[[付録:カタルーニャ語の動詞#第二変化動詞|第二変化]]") insert_cat("第二変化動詞") elseif conj_vowel == "i" then insert_ann("conj", "[[付録:カタルーニャ語の動詞#第三変化動詞|第三変化]]") insert_cat("第三変化動詞") need_no_eix_infix = false map_general(base.output_stems.eix_infix, function(form) if form == "+" then insert_ann("eix_infix", "接中辞-eix-有り") insert_cat("-eix-を含む第三変化動詞") elseif form == "-" then insert_ann("eix_infix", "接中辞-eix-無し") insert_cat("-eix-を含まない第三変化動詞") end end) else error(("Internal error: Stem '%s' doesn't end in conjugation vowel a/e/i and split_conj_vowel() didn't catch it" ):format(stem)) end if need_no_eix_infix then insert_ann("eix_infix", "接中辞無し") end end) if base.input_stems.g_infix then insert_ann("g_infix", "軟口蓋接中辞有り") insert_cat("軟口蓋接中辞を含む動詞") else insert_ann("g_infix", "接中辞無し") end if base.output_stems.irreg then insert_ann("irreg", "不規則") insert_cat("不規則動詞") else insert_ann("irreg", "規則") end if base.only3s then insert_ann("defective", "非人称") insert_cat("非人称動詞") elseif base.only3sp then insert_ann("defective", "第三人称のみ") insert_cat("第三人称動詞") elseif base.only3p then insert_ann("defective", "第三人称複数のみ") insert_cat("第三人称複数動詞") elseif base.no_pres_stressed then insert_ann("defective", "欠如") insert_cat("欠如動詞") else insert_ann("defective", "規則") end --if base.clitic then -- insert_cat("verbs with lexical clitics") --end if base.refl then insert_cat("再帰動詞") end local stem_base, conj_vowel = split_conj_vowel(base.stem) local cons_alt if conj_vowel == "i" and base.output_stems.eix_infix == "+" then -- no alternations in verbs like [[afligir]] because all endings are front elseif stem_base:find("ç$") then cons_alt = "ç-c" elseif stem_base:find("c$") then cons_alt = "c-qu" elseif stem_base:find("g$") then cons_alt = "g-gu" elseif stem_base:find("gu$") then cons_alt = "gu-gü" elseif stem_base:find("j$") then cons_alt = "j-g" elseif stem_base:find("qu$") then cons_alt = "qu-qü" end if cons_alt then local desc = cons_alt .. " alternation" insert_ann("cons_alt", desc) insert_cat(desc .. "交替の動詞") else insert_ann("cons_alt", "non-alternating") end end -- Compute the categories to add the verb to, as well as the annotation to display in the -- conjugation title bar. We combine the code to do these functions as both categories and -- title bar contain similar information. local function compute_categories_and_annotation(alternant_multiword_spec) alternant_multiword_spec.categories = {} local ann = {} alternant_multiword_spec.annotation = ann ann.conj = {} ann.g_infix = {} ann.eix_infix = {} ann.irreg = {} ann.defective = {} ann.cons_alt = {} local multiword_lemma = false for _, form in ipairs(alternant_multiword_spec.forms.infinitive) do if form.form:find(" ") then multiword_lemma = true break end end iut.map_word_specs(alternant_multiword_spec, function(base) add_categories_and_annotation(alternant_multiword_spec, base, multiword_lemma) end) local ann_parts = {} local conj = table.concat(ann.conj, " or ") if conj ~= "" then table.insert(ann_parts, conj) end local eix_infix = table.concat(ann.eix_infix, " or ") if eix_infix ~= "" and eix_infix ~= "no infix" then table.insert(ann_parts, eix_infix) end local irreg = table.concat(ann.irreg, " or ") if irreg ~= "" and irreg ~= "regular" then table.insert(ann_parts, irreg) end local g_infix = table.concat(ann.g_infix, " or ") if g_infix ~= "" and g_infix ~= "no infix" then table.insert(ann_parts, g_infix) end local defective = table.concat(ann.defective, " or ") if defective ~= "" and defective ~= "regular" then table.insert(ann_parts, defective) end local cons_alt = table.concat(ann.cons_alt, " or ") if cons_alt ~= "" and cons_alt ~= "non-alternating" then table.insert(ann_parts, cons_alt) end alternant_multiword_spec.annotation = table.concat(ann_parts, ", ") end local function show_forms(alternant_multiword_spec) local lemmas = alternant_multiword_spec.forms.infinitive alternant_multiword_spec.lemmas = lemmas -- save for later use in make_table() local reconstructed_verb_spec = iut.reconstruct_original_spec(alternant_multiword_spec) local function transform_accel_obj(slot, formobj, accel_obj) -- No accelerators for negative imperatives, which are always multiword and derived directly from the -- present subjunctive. if slot:find("^neg_imp") then return nil end if accel_obj then accel_obj.form = "verb-form-" .. reconstructed_verb_spec end return accel_obj end local props = { lang = lang, lemmas = lemmas, transform_accel_obj = transform_accel_obj, slot_list = alternant_multiword_spec.verb_slots_basic, } iut.show_forms(alternant_multiword_spec.forms, props) alternant_multiword_spec.footnote_basic = alternant_multiword_spec.forms.footnote end local notes_template = [=[ <div class="roa-footnote-outer-div" style="width:100%;"> <div class="roa-footnote-inner-div"> {footnote} </div></div> ]=] local basic_table = [=[ {description}<div class="NavFrame"> <div class="NavHead">&nbsp; &nbsp; {title}の活用</div> <div class="NavContent"> {\op}| class="roa-inflection-table" data-toggle-category="inflection" |- ! colspan="3" class="roa-nonfinite-header" | <span title="infinitiu">不定詞</span> | colspan="5" | {infinitive} |- ! colspan="3" class="roa-nonfinite-header" | <span title="gerundi">現在分詞</span> | colspan="5" | {gerund} |- ! rowspan="3" colspan="2" class="roa-nonfinite-header" | <span title="participi passat">過去分詞</span> | colspan="2" class="roa-nonfinite-header" | ! colspan="2" class="roa-nonfinite-header" | 男性 ! colspan="2" class="roa-nonfinite-header" | 女性 |- ! colspan="2" class="roa-nonfinite-header" | 単数 | colspan="2" | {pp_ms} | colspan="2" | {pp_fs} |- ! colspan="2" class="roa-nonfinite-header" | 複数 | colspan="2" | {pp_mp} | colspan="2" | {pp_fp} |- ! colspan="2" rowspan="2" class="roa-person-number-header" | 人称 ! colspan="3" class="roa-person-number-header" | 単数 ! colspan="3" class="roa-person-number-header" | 複数 |- ! class="roa-person-number-header" style="width:12.5%;" | 第一人称 ! class="roa-person-number-header" style="width:12.5%;" | 第二人称 ! class="roa-person-number-header" style="width:12.5%;" | 第三人称 ! class="roa-person-number-header" style="width:12.5%;" | 第一人称 ! class="roa-person-number-header" style="width:12.5%;" | 第二人称 ! class="roa-person-number-header" style="width:12.5%;" | 第三人称 |- ! rowspan="6" class="roa-indicative-left-rail" | <span title="indicatiu">直説法</span> ! class="roa-indicative-left-rail" | ! class="roa-indicative-left-rail" | <<jo>> ! class="roa-indicative-left-rail" | <<tu>> ! class="roa-indicative-left-rail" | <<ell>>/<<ella>><br /><<vostè>> ! class="roa-indicative-left-rail" | <<nosaltres>><br /><<nós>> ! class="roa-indicative-left-rail" | <<vosaltres>><br /><<vós>> ! class="roa-indicative-left-rail" | <<ells>>/<<elles>><br /><<vostès>> |- ! class="roa-indicative-left-rail" style="height:3em;" | <span title="present">現在</span> | {pres_1s} | {pres_2s} | {pres_3s} | {pres_1p} | {pres_2p} | {pres_3p} |- ! class="roa-indicative-left-rail" style="height:3em;" | <span title="imperfet">不完了過去</span> | {impf_1s} | {impf_2s} | {impf_3s} | {impf_1p} | {impf_2p} | {impf_3p} |- ! class="roa-indicative-left-rail" style="height:3em;" | <span title="futur">未来</span> | {fut_1s} | {fut_2s} | {fut_3s} | {fut_1p} | {fut_2p} | {fut_3p} |- ! class="roa-indicative-left-rail" style="height:3em;" | <span title="passat">完了過去</span> | {pret_1s} | {pret_2s} | {pret_3s} | {pret_1p} | {pret_2p} | {pret_3p} |- ! class="roa-indicative-left-rail" style="height:3em;" | <span title="condicional">可能法</span> | {cond_1s} | {cond_2s} | {cond_3s} | {cond_1p} | {cond_2p} | {cond_3p} |- ! class="roa-subjunctive-left-rail" rowspan="3" | <span title="subjuntiu">接続法</span> ! class="roa-subjunctive-left-rail" | ! class="roa-subjunctive-left-rail" | <<jo>> ! class="roa-subjunctive-left-rail" | <<tu>> ! class="roa-subjunctive-left-rail" | <<ell>>/<<ella>><br /><<vostè>> ! class="roa-subjunctive-left-rail" | <<nosaltres>><br /><<nós>> ! class="roa-subjunctive-left-rail" | <<vosaltres>><br /><<vós>> ! class="roa-subjunctive-left-rail" | <<ells>>/<<elles>><br /><<vostès>> |- ! class="roa-subjunctive-left-rail" style="height:3em;" | <span title="present">現在</span> | {pres_sub_1s} | {pres_sub_2s} | {pres_sub_3s} | {pres_sub_1p} | {pres_sub_2p} | {pres_sub_3p} |- ! class="roa-subjunctive-left-rail" style="height:3em;" rowspan="1" | <span title="imperfet">過去</span> | {impf_sub_1s} | {impf_sub_2s} | {impf_sub_3s} | {impf_sub_1p} | {impf_sub_2p} | {impf_sub_3p} |- ! rowspan="3" class="roa-imperative-left-rail" style="height:3em;" | <span title="imperatiu">命令法</span> ! class="roa-imperative-left-rail" | ! class="roa-imperative-left-rail" | &mdash; ! class="roa-imperative-left-rail" | <<tu>> ! class="roa-imperative-left-rail" | <<vostè>> ! class="roa-imperative-left-rail" | <<nosaltres>> ! class="roa-imperative-left-rail" | <<vosaltres>><br /><<vós>> ! class="roa-imperative-left-rail" | <<vostès>> |- ! class="roa-imperative-left-rail" style="height:3em;" | <span title="afirmatiu">-</span> | &mdash; | {imp_2s} | {imp_3s} | {imp_1p} | {imp_2p} | {imp_3p} |- ! class="roa-imperative-left-rail" style="height:3em;" | <span title="negatiu">禁止</span> (<<no>>) | &mdash; | {neg_imp_2s} | {neg_imp_3s} | {neg_imp_1p} | {neg_imp_2p} | {neg_imp_3p} |{\cl}{notes_clause}</div></div>]=] local function make_table(alternant_multiword_spec) local forms = alternant_multiword_spec.forms forms.title = link_term(alternant_multiword_spec.lemmas[1].form, nil, "term") local ann_parts = {} if alternant_multiword_spec.annotation ~= "" then table.insert(ann_parts, alternant_multiword_spec.annotation) end if alternant_multiword_spec.args.titlenote then table.insert(ann_parts, alternant_multiword_spec.args.titlenote) end local annotation = table.concat(ann_parts, ", ") if annotation ~= "" then forms.title = forms.title .. " (" .. annotation .. ")" end forms.description = "" -- Format the table. forms.footnote = alternant_multiword_spec.footnote_basic forms.notes_clause = forms.footnote ~= "" and m_string_utilities.format(notes_template, forms) or "" local table_with_pronouns = rsub(basic_table, "<<([^<>|]-)|([^<>|]-)>>", link_term) local table_with_pronouns = rsub(table_with_pronouns, "<<(.-)>>", link_term) return require("Module:TemplateStyles")("Module:roa-verb/style.css") .. m_string_utilities.format(table_with_pronouns, forms) end -- Externally callable function to parse and conjugate a verb given user-specified arguments. -- Return value is WORD_SPEC, an object where the conjugated forms are in `WORD_SPEC.forms` -- for each slot. If there are no values for a slot, the slot key will be missing. The value -- for a given slot is a list of objects {form=FORM, footnotes=FOOTNOTES}. function export.do_generate_forms(args, source_template, headword_head) local PAGENAME = mw.loadData("Module:headword/data").pagename local function in_template_space() return mw.title.getCurrentTitle().nsText == "テンプレート" end -- Determine the verb spec we're being asked to generate the conjugation of. This may be taken from the -- current page title or the value of |pagename=; but not when called from {{ca-verb form of}}, where the -- page title is a non-lemma form. Note that the verb spec may omit the infinitive; e.g. it may be "<i-e>". -- For this reason, we use the value of `pagename` computed here down below, when calling normalize_all_lemmas(). local pagename = source_template ~= "ca-verb form of" and args.pagename or PAGENAME local head = headword_head or pagename local arg1 = args[1] if not arg1 then if (pagename == "ca-conj" or pagename == "ca-verb" or pagename == "ca-verb form of") and in_template_space() then arg1 = "amar<>" else arg1 = "<>" end end -- When called from {{ca-verb form of}}, determine the non-lemma form whose inflections we're being asked to -- determine. This normally comes from the page title or the value of |pagename=. local verb_form_of_form if source_template == "ca-verb form of" then verb_form_of_form = args.pagename if not verb_form_of_form then if PAGENAME == "ca-verb form of" and in_template_space() then verb_form_of_form = "ami" else verb_form_of_form = PAGENAME end end end local incorporated_headword_head_into_lemma = false if arg1:find("^<.*>$") then -- missing lemma if head:find(" ") then -- If multiword lemma, try to add arg spec after the first word. -- Try to preserve the brackets in the part after the verb, but don't do it -- if there aren't the same number of left and right brackets in the verb -- (which means the verb was linked as part of a larger expression). local refl_clitic_verb, post = rmatch(head, "^(.-)( .*)$") local left_brackets = rsub(refl_clitic_verb, "[^%[]", "") local right_brackets = rsub(refl_clitic_verb, "[^%]]", "") if #left_brackets == #right_brackets then arg1 = iut.remove_redundant_links(refl_clitic_verb) .. arg1 .. post incorporated_headword_head_into_lemma = true else -- Try again using the form without links. local linkless_head = m_links.remove_links(head) if linkless_head:find(" ") then refl_clitic_verb, post = rmatch(linkless_head, "^(.-)( .*)$") arg1 = refl_clitic_verb .. arg1 .. post else error("Unable to incorporate <...> spec into explicit head due to a multiword linked verb or " .. "unbalanced brackets; please include <> explicitly: " .. arg1) end end else -- Will be incorporated through `head` below in the call to normalize_all_lemmas(). incorporated_headword_head_into_lemma = true end end local function split_bracketed_runs_into_words(bracketed_runs) return put.split_alternating_runs(bracketed_runs, " ", "preserve splitchar") end local parse_props = { parse_indicator_spec = parse_indicator_spec, -- Split words only on spaces, not on hyphens, because that messes up reflexive verb parsing. split_bracketed_runs_into_words = split_bracketed_runs_into_words, allow_default_indicator = true, allow_blank_lemma = true, } local alternant_multiword_spec = iut.parse_inflected_text(arg1, parse_props) alternant_multiword_spec.pos = pos or "verbs" alternant_multiword_spec.args = args alternant_multiword_spec.source_template = source_template alternant_multiword_spec.verb_form_of_form = verb_form_of_form alternant_multiword_spec.incorporated_headword_head_into_lemma = incorporated_headword_head_into_lemma normalize_all_lemmas(alternant_multiword_spec, head) detect_all_indicator_specs(alternant_multiword_spec) local inflect_props = { slot_list = alternant_multiword_spec.all_verb_slots, inflect_word_spec = conjugate_verb, -- We add links around the generated verbal forms rather than allow the entire multiword -- expression to be a link, so ensure that user-specified links get included as well. include_user_specified_links = true, } iut.inflect_multiword_or_alternant_multiword_spec(alternant_multiword_spec, inflect_props) -- Remove redundant brackets around entire forms. for slot, forms in pairs(alternant_multiword_spec.forms) do for _, form in ipairs(forms) do form.form = iut.remove_redundant_links(form.form) end end compute_categories_and_annotation(alternant_multiword_spec) if args.json and source_template == "ca-conj" then return require("Module:JSON").toJSON(alternant_multiword_spec.forms) end return alternant_multiword_spec end -- Entry point for {{ca-conj}}. Template-callable function to parse and conjugate a verb given -- user-specified arguments and generate a displayable table of the conjugated forms. function export.show(frame) local parent_args = frame:getParent().args local params = { [1] = {}, ["titlenote"] = {}, ["noautolinktext"] = {type = "boolean"}, ["noautolinkverb"] = {type = "boolean"}, ["pagename"] = {}, -- for testing/documentation pages ["json"] = {type = "boolean"}, -- for bot use } local args = require("Module:parameters").process(parent_args, params) local alternant_multiword_spec = export.do_generate_forms(args, "ca-conj") if type(alternant_multiword_spec) == "string" then -- JSON return value return alternant_multiword_spec end show_forms(alternant_multiword_spec) return make_table(alternant_multiword_spec) .. require("Module:utilities").format_categories(alternant_multiword_spec.categories, lang, nil, nil, force_cat) end return export 2h2n53b3budgy5t933lpmkq57212n2e 2313410 2313409 2026-08-09T09:28:13Z Kuroco2k 84207 2313410 Scribunto text/plain --[=[ This module implements {{ca-conj}} and provides the underlying conjugation functions for {{ca-verb}} (whose actual formatting is done in [[Module:ca-headword]]). Authorship: Ben Wing <benwing2> ]=] local export = {} --[=[ TERMINOLOGY: -- "slot" = A particular combination of tense/mood/person/number/etc. Example slot names for verbs are "pres_1s" (present indicative first-person singular), "pres_sub_2s" (present subjunctive second-person singular) "impf_sub_3p" (imperfect subjunctive third-person plural). Each slot is filled with zero or more forms. -- "form" = The conjugated Catalan form representing the value of a given slot. -- "lemma" = The dictionary form of a given Catalan term. For Catalan, always the infinitive. ]=] --[=[ FIXME: --]=] local lang = require("Module:languages").getByCode("ca") local m_string_utilities = require("Module:string utilities") local m_links = require("Module:links") local m_table = require("Module:table") local iut = require("Module:inflection utilities") local put = require("Module:parse utilities") local com = require("Module:ca-common") local force_cat = false -- set to true for debugging local check_for_red_links = false -- set to false for debugging local rfind = mw.ustring.find local rmatch = mw.ustring.match local rsplit = mw.text.split local rsubn = mw.ustring.gsub local rsub = com.rsub local u = mw.ustring.char local unpack = unpack or table.unpack -- Lua 5.2 compatibility -- version of rsubn() that returns a 2nd argument boolean indicating whether a substitution was made. local function rsubb(term, foo, bar) local retval, nsubs = rsubn(term, foo, bar) return retval, nsubs > 0 end local function link_term(term, display, face) return m_links.full_link({ lang = lang, term = term, alt = display }, face) end local front_vowel = "eèéiíï" local front_vowel_c = "[" .. front_vowel .. "]" local V = com.V -- vowel regex class local C = com.C -- consonant regex class -- IS_USER_STEM_OVERRIDE is prepended to user-supplied stem overrides to prevent `base.prefix` from being prepended. -- IS_USER_FORM_OVERRIDE is similar but also prevents final devoicing (cf. Balearic pres_1s 'trob' of [[trobar]]). -- Don't use 0xFFF0 in case we call a [[Module:parse-utilities]] function that uses it temporarily. local IS_USER_STEM_OVERRIDE = u(0xFFF1) local IS_USER_FORM_OVERRIDE = u(0xFFF2) --[=[ Irregular verbs: -ldre/-ndre verbs: infinitive pres1s pres3s pres1p impf1s fut1s pret1s sub1s sub1p pp caldre - cal [calent] calia caldrà calgué calgui - calgut,- coldre colc col colem colia coldré colguí colgui colguem colt,colta doldre dolc dol dolem dolia doldré dolguí dolgui dolguem dolgut,dolguda moldre molc mol molem molia moldré molguí molgui molguem molt,molta oldre olc ol olem olia oldré olguí olgui olguem olgut,olguda -soldre -solc -sol -solem -solia -soldré -solguí -solgui -solguem -solt,-solta (absoldre, dissoldre, resoldre) toldre tolc tol tolem tolia toldré tolguí tolgui tolguem tolt,tolta romandre romanc roman romanem romania romandré romanguí romangui romanguem romàs,romasa,romasos encendre encenc encén encenem encenia encendré encenguí encengui encenguem encès,encesa,encesos fendre fenc fen/-fèn fenem fenia fendré fenguí fengui fenguem fes/-fès,fesa,fesos (defendre, ofendre) -pendre -depenc -pèn -penem -penia -pendré -penguí -pengui -penguem -pès,-pesa,-pesos (dependre,despendre,expendre,suspendre) prendre prenc pren/-prèn prenem prenia prendré prenguí prengui prenguem pres/-près,presa,presos (aprendre, comprendre, desprendre, emprendre, reprendre, sorprendre) -tendre -tenc -tén -tenem -tenia -tendré -tenguí -tengui -tenguem -tès,-tesa,-tesos (pres2s: atens, pres3p: atenen) (atendre, contendre, distendre, entendre, estendre, pretendre) vendre venc ven venem venia vendré venguí vengui venguem venut,venuda (malvendre, revendre) fondre fonc fon fonem fonia fondré fonguí fongui fonguem fos/-fós,fosa,fosos (confondre, difondre, infondre, refondre) enfondre enfonc enfon enfonem enfonia enfondré enfonguí enfongui enfonguem enfús,enfusa,enfusos pondre ponc pon ponem ponia pondré ponguí pongui ponguem post,posta,postos (compondre, correspondre, descompondre, respondre) tondre tonc ton tonem tonia tondré tonguí tongui tonguem tos,tosa,tosos cerndre cerno cern cernem cernia cerndré cerní cerni cernem cernut,cernuda -ler verbs (mostly like -ldre verbs): infinitive pres1s pres3s pres1p impf1s fut1s pret1s sub1s sub1p pp caler (var. of caldre) doler (var. of doldre) soler solc sol solem solia soldré solguí solgui solguem solgut,solguda valer/valdre valc val valem valia valdré valguí valgui valguem valgut,valguda (prevaler, equivaler) other -dre/-tre verbs (regular except sometimes pp): infinitive pres1s pres3s pres1p impf1s fut1s pret1s sub1s sub1p pp batre bato bat batem batia batré batí bati batem batut,batuda -metre -meto -met -metem -metia -metré -metí -meti -metem -mès,-mesa,-mesos (ad-, co-, compro-, e-, entremetre's, mal-, o-, per-, pro-, read-, re-, retrans-, sot-, tra-, trans-) perdre perdo perd perdem perdia perdré perdí perdi perdem perdut,perduda -ure verbs infinitive pres1s pres3s pres1p impf1s impf1p fut1s pret1s sub1s sub1p pp caure caic cau caiem queia quèiem cauré caiguí caigui caiguem caigut,caiguda (decaure, recaure) plaure plac plau plaem plaïa plaíem plauré plaguí plagui plaguem plagut,plaguda (complaure) raure rac rau raem raïa raíem rauré raguí ragui raguem ragut,raguda beure bec beu bevem bevia bevíem beuré beguí begui beguem begut,beguda (embeure) creure crec creu creiem creia crèiem creuré creguí cregui creguem cregut,creguda deure dec deu devem devia devíem deuré deguí degui deguem degut,deguda jeure jec jeu jaiem jeia jèiem jauré jaguí jegui jaguem jagut,jaguda (ajeure) lleure - lleu [-] llevia - lleurà llegué llegui - llegut,- seure sec seu seiem seia sèiem seuré seguí segui seguem segut,seguda (asseure) treure trec treu traiem treia trèiem trauré traguí tregui traguem tret,treta (abstreure, atreure, contreure, distreure, extreure, retreure, sostreure) veure veig veu veiem veia vèiem veuré viu,veieres/veres, vegi vegem vist,vista,vists/vistos (entreveure, preveure, reveure) veié/veu,veiérem/vérem riure ric riu riem reia rèiem riuré riguí rigui riguem rigut,riguda (somriure) (e)scriure escric escriu escrivim escrivia escrivíem escriuré escriví/escriguí escrigui escriguem escrit,escrita (circumscriure, descriure, inscriure, prescriure, proscriure, subscriure, transcriure) viure visc viu vivim vivia vivíem viuré visquí visqui visquem viscut,viscuda (conviure, sobreviure) cloure cloc clou cloem cloïa cloíem clouré cloguí clogui cloguem clos,closa,closos (concloure, descloure, encloure, excloure, incloure, recloure) encloure encloc enclou encloem encloïa encloíem enclouré encloguí enclogui encloguem enclòs,enclosa,enclosos coure coc cou coem coïa coíem couré coguí cogui coguem cuit/cogut,cuita/coguda moure moc mou movem movia movíem mouré moguí mogui moguem mogut,moguda (promoure) noure noc nou noem noïa noíem nouré noguí nogui noguem nogut,noguda ploure - plou [plovent] plovia - plourà plogué plogui - plogut,ploguda -nyer verbs (regular except pp) infinitive pres1s pres3s pres1p impf1s fut1s pret1s sub1s sub1p pp atènyer atenyo ateny atenyem atenyia atenyeré atenyí atenyi atenyem atès,atesa,atesos empènyer empenyo empeny empenyem empenyia empenyeré empenyí empenyi empenyem empès,empesa,empesos estrènyer estrenyo estreny estrenyem estrenyia estrenyeré estrenyí estrenyi estrenyem estret,estreta estrènyer (constrènyer,restrènyer) fènyer fenyo feny fenyem fenyia fenyeré fenyí/fenguí fenyi fenyem fenyut/fengut,fenyuda/fenguda pertànyer pertanyo pertany pertanyem pertanyia pertanyeré pertanyí/pertanguí pertanyi pertanyem pertanyut/pertangut,pertanyuda/pertanguda plànyer planyo plany planyem planyia planyeré planyí/planguí planyi planyem plangut/planyut,planguda/planyuda -xer verbs (NOTE: pres2s in -xes) infinitive pres1s pres3s pres1p impf1s fut1s pret1s sub1s sub1p pp créixer creixo creix creixem creixia creixeré creixí/cresquí creixi creixem crescut,crescuda (acréixer,decréixer) conèixer conec coneix coneixem coneixia coneixeré coneguí conegui coneguem conegut,coneguda (desconèixer,reconèixer) merèixer mereixo mereix mereixem mereixia mereixeré mereixí/meresquí mereixi mereixem merescut,merescuda néixer/ neixo/ neix/ naixem naixia naixeré naixí/nasquí neixi/ naixem/nasquem nascut,nascuda nàixer naixo naix naixi (renéixer) parèixer parec pareix pareixem pareixia pareixeré pareguí paregui pareguem paregut,pareguda (aparèixer,comparèixer,desaparèixer,reaparèixer) péixer peixo peix paixem paixia paixeré paixí peixi paixem pascut,pascuda misc. -er verbs infinitive pres1s pres3s pres1p impf1s impf1p fut1s pret1s sub1s sub1p pp córrer corro corre correm corria corríem correré correguí corri correm corregut,correguda fúmer fumo fum fumem fumia fumíem fumeré fumí fumi fumem fumut,fumuda prémer premo prem premem premia premíem premeré premí premi premem premut,premuda (es-, re-) témer temo tem temem temia temíem temeré temí temi temem temut,temuda trémer [regular] tòrcer torço torç torcem torcia torcíem torceré torcí torci torcem torçut,torçuda (des-) [pres2s torces] vèncer venço venç vencem vencia vencíem venceré vencí venci vencem vençut,vençuda (con-, re-) [pres2s vences] cabre/caber cabo cap cabem cabia cabíem cabré cabí càpiga capiguem cabut,cabuda [sub2s càpigues] haver he/haig ha havem/hem havia havíem hauré haguí hagi hàgim/haguem hagut,haguda [noimp] [cond1s hauria/haguera; impsub2s haguessis/haguesses] poder puc pot podem podia podíem podré poguí pugui puguem pogut,poguda saber sé sap sabem sabia sabíem sabré sabí sàpiga sapiguem sabut,sabuda [imp2s sàpigues, imp2p sapigueu] voler vull vol volem volia volíem voldré volguí vulgui vulguem volgut,volguda ser/ésser soc és som era érem seré fui sigui siguem estat/sigut,estada/siguda [ger sent/essent] [cond1s seria/fora] [pres: soc,ets,éts,som,sou,són; pret: fui,fores,fou,fórem,fóreu,foren; impsub: fos,fossis,fos,fóssim,fóssiu,fossin] [imp: sigues,sigueu] fer faig fa fem feia fèiem faré fiu faci fem fet,feta [pres3p fan] [pret: fiu,feres,feu,férem,féreu,feren] ]=] local all_persons_numbers = { ["1s"] = "1|s", ["2s"] = "2|s", ["3s"] = "3|s", ["1p"] = "1|p", ["2p"] = "2|p", ["3p"] = "3|p", } local person_number_list = {"1s", "2s", "3s", "1p", "2p", "3p"} local imp_person_number_list = {"2s", "3s", "1p", "2p", "3p"} local neg_imp_person_number_list = {"2s", "3s", "1p", "2p", "3p"} proclitic_non_elided_person_number_to_reflexive_pronoun = { ["1s"] = "em ", ["2s"] = "et ", ["3s"] = "es ", ["1p"] = "ens ", ["2p"] = "us ", ["3p"] = "es ", } proclitic_elided_person_number_to_reflexive_pronoun = { ["1s"] = "m'", ["2s"] = "t'", ["3s"] = "s'", ["1p"] = "ens ", ["2p"] = "us ", ["3p"] = "s'", } enclitic_non_elided_person_number_to_reflexive_pronoun = { ["1s"] = "-me", ["2s"] = "-te", ["3s"] = "-se", ["1p"] = "-nos", ["2p"] = "-vos", ["3p"] = "-se", } enclitic_elided_person_number_to_reflexive_pronoun = { ["1s"] = "'m", ["2s"] = "'t", ["3s"] = "'s", ["1p"] = "'ns", ["2p"] = "-us", ["3p"] = "'s", } local indicator_flags = m_table.listToSet { "no_pres_stressed", "only3s", "only3sp", "only3p", "noimp", "pp_inv", "irreg", "no_built_in", } -- Initialize all the slots for which we generate forms. local function add_slots(alternant_multiword_spec) -- "Basic" slots: All slots that go into the regular table (not the reflexive form-of table). alternant_multiword_spec.verb_slots_basic = { {"infinitive", "inf"}, {"infinitive_linked", "inf"}, {"gerund", "ger"}, {"pp_ms", "m|s|past|part"}, {"pp_fs", "f|s|past|part"}, {"pp_mp", "m|p|past|part"}, {"pp_fp", "f|p|past|part"}, } -- Special slots used to handle non-reflexive parts of reflexive verbs in {{ca-verb form of}}. For example, for a -- reflexive-only verb like [[arrepentirse]], we want to be able to use {{ca-verb form of}} on [[arrepinta]] (which -- should mention that it is a part of 'me arrepinta', first-person singular present subjunctive, and -- 'se arrepinta', third-person singular present subjunctive) or on [[arrepentimos]] (which should mention that it -- is a part of 'arrepentímonos', first-person plural present indicative or preterite). Similarly, we want to use -- {{ca-verb form of}} on [[arrepentindo]] (which should mention that it is a part of 'se ... arrepentindo', -- syntactic variant of [[arrepentíndose]], which is the gerund of [[arrepentirse]]). To do this, we need to be -- able to map non-reflexive parts like [[arrepinta]], [[arrepentimos]], [[arrepentindo]], etc. to their reflexive -- equivalent(s), to the tag(s) of the equivalent(s), and, in the case of forms like [[arrepentindo]], -- [[arrepentir]] and imperatives, to the separated syntactic variant of the verb+clitic combination. We do this by -- creating slots for the non-reflexive part equivalent of each basic reflexive slot, and for the separated -- syntactic-variant equivalent of each basic reflexive slot that is formed of verb+clitic. We use slots in this -- way to deal with multiword lemmas. Note that we run into difficulties mapping between reflexive verbs, -- non-reflexive part equivalents, and separated syntactic variants if a slot contains more than one form. To -- handle this, if there are the same number of forms in two slots we're trying to match up, we assume the forms -- match one-to-one; otherwise we don't match up the two slots (which means {{ca-verb form of}} won't work in this -- case, but such a case is extremely rare and not worth worrying about). Alternatives that handle this "properly" -- are significantly more complicated and require non-trivial modifications to [[Module:inflection utilities]]. local need_special_verb_form_of_slots = alternant_multiword_spec.source_template == "ca-verb form of" and alternant_multiword_spec.refl if need_special_verb_form_of_slots then alternant_multiword_spec.verb_slots_reflexive_verb_form_of = { {"infinitive_non_reflexive", "-"}, {"infinitive_variant", "-"}, {"gerund_non_reflexive", "-"}, {"gerund_variant", "-"}, } else alternant_multiword_spec.verb_slots_reflexive_verb_form_of = {} end -- Add entries for a slot with person/number variants. -- `verb_slots` is the table to add to. -- `slot_prefix` is the prefix of the slot, typically specifying the tense/aspect. -- `tag_suffix` is a string listing the set of inflection tags to add after the person/number tags. -- `person_number_list` is a list of the person/number slot suffixes to add to `slot_prefix`. local function add_personal_slot(verb_slots, slot_prefix, tag_suffix, person_number_list) for _, persnum in ipairs(person_number_list) do local persnum_tag = all_persons_numbers[persnum] local slot = slot_prefix .. "_" .. persnum local accel = tag_suffix .. "|" .. persnum_tag table.insert(verb_slots, {slot, accel}) end end -- Add a personal slot (i.e. a slot with person/number variants) to `verb_slots_basic`. local function add_basic_personal_slot(slot_prefix, tag_suffix, person_number_list, no_special_verb_form_of_slot) add_personal_slot(alternant_multiword_spec.verb_slots_basic, slot_prefix, tag_suffix, person_number_list) -- Add special slots for handling non-reflexive parts of reflexive verbs in {{ca-verb form of}}. -- See comment above in `need_special_verb_form_of_slots`. if need_special_verb_form_of_slots and not no_special_verb_form_of_slot then for _, persnum in ipairs(person_number_list) do local persnum_tag = all_persons_numbers[persnum] local basic_slot = slot_prefix .. "_" .. persnum local accel = tag_suffix .. "|" .. persnum_tag table.insert(alternant_multiword_spec.verb_slots_reflexive_verb_form_of, {basic_slot .. "_non_reflexive", "-"}) end end end add_basic_personal_slot("pres", "直説法|現在", person_number_list) add_basic_personal_slot("impf", "直説法|不完全過去", person_number_list) add_basic_personal_slot("pret", "直説法|完全過去", person_number_list) add_basic_personal_slot("fut", "直説法|未来", person_number_list) add_basic_personal_slot("cond", "可能法", person_number_list) add_basic_personal_slot("pres_sub", "接続法|現在", person_number_list) add_basic_personal_slot("impf_sub", "接続法|過去", person_number_list) add_basic_personal_slot("imp", "命令法", imp_person_number_list) -- Don't need special non-reflexive-part slots because the negative imperative is multiword, of which the -- individual words are 'no' + subjunctive. add_basic_personal_slot("neg_imp", "命令法|禁止", neg_imp_person_number_list, "no special verb form of") -- Don't need special non-reflexive-part slots because we don't want [[arrependendo]] mapping to [[arrependendo-me]] -- (only [[arrependendo-se]]) or [[arrepender]] mapping to [[arrepender-me]] (only [[arrepender-se]]). add_basic_personal_slot("infinitive", "inf", person_number_list, "no special verb form of") add_basic_personal_slot("gerund", "ger", person_number_list, "no special verb form of") -- Generate the list of all slots. alternant_multiword_spec.all_verb_slots = {} for _, slot_and_accel in ipairs(alternant_multiword_spec.verb_slots_basic) do table.insert(alternant_multiword_spec.all_verb_slots, slot_and_accel) end for _, slot_and_accel in ipairs(alternant_multiword_spec.verb_slots_reflexive_verb_form_of) do table.insert(alternant_multiword_spec.all_verb_slots, slot_and_accel) end alternant_multiword_spec.verb_slots_basic_map = {} for _, slotaccel in ipairs(alternant_multiword_spec.verb_slots_basic) do local slot, accel = unpack(slotaccel) alternant_multiword_spec.verb_slots_basic_map[slot] = accel end end local overridable_stems = {} local function allow_multiple_values_for_override(separated_groups, data, is_form_override) local retvals = {} for _, separated_group in ipairs(separated_groups) do local footnotes = data.fetch_footnotes(separated_group) local form = separated_group[1] -- Prepend marker to prevent prefixing with `base.prefix`, and (in the case of form overrides) prevent -- final devoicing. if is_form_override then form = IS_USER_FORM_OVERRIDE .. form else form = IS_USER_STEM_OVERRIDE .. form end local retval = {form = form, footnotes = footnotes} table.insert(retvals, retval) end return retvals end for _, overridable_stem in ipairs { "stem", "stressed_stem", "unstressed_stem", "pres_unstressed", "pres_stressed", "pres3s", -- overrides just pres_2s and pres_3s -- Don't include pres1s, pres3p; use pres_1s etc. if you need to override just those forms "impf1", "impf2", "pret", "fut", "cond", "pres_sub_stressed", "pres_sub_unstressed", "impf_sub", "pp", "g_infix", "eix_infix", } do -- Written so we can substitute a different validator; parallel code in [[Module:es-verb]] and [[Module:pt-verb]] -- has simple_choice validators. overridable_stems[overridable_stem] = allow_multiple_values_for_override end -- Useful as the value of the `match` property of a built-in verb. `main_verb_spec` is a Lua pattern that should match -- the non-prefixed part of a verb, and `prefix_specs` is a list of Lua patterns that should match the prefixed part of -- a verb. If a prefix spec is preceded by ^, it must match exactly at the beginning of the verb; otherwise, additional -- prefixes (e.g. re-, des-) may precede. Return the prefix and main verb. local function match_against_verbs(main_verb_spec, prefix_specs) return function(verb) for _, prefix_spec in ipairs(prefix_specs) do if prefix_spec:find("^%^") then -- must match exactly prefix_spec = prefix_spec:gsub("^%^", "") if prefix_spec == "" then -- We can't use the second branch of the if-else statement because an empty () returns the current position -- in rmatch(). local main_verb = rmatch(verb, "^(" .. main_verb_spec .. ")$") if main_verb then return "", main_verb end else local prefix, main_verb = rmatch(verb, "^(" .. prefix_spec .. ")(" .. main_verb_spec .. ")$") if prefix then return prefix, main_verb end end else local prefix, main_verb = rmatch(verb, "^(.*" .. prefix_spec .. ")(" .. main_verb_spec .. ")$") if prefix then return prefix, main_verb end end end return nil end end --[=[ Built-in (usually irregular) conjugations. Each entry is processed in turn and consists of an object with two fields: 1. match=: Specifies the built-in verbs that match this object. 2. forms=: Specifies the built-in stems and forms for these verbs. The value of match= is either a string beginning with "^" (match only the specified verb), a string not beginning with "^" (match any verb ending in that string), or a function that is passed in the verb and should return the prefix of the verb if it matches, otherwise nil. The function match_against_verbs() is provided to facilitate matching a set of verbs with a common ending and specific prefixes (e.g. [[ter]] and [[ater]] but not [[abater]], etc.). The value of forms= is a table specifying stems and individual override forms. Each key of the table names either a stem (e.g. `pres_stressed`), a stem property (e.g. `g_infix`) or an individual override form (e.g. `pres_1s`). Each value of a stem can either be a string (a single stem), a list of strings, or a list of objects of the form {form = STEM, footnotes = {FOONOTES}}. Each value of an individual override should be of exactly the same form except that the strings specify full forms rather than stems. The values of a stem property depend on the specific property but are generally strings or booleans. In order to understand how the stem specifications work, it's important to understand the phonetic modifications done by combine_stem_ending(). In general, the complexities of predictable prefix, stem and ending modifications are all handled in this function. In particular: 1. Spelling-based modifications (c/qu, ç/c, g/gu, j/g, gu/gü, qu/qü) occur automatically as appropriate for the ending. 2. If the ending begins with an asterisk, this is a signal to delete the accent on the last syllable of the stem, e.g. veié -> veierem. 3. If ending begins with i, it may turn into í or ï after an unstressed vowel (in some but not all cases) to prevent the two merging into a diphthong. See combine_stem_ending() for specifics. The following stems are recognized [FIXME: This is not correct for Catalan, needs rewriting]: -- pres_unstressed: The present indicative unstressed stem (1p, 2p). Also controls the imperative 2p and gerund. Defaults to the infinitive stem (minus the ending -ar/-er/-ir/-or). -- pres_stressed: The present indicative stressed stem (1s, 2s, 3s, 3p). Also controls the imperative 2s. Default is empty if indicator `no_pres_stressed`, else a vowel alternation if such an indicator is given (e.g. `ue`, `ì`), else the infinitive stem. -- pres1: Special stem for 1s present indicative. Normally, do not set this explicitly. If you need to specify an irregular 1s present indicative, use the form override pres_1s= to specify the entire form. Defaults to pres_stressed. -- pres_sub_unstressed: The present subjunctive unstressed stem (1p, 2p). Defaults to the infinitive stem. -- pres_sub_stressed: The present subjunctive stressed stem (1s, 2s, 3s, 1p). Defaults to pres1. -- impf: The imperfect stem (not including the -av-/-i- stem suffix, which is determined by the conjugation). Defaults to the infinitive stem. -- pret: The full preterite stem missing only the endings (-ste, -mos, etc.), e.g. 'fige', 'fo'. Only used for verbs with irregular preterites (pret_conj == "irreg") such as [[facer]], [[poder]], [[traer]], etc. Defaults to `pret_base` + the conjugation vowel. -- fut: The future stem. Defaults to the infinitive stem + the conjugation vowel. -- cond: The conditional stem. Defaults to `fut`. -- impf_sub: The imperfect subjunctive stem. Defaults to `pret`. -- pp: The masculine singular past participle. Default is based on the verb conjugation: infinitive stem + '-ado' for -ar verbs, otherwise infinitive stem + '-ido'. -- pp_inv: `true` if the past participle exists only in the masculine singular. ]=] local built_in_conjugations = { -------------------------------------------------------------------------------------------- -- -ar -- -------------------------------------------------------------------------------------------- -- Orthographic consonant alternations in endings are handled automatically in combine_stem_ending(). { -- [[aguar]]: -- pres agúo, agúes, agúa, agüem, agüeu, agúen -- pres_sub aguï, aguïs, aguï, agüem, agüeu, aguïn -- contrast a more typical verb in -guar, [[enaiguar]]: -- pres enaiguo, enaigües, enaigua, enaigüem, enaigüeu, enaigüen -- pres_sub enaigüi, enaigüis, enaigüi, enaigüem, enaigüeu, enaigüin match = "^aguar", forms = { pres_stressed = "agú", pres_sub_stressed = "aguï", irreg = true, } }, { -- [[anar]] (full verb); highly irregular match = "^anar", var = "full", forms = { fut = "anir", pres_1s = "vaj", -- will be converted to 'vaig'; 'vaig' gets converted to 'vaic' pres_2s = "vas", pres_3s = "va", pres_3p = "van", pres_sub_stressed = "vagi", imp_2s = "ves", irreg = true, } }, { -- [[anar]] (auxiliary); highly irregular match = "^anar", var = "aux", forms = { pres_1s = "vaj", -- will be converted to 'vaig'; 'vaig' gets converted to 'vaic' pres_2s = {"vas", "vares"}, pres_3s = "va", pres_1p = {"vam", "vàrem"}, pres_2p = {"vau", "vàreu"}, pres_3p = {"van", "varen"}, pres_sub_stressed = "vagi", pres_sub_unstressed = "vàgi", impf1 = {}, impf2 = {}, fut = {}, pret = {}, pp = {}, gerund = {}, noimp = true, irreg = true, } }, { -- [[dar]] match = "^dar", forms = { pres_1s = {form = "do", footnotes = {"[obsolete]"}}, pres_2s = {form = "das", footnotes = {"[obsolete]"}}, pres_3s = {form = "da", footnotes = {"[obsolete]"}}, pres_3p = {form = "dan", footnotes = {"[obsolete]"}}, pres_sub_1s = {form = "de", footnotes = {"[obsolete]"}}, pres_sub_2s = {form = "des", footnotes = {"[obsolete]"}}, pres_sub_3s = {form = "de", footnotes = {"[obsolete]"}}, pres_sub_3p = {form = "den", footnotes = {"[obsolete]"}}, pret_1s = "di", -- regular except for lack of accent pret_3s = "da", -- regular except for lack of accent impf_sub_1s = "des", -- regular except for lack of accent impf_sub_3s = "des", -- regular except for lack of accent irreg = true, } }, { -- [[estar]]; highly irregular match = "^estar", forms = { pres_2s = "estàs", pres_3s = "està", pres_3p = "estan", g_infix = "estig", imp_2s = "estigues", imp_2p = "estigueu", pp = "estad", } }, -------------------------------------------------------------------------------------------- -- -er/-re -- -------------------------------------------------------------------------------------------- -- Regular verbs not needing entries here: -- -- [[rebre]], [[concebre]], [[decebre]], [[percebre]] -- [[rompre]] -- [[fúmer]], [[prémer]], [[témer]], [[trémer]] -- [[perdre]], [[batre]], [[botre]], [[fotre]], [[retre]] -- [[tòrcer]], [[vèncer]] -- etc. ------------------------------------------- -ldre/-ler/-lre -------------------------------------- { -- [[caldre]], [[doldre]], [[condoldre's]], [[oldre]] match = match_against_verbs("ldre", {"ca", "do", "^o"}), forms = { -- g_infix implies irreg = true -- g_infix adds -g to pres_1s, sub, pret and pp stems; combine_stem_ending() changes final -g to -c g_infix = "+", } }, { -- [[caler]] match = "caler", like = "caldre", }, { -- [[doler]] and compounds match = "doler", like = "doldre", }, { -- [[dolre]] match = "dolre", forms = { -- see above for g_infix effects g_infix = "+", } }, { -- [[valer]], [[equivaler]], [[prevaler]], [[sobrevaler]] match = "valer", forms = { -- see above for g_infix effects fut = "valdr", g_infix = "+", } }, { -- [[valdre]] and compounds match = "valdre", like = "valer", }, { -- [[soler]] match = "^soler", -- this must precede -oldre rule below for alt form [[soldre]] forms = { -- see above for g_infix effects fut = {}, pret = {}, impf_sub = "solgué", -- regular, but we disabled the preterite, which would normally disable impf_sub too g_infix = "+", pp = {}, noimp = true, } }, { -- [[soldre]] match = "^soldre", -- this must precede -oldre rule below like = "soler", }, { -- [[coldre]], [[moldre]], [[absoldre]], [[dissoldre]], [[resoldre]], [[toldre]] match = "oldre", -- this must follow [[doldre]]/[[oldre]] rule above forms = { -- see above for g_infix effects g_infix = "+", pp = "olt", } }, { -- [[voler]], [[malvoler]] match = "voler", forms = { fut = "voldr", pres_1s = "vull", pres_sub_stressed = "vulgui", pres_sub_unstressed = "vulgue", g_infix = "+", imp_2s = "vulgues", imp_2p = "vulgueu", } }, --------------------------------------------- -ndre ---------------------------------------- { -- [[romandre]]; write it this way so there's a prefix with a vowel to prevent against the accent in the pp -- from being removed while still removing it in the feminine. match = match_against_verbs("mandre", {"^ro"}), forms = { -- see above for g_infix effects g_infix = "+", pp = "màs#", } }, { -- [[encendre]], [[atendre]], [[contendre]], [[desentendre's]], [[distendre]], [[entendre]], [[estendre]], -- [[pretendre]] match = match_against_verbs("endre", {"enc", "t"}), forms = { pres_3s = "én#", -- remove final accent without prefix with vowel; also removed when adding a suffix -- see above for g_infix effects g_infix = "+", pp = "ès#", -- see above for effect of final # } }, { -- [[vendre]], [[malvendre]], [[revendre]] match = "vendre", forms = { pres_3s = "vèn#", -- see above for effect of final # -- see above for g_infix effects g_infix = "+", pp = "venud", -- g_infix would normally make it vengud } }, { -- [[fendre]], [[defendre]], [[ofendre]], [[dependre]], [[despendre]], [[expendre]], [[suspendre]], [[prendre]], -- [[aprendre]], [[comprendre]], [[desprendre]], [[emprendre]], [[reprendre]], [[sorprendre]] match = "endre", -- this must follow previous -endre rules above forms = { pres_3s = "èn#", -- see above for effect of final # -- see above for g_infix effects g_infix = "+", pp = "ès#", -- see above for effect of final # } }, { -- [[enfondre]]; write it this way so there's a prefix with a vowel to prevent against the accent in the pp -- from being removed while still removing it in the feminine. match = match_against_verbs("fondre", {"^en"}), forms = { -- see above for g_infix effects g_infix = "+", pp = "fús#", } }, { -- [[pondre]], [[compondre]], [[correspondre]], [[descompondre]], [[despondre's]], [[respondre]] match = "pondre", forms = { -- see above for g_infix effects g_infix = "+", pp = "post", } }, { -- [[fondre]], [[confondre]], [[difondre]], [[infondre]], [[refondre]], [[tondre]] match = "ondre", -- this must follow previous -ondre rules above forms = { -- see above for g_infix effects g_infix = "+", pp = "ós#", -- see above for effect of final # } }, --------------------------------------------- -nyer ---------------------------------------- { -- [[atènyer]]; write it this way so there's a prefix with a vowel to prevent against the accent in the pp -- from being removed while still removing it in the feminine. match = match_against_verbs("tènyer", {"^a"}), forms = { pp = "tès#", irreg = true, } }, { -- [[empènyer]], [[espènyer]] match = match_against_verbs("pènyer", {"^em", "^es"}), forms = { pp = "pès#", irreg = true, } }, { -- [[estrènyer]], [[constrènyer]], [[destrènyer]], [[restrènyer]] match = match_against_verbs("strènyer", {"^e", "con", "^de", "^re"}), forms = { pp = "stret", irreg = true, } }, { -- [[fènyer]] match = "fènyer", forms = { pp = {"fengud", "fenyud"}, irreg = true, } }, { -- [[júnyer]] match = "júnyer", like = "junyir", }, { -- [[plànyer]], [[complànyer]], [[pertànyer]] match = match_against_verbs("ànyer", {"pl", "pert"}), forms = { pp = {"angud", "anyud"}, irreg = true, } }, --------------------------------------------- -aure ---------------------------------------- { -- [[caure]], [[decaure]], [[recaure]] match = "caure", forms = { -- stem ending in -ai and imperfect in -ia causes special stressed imperfect logic to take effect; we get -- impf1s queia, impf1p quèiem (preceding vowel changed to è and attached to initial consonant using -- combine_stem_ending(), which changes c- to qu-) stem = "caie", -- i dropped by g_infix before u -- g_infix implies irreg = true -- g_infix adds -g to pres_1s, sub, pret and pp stems; combine_stem_ending() changes final -g to -c -- g_infix sets pres_stressed to end in -u, removing a preceding -i or -v g_infix = "+", } }, { -- [[plaure]], [[complaure]] match = "plaure", forms = { stem = "plae", -- ï in impf1s -aïa gets generated automatically by combine_stem_ending() g_infix = "+", } }, { -- [[raure]] match = "^raure", forms = { stem = "rae", -- ï in impf1s -aïa gets generated automatically by combine_stem_ending() g_infix = "+", pp = {"ragud", "ras"}, } }, --------------------------------------------- -eure ---------------------------------------- { -- [[beure]], [[embeure]], [[deure]], [[lleure]] match = match_against_verbs("eure", {"b", "d", "ll"}), forms = { stem = "eve", -- v dropped by g_infix before g and u g_infix = "+", } }, { -- [[creure]], [[seure]], [[asseure]] match = match_against_verbs("eure", {"cr", "s"}), forms = { stem = "ee", pres_unstressed = "eie", -- affects pres_1p, pres_2p, gerund, imperfect (see [[caure]]) g_infix = "+", } }, { -- [[jeure]], [[ajeure]] match = "jeure", forms = { fut = "jaur", -- affects future and cond stressed_stem = "jee", -- affects stressed forms, which get g added by g_infix by added except for -- pres_stressed, which gets u added (controls pres_3s, pres_2s, pres_3p) unstressed_stem = "jae", -- affects unstressed_stem, which get g added by g_infix pres_stressed = {"jeu", "jau"}, pres_unstressed = "jaie", -- affects pres_1p, pres_2p, gerund, imperfect (see [[caure]]) pres_1s = {"jec", "jac"}, impf1 = "jei", -- otherwise we'd get impf_1s '#geia' etc. impf2 = "jèi", g_infix = "+", } }, { match = "jaure", like = "jeure", }, { -- [[treure]], [[abstreure]], [[atreure]], [[bestreure]], [[contreure]], [[detreure]], [[distreure]], -- [[extreure]], [[retreure], [[retrotreure]], [[sostreure]] match = "treure", forms = { -- like [[jeure]] except for irregular pp fut = "traur", stressed_stem = "tree", unstressed_stem = "trae", pres_stressed = {"treu", "trau"}, pres_unstressed = "traie", pres_1s = {"trec", "trac"}, g_infix = "+", pp = "tret", } }, { match = "traure", like = "treure", }, { -- [[veure]], [[entreveure]], [[preveure]], [[reveure]] match = "veure", forms = { stem = "veie", -- impf1s veia, impf1p vèiem (preceding vowel changed to è) pres_stressed = "veu", pres_1s = "vej", -- will be converted to 'veig'; 'veig' gets converted to 'veic' pres_sub_stressed = "vegi", pres_sub_unstressed = "vege", pret = {"veié", "vé"}, pret_1s = "viu", pret_3s = {"veié", "veu"}, impf_sub = "veié", pp = "vist", imp_2s = "veges", imp_2p = {"vegeu", "veieu"}, irreg = true, } }, --------------------------------------------- -iure ---------------------------------------- { -- [[escriure]], [[circumscriure]], [[descriure]], [[inscriure]], [[prescriure]], [[proscriure]], -- [[subscriure]], [[transcriure]] match = "scriure", forms = { stem = "scrivi", -- v dropped by g_infix before g and u; pres_1p/pres_2p have -ir endings g_infix = "+", pret = {"scriví", "scrigué"}, pp = "scrit", } }, { -- [[riure]], [[somriure]] match = "riure", -- must follow rule for 'scriure' forms = { stem = "rie", -- impf1s reia, impf1p rèiem (preceding vowel changed to è) g_infix = "+", } }, { -- [[viure]], [[conviure]], [[desviure's]], [[sobreviure]] match = "viure", forms = { stem = "vivi", -- v dropped by g_infix before g and u; pres_1p/pres_2p have -ir endings g_infix = "visc", -- applies to pres1s, sub, pret, pp } }, --------------------------------------------- -oure ---------------------------------------- { -- [[cloure]], [[concloure]], [[descloure]], [[encloure]], [[excloure]], [[incloure]], [[recloure]] match = "cloure", forms = { stem = "cloe", -- ï in impf1s cloïa gets generated automatically by combine_stem_ending() g_infix = "+", pp = "clòs#", -- remove final accent without prefix with vowel; also removed when adding a suffix } }, { -- [[coure]] "to cook" match = "coure", var = "cook", forms = { stem = "coe", -- ï in impf1s coïa gets generated automatically by combine_stem_ending() g_infix = "+", pp = "cuit", } }, { -- [[coure]] "to sting" match = "coure", var = "sting", forms = { stem = "coe", -- ï in impf1s coïa gets generated automatically by combine_stem_ending() g_infix = "+", -- pp regular 'cogud' } }, { -- [[moure]], [[promoure]], [[remoure]], [[somoure]], [[ploure]] match = match_against_verbs("oure", {"m", "pl"}), forms = { stem = "ove", -- v dropped by g_infix before g and u g_infix = "+", } }, { -- [[noure]] match = "noure", forms = { stem = "noe", -- ï in impf1s -aïa gets generated automatically by combine_stem_ending() g_infix = "+", } }, --------------------------------------------- -xer ---------------------------------------- { -- [[conèixer]], [[desconèixer]], [[reconèixer]] match = "conèixer", forms = { g_infix = "coneg", } }, { -- [[créixer]], [[acréixer]], [[decréixer]], [[recréixer]], [[sobrecréixer]] match = "créixer", forms = { pret = {"creixé", "cresqué"}, pres_sub_unstressed = {"creixe", "cresque"}, pp = "crescud", irreg = true, } }, { -- [[merèixer]], [[desmerèixer]], [[irèixer-se]] match = match_against_verbs("rèixer", {"me", "^i"}), forms = { pret = {"reixé", "resqué"}, pres_sub_unstressed = {"reixe", "resque"}, pp = "rescud", irreg = true, } }, { -- [[néixer]]/[[nàixer]], [[renéixer]]/[[renàixer]], [[sobrenéixer]]/[[sobrenàixer]], [[péixer]]/[[pàixer]] match = match_against_verbs("éixer", {"n", "p"}), forms = { stem = "aixe", fut = "aixer", pres_stressed = {"eix", "aix"}, pres_1s = "eixo", pret = {"aixé", "asqué"}, pres_sub_stressed = "eixi", pres_sub_unstressed = {"aixe", "asque"}, pp = "ascud", irreg = true, } }, { match = "àixer", like = "éixer", }, { -- [[parèixer]], [[aparèixer]], [[comparèixer]], [[desaparèixer]], [[reaparèixer]] match = "parèixer", forms = { g_infix = "pareg", } }, --------------------------------------------- misc ---------------------------------------- { -- [[cabre]] match = "cabre", forms = { pres_sub_stressed = "càpiga", pres_sub_unstressed = "capigue", irreg = true, } }, { -- [[caber]] match = "caber", like = "cabre", }, { -- [[saber]] match = "saber", forms = { fut = "sabr", pres_1s = "sé", pres_sub_stressed = "sàpiga", pres_sub_unstressed = "sapigue", imp_2s = "sàpiga", imp_2p = "sapigueu", irreg = true, } }, { -- [[poder]] match = "poder", forms = { fut = "podr", pres_1s = "puc", pres_sub_stressed = "pugui", pres_sub_unstressed = "pugue", g_infix = "pog", imp_2s = "pugues", imp_2p = "pugueu", irreg = true, } }, { -- [[córrer]], [[acórrer]], [[concórrer]], [[decórrer]], [[descórrer]], [[discórrer]], [[encórrer]], -- [[escórrer]], [[incórrer]], [[ocórrer]], [[recórrer]], [[socórrer]], [[transcórrer]] match = "córrer", forms = { pret = "corregué", pres_sub_unstressed = {"corre", "corregue"}, pp = "corregud", irreg = true, } }, { -- [[metre]], [[admetre]], [[arremetre]], [[cometre]], [[comprometre]], [[demetre]], [[descomprometre]], -- [[emetre]], [[entremetre's]], [[escometre]], [[malmetre]], [[manumetre]], [[ometre]], [[permetre]], -- [[prometre]], [[readmetre]], [[remetre]], [[retransmetre]], [[sotmetre]], [[trametre]], [[transmetre]] match = "metre", forms = { pp = "mès#", irreg = true, } }, -------------------------------------------------------------------------------------------- -- -ir -- -------------------------------------------------------------------------------------------- { -- [[acudir]]; NOTE: Separation by meaning does not occur in DCC, DIEC, DEIEC, and DCVB says the distinction -- is geographical and makes no mention of distinction by meaning. OTOH ca.wikt does say that the pronominal -- sense "to occur" tends to conjugate non-inchoative. match = "acudir", forms = { eix_infix = {{ form = "+", footnotes = {'[especially in the sense "to turn up, to be present"]'} }, { form = "-", footnotes = {'[especially in the pronominal sense "to occur"]'} }} } }, -- [[afegir]]: -- non-inchoative in Valencia, inchoative elsewhere { -- [[ajupir]] -- [[buixir]] -- [[bullir]], [[rebullir]] -- [[cruixir]], [[escruixir]] (Routledge says this is inchoative but DIEC, DEIEC and DCC all disagree; note -- pres_2s 'cruixes', handled automatically) -- [[dormir]], [[adormir]] -- [[funyir]] -- [[grunyir]] -- [[munyir]], [[esmunyir]] -- [[pudir]] -- [[punyir]] -- [[retrunyir]] -- [[sallir]] -- [[sentir]], [[pressentir]], [[ressentir-se]]; not [[consentir]], with can be either non-inchoative or -- inchoative, and not [[assentir]] or [[dissentir]], which are only inchoative match = match_against_verbs("ir", {"ajup", "buix", "bull", "cruix", "dorm", "funy", "gruny", "muny", "pud", "puny", "retruny", "^sent", "pressent", "^ressent", "sall"}), forms = { eix_infix = "-", } }, { -- [[arrupir-se]]; -- [[brumir]]; -- [[brunzir]]; -- [[consumir]], [[resumir]], [[presumir]] (not [[sumir]], [[assumir]], [[subsumir]], which are regular) -- [[mentir]], [[desmentir]] -- [[percudir]]; cf. also [[acudir]], which to some extent has separate conjugations per meaning -- [[consentir]] match = match_against_verbs("ir", {"arrup", "brum", "brunz", "consum", "^resum", "presum", "ment", "percud", "consent"}), forms = { eix_infix = {"+", "-"}, } }, -- [[cenyir]]: -- non-inchoative or inchoative in Balearics, inchoative elsewhere { -- [[cobrir]], [[descobrir]], [[encobrir]], [[recobrir]], [[redescobrir]] match = "cobrir", forms = { pp = "cobert", irreg = true, } }, { -- [[collir]], [[acollir]], [[escollir]], [[recollir]] match = "collir", forms = { stressed_stem = "culli", eix_infix = "-", irreg = true, } }, { -- [[complir]], [[acomplir]], [[incomplir]] match = "complir", forms = { pp = {"complert", "complid"}, irreg = true, } }, { -- [[cosir]], [[descosir]], [[recosir]] match = "cosir", forms = { stressed_stem = "cusi", pres_3s = "cús#", eix_infix = "-", irreg = true, } }, { -- [[eixir]], [[deseixir-se]]; not [[teixir]] or [[entreteixir]], and not [[reeixir]] or [[sobreeixir]], -- which have an ï in the stem-stressed forms match = match_against_verbs("eixir", {"^", "des"}), forms = { stressed_stem = "ixi", eix_infix = "-", irreg = true, } }, { -- [[reeixir]], [[sobreeixir]] match = match_against_verbs("eixir", {"^re", "sobre"}), forms = { stressed_stem = "ïxi", eix_infix = "-", irreg = true, } }, -- [[engolir]]: -- non-inchoative in Valencia, inchoative elsewhere { -- [[escopir]] match = "escopir", forms = { stressed_stem = "escupi", eix_infix = "-", irreg = true, } }, { -- [[establir]], [[preestablir]], [[restablir]] match = "establir", forms = { pp = {"establert", "establid"}, irreg = true, } }, -- [[ferir]]: -- non-inchoative in Balearics, inchoative elsewhere -- [[fregir]]: -- non-inchoative in Valencia, inchoative elsewhere { -- [[fugir]], [[confugir]], [[defugir]], [[enfugir-se]]; pres sing ''fujo, fuges, fuig'' handled by -- combine_stem_ending(); can't be handled by rule above that lists many non-inchoative verbs because the -- prefix would be 'fug' and the front-back alternation code doesn't apply to prefixes. match = "fugir", forms = { eix_infix = "-", } }, { -- [[imprimir]], [[reimprimir]], [[sobreimprimir]]; not any other verbs in -primir; write it this way so -- there's a prefix with a vowel to prevent against the accent in the pp from being removed while still -- removing it in the feminine. match = match_against_verbs("primir", {"im"}), forms = { pp = "près#", irreg = true, } }, -- [[llegir]]: -- non-inchoative in Valencia and Minorca, inchoative elsewhere { -- [[lluir]]: regular inchoative in the figurative meaning "to display (something), to be showy" also in the -- legal meaning "free from a pecuniary obligation, such as a land-based tax (emphyteusis)"; irregular in the -- literal meaning "to shine"; use <no_built_in> to get regular conjugation. In the regular conjugation, -- umlauts appear in the following forms: pres_1p/pres_sub_1p/imp_1p lluïm, pres_2p/pres_sub_2p/imp_2p lluïu, -- impf_1s/impf_3s lluïa, impf_2s lluïes, impf_3p lluïen, pret_2s lluïres, pret_3p lluïren, -- impf_sub_2s lluïssis, impf_sub_3p lluïssin, throughout the pp: lluït, lluïda, lluïts, lluïdes. IN the -- irregular conjugation, umlauts appear in the same places as well as elsewhere in the present subjunctive: -- pres_sub_1s/pres_sub_3s/imp_3s lluï, pres_sub_2s lluïs, pres_sub_3p/imp_3p lluïn. Notably, they do *NOT* -- appear in the gerund lluint, the infinitive lluir, or anywhere in the future or conditional. Note that -- verbs.cat [https://www.verbs.cat/en/conjugation/899-lluir.html] lists additional irregular forms pres_1s -- lluu, and alternative impf_sub forms in -e- instead of -i- (lluïsses, lluíssem, lluísseu, lluïssen), but -- these are nonstandard or dialectal per both Routledge and DEIEC. match = "^lluir", forms = { eix_infix = "-", pres3s = {"lluu", "llu"}, -- generates pres_2s, imp_2s irreg = true, } }, { -- [[entrelluir]] "to be half-seen", [[relluir]] "to shine", [[traslluir-se]] "to be translucent"; either -- inchoative or non-inchoative, not distinguished by meaning; note, [[deslluir]] and [[enlluir]] are regular -- inchoative verbs. match = match_against_verbs("lluir", {"entre", "^re", "tras"}), forms = { eix_infix = {"+", "-"}, pres3s = {"llueix", "lluu", "llú"}, -- generates pres_2s, imp_2s; note, pres_2s will end in -es due to -- combine_stem_ending() irreg = true, } }, { -- [[morir]], [[premorir]]; but not [[atemorir]] match = match_against_verbs("morir", {"^", "pre"}), forms = { eix_infix = "-", pp = "mort", irreg = true, } }, { -- [[obrir]], [[entreobrir]], [[reobrir]]; not [[cobrir]] and derivatives, not [[empobrir]], so we have to list -- them individually match = match_against_verbs("obrir", {"^", "entre", "^re"}), forms = { eix_infix = "-", pp = "obert", irreg = true, } }, { -- [[oferir]]; but not [[proferir]] match = "^oferir", forms = { pp = {"ofert", "oferid"}, irreg = true, } }, -- [[oir]], [[desoir]], [[entreoir]]: -- per Routledge, non-inchoative or inchoative normally but only -- non-inchoative in Valencian; but all dictionaries disagree and say it is a regular inchoative-only verb. -- It has the same umlauts as lluir (and [[corroir]], another regular inchoative verb). { -- [[omplir]], [[desomplir-se]], [[reomplir]]; not [[complir]] and derivatives, so we have to list them -- individually match = match_against_verbs("omplir", {"^", "des", "^re"}), forms = { eix_infix = "-", pp = {"omplert", "omplid"}, irreg = true, } }, -- [[penedir-se]]: -- non-inchoative in Balearics, inchoative elsewhere { -- [[pruir]] "to itch": same umlauts as in [[lluir]]. match = "^pruir", forms = { eix_infix = "-", pres3s = {"pruu", "pru"}, -- generates pres_2s, imp_2s irreg = true, } }, { -- [[reblir]] match = "^reblir", forms = { pp = {"reblert", "reblid"}, irreg = true, } }, -- [[renyir]]: -- non-inchoative in Valencia, inchoative elsewhere { -- [[sofrir]] match = "^sofrir", forms = { pp = {"sofert", "sofrid"}, irreg = true, } }, { -- [[sortir]], [[ressortir]], [[sobresortir]]; but not [[assortir]], which is regular inchoative match = match_against_verbs("sortir", {"^", "^res", "sobre"}), forms = { stressed_stem = "surti", eix_infix = "-", irreg = true, } }, { -- [[suplir]] match = "^suplir", forms = { pp = {"suplert", "suplid"}, irreg = true, } }, -- [[teixir]], [[entreteixir]]: -- non-inchoative in Valencia, inchoative elsewhere { -- [[tenir]] but not any compounds; highly irregular match = "^tenir", forms = { fut = "tindr", pres_stressed = "ten", pres_3s = "té", imp_2s = {"té", "ten", "tingues"}, imp_2p = {"teniu", "tingueu"}, g_infix = "ting", } }, { -- [[abstenir-se]], [[atenir-se]], [[captenir-se]], [[cartenir]], [[contenir]], [[detenir]], [[entretenir]], -- [[mantenir]], [[menystenir]], [[obtenir]], [[retenir]], [[sostenir]], [[viltenir]]; highly irregular match = "tenir", forms = { fut = "tindr", pres_stressed = "ten", pres_3s = "té", imp_2s = {"tén", "tingues"}, imp_2p = {"teniu", "tingueu"}, g_infix = "ting", } }, { -- [[tindre]]: variant of [[tenir]] match = "tindre", like = "tenir", }, -- [[tenyir]], [[destenyir]]: -- non-inchoative in Valencia, but [[retenyir]] inchoative or non-inchoative in -- Valencia? (per Routledge); regular inchoative elsewhere { -- [[tossir]] "to cough" match = "^tossir", forms = { stressed_stem = "tussi", -- pres_2s gets 'tusses' pres_3s = "tus", -- note, pres_3s (a single form override) not pres3s (a stem override, which also affects -- pres_2s; but imp_2s is physically copied from pres_3s, so imp_2s correctly gets 'tus') eix_infix = "-", irreg = true, } }, { -- [[venir]] but not any compounds; highly irregular match = "^venir", forms = { fut = "vindr", pres_stressed = "ven", pres_3s = "ve", imp_2s = "vine", g_infix = "ving", } }, { -- compounds of [[venir]]: [[advenir]], [[avenir]], [[contravenir]], [[convenir]], [[desavenir-se]], -- [[desconvenir]], [[entrevenir]], [[esdevenir]], [[intervenir]], [[obvenir]], [[pervenir]], [[prevenir]], -- [[provenir]], [[reconvenir]], [[revenir]], [[sobrevenir]], [[subvenir]]; but not [[enjovenir]] or -- [[rejovenir]]; highly irregular match = match_against_verbs("venir", {"^ad", "^a", "contra", "con", "desa", "entre", "esde", "inter", "ob", "per", "pre", "pro", "^re", "sobre", "sub"}), forms = { fut = "vindr", pres_stressed = "ven", pres_3s = "vé", imp_2s = "vén", g_infix = "ving", } }, { -- [[vindre]]: variant of [[venir]] match = "vindre", like = "venir", }, -- [[vestir]], [[desvestir]], [[revestir]], maybe [[transvestir]]: non-inchoative in Valencia, inchoative or -- non-inchoative in the Balearics; regular inchoative elsewhere; but not [[envestir]] or [[investir]], which are -- regular inchoative everywhere { -- [[fer]], [[contrafer]], [[desfer]], [[estrafer]], [[perfer]], [[refer]], [[satisfer]]; highly irregular match = "fer", forms = { fut = "far", pres_1s = "faj", -- will be converted to 'faig'; 'faig' gets converted to 'faic' pres_2s = "fàs#", pres_3s = "fà#", pres_3p = "fan", pres_unstressed = "fe", impf1 = "fei", impf2 = "fèi", pres_sub_stressed = "faci", pres_sub_unstressed = "fe", pret = "fé", pret_1s = "fiu", pret_3s = "feu", impf_sub_1s = "fés#", -- regular except for base form [[fes]], lacking an accent impf_sub_3s = "fés#", -- same imp_2s = "fés#", pp = "fet", irreg = true, } }, { -- [[dir]], [[adir-se]], [[contradir]], [[desdir]], [[entredir]], [[interdir]], [[maldir]], [[predir]], [[redir]]; -- behaves like an -er/-re verb match = match_against_verbs("dir", {"^", "^a", "contra", "des", "entre", "inter", "mal", "pre", "^re"}), forms = { stem = "die", g_infix = "+", imp_2s = "digues", imp_2p = "digueu", pp = "dit", } }, { -- [[dur]], [[endur-se]]; behaves like an -er/-re verb match = "dur", forms = { stem = "due", g_infix = "+", pres3s = {"duu", "du"}, -- generates pres_2s, imp_2s impf1 = "dui", impf2 = "dúi", pp = "dut", } }, { -- [[ser]]; highly irregular match = "^ser", forms = { pres_1s = "soc", pres_2s = "ets", pres_3s = "és", pres_1p = "som", pres_2p = "sou", pres_3p = "són", impf1 = "er", impf2 = "ér", pres_sub_stressed = "sigui", pres_sub_unstressed = "sigue", pret = "fó", pret_1s = "fui", pret_3s = "fou", impf_sub_1s = "fos", -- regular except for lack of accent impf_sub_3s = "fos", -- same cond = {"serí", "fór"}, imp_2s = "sigues", imp_2p = "sigueu", pp = {"estad", "sigud"}, gerund = {"sent", "essent"}, irreg = true, } }, { -- [[ésser]]; variant of [[ser]] match = "^ésser", like = "ser", }, { -- [[haver]] as auxiliary; highly irregular match = "^haver", var = "aux", forms = { pres_1s = "he", pres_2s = "has", pres_3s = "ha", pres_1p = "hem", pres_2p = "heu", pres_3p = "han", fut = "haur", cond = {"haurí", "haguér"}, pres_sub_stressed = "hagi", pres_sub_unstressed = "hàgi", noimp = true, g_infix = "+", } }, { -- [[haver]] as full verb; highly irregular match = "^haver", var = "full", forms = { pres_1s = {"hec", "hac"}, pres_stressed = {"heu", "hau"}, fut = "haur", pres_sub_stressed = "hegui", g_infix = "+", } }, { -- [[heure]]; variant of full verb [[haver]] match = "^heure", like = "haver", likevar = "full", }, { -- [[haure]]; variant of full verb [[haver]] match = "^haure", like = "haver", likevar = "full", }, } local function skip_slot(base, slot, allow_overrides) if not allow_overrides and (base.basic_overrides[slot] or base.refl and base.basic_reflexive_only_overrides[slot]) then -- Skip any slots for which there are overrides. return true end if base.only3s and (slot:find("^pp_f") or slot:find("^pp_mp")) then -- diluviar, atardecer, neviscar; impersonal verbs have only masc sing pp return true end if not slot:find("[123]") then -- Don't skip non-personal slots. return false end if base.nofinite then return true end if (base.only3s or base.only3sp or base.only3p) and (slot:find("^imp_") or slot:find("^neg_imp_")) then return true end if base.only3s and not slot:find("3s") then -- diluviar, atardecer, neviscar return true end if base.only3sp and not slot:find("3[sp]") then -- atañer, concernir return true end if base.only3p and not slot:find("3p") then -- [[caer cuatro gotas]], [[caer chuzos de punta]], [[entrarle los siete males]] return true end return false end local function add_stem_ending(stem, ending) if ending == "" then return stem end if stem:find("#$") then -- remove final accent when adding a suffix stem = com.remove_accents((stem:gsub("#$", "")), "final syllable only") end return stem .. ending end local function process_stem(stem, fn) if stem:find("#$") then local stem_no_pound_sign = stem:match("^(.*)#$") return fn(stem_no_pound_sign) .. "#" else return fn(stem) end end -- Add the `stem` to the `ending` and apply any phonetic modifications. `is_full_word` indicates that we're creating -- a "full word" not a stem, and turns on devoicing of final consonants. `dont_include_prefix` is used when creating -- stems and indicates not to prepend the prefix in `base.prefix` to the result. `is_pres_sub_stressed` is used when -- creating the pres_sub_stressed stem, to correctly handle both [[desaiguar]] and [[argüir]], whose respective -- interactions between ü and i/ï are very tricky. -- -- WARNING: This function is written very carefully; changes to it can easily have unintended consequences. local function combine_stem_ending(base, stem, ending, is_full_word, dont_include_prefix, is_pres_sub_stressed) -- Include the prefix in the stem unless dont_include_prefix is given (used in construct_stems()), or the value of -- `stem` comes from a user-specified stem or form override. if not dont_include_prefix and not stem:find(IS_USER_STEM_OVERRIDE) and not stem:find(IS_USER_FORM_OVERRIDE) then stem = base.prefix .. stem end -- A * at the beginning of the ending is a signal to remove a stressed accent from the stem. This may feed any of -- the following rules. if ending:find("^%*") then ending = ending:gsub("^%*", "") stem = com.remove_accents(stem, "final syllable only") end -- If ending begins with s and stem ends in a sibilant, we need an e in between; cf. pres_2s 'apareixes' of -- [[aparèixer]], pres_2s 'torces' of [[tòrcer]], pres_2s 'fuges' of [[fugir]], pres_2s 'brunzes' of [[brunzir]]. -- This may feed the next rule. if ending:find("^s") and rfind(stem, "[çjsxz]$") then ending = "e" .. ending end -- By default, stems are in their "back" (standalone) form. Before a front vowel, convert the final consonant to -- its "front" form so the pronunciation doesn't change. if rfind(ending, "^" .. front_vowel_c) then -- adequar -> adeqües -- enaiguar -> enaigües -- pegar -> pegues -- arranjar -> arranges -- marcar -> marques -- abraçar -> abraces stem = com.back_to_front(stem) end -- Ending beginning in -i after diphthong ending in V + i compresses the two i's into one (cf. pret_1s 'desmaí' and -- pres_sub_1s 'desmaï' of [[desmaiar]]). This rule doesn't apply after pseudo-vowel u in gu/qu; cf. pret_1s 'guií' -- of [[guiar]] and contrast pret_1s 'cruí' of [[cruiar]]. This may feed the next rule. if rfind(ending, "^[iíï]") and rfind(stem, V .. "i$") and not rfind(stem, "[gq][uü]i$") then stem = stem:gsub("i$", "") end -- If ending begins with i (not í), it must get a diaeresis after a true vowel (not gu/qu, cf. pres_1p 'delinquim' -- of [[delinquir]], not '#delinquïm'; also not a diphthong ending in u, cf. pres_sub_1s 'apreui' of [[apreuar]] -- not '#apreuï') to prevent the two merging into a diphthong. Note that ü -> u before ï, but to simplify things -- we leave the double umlauts in place and remove the first one during postprocessing, in fix_double_umlauts(). -- Cf.: -- * impf_1s 'raïa' of [[raure]]; -- * pres_sub_1s 'creï' of [[crear]]; -- * pres_sub_1s 'associï' of [[associar]]; -- * impf_1s 'cloïa' of [[cloure]]; -- * pres_1p 'lluïm' of [[lluir]]; -- * pres_1p 'arguïm' of [[argüir]]. if ending:find("^i") and rfind(stem, "[aeiouü]$") and not stem:find("[aeiogq]u$") and -- Unstressed subjunctive endings of [[enaiguar]] remain without umlaut: enaigüi/enaigüis/enaigüin; -- but stressed endings of [[argüir]] that begin with 'i' do get an umlaut: arguït, impf. arguïa, including -- stressed subjunctive endings arguïm/arguïu. In both cases the ending is '-i' as part of the creation of -- the respective stems. There seems no way of distinguishing the two cases other than with a special flag. not (rfind(stem, "[gq]ü$") and ending == "i" and is_pres_sub_stressed) then ending = ending:gsub("^i", "ï") end local retval = add_stem_ending(stem, ending) if retval:find("#$") then -- remove final accent if no vowels in prefix retval = retval:gsub("#$", "") if not rfind(base.prefix, V) then retval = com.remove_accents(retval, "final syllable only") end end if is_full_word then local saw_is_user_form_override retval, saw_is_user_form_override = rsubb(retval, IS_USER_FORM_OVERRIDE, "") retval = retval:gsub(IS_USER_STEM_OVERRIDE, "") if not saw_is_user_form_override then -- Devoice final voiced obstruent (cf. pres_2s 'caps', pres_3s 'cap' of [[cabre]]). But not after a -- consonant (cf. pres_2s 'perds', pres_3s 'perd' of [[perdre]]), except for g -> c, which operates -- even after a consonant (pres_1s 'resolc' of [[resoldre]], pres_1s 'tinc' of [[tenir]]). retval = retval:gsub("g(s?)$", "c%1") retval = rsub(retval, "(" .. V .. ")([bdj])(s?)$", function(before, voiced, after) local devoice = { b = "p", d = "t", j = "ig", -- pres_3s 'fuj' of [[fugir]] -> 'fuig' } return before .. devoice[voiced] .. after end) end end return retval end local function add3(base, slot, stems, endings, footnotes, allow_overrides) if skip_slot(base, slot, allow_overrides) then return end local function do_combine_stem_ending(stem, ending) return combine_stem_ending(base, stem, ending, "is full word") end iut.add_forms(base.forms, slot, stems, endings, do_combine_stem_ending, nil, nil, footnotes) end local function insert_form(base, slot, form) if not skip_slot(base, slot) then iut.insert_form(base.forms, slot, form) end end local function insert_forms(base, slot, forms) if not skip_slot(base, slot) then iut.insert_forms(base.forms, slot, forms) end end local function add_single_stem_tense(base, slot_pref, stems, s1, s2, s3, p1, p2, p3) local function addit(slot, ending) add3(base, slot_pref .. "_" .. slot, stems, ending) end addit("1s", s1) addit("2s", s2) addit("3s", s3) addit("1p", p1) addit("2p", p2) addit("3p", p3) end local function map_general(stemforms, fn) return iut.map_forms(iut.convert_to_general_list_form(stemforms), fn) end local function flatmap_general(stemforms, fn) return iut.flatmap_forms(iut.convert_to_general_list_form(stemforms), fn) end -- Given a stem ending in a conjugation vowel -a/-e/-i/-ï, split into stem base and conjugation vowel, converting the -- stem base to "back" form if the conjugation vowel is front (hence 'torce' of [[tòrcer]] splits into 'torç' and 'e', -- and 'fugi' of [[fugir]] splits into 'fuj' and 'i'). local function split_conj_vowel(stem) local stem_base, conj_vowel = rmatch(stem, "^(.*)([aeiï])$") if not stem_base then error(("Internal error: Stem '%s' doesn't end in conjugation vowel a/e/i"):format(stem)) end if conj_vowel == "ï" then -- To simplify handling of ï, convert to i. It will be converted back to ï as necessary in -- combine_stem_ending(). conj_vowel = "i" end if rfind(conj_vowel, front_vowel_c) then stem_base = com.front_to_back(stem_base) end return stem_base, conj_vowel end local function construct_stems(base) base.output_stems = {} local stems = base.output_stems local bst = base.input_stems -- YUCK, see combine_stem_ending() for the necessity of is_pres_sub_stressed. local function combine(stem, ending, is_pres_sub_stressed) return combine_stem_ending(base, stem, ending, false, "dont include prefix", is_pres_sub_stressed) end stems.irreg = bst.irreg or bst.g_infix -- NOTE: Some stems end in a conjugation or similar vowel, specifically: -- * `stem` (ends in conjugation vowel -a/-e/-i); -- * `stressed_stem` (likewise); -- * `unstressed_stem` (likewise); -- * `pres_unstressed` (which assumes the form of the gerund minus the -nt; note that `pres_stressed` does *NOT* -- end in a conjugation vowel, but assumes the stem form; the value of pres_3s will be derived by adding -a for -- -ar verbs and otherwise adding an -e prop vowel when required, as in [[cobrir]], and otherwise adding no -- vowel); -- * `pres_sub_stressed` (which assumes the form of pres_sub_3s and hence usually ends in -i, occasionally -a); -- * `pres_sub_unstressed` (which assumes the form of pres_sub_1p minus the -m, hence ends in -e or -i). -- Save stem for use in add_categories_and_annotation() for determining the conjugation class. stems.stem = bst.stem or base.stem local eix_infix_stem if base.conj_vowel == "i" then -- Save eix_infix value for use in add_categories_and_annotation() for determining whether consonant -- alternations exist. stems.eix_infix = bst.eix_infix or bst.g_infix and "-" or "+" eix_infix_stem = flatmap_general(stems.eix_infix, function(form) if form == "+" then return map_general(stems.stem, function(form) local stem_base, conj_vowel = split_conj_vowel(form) return combine(stem_base, "eixe") end) elseif form == "-" then return stems.stem else return form end end) end local stressed_stem = bst.stressed_stem or eix_infix_stem or stems.stem local unstressed_stem = bst.unstressed_stem or stems.stem -- Add the 'g' that is characteristic of g-infix verbs. We remove a stem-final v, e.g. [[beure]] with stem 'beve' -- becomes 'beg'. local function add_g(stemforms) return map_general(stemforms, function(form) local stem_base, conj_vowel = split_conj_vowel(form) stem_base = stem_base:gsub("v$", "") return combine(stem_base, "g") end) end -- Add the 'u' of the pres_3s that is characteristic of g-infix verbs (and conjugation vowel 'e', later removed). -- We remove a stem-final v, as well as i as part of a diphthong, e.g. [[beure]] with stem 'beve' becomes 'beue' -- and [[veure]] with stem 'veie' becomes 'veue' (but [[riure]] with stem 'rie' becomes 'riue' not '#rue'). We -- don't add -u after a consonant, e.g. [[doldre]] with stem 'dole' becomes 'dole' not '#dolue'. local function add_u(stemforms) return map_general(stemforms, function(form) local stem_base, conj_vowel = split_conj_vowel(form) if stem_base:find("v$") then stem_base = stem_base:gsub("v$", "") else stem_base = rsub(stem_base, "(" .. V .. ")i$", "%1") end -- Add u after vowel but not after another u, so we get pres_3p 'duen' of [[dur]] not '#duuen'. if rfind(stem_base, V .. "$") and not stem_base:find("u$") then return combine(stem_base, "u") else return stem_base end end) end local stressed_g_infix, unstressed_g_infix, g_infix_pres_stressed if bst.g_infix then local function flatmap_g_infix(default) return flatmap_general(bst.g_infix, function(form) if form == "+" then return default else return form end end) end stressed_g_infix = flatmap_g_infix(add_g(stressed_stem)) unstressed_g_infix = flatmap_g_infix(add_g(unstressed_stem)) g_infix_pres_stressed = add_u(stressed_stem) end stems.pres_unstressed = bst.pres_unstressed or unstressed_stem stems.pres_stressed = -- If no_pres_stressed given, pres_stressed stem should be empty so no forms are generated. base.no_pres_stressed and {} or bst.pres_stressed or g_infix_pres_stressed or map_general(stressed_stem, function(form) local stem_base, conj_vowel = split_conj_vowel(form) return stem_base end) stems.pres1s = -- If no_pres_stressed given, pres1s stem should be empty so no forms are generated. base.no_pres_stressed and {} or stressed_g_infix or map_general(stems.pres_stressed, function(form) return combine(form, "o") end) stems.pres3s = -- If no_pres_stressed given, pres3s stem should be empty so no forms are generated. base.no_pres_stressed and {} or bst.pres3s or map_general(stems.pres_stressed, function(form) if base.conj_vowel == "a" then return combine(form, "a") elseif rfind(form, C .. "[lr]$") and not rfind(form, V .. "ll$") then return combine(form, "e") else return form end end) stems.pres3p = -- If no_pres_stressed given, pres3p stem should be empty so no forms are generated. base.no_pres_stressed and {} or map_general(stems.pres_stressed, function(form) return combine(form, "en") end) local function compute_impf_stem(with_accent) return map_general(stems.pres_unstressed, function(form) local stem_base, conj_vowel = split_conj_vowel(form) if conj_vowel == "a" then return combine(stem_base, with_accent and "àv" or "av") elseif stem_base:find("i#?$") then form = form:gsub("i#?$", "") return combine(rmatch(stem_base, "^(.-)" .. V .. "*$"), with_accent and "èi" or "ei") else return combine(stem_base, with_accent and "í" or "i") -- i -> ï after a vowel end end) end stems.impf1 = bst.impf1 or compute_impf_stem(false) stems.impf2 = bst.impf2 or compute_impf_stem(true) stems.pret = bst.pret or unstressed_g_infix and map_general(unstressed_g_infix, function(form) return combine(form, "é") end ) or map_general(unstressed_stem, function(form) local accent_conj_vowel = { a = "à", e = "é", i = "í", } local stem_base, conj_vowel = split_conj_vowel(form) return combine(stem_base, accent_conj_vowel[conj_vowel]) end) stems.fut = bst.fut or base.inf_stem stems.cond = bst.cond or map_general(stems.fut, function(form) return combine(form, "í") end) stems.pres_sub_stressed = bst.pres_sub_stressed or stressed_g_infix and map_general(stressed_g_infix, function(form) return combine(form, "i") end) or map_general(stressed_stem, function(form) local stem_base, conj_vowel = split_conj_vowel(form) return combine(stem_base, "i", "is pres_sub_stressed") end) stems.pres_sub_unstressed = bst.pres_sub_unstressed or unstressed_g_infix and map_general(unstressed_g_infix, function(form) return combine(form, "e") end) or map_general(unstressed_stem, function(form) local stem_base, conj_vowel = split_conj_vowel(form) return combine(stem_base, conj_vowel == "i" and conj_vowel or "e") end) stems.impf_sub = bst.impf_sub or map_general(stems.pret, function(form) local stem_base = rmatch(form, "^(.*)à$") -- already in "back" form, no need to convert if stem_base then return combine(stem_base, "é") else return form end end) stems.pp = bst.pp or unstressed_g_infix and map_general(unstressed_g_infix, function(form) return combine(form, "ud") end ) or map_general(unstressed_stem, function(form) local stem_base, conj_vowel = split_conj_vowel(form) -- use combine() so we get 'abduïd' from 'abdu-' of [[abduir]], 'seguid' from 'seg-' from [[seguir]], etc. return combine(stem_base, (conj_vowel == "e" and "u" or conj_vowel) .. "d") end) end local function a_to_e(base, stems, suffix) return map_general(stems, function(form) local stem_base = form:match("^(.-)a$") if stem_base then suffix = "e" .. suffix else stem_base = form end return combine_stem_ending(base, stem_base, suffix, "is full word") end) end local function add_present_indic(base) local stems = base.output_stems local function addit(slot, stems, ending) add3(base, "pres_" .. slot, stems, ending) end addit("1s", stems.pres1s, "") insert_forms(base, "pres_2s", a_to_e(base, stems.pres3s, "s")) addit("3s", stems.pres3s, "") insert_forms(base, "pres_1p", a_to_e(base, stems.pres_unstressed, "m")) insert_forms(base, "pres_2p", a_to_e(base, stems.pres_unstressed, "u")) addit("3p", stems.pres3p, "") end local function add_present_subj(base) local stems = base.output_stems local function addit(slot, stems, ending) add3(base, "pres_sub_" .. slot, stems, ending) end -- Regular -ar verb: [[amar]]: ami, amis, ami, amem, ameu, amin -- Regular -re verb: [[batre]]: bati, batis, bati, batem, bateu, batin (same as -ar verb) -- Regular -ir verb, no -eix- infix: [[dormir]]: dormi, dormis, dormi, dormim, dormiu, dormin -- Regular -ir verb, -eix- infix: [[imprimir]]: imprimeixi, imprimeixis, imprimeixi, imprimim, imprimiu, imprimeixin -- Stem changing in 123s/3p vs. 12p: -- * -eix- infix (-eix- in all stressed forms: 123s/3p of pres ind/sub, 2s imp) -- * [[collir]]: culli, cullis, culli, collim, colliu, cullin (cull- in all stressed forms) -- * [[cabre]]: càpiga, càpigues, càpiga, capiguem, capigueu, càpiguen (also different endings) addit("1s", stems.pres_sub_stressed, "") insert_forms(base, "pres_sub_2s", a_to_e(base, stems.pres_sub_stressed, "s")) addit("3s", stems.pres_sub_stressed, "") addit("1p", stems.pres_sub_unstressed, "m") addit("2p", stems.pres_sub_unstressed, "u") insert_forms(base, "pres_sub_3p", a_to_e(base, stems.pres_sub_stressed, "n")) end local function add_finite_non_present(base) local stems = base.output_stems local function add_tense(slot, stem, s1, s2, s3, p1, p2, p3) add_single_stem_tense(base, slot, stem, s1, s2, s3, p1, p2, p3) end add_tense("impf", stems.impf1, "a", "es", "a", nil, nil, "en") add_tense("impf", stems.impf2, nil, nil, nil, "em", "eu", nil) -- pret_1s ends in -í regardless of the normal vowel of the stem. insert_forms(base, "pret_1s", map_general(stems.pret, function(form) local stem_base, conj_vowel = rmatch(form, "^(.*)(" .. V .. ")$") if not stem_base then error(("Internal error: Preterite stem '%s' doesn't end in vowel"):format(form)) end if rfind(conj_vowel, front_vowel_c) then stem_base = com.front_to_back(stem_base) end -- Use combine_stem_ending() to handle back-to-front conversions, e.g. pegà -> peguí for [[pegar]] and ensure -- that the prefix gets added. return combine_stem_ending(base, stem_base, "í", "is full word") end)) -- * at the beginning of the ending means to remove an accent from the last vowel of the preterite stem. add_tense("pret", stems.pret, nil, "*res", "", "rem", "reu", "*ren") -- * at the beginning of the ending means to remove an accent from the last vowel of the imperfect subjunctive stem. add_tense("impf_sub", stems.impf_sub, "s", "*ssis", "s", "ssim", "ssiu", "*ssin") add_tense("fut", stems.fut, "é", "às", "à", "em", "eu", "an") add_tense("cond", stems.cond, "*a", "*es", "*a", "em", "eu", "*en") end local function add_non_finite_forms(base) local stems = base.output_stems local function addit(slot, stems, ending, footnotes) add3(base, slot, stems, ending, footnotes) end insert_form(base, "infinitive", {form = base.orig_verb}) -- Also insert "infinitive + reflexive pronoun" combinations if we're handling a reflexive verb. See comment below -- for "gerund + reflexive pronoun" combinations. if base.refl then for _, persnum in ipairs(person_number_list) do insert_form(base, "infinitive_" .. persnum, {form = base.orig_verb}) end end -- Gerunds don't have an umlaut over the i in cases like 'abduint' of 'abduir' (not '#abduïnt'). local pres_unstressed_no_umlaut = map_general(stems.pres_unstressed, function(form) return rsub(form, "ï$", "i") end) addit("gerund", pres_unstressed_no_umlaut, "nt") -- Also insert "gerund + reflexive pronoun" combinations if we're handling a reflexive verb. We insert exactly the -- same form as for the bare gerund; later on in add_reflexive_or_fixed_clitic_to_forms(), we add the appropriate -- clitic pronouns. It's important not to do this for non-reflexive verbs, because in that case, the clitic -- pronouns won't be added, and {{ca-verb form of}} will wrongly consider all these combinations as possible -- inflections of the bare gerund. Thanks to [[User:JeffDoozan]] for this bug fix. if base.refl then for _, persnum in ipairs(person_number_list) do addit("gerund_" .. persnum, pres_unstressed_no_umlaut, "nt") end end addit("pp_ms", stems.pp, "") if not base.pp_inv then addit("pp_fs", stems.pp, "a") -- make_plural() handles the complexities of e.g. 'vist' of [[veure]] -> 'vistos'/'vists' and 'romàs' of -- [[romandre]] -> 'romasos'. We need to use flatmap_general() because make_plural() may return more than one -- plural, and we need to use map_general() on the result, applying combine_stem_ending(), to ensure that -- prefixes get properly added and plurals like 'amads' of stem 'amad' of [[amar]] get converted to 'amats'. insert_forms(base, "pp_mp", map_general(flatmap_general(stems.pp, function(form) -- Remove any # indicating that an accent will be dropped; it will be dropped in any case by make_plural(). form = form:gsub("#$", "") return com.make_plural(form, "m") end), function(form) return combine_stem_ending(base, form, "", "is full word") end)) addit("pp_fp", stems.pp, "es") end end local function add_imperatives(base) if base.noimp then return end -- Copy pres3s to imperative since they are almost always the same. insert_forms(base, "imp_2s", iut.map_forms(base.forms.pres_3s, function(form) return form end)) -- Copy pres2p to imperative plural since they are almost always the same. insert_forms(base, "imp_2p", iut.map_forms(base.forms.pres_2p, function(form) return form end)) -- Copy subjunctives to imperatives. for _, persnum in ipairs({"3s", "1p", "3p"}) do local from = "pres_sub_" .. persnum local to = "imp_" .. persnum insert_forms(base, to, iut.map_forms(base.forms[from], function(form) return form end)) end end local function fix_double_umlauts(base) for slot, forms in pairs(base.forms) do for _, form in ipairs(forms) do form.form = form.form:gsub("üï", "uï") end end end local function process_slot_overrides(base, filter_slot, reflexive_only) local overrides = reflexive_only and base.basic_reflexive_only_overrides or base.basic_overrides for slot, forms in pairs(overrides) do if not filter_slot or filter_slot(slot) then add3(base, slot, forms, "", nil, "allow overrides") end end end local function link_clitic(clitic) return (clitic:gsub("([^ %-]+)", "[[%1]]")) end -- Prefix `form` with `clitic`, adding fixed text `between` between them. Add links as appropriate unless the user -- requested no links. Check whether form already has brackets (as will be the case if the form has a fixed clitic). local function prefix_clitic_to_form(base, clitic, between, form) if base.alternant_multiword_spec.args.noautolinkverb then return clitic .. between .. form else local clitic_pref = link_clitic(clitic) .. between if form:find("%[%[") then return clitic_pref .. form else return clitic_pref .. "[[" .. form .. "]]" end end end -- Suffix `form` with `clitic`. Add links as appropriate unless the user requested no links. Check whether form already -- has brackets (as will be the case if the form has a fixed clitic). local function suffix_clitic_to_form(base, clitic, form) local autolink = not base.alternant_multiword_spec.args.noautolinkverb if base.alternant_multiword_spec.args.noautolinkverb then return form .. clitic else local clitic_suf = link_clitic(clitic) if form:find("%[%[") then return form .. clitic_suf else return "[[" .. form .. "]]" .. clitic_suf end end end -- Add a reflexive pronoun or fixed clitic (FIXME: not working), as appropriate to the base forms that were generated. -- `do_joined` means to do only the forms where the pronoun is joined to the end of the form; otherwise, do only the -- forms where it is not joined and precedes the form. local function add_reflexive_or_fixed_clitic_to_forms(base, do_reflexive, do_joined) for _, slotaccel in ipairs(base.alternant_multiword_spec.verb_slots_basic) do local slot, accel = unpack(slotaccel) local persnum if slot:find("[123]") then persnum = slot:match("^.*_(.-)$") else persnum = "3s" end local function get_proclitic(form) --if not do_reflexive then -- return base.clitic if form:find("^[aeiouh]") then return proclitic_elided_person_number_to_reflexive_pronoun[persnum] else return proclitic_non_elided_person_number_to_reflexive_pronoun[persnum] end end local function get_enclitic(form) --if not do_reflexive then -- return base.clitic if rfind(form, C .. "$") or rfind(form, V .. "[iu]$") and not form:find("[gq]ui$") then return enclitic_non_elided_person_number_to_reflexive_pronoun[persnum] else return enclitic_elided_person_number_to_reflexive_pronoun[persnum] end end if base.forms[slot] then if do_reflexive and slot:find("^pp_") or slot == "infinitive_linked" then -- do nothing with reflexive past participles or with infinitive linked (handled at the end) elseif slot:find("^neg_imp_") then error("Internal error: Should not have forms set for negative imperative at this stage") else local slot_has_suffixed_clitic = slot:find("infinitive") or slot:find("gerund") or slot:find("^imp_") -- Maybe generate non-reflexive parts and separated syntactic variants for use in -- {{ca-verb form of}}. See comment in add_slots() above `need_special_verb_form_of_slots`. -- Check for do_joined so we only run this code once. if do_reflexive and do_joined and base.alternant_multiword_spec.source_template == "ca-verb form of" and -- Skip personal variants of infinitives and gerunds so we don't think [[arrependendo]] is a -- non-reflexive equivalent of [[arrependendo-me]]. not slot:find("infinitive_") and not slot:find("gerund_") then -- Clone the forms because we will be destructively modifying them just below, adding the reflexive -- pronoun. insert_forms(base, slot .. "_non_reflexive", mw.clone(base.forms[slot])) if slot_has_suffixed_clitic then insert_forms(base, slot .. "_variant", iut.map_forms(base.forms[slot], function(form) return prefix_clitic_to_form(base, get_proclitic(form), "... ", form) end)) end end if slot_has_suffixed_clitic then if do_joined then -- Add clitic after form. for _, form in ipairs(base.forms[slot]) do form.form = suffix_clitic_to_form(base, get_enclitic(form.form), form.form) end end elseif not do_joined then -- Add clitic before form. for _, form in ipairs(base.forms[slot]) do form.form = prefix_clitic_to_form(base, get_proclitic(form.form), "", form.form) end end end end end end local function handle_infinitive_linked(base) -- Compute linked versions of potential lemma slots, for use in {{ca-verb}}. -- We substitute the original lemma (before removing links) for forms that -- are the same as the lemma, if the original lemma has links. for _, slot in ipairs({"infinitive"}) do insert_forms(base, slot .. "_linked", iut.map_forms(base.forms[slot], function(form) if form == base.lemma and rfind(base.linked_lemma, "%[%[") then return base.linked_lemma else return form end end)) end end local function generate_negative_imperatives(base) if base.noimp then return end -- Copy subjunctives to negative imperatives, preceded by "no". for _, persnum in ipairs(neg_imp_person_number_list) do local from = "pres_sub_" .. persnum local to = "neg_imp_" .. persnum insert_forms(base, to, iut.map_forms(base.forms[from], function(form) if base.alternant_multiword_spec.args.noautolinkverb then return "no " .. form elseif form:find("%[%[") then -- already linked, e.g. when reflexive return "[[no]] " .. form else return "[[no]] [[" .. form .. "]]" end end)) end end -- Process specs given by the user using 'addnote[SLOTSPEC][FOOTNOTE][FOOTNOTE][...]'. local function process_addnote_specs(base) for _, spec in ipairs(base.addnote_specs) do for _, slot_spec in ipairs(spec.slot_specs) do slot_spec = "^" .. slot_spec .. "$" for slot, forms in pairs(base.forms) do if rfind(slot, slot_spec) then -- To save on memory, side-effect the existing forms. for _, form in ipairs(forms) do form.footnotes = iut.combine_footnotes(form.footnotes, spec.footnotes) end end end end end end local function add_missing_links_to_forms(base) -- Any forms without links should get them now. Redundant ones will be stripped later. for slot, forms in pairs(base.forms) do for _, form in ipairs(forms) do if not form.form:find("%[%[") then form.form = "[[" .. form.form .. "]]" end end end end local function conjugate_verb(base) construct_stems(base) add_present_indic(base) add_present_subj(base) add_finite_non_present(base) add_non_finite_forms(base) fix_double_umlauts(base) -- do non-reflexive non-imperative slot overrides process_slot_overrides(base, function(slot) return not slot:find("^imp_") and not slot:find("^neg_imp_") end) -- This should happen after process_slot_overrides() in case a derived slot is based on an override -- (as with the imp_3s of [[dar]], [[estar]]). add_imperatives(base) -- do non-reflexive positive imperative slot overrides process_slot_overrides(base, function(slot) return slot:find("^imp_") end) -- We need to add joined reflexives, then joined and non-joined clitics, then non-joined reflexives, so we get -- [[arrepéndete]] but [[no]] [[te]] [[arrependas]]. if base.refl then add_reflexive_or_fixed_clitic_to_forms(base, "do reflexive", "do joined") process_slot_overrides(base, nil, "do reflexive") -- do reflexive-only slot overrides add_reflexive_or_fixed_clitic_to_forms(base, "do reflexive", false) end -- This should happen after add_reflexive_or_fixed_clitic_to_forms() so negative imperatives get the reflexive pronoun -- and clitic in them. generate_negative_imperatives(base) -- do non-reflexive negative imperative slot overrides -- FIXME: What about reflexive negative imperatives? process_slot_overrides(base, function(slot) return slot:find("^neg_imp_") end) -- This should happen before add_missing_links_to_forms() so that the comparison `form == base.lemma` -- in handle_infinitive_linked() works correctly and compares unlinked forms to unlinked forms. handle_infinitive_linked(base) process_addnote_specs(base) if not base.alternant_multiword_spec.args.noautolinkverb then add_missing_links_to_forms(base) end end local function parse_indicator_spec(angle_bracket_spec) -- Store the original angle bracket spec so we can reconstruct the overall conj spec with the lemma(s) in them. local base = { angle_bracket_spec = angle_bracket_spec, user_basic_overrides = {}, user_stems = {}, addnote_specs = {}, } local function parse_err(msg) error(msg .. ": " .. angle_bracket_spec) end local function fetch_footnotes(separated_group) local footnotes for j = 2, #separated_group - 1, 2 do if separated_group[j + 1] ~= "" then parse_err("Extraneous text after bracketed footnotes: '" .. table.concat(separated_group) .. "'") end if not footnotes then footnotes = {} end table.insert(footnotes, separated_group[j]) end return footnotes end local inside = angle_bracket_spec:match("^<(.*)>$") assert(inside) if inside == "" then return base end local segments = put.parse_balanced_segment_run(inside, "[", "]") local dot_separated_groups = put.split_alternating_runs(segments, "%.") for i, dot_separated_group in ipairs(dot_separated_groups) do local first_element = dot_separated_group[1] if first_element == "addnote" then local spec_and_footnotes = fetch_footnotes(dot_separated_group) if #spec_and_footnotes < 2 then parse_err("Spec with 'addnote' should be of the form 'addnote[SLOTSPEC][FOOTNOTE][FOOTNOTE][...]'") end local slot_spec = table.remove(spec_and_footnotes, 1) local slot_spec_inside = rmatch(slot_spec, "^%[(.*)%]$") if not slot_spec_inside then parse_err("Internal error: slot_spec " .. slot_spec .. " should be surrounded with brackets") end local slot_specs = rsplit(slot_spec_inside, ",") -- FIXME: Here, [[Module:it-verb]] called strip_spaces(). Generally we don't do this. Should we? table.insert(base.addnote_specs, {slot_specs = slot_specs, footnotes = spec_and_footnotes}) elseif indicator_flags[first_element] then if #dot_separated_group > 1 then parse_err("No footnotes allowed with '" .. first_element .. "' spec") end if base[first_element] then parse_err("Spec '" .. first_element .. "' specified twice") end base[first_element] = true elseif first_element:find("^var:") then if #dot_separated_group > 1 then parse_err(("Can't attach footnotes to 'var:' spec '%s'"):format(first_element)) end base.var = first_element:match("^var:(.*)$") elseif first_element:find(":") then local colon_separated_groups = put.split_alternating_runs(dot_separated_group, "%s*:%s*") local first_element = colon_separated_groups[1][1] if #colon_separated_groups[1] > 1 then parse_err("Can't attach footnotes directly to '" .. first_element .. "' spec; attach them to the " .. "colon-separated values following the initial colon") end if overridable_stems[first_element] then if base.user_stems[first_element] then parse_err("Overridable stem '" .. first_element .. "' specified twice") end table.remove(colon_separated_groups, 1) base.user_stems[first_element] = overridable_stems[first_element](colon_separated_groups, {prefix = first_element, base = base, parse_err = parse_err, fetch_footnotes = fetch_footnotes}) else -- assume a basic override; we validate further later when the possible slots are available if base.user_basic_overrides[first_element] then parse_err("Basic override '" .. first_element .. "' specified twice") end table.remove(colon_separated_groups, 1) base.user_basic_overrides[first_element] = allow_multiple_values_for_override(colon_separated_groups, {prefix = first_element, base = base, parse_err = parse_err, fetch_footnotes = fetch_footnotes}, "is form override") end else parse_err("Unrecognized spec '" .. first_element .. "'") end end return base end -- Normalize all lemmas, substituting the pagename for blank lemmas and adding links to multiword lemmas. local function normalize_all_lemmas(alternant_multiword_spec, head) -- (1) Add links to all before and after text. Remember the original text so we can reconstruct the verb spec later. if not alternant_multiword_spec.args.noautolinktext then iut.add_links_to_before_and_after_text(alternant_multiword_spec, "remember original") end -- (2) Remove any links from the lemma, but remember the original form so we can use it below in the 'lemma_linked' -- form. iut.map_word_specs(alternant_multiword_spec, function(base) if base.lemma == "" then base.lemma = head end base.user_specified_lemma = base.lemma base.lemma = m_links.remove_links(base.lemma) local refl_verb = base.lemma local verb, refl = rmatch(refl_verb, "^(.-)%-(se)$") if not verb then verb, refl = rmatch(refl_verb, "^(.-)('s)$") end if not verb then verb, refl = refl_verb, nil end base.user_specified_verb = verb base.refl = refl base.verb = base.user_specified_verb local linked_lemma if alternant_multiword_spec.args.noautolinkverb or base.user_specified_lemma:find("%[%[") then linked_lemma = base.user_specified_lemma elseif base.refl then -- Reconstruct the linked lemma with separate links around base verb, reflexive pronoun and clitic. linked_lemma = base.user_specified_verb == base.verb and "[[" .. base.user_specified_verb .. "]]" or "[[" .. base.verb .. "|" .. base.user_specified_verb .. "]]" linked_lemma = linked_lemma .. (refl and "-[[" .. refl .. "]]" or "") else -- Add links to the lemma so the user doesn't specifically need to, since we preserve links in multiword -- lemmas and include links in non-lemma forms rather than allowing the entire form to be a link. linked_lemma = iut.add_links(base.user_specified_lemma) end base.linked_lemma = linked_lemma end) end local function detect_indicator_spec(base) if (base.only3s and 1 or 0) + (base.only3sp and 1 or 0) + (base.only3p and 1 or 0) > 1 then error("Only one of 'only3s', 'only3sp' and 'only3p' can be specified") end base.forms = {} base.input_stems = {} base.basic_overrides = {} base.basic_reflexive_only_overrides = {} base.orig_verb = base.verb -- in case of a 'like = "..."' redirect if not base.no_built_in then local function match_built_in_spec(verb, built_in_spec) local prefix, non_prefixed_verb if type(built_in_spec.match) == "function" then prefix, non_prefixed_verb = built_in_spec.match(verb) elseif built_in_spec.match:find("^%^") and rsub(built_in_spec.match, "^%^", "") == verb then -- begins with ^, for exact match, and matches prefix, non_prefixed_verb = "", verb else prefix, non_prefixed_verb = rmatch(verb, "^(.*)(" .. built_in_spec.match .. ")$") end return prefix, non_prefixed_verb end local function find_built_in(verb, var) for _, built_in_spec in ipairs(built_in_conjugations) do local prefix, non_prefixed_verb = match_built_in_spec(verb, built_in_spec) if prefix then if not built_in_spec.var then if var then error(("Can't specify a variant spec 'var:%s' with verb '%s'"):format(var, verb)) end return prefix, non_prefixed_verb, built_in_spec elseif not var then local possible_vars = {} for _, built_in_spec in ipairs(built_in_conjugations) do local prefix, non_prefixed_verb = match_built_in_spec(verb, built_in_spec) if prefix then table.insert(possible_vars, built_in_spec.var) end end error(("For verb '%s', must specify a variant using 'var:...'; possible values are %s"):format( verb, table.concat(possible_vars, ", "))) elseif built_in_spec.var == var then return prefix, non_prefixed_verb, built_in_spec end end end return nil end local prefix, non_prefixed_verb, built_in_spec = find_built_in(base.verb, base.var) if prefix then -- we found a built-in verb if built_in_spec.like then -- we found a redirect to another verb that has the same conjugation, just a different infinitive base.verb = prefix .. built_in_spec.like local new_prefix, new_non_prefixed_verb, new_built_in_spec = find_built_in(base.verb, built_in_spec.likevar) if new_prefix then -- redirected to another built-in verb base.prefix = new_prefix base.non_prefixed_verb = new_non_prefixed_verb built_in_spec = new_built_in_spec else built_in_spec = nil end else base.prefix = prefix base.non_prefixed_verb = non_prefixed_verb end end if built_in_spec then -- we found a built-in verb, possibly redirecting to another built-in verb for stem, forms in pairs(built_in_spec.forms) do if type(forms) == "function" then forms = forms(base, base.prefix) end if stem:find("^refl_") then stem = stem:gsub("^refl_", "") if not base.alternant_multiword_spec.verb_slots_basic_map[stem] then error("Internal error: setting for 'refl_" .. stem .. "' does not refer to a basic verb slot") end base.basic_reflexive_only_overrides[stem] = forms elseif base.alternant_multiword_spec.verb_slots_basic_map[stem] then -- an individual form override of a basic form base.basic_overrides[stem] = forms else base.input_stems[stem] = forms end end end end -- Override built-in-verb stems and overrides with user-specified ones. for stem, values in pairs(base.user_stems) do base.input_stems[stem] = values end for override, values in pairs(base.user_basic_overrides) do if not base.alternant_multiword_spec.verb_slots_basic_map[override] then error("Unrecognized override '" .. override .. "': " .. base.angle_bracket_spec) end base.basic_overrides[override] = values end base.prefix = base.prefix or "" base.non_prefixed_verb = base.non_prefixed_verb or base.verb local inf_stem, suffix = rmatch(base.non_prefixed_verb, "^(.*)(re)$") if not inf_stem then inf_stem, suffix = rmatch(base.non_prefixed_verb, "^(.*)([aeiu]r)$") end if not inf_stem then error("Unrecognized infinitive: " .. base.verb) end -- Remove accents from e.g. [[parèixer]], [[córrer]]. inf_stem = com.remove_accents(inf_stem) -- Save full infinitive stem for use in future and conditional. base.inf_stem = (inf_stem .. suffix):gsub("e$", "") local stem = inf_stem if suffix == "re" then -- verbs in -ldre, -ndre have stem without the d stem = stem:gsub("([ln])d$", "%1") elseif suffix == "ur" then stem = stem .. "u" end base.conj_vowel = (suffix == "re" or suffix == "ur") and "e" or suffix:gsub("r$", "") -- If the stem is followed by a front vowel, convert it to its "back" form before calling combine_stem_ending(), -- which expects the "back" form of the stem and may convert it back to the "front" form. Don't do this conversion -- for ï so we leave [[arguïr]] (underlyingly 'argüïr') as 'argu' ("back" form), which becomes 'argü' ("front" form) -- before front vowel ï and we end up with base.stem containing the underlying form 'argüï'. We remove the first of -- two umlauts in a row in a postprocessing step (fix_double_umlauts()). if rfind(suffix, "^[ei]") then stem = com.front_to_back(stem) end -- Use combine_stem_ending() so we get ï if necessary. base.stem = combine_stem_ending(base, stem, base.conj_vowel, false, "dont include prefix") -- Propagate built-in-verb indicator flags to `base` and combine with user-specified flags. for indicator_flag, _ in pairs(indicator_flags) do base[indicator_flag] = base[indicator_flag] or base.input_stems[indicator_flag] end end local function detect_all_indicator_specs(alternant_multiword_spec) -- Propagate some settings up; some are used internally, others by [[Module:pt-headword]]. iut.map_word_specs(alternant_multiword_spec, function(base) -- Internal indicator flags. Do these before calling detect_indicator_spec() because add_slots() uses them. for _, prop in ipairs { "refl", "clitic" } do if base[prop] then alternant_multiword_spec[prop] = true end end base.alternant_multiword_spec = alternant_multiword_spec end) add_slots(alternant_multiword_spec) iut.map_word_specs(alternant_multiword_spec, function(base) detect_indicator_spec(base) -- User-specified indicator flags. Do these after calling detect_indicator_spec() because the latter may set these -- indicators for built-in verbs. for prop, _ in pairs(indicator_flags) do if base[prop] then alternant_multiword_spec[prop] = true end end end) end local function add_categories_and_annotation(alternant_multiword_spec, base, multiword_lemma) local function insert_ann(anntype, value) m_table.insertIfNot(alternant_multiword_spec.annotation[anntype], value) end local function insert_cat(cat, also_when_multiword) -- Don't place multiword terms in categories like 'Catalan verbs ending in -ar' to avoid spamming the -- categories with such terms. if also_when_multiword or not multiword_lemma then m_table.insertIfNot(alternant_multiword_spec.categories, "カタルーニャ語 " .. cat) end end if check_for_red_links and alternant_multiword_spec.source_template == "ca-conj" and multiword_lemma then for _, slot_and_accel in ipairs(alternant_multiword_spec.all_verb_slots) do local slot = slot_and_accel[1] local forms = base.forms[slot] local must_break = false if forms then for _, form in ipairs(forms) do if not form.form:find("%[%[") then local title = mw.title.new(form.form) if title and not title.exists then insert_cat("活用表に赤リンクを含む動詞") must_break = true break end end end end if must_break then break end end end map_general(base.output_stems.stem, function(stem) local stem_base, conj_vowel = split_conj_vowel(stem) local need_no_eix_infix = true if conj_vowel ~= base.conj_vowel then insert_ann("conj", "[[付録:カタルーニャ語の動詞#不規則動詞|混合活用]]") elseif conj_vowel == "a" then insert_ann("conj", "[[付録:カタルーニャ語の動詞#第一変化動詞|第一変化]]") insert_cat("第一変化動詞") elseif conj_vowel == "e" then insert_ann("conj", "[[付録:カタルーニャ語の動詞#第二変化動詞|第二変化]]") insert_cat("第二変化動詞") elseif conj_vowel == "i" then insert_ann("conj", "[[付録:カタルーニャ語の動詞#第三変化動詞|第三変化]]") insert_cat("第三変化動詞") need_no_eix_infix = false map_general(base.output_stems.eix_infix, function(form) if form == "+" then insert_ann("eix_infix", "接中辞-eix-有り") insert_cat("-eix-を含む第三変化動詞") elseif form == "-" then insert_ann("eix_infix", "接中辞-eix-無し") insert_cat("-eix-を含まない第三変化動詞") end end) else error(("Internal error: Stem '%s' doesn't end in conjugation vowel a/e/i and split_conj_vowel() didn't catch it" ):format(stem)) end if need_no_eix_infix then insert_ann("eix_infix", "接中辞無し") end end) if base.input_stems.g_infix then insert_ann("g_infix", "軟口蓋接中辞有り") insert_cat("軟口蓋接中辞を含む動詞") else insert_ann("g_infix", "接中辞無し") end if base.output_stems.irreg then insert_ann("irreg", "不規則") insert_cat("不規則動詞") else insert_ann("irreg", "規則") end if base.only3s then insert_ann("defective", "非人称") insert_cat("非人称動詞") elseif base.only3sp then insert_ann("defective", "第三人称のみ") insert_cat("第三人称動詞") elseif base.only3p then insert_ann("defective", "第三人称複数のみ") insert_cat("第三人称複数動詞") elseif base.no_pres_stressed then insert_ann("defective", "欠如") insert_cat("欠如動詞") else insert_ann("defective", "規則") end --if base.clitic then -- insert_cat("verbs with lexical clitics") --end if base.refl then insert_cat("再帰動詞") end local stem_base, conj_vowel = split_conj_vowel(base.stem) local cons_alt if conj_vowel == "i" and base.output_stems.eix_infix == "+" then -- no alternations in verbs like [[afligir]] because all endings are front elseif stem_base:find("ç$") then cons_alt = "ç-c" elseif stem_base:find("c$") then cons_alt = "c-qu" elseif stem_base:find("g$") then cons_alt = "g-gu" elseif stem_base:find("gu$") then cons_alt = "gu-gü" elseif stem_base:find("j$") then cons_alt = "j-g" elseif stem_base:find("qu$") then cons_alt = "qu-qü" end if cons_alt then local desc = cons_alt .. " alternation" insert_ann("cons_alt", desc) insert_cat(desc .. "交替の動詞") else insert_ann("cons_alt", "non-alternating") end end -- Compute the categories to add the verb to, as well as the annotation to display in the -- conjugation title bar. We combine the code to do these functions as both categories and -- title bar contain similar information. local function compute_categories_and_annotation(alternant_multiword_spec) alternant_multiword_spec.categories = {} local ann = {} alternant_multiword_spec.annotation = ann ann.conj = {} ann.g_infix = {} ann.eix_infix = {} ann.irreg = {} ann.defective = {} ann.cons_alt = {} local multiword_lemma = false for _, form in ipairs(alternant_multiword_spec.forms.infinitive) do if form.form:find(" ") then multiword_lemma = true break end end iut.map_word_specs(alternant_multiword_spec, function(base) add_categories_and_annotation(alternant_multiword_spec, base, multiword_lemma) end) local ann_parts = {} local conj = table.concat(ann.conj, " or ") if conj ~= "" then table.insert(ann_parts, conj) end local eix_infix = table.concat(ann.eix_infix, " or ") if eix_infix ~= "" and eix_infix ~= "no infix" then table.insert(ann_parts, eix_infix) end local irreg = table.concat(ann.irreg, " or ") if irreg ~= "" and irreg ~= "regular" then table.insert(ann_parts, irreg) end local g_infix = table.concat(ann.g_infix, " or ") if g_infix ~= "" and g_infix ~= "no infix" then table.insert(ann_parts, g_infix) end local defective = table.concat(ann.defective, " or ") if defective ~= "" and defective ~= "regular" then table.insert(ann_parts, defective) end local cons_alt = table.concat(ann.cons_alt, " or ") if cons_alt ~= "" and cons_alt ~= "non-alternating" then table.insert(ann_parts, cons_alt) end alternant_multiword_spec.annotation = table.concat(ann_parts, ", ") end local function show_forms(alternant_multiword_spec) local lemmas = alternant_multiword_spec.forms.infinitive alternant_multiword_spec.lemmas = lemmas -- save for later use in make_table() local reconstructed_verb_spec = iut.reconstruct_original_spec(alternant_multiword_spec) local function transform_accel_obj(slot, formobj, accel_obj) -- No accelerators for negative imperatives, which are always multiword and derived directly from the -- present subjunctive. if slot:find("^neg_imp") then return nil end if accel_obj then accel_obj.form = "verb-form-" .. reconstructed_verb_spec end return accel_obj end local props = { lang = lang, lemmas = lemmas, transform_accel_obj = transform_accel_obj, slot_list = alternant_multiword_spec.verb_slots_basic, } iut.show_forms(alternant_multiword_spec.forms, props) alternant_multiword_spec.footnote_basic = alternant_multiword_spec.forms.footnote end local notes_template = [=[ <div class="roa-footnote-outer-div" style="width:100%;"> <div class="roa-footnote-inner-div"> {footnote} </div></div> ]=] local basic_table = [=[ {description}<div class="NavFrame"> <div class="NavHead">&nbsp; &nbsp; {title} の活用</div> <div class="NavContent"> {\op}| class="roa-inflection-table" data-toggle-category="inflection" |- ! colspan="3" class="roa-nonfinite-header" | <span title="infinitiu">不定詞</span> | colspan="5" | {infinitive} |- ! colspan="3" class="roa-nonfinite-header" | <span title="gerundi">現在分詞</span> | colspan="5" | {gerund} |- ! rowspan="3" colspan="2" class="roa-nonfinite-header" | <span title="participi passat">過去分詞</span> | colspan="2" class="roa-nonfinite-header" | ! colspan="2" class="roa-nonfinite-header" | 男性 ! colspan="2" class="roa-nonfinite-header" | 女性 |- ! colspan="2" class="roa-nonfinite-header" | 単数 | colspan="2" | {pp_ms} | colspan="2" | {pp_fs} |- ! colspan="2" class="roa-nonfinite-header" | 複数 | colspan="2" | {pp_mp} | colspan="2" | {pp_fp} |- ! colspan="2" rowspan="2" class="roa-person-number-header" | 人称 ! colspan="3" class="roa-person-number-header" | 単数 ! colspan="3" class="roa-person-number-header" | 複数 |- ! class="roa-person-number-header" style="width:12.5%;" | 第一人称 ! class="roa-person-number-header" style="width:12.5%;" | 第二人称 ! class="roa-person-number-header" style="width:12.5%;" | 第三人称 ! class="roa-person-number-header" style="width:12.5%;" | 第一人称 ! class="roa-person-number-header" style="width:12.5%;" | 第二人称 ! class="roa-person-number-header" style="width:12.5%;" | 第三人称 |- ! rowspan="6" class="roa-indicative-left-rail" | <span title="indicatiu">直説法</span> ! class="roa-indicative-left-rail" | ! class="roa-indicative-left-rail" | <<jo>> ! class="roa-indicative-left-rail" | <<tu>> ! class="roa-indicative-left-rail" | <<ell>>/<<ella>><br /><<vostè>> ! class="roa-indicative-left-rail" | <<nosaltres>><br /><<nós>> ! class="roa-indicative-left-rail" | <<vosaltres>><br /><<vós>> ! class="roa-indicative-left-rail" | <<ells>>/<<elles>><br /><<vostès>> |- ! class="roa-indicative-left-rail" style="height:3em;" | <span title="present">現在</span> | {pres_1s} | {pres_2s} | {pres_3s} | {pres_1p} | {pres_2p} | {pres_3p} |- ! class="roa-indicative-left-rail" style="height:3em;" | <span title="imperfet">不完了過去</span> | {impf_1s} | {impf_2s} | {impf_3s} | {impf_1p} | {impf_2p} | {impf_3p} |- ! class="roa-indicative-left-rail" style="height:3em;" | <span title="futur">未来</span> | {fut_1s} | {fut_2s} | {fut_3s} | {fut_1p} | {fut_2p} | {fut_3p} |- ! class="roa-indicative-left-rail" style="height:3em;" | <span title="passat">完了過去</span> | {pret_1s} | {pret_2s} | {pret_3s} | {pret_1p} | {pret_2p} | {pret_3p} |- ! class="roa-indicative-left-rail" style="height:3em;" | <span title="condicional">可能法</span> | {cond_1s} | {cond_2s} | {cond_3s} | {cond_1p} | {cond_2p} | {cond_3p} |- ! class="roa-subjunctive-left-rail" rowspan="3" | <span title="subjuntiu">接続法</span> ! class="roa-subjunctive-left-rail" | ! class="roa-subjunctive-left-rail" | <<jo>> ! class="roa-subjunctive-left-rail" | <<tu>> ! class="roa-subjunctive-left-rail" | <<ell>>/<<ella>><br /><<vostè>> ! class="roa-subjunctive-left-rail" | <<nosaltres>><br /><<nós>> ! class="roa-subjunctive-left-rail" | <<vosaltres>><br /><<vós>> ! class="roa-subjunctive-left-rail" | <<ells>>/<<elles>><br /><<vostès>> |- ! class="roa-subjunctive-left-rail" style="height:3em;" | <span title="present">現在</span> | {pres_sub_1s} | {pres_sub_2s} | {pres_sub_3s} | {pres_sub_1p} | {pres_sub_2p} | {pres_sub_3p} |- ! class="roa-subjunctive-left-rail" style="height:3em;" rowspan="1" | <span title="imperfet">過去</span> | {impf_sub_1s} | {impf_sub_2s} | {impf_sub_3s} | {impf_sub_1p} | {impf_sub_2p} | {impf_sub_3p} |- ! rowspan="3" class="roa-imperative-left-rail" style="height:3em;" | <span title="imperatiu">命令法</span> ! class="roa-imperative-left-rail" | ! class="roa-imperative-left-rail" | &mdash; ! class="roa-imperative-left-rail" | <<tu>> ! class="roa-imperative-left-rail" | <<vostè>> ! class="roa-imperative-left-rail" | <<nosaltres>> ! class="roa-imperative-left-rail" | <<vosaltres>><br /><<vós>> ! class="roa-imperative-left-rail" | <<vostès>> |- ! class="roa-imperative-left-rail" style="height:3em;" | <span title="afirmatiu">-</span> | &mdash; | {imp_2s} | {imp_3s} | {imp_1p} | {imp_2p} | {imp_3p} |- ! class="roa-imperative-left-rail" style="height:3em;" | <span title="negatiu">禁止</span> (<<no>>) | &mdash; | {neg_imp_2s} | {neg_imp_3s} | {neg_imp_1p} | {neg_imp_2p} | {neg_imp_3p} |{\cl}{notes_clause}</div></div>]=] local function make_table(alternant_multiword_spec) local forms = alternant_multiword_spec.forms forms.title = link_term(alternant_multiword_spec.lemmas[1].form, nil, "term") local ann_parts = {} if alternant_multiword_spec.annotation ~= "" then table.insert(ann_parts, alternant_multiword_spec.annotation) end if alternant_multiword_spec.args.titlenote then table.insert(ann_parts, alternant_multiword_spec.args.titlenote) end local annotation = table.concat(ann_parts, ", ") if annotation ~= "" then forms.title = forms.title .. " (" .. annotation .. ")" end forms.description = "" -- Format the table. forms.footnote = alternant_multiword_spec.footnote_basic forms.notes_clause = forms.footnote ~= "" and m_string_utilities.format(notes_template, forms) or "" local table_with_pronouns = rsub(basic_table, "<<([^<>|]-)|([^<>|]-)>>", link_term) local table_with_pronouns = rsub(table_with_pronouns, "<<(.-)>>", link_term) return require("Module:TemplateStyles")("Module:roa-verb/style.css") .. m_string_utilities.format(table_with_pronouns, forms) end -- Externally callable function to parse and conjugate a verb given user-specified arguments. -- Return value is WORD_SPEC, an object where the conjugated forms are in `WORD_SPEC.forms` -- for each slot. If there are no values for a slot, the slot key will be missing. The value -- for a given slot is a list of objects {form=FORM, footnotes=FOOTNOTES}. function export.do_generate_forms(args, source_template, headword_head) local PAGENAME = mw.loadData("Module:headword/data").pagename local function in_template_space() return mw.title.getCurrentTitle().nsText == "テンプレート" end -- Determine the verb spec we're being asked to generate the conjugation of. This may be taken from the -- current page title or the value of |pagename=; but not when called from {{ca-verb form of}}, where the -- page title is a non-lemma form. Note that the verb spec may omit the infinitive; e.g. it may be "<i-e>". -- For this reason, we use the value of `pagename` computed here down below, when calling normalize_all_lemmas(). local pagename = source_template ~= "ca-verb form of" and args.pagename or PAGENAME local head = headword_head or pagename local arg1 = args[1] if not arg1 then if (pagename == "ca-conj" or pagename == "ca-verb" or pagename == "ca-verb form of") and in_template_space() then arg1 = "amar<>" else arg1 = "<>" end end -- When called from {{ca-verb form of}}, determine the non-lemma form whose inflections we're being asked to -- determine. This normally comes from the page title or the value of |pagename=. local verb_form_of_form if source_template == "ca-verb form of" then verb_form_of_form = args.pagename if not verb_form_of_form then if PAGENAME == "ca-verb form of" and in_template_space() then verb_form_of_form = "ami" else verb_form_of_form = PAGENAME end end end local incorporated_headword_head_into_lemma = false if arg1:find("^<.*>$") then -- missing lemma if head:find(" ") then -- If multiword lemma, try to add arg spec after the first word. -- Try to preserve the brackets in the part after the verb, but don't do it -- if there aren't the same number of left and right brackets in the verb -- (which means the verb was linked as part of a larger expression). local refl_clitic_verb, post = rmatch(head, "^(.-)( .*)$") local left_brackets = rsub(refl_clitic_verb, "[^%[]", "") local right_brackets = rsub(refl_clitic_verb, "[^%]]", "") if #left_brackets == #right_brackets then arg1 = iut.remove_redundant_links(refl_clitic_verb) .. arg1 .. post incorporated_headword_head_into_lemma = true else -- Try again using the form without links. local linkless_head = m_links.remove_links(head) if linkless_head:find(" ") then refl_clitic_verb, post = rmatch(linkless_head, "^(.-)( .*)$") arg1 = refl_clitic_verb .. arg1 .. post else error("Unable to incorporate <...> spec into explicit head due to a multiword linked verb or " .. "unbalanced brackets; please include <> explicitly: " .. arg1) end end else -- Will be incorporated through `head` below in the call to normalize_all_lemmas(). incorporated_headword_head_into_lemma = true end end local function split_bracketed_runs_into_words(bracketed_runs) return put.split_alternating_runs(bracketed_runs, " ", "preserve splitchar") end local parse_props = { parse_indicator_spec = parse_indicator_spec, -- Split words only on spaces, not on hyphens, because that messes up reflexive verb parsing. split_bracketed_runs_into_words = split_bracketed_runs_into_words, allow_default_indicator = true, allow_blank_lemma = true, } local alternant_multiword_spec = iut.parse_inflected_text(arg1, parse_props) alternant_multiword_spec.pos = pos or "verbs" alternant_multiword_spec.args = args alternant_multiword_spec.source_template = source_template alternant_multiword_spec.verb_form_of_form = verb_form_of_form alternant_multiword_spec.incorporated_headword_head_into_lemma = incorporated_headword_head_into_lemma normalize_all_lemmas(alternant_multiword_spec, head) detect_all_indicator_specs(alternant_multiword_spec) local inflect_props = { slot_list = alternant_multiword_spec.all_verb_slots, inflect_word_spec = conjugate_verb, -- We add links around the generated verbal forms rather than allow the entire multiword -- expression to be a link, so ensure that user-specified links get included as well. include_user_specified_links = true, } iut.inflect_multiword_or_alternant_multiword_spec(alternant_multiword_spec, inflect_props) -- Remove redundant brackets around entire forms. for slot, forms in pairs(alternant_multiword_spec.forms) do for _, form in ipairs(forms) do form.form = iut.remove_redundant_links(form.form) end end compute_categories_and_annotation(alternant_multiword_spec) if args.json and source_template == "ca-conj" then return require("Module:JSON").toJSON(alternant_multiword_spec.forms) end return alternant_multiword_spec end -- Entry point for {{ca-conj}}. Template-callable function to parse and conjugate a verb given -- user-specified arguments and generate a displayable table of the conjugated forms. function export.show(frame) local parent_args = frame:getParent().args local params = { [1] = {}, ["titlenote"] = {}, ["noautolinktext"] = {type = "boolean"}, ["noautolinkverb"] = {type = "boolean"}, ["pagename"] = {}, -- for testing/documentation pages ["json"] = {type = "boolean"}, -- for bot use } local args = require("Module:parameters").process(parent_args, params) local alternant_multiword_spec = export.do_generate_forms(args, "ca-conj") if type(alternant_multiword_spec) == "string" then -- JSON return value return alternant_multiword_spec end show_forms(alternant_multiword_spec) return make_table(alternant_multiword_spec) .. require("Module:utilities").format_categories(alternant_multiword_spec.categories, lang, nil, nil, force_cat) end return export fbhmsc62e4d96ybt2rqjkp3gggefnyg 2313412 2313410 2026-08-09T09:29:54Z Kuroco2k 84207 2313412 Scribunto text/plain --[=[ This module implements {{ca-conj}} and provides the underlying conjugation functions for {{ca-verb}} (whose actual formatting is done in [[Module:ca-headword]]). Authorship: Ben Wing <benwing2> ]=] local export = {} --[=[ TERMINOLOGY: -- "slot" = A particular combination of tense/mood/person/number/etc. Example slot names for verbs are "pres_1s" (present indicative first-person singular), "pres_sub_2s" (present subjunctive second-person singular) "impf_sub_3p" (imperfect subjunctive third-person plural). Each slot is filled with zero or more forms. -- "form" = The conjugated Catalan form representing the value of a given slot. -- "lemma" = The dictionary form of a given Catalan term. For Catalan, always the infinitive. ]=] --[=[ FIXME: --]=] local lang = require("Module:languages").getByCode("ca") local m_string_utilities = require("Module:string utilities") local m_links = require("Module:links") local m_table = require("Module:table") local iut = require("Module:inflection utilities") local put = require("Module:parse utilities") local com = require("Module:ca-common") local force_cat = false -- set to true for debugging local check_for_red_links = false -- set to false for debugging local rfind = mw.ustring.find local rmatch = mw.ustring.match local rsplit = mw.text.split local rsubn = mw.ustring.gsub local rsub = com.rsub local u = mw.ustring.char local unpack = unpack or table.unpack -- Lua 5.2 compatibility -- version of rsubn() that returns a 2nd argument boolean indicating whether a substitution was made. local function rsubb(term, foo, bar) local retval, nsubs = rsubn(term, foo, bar) return retval, nsubs > 0 end local function link_term(term, display, face) return m_links.full_link({ lang = lang, term = term, alt = display }, face) end local front_vowel = "eèéiíï" local front_vowel_c = "[" .. front_vowel .. "]" local V = com.V -- vowel regex class local C = com.C -- consonant regex class -- IS_USER_STEM_OVERRIDE is prepended to user-supplied stem overrides to prevent `base.prefix` from being prepended. -- IS_USER_FORM_OVERRIDE is similar but also prevents final devoicing (cf. Balearic pres_1s 'trob' of [[trobar]]). -- Don't use 0xFFF0 in case we call a [[Module:parse-utilities]] function that uses it temporarily. local IS_USER_STEM_OVERRIDE = u(0xFFF1) local IS_USER_FORM_OVERRIDE = u(0xFFF2) --[=[ Irregular verbs: -ldre/-ndre verbs: infinitive pres1s pres3s pres1p impf1s fut1s pret1s sub1s sub1p pp caldre - cal [calent] calia caldrà calgué calgui - calgut,- coldre colc col colem colia coldré colguí colgui colguem colt,colta doldre dolc dol dolem dolia doldré dolguí dolgui dolguem dolgut,dolguda moldre molc mol molem molia moldré molguí molgui molguem molt,molta oldre olc ol olem olia oldré olguí olgui olguem olgut,olguda -soldre -solc -sol -solem -solia -soldré -solguí -solgui -solguem -solt,-solta (absoldre, dissoldre, resoldre) toldre tolc tol tolem tolia toldré tolguí tolgui tolguem tolt,tolta romandre romanc roman romanem romania romandré romanguí romangui romanguem romàs,romasa,romasos encendre encenc encén encenem encenia encendré encenguí encengui encenguem encès,encesa,encesos fendre fenc fen/-fèn fenem fenia fendré fenguí fengui fenguem fes/-fès,fesa,fesos (defendre, ofendre) -pendre -depenc -pèn -penem -penia -pendré -penguí -pengui -penguem -pès,-pesa,-pesos (dependre,despendre,expendre,suspendre) prendre prenc pren/-prèn prenem prenia prendré prenguí prengui prenguem pres/-près,presa,presos (aprendre, comprendre, desprendre, emprendre, reprendre, sorprendre) -tendre -tenc -tén -tenem -tenia -tendré -tenguí -tengui -tenguem -tès,-tesa,-tesos (pres2s: atens, pres3p: atenen) (atendre, contendre, distendre, entendre, estendre, pretendre) vendre venc ven venem venia vendré venguí vengui venguem venut,venuda (malvendre, revendre) fondre fonc fon fonem fonia fondré fonguí fongui fonguem fos/-fós,fosa,fosos (confondre, difondre, infondre, refondre) enfondre enfonc enfon enfonem enfonia enfondré enfonguí enfongui enfonguem enfús,enfusa,enfusos pondre ponc pon ponem ponia pondré ponguí pongui ponguem post,posta,postos (compondre, correspondre, descompondre, respondre) tondre tonc ton tonem tonia tondré tonguí tongui tonguem tos,tosa,tosos cerndre cerno cern cernem cernia cerndré cerní cerni cernem cernut,cernuda -ler verbs (mostly like -ldre verbs): infinitive pres1s pres3s pres1p impf1s fut1s pret1s sub1s sub1p pp caler (var. of caldre) doler (var. of doldre) soler solc sol solem solia soldré solguí solgui solguem solgut,solguda valer/valdre valc val valem valia valdré valguí valgui valguem valgut,valguda (prevaler, equivaler) other -dre/-tre verbs (regular except sometimes pp): infinitive pres1s pres3s pres1p impf1s fut1s pret1s sub1s sub1p pp batre bato bat batem batia batré batí bati batem batut,batuda -metre -meto -met -metem -metia -metré -metí -meti -metem -mès,-mesa,-mesos (ad-, co-, compro-, e-, entremetre's, mal-, o-, per-, pro-, read-, re-, retrans-, sot-, tra-, trans-) perdre perdo perd perdem perdia perdré perdí perdi perdem perdut,perduda -ure verbs infinitive pres1s pres3s pres1p impf1s impf1p fut1s pret1s sub1s sub1p pp caure caic cau caiem queia quèiem cauré caiguí caigui caiguem caigut,caiguda (decaure, recaure) plaure plac plau plaem plaïa plaíem plauré plaguí plagui plaguem plagut,plaguda (complaure) raure rac rau raem raïa raíem rauré raguí ragui raguem ragut,raguda beure bec beu bevem bevia bevíem beuré beguí begui beguem begut,beguda (embeure) creure crec creu creiem creia crèiem creuré creguí cregui creguem cregut,creguda deure dec deu devem devia devíem deuré deguí degui deguem degut,deguda jeure jec jeu jaiem jeia jèiem jauré jaguí jegui jaguem jagut,jaguda (ajeure) lleure - lleu [-] llevia - lleurà llegué llegui - llegut,- seure sec seu seiem seia sèiem seuré seguí segui seguem segut,seguda (asseure) treure trec treu traiem treia trèiem trauré traguí tregui traguem tret,treta (abstreure, atreure, contreure, distreure, extreure, retreure, sostreure) veure veig veu veiem veia vèiem veuré viu,veieres/veres, vegi vegem vist,vista,vists/vistos (entreveure, preveure, reveure) veié/veu,veiérem/vérem riure ric riu riem reia rèiem riuré riguí rigui riguem rigut,riguda (somriure) (e)scriure escric escriu escrivim escrivia escrivíem escriuré escriví/escriguí escrigui escriguem escrit,escrita (circumscriure, descriure, inscriure, prescriure, proscriure, subscriure, transcriure) viure visc viu vivim vivia vivíem viuré visquí visqui visquem viscut,viscuda (conviure, sobreviure) cloure cloc clou cloem cloïa cloíem clouré cloguí clogui cloguem clos,closa,closos (concloure, descloure, encloure, excloure, incloure, recloure) encloure encloc enclou encloem encloïa encloíem enclouré encloguí enclogui encloguem enclòs,enclosa,enclosos coure coc cou coem coïa coíem couré coguí cogui coguem cuit/cogut,cuita/coguda moure moc mou movem movia movíem mouré moguí mogui moguem mogut,moguda (promoure) noure noc nou noem noïa noíem nouré noguí nogui noguem nogut,noguda ploure - plou [plovent] plovia - plourà plogué plogui - plogut,ploguda -nyer verbs (regular except pp) infinitive pres1s pres3s pres1p impf1s fut1s pret1s sub1s sub1p pp atènyer atenyo ateny atenyem atenyia atenyeré atenyí atenyi atenyem atès,atesa,atesos empènyer empenyo empeny empenyem empenyia empenyeré empenyí empenyi empenyem empès,empesa,empesos estrènyer estrenyo estreny estrenyem estrenyia estrenyeré estrenyí estrenyi estrenyem estret,estreta estrènyer (constrènyer,restrènyer) fènyer fenyo feny fenyem fenyia fenyeré fenyí/fenguí fenyi fenyem fenyut/fengut,fenyuda/fenguda pertànyer pertanyo pertany pertanyem pertanyia pertanyeré pertanyí/pertanguí pertanyi pertanyem pertanyut/pertangut,pertanyuda/pertanguda plànyer planyo plany planyem planyia planyeré planyí/planguí planyi planyem plangut/planyut,planguda/planyuda -xer verbs (NOTE: pres2s in -xes) infinitive pres1s pres3s pres1p impf1s fut1s pret1s sub1s sub1p pp créixer creixo creix creixem creixia creixeré creixí/cresquí creixi creixem crescut,crescuda (acréixer,decréixer) conèixer conec coneix coneixem coneixia coneixeré coneguí conegui coneguem conegut,coneguda (desconèixer,reconèixer) merèixer mereixo mereix mereixem mereixia mereixeré mereixí/meresquí mereixi mereixem merescut,merescuda néixer/ neixo/ neix/ naixem naixia naixeré naixí/nasquí neixi/ naixem/nasquem nascut,nascuda nàixer naixo naix naixi (renéixer) parèixer parec pareix pareixem pareixia pareixeré pareguí paregui pareguem paregut,pareguda (aparèixer,comparèixer,desaparèixer,reaparèixer) péixer peixo peix paixem paixia paixeré paixí peixi paixem pascut,pascuda misc. -er verbs infinitive pres1s pres3s pres1p impf1s impf1p fut1s pret1s sub1s sub1p pp córrer corro corre correm corria corríem correré correguí corri correm corregut,correguda fúmer fumo fum fumem fumia fumíem fumeré fumí fumi fumem fumut,fumuda prémer premo prem premem premia premíem premeré premí premi premem premut,premuda (es-, re-) témer temo tem temem temia temíem temeré temí temi temem temut,temuda trémer [regular] tòrcer torço torç torcem torcia torcíem torceré torcí torci torcem torçut,torçuda (des-) [pres2s torces] vèncer venço venç vencem vencia vencíem venceré vencí venci vencem vençut,vençuda (con-, re-) [pres2s vences] cabre/caber cabo cap cabem cabia cabíem cabré cabí càpiga capiguem cabut,cabuda [sub2s càpigues] haver he/haig ha havem/hem havia havíem hauré haguí hagi hàgim/haguem hagut,haguda [noimp] [cond1s hauria/haguera; impsub2s haguessis/haguesses] poder puc pot podem podia podíem podré poguí pugui puguem pogut,poguda saber sé sap sabem sabia sabíem sabré sabí sàpiga sapiguem sabut,sabuda [imp2s sàpigues, imp2p sapigueu] voler vull vol volem volia volíem voldré volguí vulgui vulguem volgut,volguda ser/ésser soc és som era érem seré fui sigui siguem estat/sigut,estada/siguda [ger sent/essent] [cond1s seria/fora] [pres: soc,ets,éts,som,sou,són; pret: fui,fores,fou,fórem,fóreu,foren; impsub: fos,fossis,fos,fóssim,fóssiu,fossin] [imp: sigues,sigueu] fer faig fa fem feia fèiem faré fiu faci fem fet,feta [pres3p fan] [pret: fiu,feres,feu,férem,féreu,feren] ]=] local all_persons_numbers = { ["1s"] = "1|s", ["2s"] = "2|s", ["3s"] = "3|s", ["1p"] = "1|p", ["2p"] = "2|p", ["3p"] = "3|p", } local person_number_list = {"1s", "2s", "3s", "1p", "2p", "3p"} local imp_person_number_list = {"2s", "3s", "1p", "2p", "3p"} local neg_imp_person_number_list = {"2s", "3s", "1p", "2p", "3p"} proclitic_non_elided_person_number_to_reflexive_pronoun = { ["1s"] = "em ", ["2s"] = "et ", ["3s"] = "es ", ["1p"] = "ens ", ["2p"] = "us ", ["3p"] = "es ", } proclitic_elided_person_number_to_reflexive_pronoun = { ["1s"] = "m'", ["2s"] = "t'", ["3s"] = "s'", ["1p"] = "ens ", ["2p"] = "us ", ["3p"] = "s'", } enclitic_non_elided_person_number_to_reflexive_pronoun = { ["1s"] = "-me", ["2s"] = "-te", ["3s"] = "-se", ["1p"] = "-nos", ["2p"] = "-vos", ["3p"] = "-se", } enclitic_elided_person_number_to_reflexive_pronoun = { ["1s"] = "'m", ["2s"] = "'t", ["3s"] = "'s", ["1p"] = "'ns", ["2p"] = "-us", ["3p"] = "'s", } local indicator_flags = m_table.listToSet { "no_pres_stressed", "only3s", "only3sp", "only3p", "noimp", "pp_inv", "irreg", "no_built_in", } -- Initialize all the slots for which we generate forms. local function add_slots(alternant_multiword_spec) -- "Basic" slots: All slots that go into the regular table (not the reflexive form-of table). alternant_multiword_spec.verb_slots_basic = { {"infinitive", "inf"}, {"infinitive_linked", "inf"}, {"gerund", "ger"}, {"pp_ms", "m|s|past|part"}, {"pp_fs", "f|s|past|part"}, {"pp_mp", "m|p|past|part"}, {"pp_fp", "f|p|past|part"}, } -- Special slots used to handle non-reflexive parts of reflexive verbs in {{ca-verb form of}}. For example, for a -- reflexive-only verb like [[arrepentirse]], we want to be able to use {{ca-verb form of}} on [[arrepinta]] (which -- should mention that it is a part of 'me arrepinta', first-person singular present subjunctive, and -- 'se arrepinta', third-person singular present subjunctive) or on [[arrepentimos]] (which should mention that it -- is a part of 'arrepentímonos', first-person plural present indicative or preterite). Similarly, we want to use -- {{ca-verb form of}} on [[arrepentindo]] (which should mention that it is a part of 'se ... arrepentindo', -- syntactic variant of [[arrepentíndose]], which is the gerund of [[arrepentirse]]). To do this, we need to be -- able to map non-reflexive parts like [[arrepinta]], [[arrepentimos]], [[arrepentindo]], etc. to their reflexive -- equivalent(s), to the tag(s) of the equivalent(s), and, in the case of forms like [[arrepentindo]], -- [[arrepentir]] and imperatives, to the separated syntactic variant of the verb+clitic combination. We do this by -- creating slots for the non-reflexive part equivalent of each basic reflexive slot, and for the separated -- syntactic-variant equivalent of each basic reflexive slot that is formed of verb+clitic. We use slots in this -- way to deal with multiword lemmas. Note that we run into difficulties mapping between reflexive verbs, -- non-reflexive part equivalents, and separated syntactic variants if a slot contains more than one form. To -- handle this, if there are the same number of forms in two slots we're trying to match up, we assume the forms -- match one-to-one; otherwise we don't match up the two slots (which means {{ca-verb form of}} won't work in this -- case, but such a case is extremely rare and not worth worrying about). Alternatives that handle this "properly" -- are significantly more complicated and require non-trivial modifications to [[Module:inflection utilities]]. local need_special_verb_form_of_slots = alternant_multiword_spec.source_template == "ca-verb form of" and alternant_multiword_spec.refl if need_special_verb_form_of_slots then alternant_multiword_spec.verb_slots_reflexive_verb_form_of = { {"infinitive_non_reflexive", "-"}, {"infinitive_variant", "-"}, {"gerund_non_reflexive", "-"}, {"gerund_variant", "-"}, } else alternant_multiword_spec.verb_slots_reflexive_verb_form_of = {} end -- Add entries for a slot with person/number variants. -- `verb_slots` is the table to add to. -- `slot_prefix` is the prefix of the slot, typically specifying the tense/aspect. -- `tag_suffix` is a string listing the set of inflection tags to add after the person/number tags. -- `person_number_list` is a list of the person/number slot suffixes to add to `slot_prefix`. local function add_personal_slot(verb_slots, slot_prefix, tag_suffix, person_number_list) for _, persnum in ipairs(person_number_list) do local persnum_tag = all_persons_numbers[persnum] local slot = slot_prefix .. "_" .. persnum local accel = tag_suffix .. "|" .. persnum_tag table.insert(verb_slots, {slot, accel}) end end -- Add a personal slot (i.e. a slot with person/number variants) to `verb_slots_basic`. local function add_basic_personal_slot(slot_prefix, tag_suffix, person_number_list, no_special_verb_form_of_slot) add_personal_slot(alternant_multiword_spec.verb_slots_basic, slot_prefix, tag_suffix, person_number_list) -- Add special slots for handling non-reflexive parts of reflexive verbs in {{ca-verb form of}}. -- See comment above in `need_special_verb_form_of_slots`. if need_special_verb_form_of_slots and not no_special_verb_form_of_slot then for _, persnum in ipairs(person_number_list) do local persnum_tag = all_persons_numbers[persnum] local basic_slot = slot_prefix .. "_" .. persnum local accel = tag_suffix .. "|" .. persnum_tag table.insert(alternant_multiword_spec.verb_slots_reflexive_verb_form_of, {basic_slot .. "_non_reflexive", "-"}) end end end add_basic_personal_slot("pres", "直説法|現在", person_number_list) add_basic_personal_slot("impf", "直説法|不完全過去", person_number_list) add_basic_personal_slot("pret", "直説法|完全過去", person_number_list) add_basic_personal_slot("fut", "直説法|未来", person_number_list) add_basic_personal_slot("cond", "可能法", person_number_list) add_basic_personal_slot("pres_sub", "接続法|現在", person_number_list) add_basic_personal_slot("impf_sub", "接続法|過去", person_number_list) add_basic_personal_slot("imp", "命令法", imp_person_number_list) -- Don't need special non-reflexive-part slots because the negative imperative is multiword, of which the -- individual words are 'no' + subjunctive. add_basic_personal_slot("neg_imp", "命令法|禁止", neg_imp_person_number_list, "no special verb form of") -- Don't need special non-reflexive-part slots because we don't want [[arrependendo]] mapping to [[arrependendo-me]] -- (only [[arrependendo-se]]) or [[arrepender]] mapping to [[arrepender-me]] (only [[arrepender-se]]). add_basic_personal_slot("infinitive", "inf", person_number_list, "no special verb form of") add_basic_personal_slot("gerund", "ger", person_number_list, "no special verb form of") -- Generate the list of all slots. alternant_multiword_spec.all_verb_slots = {} for _, slot_and_accel in ipairs(alternant_multiword_spec.verb_slots_basic) do table.insert(alternant_multiword_spec.all_verb_slots, slot_and_accel) end for _, slot_and_accel in ipairs(alternant_multiword_spec.verb_slots_reflexive_verb_form_of) do table.insert(alternant_multiword_spec.all_verb_slots, slot_and_accel) end alternant_multiword_spec.verb_slots_basic_map = {} for _, slotaccel in ipairs(alternant_multiword_spec.verb_slots_basic) do local slot, accel = unpack(slotaccel) alternant_multiword_spec.verb_slots_basic_map[slot] = accel end end local overridable_stems = {} local function allow_multiple_values_for_override(separated_groups, data, is_form_override) local retvals = {} for _, separated_group in ipairs(separated_groups) do local footnotes = data.fetch_footnotes(separated_group) local form = separated_group[1] -- Prepend marker to prevent prefixing with `base.prefix`, and (in the case of form overrides) prevent -- final devoicing. if is_form_override then form = IS_USER_FORM_OVERRIDE .. form else form = IS_USER_STEM_OVERRIDE .. form end local retval = {form = form, footnotes = footnotes} table.insert(retvals, retval) end return retvals end for _, overridable_stem in ipairs { "stem", "stressed_stem", "unstressed_stem", "pres_unstressed", "pres_stressed", "pres3s", -- overrides just pres_2s and pres_3s -- Don't include pres1s, pres3p; use pres_1s etc. if you need to override just those forms "impf1", "impf2", "pret", "fut", "cond", "pres_sub_stressed", "pres_sub_unstressed", "impf_sub", "pp", "g_infix", "eix_infix", } do -- Written so we can substitute a different validator; parallel code in [[Module:es-verb]] and [[Module:pt-verb]] -- has simple_choice validators. overridable_stems[overridable_stem] = allow_multiple_values_for_override end -- Useful as the value of the `match` property of a built-in verb. `main_verb_spec` is a Lua pattern that should match -- the non-prefixed part of a verb, and `prefix_specs` is a list of Lua patterns that should match the prefixed part of -- a verb. If a prefix spec is preceded by ^, it must match exactly at the beginning of the verb; otherwise, additional -- prefixes (e.g. re-, des-) may precede. Return the prefix and main verb. local function match_against_verbs(main_verb_spec, prefix_specs) return function(verb) for _, prefix_spec in ipairs(prefix_specs) do if prefix_spec:find("^%^") then -- must match exactly prefix_spec = prefix_spec:gsub("^%^", "") if prefix_spec == "" then -- We can't use the second branch of the if-else statement because an empty () returns the current position -- in rmatch(). local main_verb = rmatch(verb, "^(" .. main_verb_spec .. ")$") if main_verb then return "", main_verb end else local prefix, main_verb = rmatch(verb, "^(" .. prefix_spec .. ")(" .. main_verb_spec .. ")$") if prefix then return prefix, main_verb end end else local prefix, main_verb = rmatch(verb, "^(.*" .. prefix_spec .. ")(" .. main_verb_spec .. ")$") if prefix then return prefix, main_verb end end end return nil end end --[=[ Built-in (usually irregular) conjugations. Each entry is processed in turn and consists of an object with two fields: 1. match=: Specifies the built-in verbs that match this object. 2. forms=: Specifies the built-in stems and forms for these verbs. The value of match= is either a string beginning with "^" (match only the specified verb), a string not beginning with "^" (match any verb ending in that string), or a function that is passed in the verb and should return the prefix of the verb if it matches, otherwise nil. The function match_against_verbs() is provided to facilitate matching a set of verbs with a common ending and specific prefixes (e.g. [[ter]] and [[ater]] but not [[abater]], etc.). The value of forms= is a table specifying stems and individual override forms. Each key of the table names either a stem (e.g. `pres_stressed`), a stem property (e.g. `g_infix`) or an individual override form (e.g. `pres_1s`). Each value of a stem can either be a string (a single stem), a list of strings, or a list of objects of the form {form = STEM, footnotes = {FOONOTES}}. Each value of an individual override should be of exactly the same form except that the strings specify full forms rather than stems. The values of a stem property depend on the specific property but are generally strings or booleans. In order to understand how the stem specifications work, it's important to understand the phonetic modifications done by combine_stem_ending(). In general, the complexities of predictable prefix, stem and ending modifications are all handled in this function. In particular: 1. Spelling-based modifications (c/qu, ç/c, g/gu, j/g, gu/gü, qu/qü) occur automatically as appropriate for the ending. 2. If the ending begins with an asterisk, this is a signal to delete the accent on the last syllable of the stem, e.g. veié -> veierem. 3. If ending begins with i, it may turn into í or ï after an unstressed vowel (in some but not all cases) to prevent the two merging into a diphthong. See combine_stem_ending() for specifics. The following stems are recognized [FIXME: This is not correct for Catalan, needs rewriting]: -- pres_unstressed: The present indicative unstressed stem (1p, 2p). Also controls the imperative 2p and gerund. Defaults to the infinitive stem (minus the ending -ar/-er/-ir/-or). -- pres_stressed: The present indicative stressed stem (1s, 2s, 3s, 3p). Also controls the imperative 2s. Default is empty if indicator `no_pres_stressed`, else a vowel alternation if such an indicator is given (e.g. `ue`, `ì`), else the infinitive stem. -- pres1: Special stem for 1s present indicative. Normally, do not set this explicitly. If you need to specify an irregular 1s present indicative, use the form override pres_1s= to specify the entire form. Defaults to pres_stressed. -- pres_sub_unstressed: The present subjunctive unstressed stem (1p, 2p). Defaults to the infinitive stem. -- pres_sub_stressed: The present subjunctive stressed stem (1s, 2s, 3s, 1p). Defaults to pres1. -- impf: The imperfect stem (not including the -av-/-i- stem suffix, which is determined by the conjugation). Defaults to the infinitive stem. -- pret: The full preterite stem missing only the endings (-ste, -mos, etc.), e.g. 'fige', 'fo'. Only used for verbs with irregular preterites (pret_conj == "irreg") such as [[facer]], [[poder]], [[traer]], etc. Defaults to `pret_base` + the conjugation vowel. -- fut: The future stem. Defaults to the infinitive stem + the conjugation vowel. -- cond: The conditional stem. Defaults to `fut`. -- impf_sub: The imperfect subjunctive stem. Defaults to `pret`. -- pp: The masculine singular past participle. Default is based on the verb conjugation: infinitive stem + '-ado' for -ar verbs, otherwise infinitive stem + '-ido'. -- pp_inv: `true` if the past participle exists only in the masculine singular. ]=] local built_in_conjugations = { -------------------------------------------------------------------------------------------- -- -ar -- -------------------------------------------------------------------------------------------- -- Orthographic consonant alternations in endings are handled automatically in combine_stem_ending(). { -- [[aguar]]: -- pres agúo, agúes, agúa, agüem, agüeu, agúen -- pres_sub aguï, aguïs, aguï, agüem, agüeu, aguïn -- contrast a more typical verb in -guar, [[enaiguar]]: -- pres enaiguo, enaigües, enaigua, enaigüem, enaigüeu, enaigüen -- pres_sub enaigüi, enaigüis, enaigüi, enaigüem, enaigüeu, enaigüin match = "^aguar", forms = { pres_stressed = "agú", pres_sub_stressed = "aguï", irreg = true, } }, { -- [[anar]] (full verb); highly irregular match = "^anar", var = "full", forms = { fut = "anir", pres_1s = "vaj", -- will be converted to 'vaig'; 'vaig' gets converted to 'vaic' pres_2s = "vas", pres_3s = "va", pres_3p = "van", pres_sub_stressed = "vagi", imp_2s = "ves", irreg = true, } }, { -- [[anar]] (auxiliary); highly irregular match = "^anar", var = "aux", forms = { pres_1s = "vaj", -- will be converted to 'vaig'; 'vaig' gets converted to 'vaic' pres_2s = {"vas", "vares"}, pres_3s = "va", pres_1p = {"vam", "vàrem"}, pres_2p = {"vau", "vàreu"}, pres_3p = {"van", "varen"}, pres_sub_stressed = "vagi", pres_sub_unstressed = "vàgi", impf1 = {}, impf2 = {}, fut = {}, pret = {}, pp = {}, gerund = {}, noimp = true, irreg = true, } }, { -- [[dar]] match = "^dar", forms = { pres_1s = {form = "do", footnotes = {"[obsolete]"}}, pres_2s = {form = "das", footnotes = {"[obsolete]"}}, pres_3s = {form = "da", footnotes = {"[obsolete]"}}, pres_3p = {form = "dan", footnotes = {"[obsolete]"}}, pres_sub_1s = {form = "de", footnotes = {"[obsolete]"}}, pres_sub_2s = {form = "des", footnotes = {"[obsolete]"}}, pres_sub_3s = {form = "de", footnotes = {"[obsolete]"}}, pres_sub_3p = {form = "den", footnotes = {"[obsolete]"}}, pret_1s = "di", -- regular except for lack of accent pret_3s = "da", -- regular except for lack of accent impf_sub_1s = "des", -- regular except for lack of accent impf_sub_3s = "des", -- regular except for lack of accent irreg = true, } }, { -- [[estar]]; highly irregular match = "^estar", forms = { pres_2s = "estàs", pres_3s = "està", pres_3p = "estan", g_infix = "estig", imp_2s = "estigues", imp_2p = "estigueu", pp = "estad", } }, -------------------------------------------------------------------------------------------- -- -er/-re -- -------------------------------------------------------------------------------------------- -- Regular verbs not needing entries here: -- -- [[rebre]], [[concebre]], [[decebre]], [[percebre]] -- [[rompre]] -- [[fúmer]], [[prémer]], [[témer]], [[trémer]] -- [[perdre]], [[batre]], [[botre]], [[fotre]], [[retre]] -- [[tòrcer]], [[vèncer]] -- etc. ------------------------------------------- -ldre/-ler/-lre -------------------------------------- { -- [[caldre]], [[doldre]], [[condoldre's]], [[oldre]] match = match_against_verbs("ldre", {"ca", "do", "^o"}), forms = { -- g_infix implies irreg = true -- g_infix adds -g to pres_1s, sub, pret and pp stems; combine_stem_ending() changes final -g to -c g_infix = "+", } }, { -- [[caler]] match = "caler", like = "caldre", }, { -- [[doler]] and compounds match = "doler", like = "doldre", }, { -- [[dolre]] match = "dolre", forms = { -- see above for g_infix effects g_infix = "+", } }, { -- [[valer]], [[equivaler]], [[prevaler]], [[sobrevaler]] match = "valer", forms = { -- see above for g_infix effects fut = "valdr", g_infix = "+", } }, { -- [[valdre]] and compounds match = "valdre", like = "valer", }, { -- [[soler]] match = "^soler", -- this must precede -oldre rule below for alt form [[soldre]] forms = { -- see above for g_infix effects fut = {}, pret = {}, impf_sub = "solgué", -- regular, but we disabled the preterite, which would normally disable impf_sub too g_infix = "+", pp = {}, noimp = true, } }, { -- [[soldre]] match = "^soldre", -- this must precede -oldre rule below like = "soler", }, { -- [[coldre]], [[moldre]], [[absoldre]], [[dissoldre]], [[resoldre]], [[toldre]] match = "oldre", -- this must follow [[doldre]]/[[oldre]] rule above forms = { -- see above for g_infix effects g_infix = "+", pp = "olt", } }, { -- [[voler]], [[malvoler]] match = "voler", forms = { fut = "voldr", pres_1s = "vull", pres_sub_stressed = "vulgui", pres_sub_unstressed = "vulgue", g_infix = "+", imp_2s = "vulgues", imp_2p = "vulgueu", } }, --------------------------------------------- -ndre ---------------------------------------- { -- [[romandre]]; write it this way so there's a prefix with a vowel to prevent against the accent in the pp -- from being removed while still removing it in the feminine. match = match_against_verbs("mandre", {"^ro"}), forms = { -- see above for g_infix effects g_infix = "+", pp = "màs#", } }, { -- [[encendre]], [[atendre]], [[contendre]], [[desentendre's]], [[distendre]], [[entendre]], [[estendre]], -- [[pretendre]] match = match_against_verbs("endre", {"enc", "t"}), forms = { pres_3s = "én#", -- remove final accent without prefix with vowel; also removed when adding a suffix -- see above for g_infix effects g_infix = "+", pp = "ès#", -- see above for effect of final # } }, { -- [[vendre]], [[malvendre]], [[revendre]] match = "vendre", forms = { pres_3s = "vèn#", -- see above for effect of final # -- see above for g_infix effects g_infix = "+", pp = "venud", -- g_infix would normally make it vengud } }, { -- [[fendre]], [[defendre]], [[ofendre]], [[dependre]], [[despendre]], [[expendre]], [[suspendre]], [[prendre]], -- [[aprendre]], [[comprendre]], [[desprendre]], [[emprendre]], [[reprendre]], [[sorprendre]] match = "endre", -- this must follow previous -endre rules above forms = { pres_3s = "èn#", -- see above for effect of final # -- see above for g_infix effects g_infix = "+", pp = "ès#", -- see above for effect of final # } }, { -- [[enfondre]]; write it this way so there's a prefix with a vowel to prevent against the accent in the pp -- from being removed while still removing it in the feminine. match = match_against_verbs("fondre", {"^en"}), forms = { -- see above for g_infix effects g_infix = "+", pp = "fús#", } }, { -- [[pondre]], [[compondre]], [[correspondre]], [[descompondre]], [[despondre's]], [[respondre]] match = "pondre", forms = { -- see above for g_infix effects g_infix = "+", pp = "post", } }, { -- [[fondre]], [[confondre]], [[difondre]], [[infondre]], [[refondre]], [[tondre]] match = "ondre", -- this must follow previous -ondre rules above forms = { -- see above for g_infix effects g_infix = "+", pp = "ós#", -- see above for effect of final # } }, --------------------------------------------- -nyer ---------------------------------------- { -- [[atènyer]]; write it this way so there's a prefix with a vowel to prevent against the accent in the pp -- from being removed while still removing it in the feminine. match = match_against_verbs("tènyer", {"^a"}), forms = { pp = "tès#", irreg = true, } }, { -- [[empènyer]], [[espènyer]] match = match_against_verbs("pènyer", {"^em", "^es"}), forms = { pp = "pès#", irreg = true, } }, { -- [[estrènyer]], [[constrènyer]], [[destrènyer]], [[restrènyer]] match = match_against_verbs("strènyer", {"^e", "con", "^de", "^re"}), forms = { pp = "stret", irreg = true, } }, { -- [[fènyer]] match = "fènyer", forms = { pp = {"fengud", "fenyud"}, irreg = true, } }, { -- [[júnyer]] match = "júnyer", like = "junyir", }, { -- [[plànyer]], [[complànyer]], [[pertànyer]] match = match_against_verbs("ànyer", {"pl", "pert"}), forms = { pp = {"angud", "anyud"}, irreg = true, } }, --------------------------------------------- -aure ---------------------------------------- { -- [[caure]], [[decaure]], [[recaure]] match = "caure", forms = { -- stem ending in -ai and imperfect in -ia causes special stressed imperfect logic to take effect; we get -- impf1s queia, impf1p quèiem (preceding vowel changed to è and attached to initial consonant using -- combine_stem_ending(), which changes c- to qu-) stem = "caie", -- i dropped by g_infix before u -- g_infix implies irreg = true -- g_infix adds -g to pres_1s, sub, pret and pp stems; combine_stem_ending() changes final -g to -c -- g_infix sets pres_stressed to end in -u, removing a preceding -i or -v g_infix = "+", } }, { -- [[plaure]], [[complaure]] match = "plaure", forms = { stem = "plae", -- ï in impf1s -aïa gets generated automatically by combine_stem_ending() g_infix = "+", } }, { -- [[raure]] match = "^raure", forms = { stem = "rae", -- ï in impf1s -aïa gets generated automatically by combine_stem_ending() g_infix = "+", pp = {"ragud", "ras"}, } }, --------------------------------------------- -eure ---------------------------------------- { -- [[beure]], [[embeure]], [[deure]], [[lleure]] match = match_against_verbs("eure", {"b", "d", "ll"}), forms = { stem = "eve", -- v dropped by g_infix before g and u g_infix = "+", } }, { -- [[creure]], [[seure]], [[asseure]] match = match_against_verbs("eure", {"cr", "s"}), forms = { stem = "ee", pres_unstressed = "eie", -- affects pres_1p, pres_2p, gerund, imperfect (see [[caure]]) g_infix = "+", } }, { -- [[jeure]], [[ajeure]] match = "jeure", forms = { fut = "jaur", -- affects future and cond stressed_stem = "jee", -- affects stressed forms, which get g added by g_infix by added except for -- pres_stressed, which gets u added (controls pres_3s, pres_2s, pres_3p) unstressed_stem = "jae", -- affects unstressed_stem, which get g added by g_infix pres_stressed = {"jeu", "jau"}, pres_unstressed = "jaie", -- affects pres_1p, pres_2p, gerund, imperfect (see [[caure]]) pres_1s = {"jec", "jac"}, impf1 = "jei", -- otherwise we'd get impf_1s '#geia' etc. impf2 = "jèi", g_infix = "+", } }, { match = "jaure", like = "jeure", }, { -- [[treure]], [[abstreure]], [[atreure]], [[bestreure]], [[contreure]], [[detreure]], [[distreure]], -- [[extreure]], [[retreure], [[retrotreure]], [[sostreure]] match = "treure", forms = { -- like [[jeure]] except for irregular pp fut = "traur", stressed_stem = "tree", unstressed_stem = "trae", pres_stressed = {"treu", "trau"}, pres_unstressed = "traie", pres_1s = {"trec", "trac"}, g_infix = "+", pp = "tret", } }, { match = "traure", like = "treure", }, { -- [[veure]], [[entreveure]], [[preveure]], [[reveure]] match = "veure", forms = { stem = "veie", -- impf1s veia, impf1p vèiem (preceding vowel changed to è) pres_stressed = "veu", pres_1s = "vej", -- will be converted to 'veig'; 'veig' gets converted to 'veic' pres_sub_stressed = "vegi", pres_sub_unstressed = "vege", pret = {"veié", "vé"}, pret_1s = "viu", pret_3s = {"veié", "veu"}, impf_sub = "veié", pp = "vist", imp_2s = "veges", imp_2p = {"vegeu", "veieu"}, irreg = true, } }, --------------------------------------------- -iure ---------------------------------------- { -- [[escriure]], [[circumscriure]], [[descriure]], [[inscriure]], [[prescriure]], [[proscriure]], -- [[subscriure]], [[transcriure]] match = "scriure", forms = { stem = "scrivi", -- v dropped by g_infix before g and u; pres_1p/pres_2p have -ir endings g_infix = "+", pret = {"scriví", "scrigué"}, pp = "scrit", } }, { -- [[riure]], [[somriure]] match = "riure", -- must follow rule for 'scriure' forms = { stem = "rie", -- impf1s reia, impf1p rèiem (preceding vowel changed to è) g_infix = "+", } }, { -- [[viure]], [[conviure]], [[desviure's]], [[sobreviure]] match = "viure", forms = { stem = "vivi", -- v dropped by g_infix before g and u; pres_1p/pres_2p have -ir endings g_infix = "visc", -- applies to pres1s, sub, pret, pp } }, --------------------------------------------- -oure ---------------------------------------- { -- [[cloure]], [[concloure]], [[descloure]], [[encloure]], [[excloure]], [[incloure]], [[recloure]] match = "cloure", forms = { stem = "cloe", -- ï in impf1s cloïa gets generated automatically by combine_stem_ending() g_infix = "+", pp = "clòs#", -- remove final accent without prefix with vowel; also removed when adding a suffix } }, { -- [[coure]] "to cook" match = "coure", var = "cook", forms = { stem = "coe", -- ï in impf1s coïa gets generated automatically by combine_stem_ending() g_infix = "+", pp = "cuit", } }, { -- [[coure]] "to sting" match = "coure", var = "sting", forms = { stem = "coe", -- ï in impf1s coïa gets generated automatically by combine_stem_ending() g_infix = "+", -- pp regular 'cogud' } }, { -- [[moure]], [[promoure]], [[remoure]], [[somoure]], [[ploure]] match = match_against_verbs("oure", {"m", "pl"}), forms = { stem = "ove", -- v dropped by g_infix before g and u g_infix = "+", } }, { -- [[noure]] match = "noure", forms = { stem = "noe", -- ï in impf1s -aïa gets generated automatically by combine_stem_ending() g_infix = "+", } }, --------------------------------------------- -xer ---------------------------------------- { -- [[conèixer]], [[desconèixer]], [[reconèixer]] match = "conèixer", forms = { g_infix = "coneg", } }, { -- [[créixer]], [[acréixer]], [[decréixer]], [[recréixer]], [[sobrecréixer]] match = "créixer", forms = { pret = {"creixé", "cresqué"}, pres_sub_unstressed = {"creixe", "cresque"}, pp = "crescud", irreg = true, } }, { -- [[merèixer]], [[desmerèixer]], [[irèixer-se]] match = match_against_verbs("rèixer", {"me", "^i"}), forms = { pret = {"reixé", "resqué"}, pres_sub_unstressed = {"reixe", "resque"}, pp = "rescud", irreg = true, } }, { -- [[néixer]]/[[nàixer]], [[renéixer]]/[[renàixer]], [[sobrenéixer]]/[[sobrenàixer]], [[péixer]]/[[pàixer]] match = match_against_verbs("éixer", {"n", "p"}), forms = { stem = "aixe", fut = "aixer", pres_stressed = {"eix", "aix"}, pres_1s = "eixo", pret = {"aixé", "asqué"}, pres_sub_stressed = "eixi", pres_sub_unstressed = {"aixe", "asque"}, pp = "ascud", irreg = true, } }, { match = "àixer", like = "éixer", }, { -- [[parèixer]], [[aparèixer]], [[comparèixer]], [[desaparèixer]], [[reaparèixer]] match = "parèixer", forms = { g_infix = "pareg", } }, --------------------------------------------- misc ---------------------------------------- { -- [[cabre]] match = "cabre", forms = { pres_sub_stressed = "càpiga", pres_sub_unstressed = "capigue", irreg = true, } }, { -- [[caber]] match = "caber", like = "cabre", }, { -- [[saber]] match = "saber", forms = { fut = "sabr", pres_1s = "sé", pres_sub_stressed = "sàpiga", pres_sub_unstressed = "sapigue", imp_2s = "sàpiga", imp_2p = "sapigueu", irreg = true, } }, { -- [[poder]] match = "poder", forms = { fut = "podr", pres_1s = "puc", pres_sub_stressed = "pugui", pres_sub_unstressed = "pugue", g_infix = "pog", imp_2s = "pugues", imp_2p = "pugueu", irreg = true, } }, { -- [[córrer]], [[acórrer]], [[concórrer]], [[decórrer]], [[descórrer]], [[discórrer]], [[encórrer]], -- [[escórrer]], [[incórrer]], [[ocórrer]], [[recórrer]], [[socórrer]], [[transcórrer]] match = "córrer", forms = { pret = "corregué", pres_sub_unstressed = {"corre", "corregue"}, pp = "corregud", irreg = true, } }, { -- [[metre]], [[admetre]], [[arremetre]], [[cometre]], [[comprometre]], [[demetre]], [[descomprometre]], -- [[emetre]], [[entremetre's]], [[escometre]], [[malmetre]], [[manumetre]], [[ometre]], [[permetre]], -- [[prometre]], [[readmetre]], [[remetre]], [[retransmetre]], [[sotmetre]], [[trametre]], [[transmetre]] match = "metre", forms = { pp = "mès#", irreg = true, } }, -------------------------------------------------------------------------------------------- -- -ir -- -------------------------------------------------------------------------------------------- { -- [[acudir]]; NOTE: Separation by meaning does not occur in DCC, DIEC, DEIEC, and DCVB says the distinction -- is geographical and makes no mention of distinction by meaning. OTOH ca.wikt does say that the pronominal -- sense "to occur" tends to conjugate non-inchoative. match = "acudir", forms = { eix_infix = {{ form = "+", footnotes = {'[especially in the sense "to turn up, to be present"]'} }, { form = "-", footnotes = {'[especially in the pronominal sense "to occur"]'} }} } }, -- [[afegir]]: -- non-inchoative in Valencia, inchoative elsewhere { -- [[ajupir]] -- [[buixir]] -- [[bullir]], [[rebullir]] -- [[cruixir]], [[escruixir]] (Routledge says this is inchoative but DIEC, DEIEC and DCC all disagree; note -- pres_2s 'cruixes', handled automatically) -- [[dormir]], [[adormir]] -- [[funyir]] -- [[grunyir]] -- [[munyir]], [[esmunyir]] -- [[pudir]] -- [[punyir]] -- [[retrunyir]] -- [[sallir]] -- [[sentir]], [[pressentir]], [[ressentir-se]]; not [[consentir]], with can be either non-inchoative or -- inchoative, and not [[assentir]] or [[dissentir]], which are only inchoative match = match_against_verbs("ir", {"ajup", "buix", "bull", "cruix", "dorm", "funy", "gruny", "muny", "pud", "puny", "retruny", "^sent", "pressent", "^ressent", "sall"}), forms = { eix_infix = "-", } }, { -- [[arrupir-se]]; -- [[brumir]]; -- [[brunzir]]; -- [[consumir]], [[resumir]], [[presumir]] (not [[sumir]], [[assumir]], [[subsumir]], which are regular) -- [[mentir]], [[desmentir]] -- [[percudir]]; cf. also [[acudir]], which to some extent has separate conjugations per meaning -- [[consentir]] match = match_against_verbs("ir", {"arrup", "brum", "brunz", "consum", "^resum", "presum", "ment", "percud", "consent"}), forms = { eix_infix = {"+", "-"}, } }, -- [[cenyir]]: -- non-inchoative or inchoative in Balearics, inchoative elsewhere { -- [[cobrir]], [[descobrir]], [[encobrir]], [[recobrir]], [[redescobrir]] match = "cobrir", forms = { pp = "cobert", irreg = true, } }, { -- [[collir]], [[acollir]], [[escollir]], [[recollir]] match = "collir", forms = { stressed_stem = "culli", eix_infix = "-", irreg = true, } }, { -- [[complir]], [[acomplir]], [[incomplir]] match = "complir", forms = { pp = {"complert", "complid"}, irreg = true, } }, { -- [[cosir]], [[descosir]], [[recosir]] match = "cosir", forms = { stressed_stem = "cusi", pres_3s = "cús#", eix_infix = "-", irreg = true, } }, { -- [[eixir]], [[deseixir-se]]; not [[teixir]] or [[entreteixir]], and not [[reeixir]] or [[sobreeixir]], -- which have an ï in the stem-stressed forms match = match_against_verbs("eixir", {"^", "des"}), forms = { stressed_stem = "ixi", eix_infix = "-", irreg = true, } }, { -- [[reeixir]], [[sobreeixir]] match = match_against_verbs("eixir", {"^re", "sobre"}), forms = { stressed_stem = "ïxi", eix_infix = "-", irreg = true, } }, -- [[engolir]]: -- non-inchoative in Valencia, inchoative elsewhere { -- [[escopir]] match = "escopir", forms = { stressed_stem = "escupi", eix_infix = "-", irreg = true, } }, { -- [[establir]], [[preestablir]], [[restablir]] match = "establir", forms = { pp = {"establert", "establid"}, irreg = true, } }, -- [[ferir]]: -- non-inchoative in Balearics, inchoative elsewhere -- [[fregir]]: -- non-inchoative in Valencia, inchoative elsewhere { -- [[fugir]], [[confugir]], [[defugir]], [[enfugir-se]]; pres sing ''fujo, fuges, fuig'' handled by -- combine_stem_ending(); can't be handled by rule above that lists many non-inchoative verbs because the -- prefix would be 'fug' and the front-back alternation code doesn't apply to prefixes. match = "fugir", forms = { eix_infix = "-", } }, { -- [[imprimir]], [[reimprimir]], [[sobreimprimir]]; not any other verbs in -primir; write it this way so -- there's a prefix with a vowel to prevent against the accent in the pp from being removed while still -- removing it in the feminine. match = match_against_verbs("primir", {"im"}), forms = { pp = "près#", irreg = true, } }, -- [[llegir]]: -- non-inchoative in Valencia and Minorca, inchoative elsewhere { -- [[lluir]]: regular inchoative in the figurative meaning "to display (something), to be showy" also in the -- legal meaning "free from a pecuniary obligation, such as a land-based tax (emphyteusis)"; irregular in the -- literal meaning "to shine"; use <no_built_in> to get regular conjugation. In the regular conjugation, -- umlauts appear in the following forms: pres_1p/pres_sub_1p/imp_1p lluïm, pres_2p/pres_sub_2p/imp_2p lluïu, -- impf_1s/impf_3s lluïa, impf_2s lluïes, impf_3p lluïen, pret_2s lluïres, pret_3p lluïren, -- impf_sub_2s lluïssis, impf_sub_3p lluïssin, throughout the pp: lluït, lluïda, lluïts, lluïdes. IN the -- irregular conjugation, umlauts appear in the same places as well as elsewhere in the present subjunctive: -- pres_sub_1s/pres_sub_3s/imp_3s lluï, pres_sub_2s lluïs, pres_sub_3p/imp_3p lluïn. Notably, they do *NOT* -- appear in the gerund lluint, the infinitive lluir, or anywhere in the future or conditional. Note that -- verbs.cat [https://www.verbs.cat/en/conjugation/899-lluir.html] lists additional irregular forms pres_1s -- lluu, and alternative impf_sub forms in -e- instead of -i- (lluïsses, lluíssem, lluísseu, lluïssen), but -- these are nonstandard or dialectal per both Routledge and DEIEC. match = "^lluir", forms = { eix_infix = "-", pres3s = {"lluu", "llu"}, -- generates pres_2s, imp_2s irreg = true, } }, { -- [[entrelluir]] "to be half-seen", [[relluir]] "to shine", [[traslluir-se]] "to be translucent"; either -- inchoative or non-inchoative, not distinguished by meaning; note, [[deslluir]] and [[enlluir]] are regular -- inchoative verbs. match = match_against_verbs("lluir", {"entre", "^re", "tras"}), forms = { eix_infix = {"+", "-"}, pres3s = {"llueix", "lluu", "llú"}, -- generates pres_2s, imp_2s; note, pres_2s will end in -es due to -- combine_stem_ending() irreg = true, } }, { -- [[morir]], [[premorir]]; but not [[atemorir]] match = match_against_verbs("morir", {"^", "pre"}), forms = { eix_infix = "-", pp = "mort", irreg = true, } }, { -- [[obrir]], [[entreobrir]], [[reobrir]]; not [[cobrir]] and derivatives, not [[empobrir]], so we have to list -- them individually match = match_against_verbs("obrir", {"^", "entre", "^re"}), forms = { eix_infix = "-", pp = "obert", irreg = true, } }, { -- [[oferir]]; but not [[proferir]] match = "^oferir", forms = { pp = {"ofert", "oferid"}, irreg = true, } }, -- [[oir]], [[desoir]], [[entreoir]]: -- per Routledge, non-inchoative or inchoative normally but only -- non-inchoative in Valencian; but all dictionaries disagree and say it is a regular inchoative-only verb. -- It has the same umlauts as lluir (and [[corroir]], another regular inchoative verb). { -- [[omplir]], [[desomplir-se]], [[reomplir]]; not [[complir]] and derivatives, so we have to list them -- individually match = match_against_verbs("omplir", {"^", "des", "^re"}), forms = { eix_infix = "-", pp = {"omplert", "omplid"}, irreg = true, } }, -- [[penedir-se]]: -- non-inchoative in Balearics, inchoative elsewhere { -- [[pruir]] "to itch": same umlauts as in [[lluir]]. match = "^pruir", forms = { eix_infix = "-", pres3s = {"pruu", "pru"}, -- generates pres_2s, imp_2s irreg = true, } }, { -- [[reblir]] match = "^reblir", forms = { pp = {"reblert", "reblid"}, irreg = true, } }, -- [[renyir]]: -- non-inchoative in Valencia, inchoative elsewhere { -- [[sofrir]] match = "^sofrir", forms = { pp = {"sofert", "sofrid"}, irreg = true, } }, { -- [[sortir]], [[ressortir]], [[sobresortir]]; but not [[assortir]], which is regular inchoative match = match_against_verbs("sortir", {"^", "^res", "sobre"}), forms = { stressed_stem = "surti", eix_infix = "-", irreg = true, } }, { -- [[suplir]] match = "^suplir", forms = { pp = {"suplert", "suplid"}, irreg = true, } }, -- [[teixir]], [[entreteixir]]: -- non-inchoative in Valencia, inchoative elsewhere { -- [[tenir]] but not any compounds; highly irregular match = "^tenir", forms = { fut = "tindr", pres_stressed = "ten", pres_3s = "té", imp_2s = {"té", "ten", "tingues"}, imp_2p = {"teniu", "tingueu"}, g_infix = "ting", } }, { -- [[abstenir-se]], [[atenir-se]], [[captenir-se]], [[cartenir]], [[contenir]], [[detenir]], [[entretenir]], -- [[mantenir]], [[menystenir]], [[obtenir]], [[retenir]], [[sostenir]], [[viltenir]]; highly irregular match = "tenir", forms = { fut = "tindr", pres_stressed = "ten", pres_3s = "té", imp_2s = {"tén", "tingues"}, imp_2p = {"teniu", "tingueu"}, g_infix = "ting", } }, { -- [[tindre]]: variant of [[tenir]] match = "tindre", like = "tenir", }, -- [[tenyir]], [[destenyir]]: -- non-inchoative in Valencia, but [[retenyir]] inchoative or non-inchoative in -- Valencia? (per Routledge); regular inchoative elsewhere { -- [[tossir]] "to cough" match = "^tossir", forms = { stressed_stem = "tussi", -- pres_2s gets 'tusses' pres_3s = "tus", -- note, pres_3s (a single form override) not pres3s (a stem override, which also affects -- pres_2s; but imp_2s is physically copied from pres_3s, so imp_2s correctly gets 'tus') eix_infix = "-", irreg = true, } }, { -- [[venir]] but not any compounds; highly irregular match = "^venir", forms = { fut = "vindr", pres_stressed = "ven", pres_3s = "ve", imp_2s = "vine", g_infix = "ving", } }, { -- compounds of [[venir]]: [[advenir]], [[avenir]], [[contravenir]], [[convenir]], [[desavenir-se]], -- [[desconvenir]], [[entrevenir]], [[esdevenir]], [[intervenir]], [[obvenir]], [[pervenir]], [[prevenir]], -- [[provenir]], [[reconvenir]], [[revenir]], [[sobrevenir]], [[subvenir]]; but not [[enjovenir]] or -- [[rejovenir]]; highly irregular match = match_against_verbs("venir", {"^ad", "^a", "contra", "con", "desa", "entre", "esde", "inter", "ob", "per", "pre", "pro", "^re", "sobre", "sub"}), forms = { fut = "vindr", pres_stressed = "ven", pres_3s = "vé", imp_2s = "vén", g_infix = "ving", } }, { -- [[vindre]]: variant of [[venir]] match = "vindre", like = "venir", }, -- [[vestir]], [[desvestir]], [[revestir]], maybe [[transvestir]]: non-inchoative in Valencia, inchoative or -- non-inchoative in the Balearics; regular inchoative elsewhere; but not [[envestir]] or [[investir]], which are -- regular inchoative everywhere { -- [[fer]], [[contrafer]], [[desfer]], [[estrafer]], [[perfer]], [[refer]], [[satisfer]]; highly irregular match = "fer", forms = { fut = "far", pres_1s = "faj", -- will be converted to 'faig'; 'faig' gets converted to 'faic' pres_2s = "fàs#", pres_3s = "fà#", pres_3p = "fan", pres_unstressed = "fe", impf1 = "fei", impf2 = "fèi", pres_sub_stressed = "faci", pres_sub_unstressed = "fe", pret = "fé", pret_1s = "fiu", pret_3s = "feu", impf_sub_1s = "fés#", -- regular except for base form [[fes]], lacking an accent impf_sub_3s = "fés#", -- same imp_2s = "fés#", pp = "fet", irreg = true, } }, { -- [[dir]], [[adir-se]], [[contradir]], [[desdir]], [[entredir]], [[interdir]], [[maldir]], [[predir]], [[redir]]; -- behaves like an -er/-re verb match = match_against_verbs("dir", {"^", "^a", "contra", "des", "entre", "inter", "mal", "pre", "^re"}), forms = { stem = "die", g_infix = "+", imp_2s = "digues", imp_2p = "digueu", pp = "dit", } }, { -- [[dur]], [[endur-se]]; behaves like an -er/-re verb match = "dur", forms = { stem = "due", g_infix = "+", pres3s = {"duu", "du"}, -- generates pres_2s, imp_2s impf1 = "dui", impf2 = "dúi", pp = "dut", } }, { -- [[ser]]; highly irregular match = "^ser", forms = { pres_1s = "soc", pres_2s = "ets", pres_3s = "és", pres_1p = "som", pres_2p = "sou", pres_3p = "són", impf1 = "er", impf2 = "ér", pres_sub_stressed = "sigui", pres_sub_unstressed = "sigue", pret = "fó", pret_1s = "fui", pret_3s = "fou", impf_sub_1s = "fos", -- regular except for lack of accent impf_sub_3s = "fos", -- same cond = {"serí", "fór"}, imp_2s = "sigues", imp_2p = "sigueu", pp = {"estad", "sigud"}, gerund = {"sent", "essent"}, irreg = true, } }, { -- [[ésser]]; variant of [[ser]] match = "^ésser", like = "ser", }, { -- [[haver]] as auxiliary; highly irregular match = "^haver", var = "aux", forms = { pres_1s = "he", pres_2s = "has", pres_3s = "ha", pres_1p = "hem", pres_2p = "heu", pres_3p = "han", fut = "haur", cond = {"haurí", "haguér"}, pres_sub_stressed = "hagi", pres_sub_unstressed = "hàgi", noimp = true, g_infix = "+", } }, { -- [[haver]] as full verb; highly irregular match = "^haver", var = "full", forms = { pres_1s = {"hec", "hac"}, pres_stressed = {"heu", "hau"}, fut = "haur", pres_sub_stressed = "hegui", g_infix = "+", } }, { -- [[heure]]; variant of full verb [[haver]] match = "^heure", like = "haver", likevar = "full", }, { -- [[haure]]; variant of full verb [[haver]] match = "^haure", like = "haver", likevar = "full", }, } local function skip_slot(base, slot, allow_overrides) if not allow_overrides and (base.basic_overrides[slot] or base.refl and base.basic_reflexive_only_overrides[slot]) then -- Skip any slots for which there are overrides. return true end if base.only3s and (slot:find("^pp_f") or slot:find("^pp_mp")) then -- diluviar, atardecer, neviscar; impersonal verbs have only masc sing pp return true end if not slot:find("[123]") then -- Don't skip non-personal slots. return false end if base.nofinite then return true end if (base.only3s or base.only3sp or base.only3p) and (slot:find("^imp_") or slot:find("^neg_imp_")) then return true end if base.only3s and not slot:find("3s") then -- diluviar, atardecer, neviscar return true end if base.only3sp and not slot:find("3[sp]") then -- atañer, concernir return true end if base.only3p and not slot:find("3p") then -- [[caer cuatro gotas]], [[caer chuzos de punta]], [[entrarle los siete males]] return true end return false end local function add_stem_ending(stem, ending) if ending == "" then return stem end if stem:find("#$") then -- remove final accent when adding a suffix stem = com.remove_accents((stem:gsub("#$", "")), "final syllable only") end return stem .. ending end local function process_stem(stem, fn) if stem:find("#$") then local stem_no_pound_sign = stem:match("^(.*)#$") return fn(stem_no_pound_sign) .. "#" else return fn(stem) end end -- Add the `stem` to the `ending` and apply any phonetic modifications. `is_full_word` indicates that we're creating -- a "full word" not a stem, and turns on devoicing of final consonants. `dont_include_prefix` is used when creating -- stems and indicates not to prepend the prefix in `base.prefix` to the result. `is_pres_sub_stressed` is used when -- creating the pres_sub_stressed stem, to correctly handle both [[desaiguar]] and [[argüir]], whose respective -- interactions between ü and i/ï are very tricky. -- -- WARNING: This function is written very carefully; changes to it can easily have unintended consequences. local function combine_stem_ending(base, stem, ending, is_full_word, dont_include_prefix, is_pres_sub_stressed) -- Include the prefix in the stem unless dont_include_prefix is given (used in construct_stems()), or the value of -- `stem` comes from a user-specified stem or form override. if not dont_include_prefix and not stem:find(IS_USER_STEM_OVERRIDE) and not stem:find(IS_USER_FORM_OVERRIDE) then stem = base.prefix .. stem end -- A * at the beginning of the ending is a signal to remove a stressed accent from the stem. This may feed any of -- the following rules. if ending:find("^%*") then ending = ending:gsub("^%*", "") stem = com.remove_accents(stem, "final syllable only") end -- If ending begins with s and stem ends in a sibilant, we need an e in between; cf. pres_2s 'apareixes' of -- [[aparèixer]], pres_2s 'torces' of [[tòrcer]], pres_2s 'fuges' of [[fugir]], pres_2s 'brunzes' of [[brunzir]]. -- This may feed the next rule. if ending:find("^s") and rfind(stem, "[çjsxz]$") then ending = "e" .. ending end -- By default, stems are in their "back" (standalone) form. Before a front vowel, convert the final consonant to -- its "front" form so the pronunciation doesn't change. if rfind(ending, "^" .. front_vowel_c) then -- adequar -> adeqües -- enaiguar -> enaigües -- pegar -> pegues -- arranjar -> arranges -- marcar -> marques -- abraçar -> abraces stem = com.back_to_front(stem) end -- Ending beginning in -i after diphthong ending in V + i compresses the two i's into one (cf. pret_1s 'desmaí' and -- pres_sub_1s 'desmaï' of [[desmaiar]]). This rule doesn't apply after pseudo-vowel u in gu/qu; cf. pret_1s 'guií' -- of [[guiar]] and contrast pret_1s 'cruí' of [[cruiar]]. This may feed the next rule. if rfind(ending, "^[iíï]") and rfind(stem, V .. "i$") and not rfind(stem, "[gq][uü]i$") then stem = stem:gsub("i$", "") end -- If ending begins with i (not í), it must get a diaeresis after a true vowel (not gu/qu, cf. pres_1p 'delinquim' -- of [[delinquir]], not '#delinquïm'; also not a diphthong ending in u, cf. pres_sub_1s 'apreui' of [[apreuar]] -- not '#apreuï') to prevent the two merging into a diphthong. Note that ü -> u before ï, but to simplify things -- we leave the double umlauts in place and remove the first one during postprocessing, in fix_double_umlauts(). -- Cf.: -- * impf_1s 'raïa' of [[raure]]; -- * pres_sub_1s 'creï' of [[crear]]; -- * pres_sub_1s 'associï' of [[associar]]; -- * impf_1s 'cloïa' of [[cloure]]; -- * pres_1p 'lluïm' of [[lluir]]; -- * pres_1p 'arguïm' of [[argüir]]. if ending:find("^i") and rfind(stem, "[aeiouü]$") and not stem:find("[aeiogq]u$") and -- Unstressed subjunctive endings of [[enaiguar]] remain without umlaut: enaigüi/enaigüis/enaigüin; -- but stressed endings of [[argüir]] that begin with 'i' do get an umlaut: arguït, impf. arguïa, including -- stressed subjunctive endings arguïm/arguïu. In both cases the ending is '-i' as part of the creation of -- the respective stems. There seems no way of distinguishing the two cases other than with a special flag. not (rfind(stem, "[gq]ü$") and ending == "i" and is_pres_sub_stressed) then ending = ending:gsub("^i", "ï") end local retval = add_stem_ending(stem, ending) if retval:find("#$") then -- remove final accent if no vowels in prefix retval = retval:gsub("#$", "") if not rfind(base.prefix, V) then retval = com.remove_accents(retval, "final syllable only") end end if is_full_word then local saw_is_user_form_override retval, saw_is_user_form_override = rsubb(retval, IS_USER_FORM_OVERRIDE, "") retval = retval:gsub(IS_USER_STEM_OVERRIDE, "") if not saw_is_user_form_override then -- Devoice final voiced obstruent (cf. pres_2s 'caps', pres_3s 'cap' of [[cabre]]). But not after a -- consonant (cf. pres_2s 'perds', pres_3s 'perd' of [[perdre]]), except for g -> c, which operates -- even after a consonant (pres_1s 'resolc' of [[resoldre]], pres_1s 'tinc' of [[tenir]]). retval = retval:gsub("g(s?)$", "c%1") retval = rsub(retval, "(" .. V .. ")([bdj])(s?)$", function(before, voiced, after) local devoice = { b = "p", d = "t", j = "ig", -- pres_3s 'fuj' of [[fugir]] -> 'fuig' } return before .. devoice[voiced] .. after end) end end return retval end local function add3(base, slot, stems, endings, footnotes, allow_overrides) if skip_slot(base, slot, allow_overrides) then return end local function do_combine_stem_ending(stem, ending) return combine_stem_ending(base, stem, ending, "is full word") end iut.add_forms(base.forms, slot, stems, endings, do_combine_stem_ending, nil, nil, footnotes) end local function insert_form(base, slot, form) if not skip_slot(base, slot) then iut.insert_form(base.forms, slot, form) end end local function insert_forms(base, slot, forms) if not skip_slot(base, slot) then iut.insert_forms(base.forms, slot, forms) end end local function add_single_stem_tense(base, slot_pref, stems, s1, s2, s3, p1, p2, p3) local function addit(slot, ending) add3(base, slot_pref .. "_" .. slot, stems, ending) end addit("1s", s1) addit("2s", s2) addit("3s", s3) addit("1p", p1) addit("2p", p2) addit("3p", p3) end local function map_general(stemforms, fn) return iut.map_forms(iut.convert_to_general_list_form(stemforms), fn) end local function flatmap_general(stemforms, fn) return iut.flatmap_forms(iut.convert_to_general_list_form(stemforms), fn) end -- Given a stem ending in a conjugation vowel -a/-e/-i/-ï, split into stem base and conjugation vowel, converting the -- stem base to "back" form if the conjugation vowel is front (hence 'torce' of [[tòrcer]] splits into 'torç' and 'e', -- and 'fugi' of [[fugir]] splits into 'fuj' and 'i'). local function split_conj_vowel(stem) local stem_base, conj_vowel = rmatch(stem, "^(.*)([aeiï])$") if not stem_base then error(("Internal error: Stem '%s' doesn't end in conjugation vowel a/e/i"):format(stem)) end if conj_vowel == "ï" then -- To simplify handling of ï, convert to i. It will be converted back to ï as necessary in -- combine_stem_ending(). conj_vowel = "i" end if rfind(conj_vowel, front_vowel_c) then stem_base = com.front_to_back(stem_base) end return stem_base, conj_vowel end local function construct_stems(base) base.output_stems = {} local stems = base.output_stems local bst = base.input_stems -- YUCK, see combine_stem_ending() for the necessity of is_pres_sub_stressed. local function combine(stem, ending, is_pres_sub_stressed) return combine_stem_ending(base, stem, ending, false, "dont include prefix", is_pres_sub_stressed) end stems.irreg = bst.irreg or bst.g_infix -- NOTE: Some stems end in a conjugation or similar vowel, specifically: -- * `stem` (ends in conjugation vowel -a/-e/-i); -- * `stressed_stem` (likewise); -- * `unstressed_stem` (likewise); -- * `pres_unstressed` (which assumes the form of the gerund minus the -nt; note that `pres_stressed` does *NOT* -- end in a conjugation vowel, but assumes the stem form; the value of pres_3s will be derived by adding -a for -- -ar verbs and otherwise adding an -e prop vowel when required, as in [[cobrir]], and otherwise adding no -- vowel); -- * `pres_sub_stressed` (which assumes the form of pres_sub_3s and hence usually ends in -i, occasionally -a); -- * `pres_sub_unstressed` (which assumes the form of pres_sub_1p minus the -m, hence ends in -e or -i). -- Save stem for use in add_categories_and_annotation() for determining the conjugation class. stems.stem = bst.stem or base.stem local eix_infix_stem if base.conj_vowel == "i" then -- Save eix_infix value for use in add_categories_and_annotation() for determining whether consonant -- alternations exist. stems.eix_infix = bst.eix_infix or bst.g_infix and "-" or "+" eix_infix_stem = flatmap_general(stems.eix_infix, function(form) if form == "+" then return map_general(stems.stem, function(form) local stem_base, conj_vowel = split_conj_vowel(form) return combine(stem_base, "eixe") end) elseif form == "-" then return stems.stem else return form end end) end local stressed_stem = bst.stressed_stem or eix_infix_stem or stems.stem local unstressed_stem = bst.unstressed_stem or stems.stem -- Add the 'g' that is characteristic of g-infix verbs. We remove a stem-final v, e.g. [[beure]] with stem 'beve' -- becomes 'beg'. local function add_g(stemforms) return map_general(stemforms, function(form) local stem_base, conj_vowel = split_conj_vowel(form) stem_base = stem_base:gsub("v$", "") return combine(stem_base, "g") end) end -- Add the 'u' of the pres_3s that is characteristic of g-infix verbs (and conjugation vowel 'e', later removed). -- We remove a stem-final v, as well as i as part of a diphthong, e.g. [[beure]] with stem 'beve' becomes 'beue' -- and [[veure]] with stem 'veie' becomes 'veue' (but [[riure]] with stem 'rie' becomes 'riue' not '#rue'). We -- don't add -u after a consonant, e.g. [[doldre]] with stem 'dole' becomes 'dole' not '#dolue'. local function add_u(stemforms) return map_general(stemforms, function(form) local stem_base, conj_vowel = split_conj_vowel(form) if stem_base:find("v$") then stem_base = stem_base:gsub("v$", "") else stem_base = rsub(stem_base, "(" .. V .. ")i$", "%1") end -- Add u after vowel but not after another u, so we get pres_3p 'duen' of [[dur]] not '#duuen'. if rfind(stem_base, V .. "$") and not stem_base:find("u$") then return combine(stem_base, "u") else return stem_base end end) end local stressed_g_infix, unstressed_g_infix, g_infix_pres_stressed if bst.g_infix then local function flatmap_g_infix(default) return flatmap_general(bst.g_infix, function(form) if form == "+" then return default else return form end end) end stressed_g_infix = flatmap_g_infix(add_g(stressed_stem)) unstressed_g_infix = flatmap_g_infix(add_g(unstressed_stem)) g_infix_pres_stressed = add_u(stressed_stem) end stems.pres_unstressed = bst.pres_unstressed or unstressed_stem stems.pres_stressed = -- If no_pres_stressed given, pres_stressed stem should be empty so no forms are generated. base.no_pres_stressed and {} or bst.pres_stressed or g_infix_pres_stressed or map_general(stressed_stem, function(form) local stem_base, conj_vowel = split_conj_vowel(form) return stem_base end) stems.pres1s = -- If no_pres_stressed given, pres1s stem should be empty so no forms are generated. base.no_pres_stressed and {} or stressed_g_infix or map_general(stems.pres_stressed, function(form) return combine(form, "o") end) stems.pres3s = -- If no_pres_stressed given, pres3s stem should be empty so no forms are generated. base.no_pres_stressed and {} or bst.pres3s or map_general(stems.pres_stressed, function(form) if base.conj_vowel == "a" then return combine(form, "a") elseif rfind(form, C .. "[lr]$") and not rfind(form, V .. "ll$") then return combine(form, "e") else return form end end) stems.pres3p = -- If no_pres_stressed given, pres3p stem should be empty so no forms are generated. base.no_pres_stressed and {} or map_general(stems.pres_stressed, function(form) return combine(form, "en") end) local function compute_impf_stem(with_accent) return map_general(stems.pres_unstressed, function(form) local stem_base, conj_vowel = split_conj_vowel(form) if conj_vowel == "a" then return combine(stem_base, with_accent and "àv" or "av") elseif stem_base:find("i#?$") then form = form:gsub("i#?$", "") return combine(rmatch(stem_base, "^(.-)" .. V .. "*$"), with_accent and "èi" or "ei") else return combine(stem_base, with_accent and "í" or "i") -- i -> ï after a vowel end end) end stems.impf1 = bst.impf1 or compute_impf_stem(false) stems.impf2 = bst.impf2 or compute_impf_stem(true) stems.pret = bst.pret or unstressed_g_infix and map_general(unstressed_g_infix, function(form) return combine(form, "é") end ) or map_general(unstressed_stem, function(form) local accent_conj_vowel = { a = "à", e = "é", i = "í", } local stem_base, conj_vowel = split_conj_vowel(form) return combine(stem_base, accent_conj_vowel[conj_vowel]) end) stems.fut = bst.fut or base.inf_stem stems.cond = bst.cond or map_general(stems.fut, function(form) return combine(form, "í") end) stems.pres_sub_stressed = bst.pres_sub_stressed or stressed_g_infix and map_general(stressed_g_infix, function(form) return combine(form, "i") end) or map_general(stressed_stem, function(form) local stem_base, conj_vowel = split_conj_vowel(form) return combine(stem_base, "i", "is pres_sub_stressed") end) stems.pres_sub_unstressed = bst.pres_sub_unstressed or unstressed_g_infix and map_general(unstressed_g_infix, function(form) return combine(form, "e") end) or map_general(unstressed_stem, function(form) local stem_base, conj_vowel = split_conj_vowel(form) return combine(stem_base, conj_vowel == "i" and conj_vowel or "e") end) stems.impf_sub = bst.impf_sub or map_general(stems.pret, function(form) local stem_base = rmatch(form, "^(.*)à$") -- already in "back" form, no need to convert if stem_base then return combine(stem_base, "é") else return form end end) stems.pp = bst.pp or unstressed_g_infix and map_general(unstressed_g_infix, function(form) return combine(form, "ud") end ) or map_general(unstressed_stem, function(form) local stem_base, conj_vowel = split_conj_vowel(form) -- use combine() so we get 'abduïd' from 'abdu-' of [[abduir]], 'seguid' from 'seg-' from [[seguir]], etc. return combine(stem_base, (conj_vowel == "e" and "u" or conj_vowel) .. "d") end) end local function a_to_e(base, stems, suffix) return map_general(stems, function(form) local stem_base = form:match("^(.-)a$") if stem_base then suffix = "e" .. suffix else stem_base = form end return combine_stem_ending(base, stem_base, suffix, "is full word") end) end local function add_present_indic(base) local stems = base.output_stems local function addit(slot, stems, ending) add3(base, "pres_" .. slot, stems, ending) end addit("1s", stems.pres1s, "") insert_forms(base, "pres_2s", a_to_e(base, stems.pres3s, "s")) addit("3s", stems.pres3s, "") insert_forms(base, "pres_1p", a_to_e(base, stems.pres_unstressed, "m")) insert_forms(base, "pres_2p", a_to_e(base, stems.pres_unstressed, "u")) addit("3p", stems.pres3p, "") end local function add_present_subj(base) local stems = base.output_stems local function addit(slot, stems, ending) add3(base, "pres_sub_" .. slot, stems, ending) end -- Regular -ar verb: [[amar]]: ami, amis, ami, amem, ameu, amin -- Regular -re verb: [[batre]]: bati, batis, bati, batem, bateu, batin (same as -ar verb) -- Regular -ir verb, no -eix- infix: [[dormir]]: dormi, dormis, dormi, dormim, dormiu, dormin -- Regular -ir verb, -eix- infix: [[imprimir]]: imprimeixi, imprimeixis, imprimeixi, imprimim, imprimiu, imprimeixin -- Stem changing in 123s/3p vs. 12p: -- * -eix- infix (-eix- in all stressed forms: 123s/3p of pres ind/sub, 2s imp) -- * [[collir]]: culli, cullis, culli, collim, colliu, cullin (cull- in all stressed forms) -- * [[cabre]]: càpiga, càpigues, càpiga, capiguem, capigueu, càpiguen (also different endings) addit("1s", stems.pres_sub_stressed, "") insert_forms(base, "pres_sub_2s", a_to_e(base, stems.pres_sub_stressed, "s")) addit("3s", stems.pres_sub_stressed, "") addit("1p", stems.pres_sub_unstressed, "m") addit("2p", stems.pres_sub_unstressed, "u") insert_forms(base, "pres_sub_3p", a_to_e(base, stems.pres_sub_stressed, "n")) end local function add_finite_non_present(base) local stems = base.output_stems local function add_tense(slot, stem, s1, s2, s3, p1, p2, p3) add_single_stem_tense(base, slot, stem, s1, s2, s3, p1, p2, p3) end add_tense("impf", stems.impf1, "a", "es", "a", nil, nil, "en") add_tense("impf", stems.impf2, nil, nil, nil, "em", "eu", nil) -- pret_1s ends in -í regardless of the normal vowel of the stem. insert_forms(base, "pret_1s", map_general(stems.pret, function(form) local stem_base, conj_vowel = rmatch(form, "^(.*)(" .. V .. ")$") if not stem_base then error(("Internal error: Preterite stem '%s' doesn't end in vowel"):format(form)) end if rfind(conj_vowel, front_vowel_c) then stem_base = com.front_to_back(stem_base) end -- Use combine_stem_ending() to handle back-to-front conversions, e.g. pegà -> peguí for [[pegar]] and ensure -- that the prefix gets added. return combine_stem_ending(base, stem_base, "í", "is full word") end)) -- * at the beginning of the ending means to remove an accent from the last vowel of the preterite stem. add_tense("pret", stems.pret, nil, "*res", "", "rem", "reu", "*ren") -- * at the beginning of the ending means to remove an accent from the last vowel of the imperfect subjunctive stem. add_tense("impf_sub", stems.impf_sub, "s", "*ssis", "s", "ssim", "ssiu", "*ssin") add_tense("fut", stems.fut, "é", "às", "à", "em", "eu", "an") add_tense("cond", stems.cond, "*a", "*es", "*a", "em", "eu", "*en") end local function add_non_finite_forms(base) local stems = base.output_stems local function addit(slot, stems, ending, footnotes) add3(base, slot, stems, ending, footnotes) end insert_form(base, "infinitive", {form = base.orig_verb}) -- Also insert "infinitive + reflexive pronoun" combinations if we're handling a reflexive verb. See comment below -- for "gerund + reflexive pronoun" combinations. if base.refl then for _, persnum in ipairs(person_number_list) do insert_form(base, "infinitive_" .. persnum, {form = base.orig_verb}) end end -- Gerunds don't have an umlaut over the i in cases like 'abduint' of 'abduir' (not '#abduïnt'). local pres_unstressed_no_umlaut = map_general(stems.pres_unstressed, function(form) return rsub(form, "ï$", "i") end) addit("gerund", pres_unstressed_no_umlaut, "nt") -- Also insert "gerund + reflexive pronoun" combinations if we're handling a reflexive verb. We insert exactly the -- same form as for the bare gerund; later on in add_reflexive_or_fixed_clitic_to_forms(), we add the appropriate -- clitic pronouns. It's important not to do this for non-reflexive verbs, because in that case, the clitic -- pronouns won't be added, and {{ca-verb form of}} will wrongly consider all these combinations as possible -- inflections of the bare gerund. Thanks to [[User:JeffDoozan]] for this bug fix. if base.refl then for _, persnum in ipairs(person_number_list) do addit("gerund_" .. persnum, pres_unstressed_no_umlaut, "nt") end end addit("pp_ms", stems.pp, "") if not base.pp_inv then addit("pp_fs", stems.pp, "a") -- make_plural() handles the complexities of e.g. 'vist' of [[veure]] -> 'vistos'/'vists' and 'romàs' of -- [[romandre]] -> 'romasos'. We need to use flatmap_general() because make_plural() may return more than one -- plural, and we need to use map_general() on the result, applying combine_stem_ending(), to ensure that -- prefixes get properly added and plurals like 'amads' of stem 'amad' of [[amar]] get converted to 'amats'. insert_forms(base, "pp_mp", map_general(flatmap_general(stems.pp, function(form) -- Remove any # indicating that an accent will be dropped; it will be dropped in any case by make_plural(). form = form:gsub("#$", "") return com.make_plural(form, "m") end), function(form) return combine_stem_ending(base, form, "", "is full word") end)) addit("pp_fp", stems.pp, "es") end end local function add_imperatives(base) if base.noimp then return end -- Copy pres3s to imperative since they are almost always the same. insert_forms(base, "imp_2s", iut.map_forms(base.forms.pres_3s, function(form) return form end)) -- Copy pres2p to imperative plural since they are almost always the same. insert_forms(base, "imp_2p", iut.map_forms(base.forms.pres_2p, function(form) return form end)) -- Copy subjunctives to imperatives. for _, persnum in ipairs({"3s", "1p", "3p"}) do local from = "pres_sub_" .. persnum local to = "imp_" .. persnum insert_forms(base, to, iut.map_forms(base.forms[from], function(form) return form end)) end end local function fix_double_umlauts(base) for slot, forms in pairs(base.forms) do for _, form in ipairs(forms) do form.form = form.form:gsub("üï", "uï") end end end local function process_slot_overrides(base, filter_slot, reflexive_only) local overrides = reflexive_only and base.basic_reflexive_only_overrides or base.basic_overrides for slot, forms in pairs(overrides) do if not filter_slot or filter_slot(slot) then add3(base, slot, forms, "", nil, "allow overrides") end end end local function link_clitic(clitic) return (clitic:gsub("([^ %-]+)", "[[%1]]")) end -- Prefix `form` with `clitic`, adding fixed text `between` between them. Add links as appropriate unless the user -- requested no links. Check whether form already has brackets (as will be the case if the form has a fixed clitic). local function prefix_clitic_to_form(base, clitic, between, form) if base.alternant_multiword_spec.args.noautolinkverb then return clitic .. between .. form else local clitic_pref = link_clitic(clitic) .. between if form:find("%[%[") then return clitic_pref .. form else return clitic_pref .. "[[" .. form .. "]]" end end end -- Suffix `form` with `clitic`. Add links as appropriate unless the user requested no links. Check whether form already -- has brackets (as will be the case if the form has a fixed clitic). local function suffix_clitic_to_form(base, clitic, form) local autolink = not base.alternant_multiword_spec.args.noautolinkverb if base.alternant_multiword_spec.args.noautolinkverb then return form .. clitic else local clitic_suf = link_clitic(clitic) if form:find("%[%[") then return form .. clitic_suf else return "[[" .. form .. "]]" .. clitic_suf end end end -- Add a reflexive pronoun or fixed clitic (FIXME: not working), as appropriate to the base forms that were generated. -- `do_joined` means to do only the forms where the pronoun is joined to the end of the form; otherwise, do only the -- forms where it is not joined and precedes the form. local function add_reflexive_or_fixed_clitic_to_forms(base, do_reflexive, do_joined) for _, slotaccel in ipairs(base.alternant_multiword_spec.verb_slots_basic) do local slot, accel = unpack(slotaccel) local persnum if slot:find("[123]") then persnum = slot:match("^.*_(.-)$") else persnum = "3s" end local function get_proclitic(form) --if not do_reflexive then -- return base.clitic if form:find("^[aeiouh]") then return proclitic_elided_person_number_to_reflexive_pronoun[persnum] else return proclitic_non_elided_person_number_to_reflexive_pronoun[persnum] end end local function get_enclitic(form) --if not do_reflexive then -- return base.clitic if rfind(form, C .. "$") or rfind(form, V .. "[iu]$") and not form:find("[gq]ui$") then return enclitic_non_elided_person_number_to_reflexive_pronoun[persnum] else return enclitic_elided_person_number_to_reflexive_pronoun[persnum] end end if base.forms[slot] then if do_reflexive and slot:find("^pp_") or slot == "infinitive_linked" then -- do nothing with reflexive past participles or with infinitive linked (handled at the end) elseif slot:find("^neg_imp_") then error("Internal error: Should not have forms set for negative imperative at this stage") else local slot_has_suffixed_clitic = slot:find("infinitive") or slot:find("gerund") or slot:find("^imp_") -- Maybe generate non-reflexive parts and separated syntactic variants for use in -- {{ca-verb form of}}. See comment in add_slots() above `need_special_verb_form_of_slots`. -- Check for do_joined so we only run this code once. if do_reflexive and do_joined and base.alternant_multiword_spec.source_template == "ca-verb form of" and -- Skip personal variants of infinitives and gerunds so we don't think [[arrependendo]] is a -- non-reflexive equivalent of [[arrependendo-me]]. not slot:find("infinitive_") and not slot:find("gerund_") then -- Clone the forms because we will be destructively modifying them just below, adding the reflexive -- pronoun. insert_forms(base, slot .. "_non_reflexive", mw.clone(base.forms[slot])) if slot_has_suffixed_clitic then insert_forms(base, slot .. "_variant", iut.map_forms(base.forms[slot], function(form) return prefix_clitic_to_form(base, get_proclitic(form), "... ", form) end)) end end if slot_has_suffixed_clitic then if do_joined then -- Add clitic after form. for _, form in ipairs(base.forms[slot]) do form.form = suffix_clitic_to_form(base, get_enclitic(form.form), form.form) end end elseif not do_joined then -- Add clitic before form. for _, form in ipairs(base.forms[slot]) do form.form = prefix_clitic_to_form(base, get_proclitic(form.form), "", form.form) end end end end end end local function handle_infinitive_linked(base) -- Compute linked versions of potential lemma slots, for use in {{ca-verb}}. -- We substitute the original lemma (before removing links) for forms that -- are the same as the lemma, if the original lemma has links. for _, slot in ipairs({"infinitive"}) do insert_forms(base, slot .. "_linked", iut.map_forms(base.forms[slot], function(form) if form == base.lemma and rfind(base.linked_lemma, "%[%[") then return base.linked_lemma else return form end end)) end end local function generate_negative_imperatives(base) if base.noimp then return end -- Copy subjunctives to negative imperatives, preceded by "no". for _, persnum in ipairs(neg_imp_person_number_list) do local from = "pres_sub_" .. persnum local to = "neg_imp_" .. persnum insert_forms(base, to, iut.map_forms(base.forms[from], function(form) if base.alternant_multiword_spec.args.noautolinkverb then return "no " .. form elseif form:find("%[%[") then -- already linked, e.g. when reflexive return "[[no]] " .. form else return "[[no]] [[" .. form .. "]]" end end)) end end -- Process specs given by the user using 'addnote[SLOTSPEC][FOOTNOTE][FOOTNOTE][...]'. local function process_addnote_specs(base) for _, spec in ipairs(base.addnote_specs) do for _, slot_spec in ipairs(spec.slot_specs) do slot_spec = "^" .. slot_spec .. "$" for slot, forms in pairs(base.forms) do if rfind(slot, slot_spec) then -- To save on memory, side-effect the existing forms. for _, form in ipairs(forms) do form.footnotes = iut.combine_footnotes(form.footnotes, spec.footnotes) end end end end end end local function add_missing_links_to_forms(base) -- Any forms without links should get them now. Redundant ones will be stripped later. for slot, forms in pairs(base.forms) do for _, form in ipairs(forms) do if not form.form:find("%[%[") then form.form = "[[" .. form.form .. "]]" end end end end local function conjugate_verb(base) construct_stems(base) add_present_indic(base) add_present_subj(base) add_finite_non_present(base) add_non_finite_forms(base) fix_double_umlauts(base) -- do non-reflexive non-imperative slot overrides process_slot_overrides(base, function(slot) return not slot:find("^imp_") and not slot:find("^neg_imp_") end) -- This should happen after process_slot_overrides() in case a derived slot is based on an override -- (as with the imp_3s of [[dar]], [[estar]]). add_imperatives(base) -- do non-reflexive positive imperative slot overrides process_slot_overrides(base, function(slot) return slot:find("^imp_") end) -- We need to add joined reflexives, then joined and non-joined clitics, then non-joined reflexives, so we get -- [[arrepéndete]] but [[no]] [[te]] [[arrependas]]. if base.refl then add_reflexive_or_fixed_clitic_to_forms(base, "do reflexive", "do joined") process_slot_overrides(base, nil, "do reflexive") -- do reflexive-only slot overrides add_reflexive_or_fixed_clitic_to_forms(base, "do reflexive", false) end -- This should happen after add_reflexive_or_fixed_clitic_to_forms() so negative imperatives get the reflexive pronoun -- and clitic in them. generate_negative_imperatives(base) -- do non-reflexive negative imperative slot overrides -- FIXME: What about reflexive negative imperatives? process_slot_overrides(base, function(slot) return slot:find("^neg_imp_") end) -- This should happen before add_missing_links_to_forms() so that the comparison `form == base.lemma` -- in handle_infinitive_linked() works correctly and compares unlinked forms to unlinked forms. handle_infinitive_linked(base) process_addnote_specs(base) if not base.alternant_multiword_spec.args.noautolinkverb then add_missing_links_to_forms(base) end end local function parse_indicator_spec(angle_bracket_spec) -- Store the original angle bracket spec so we can reconstruct the overall conj spec with the lemma(s) in them. local base = { angle_bracket_spec = angle_bracket_spec, user_basic_overrides = {}, user_stems = {}, addnote_specs = {}, } local function parse_err(msg) error(msg .. ": " .. angle_bracket_spec) end local function fetch_footnotes(separated_group) local footnotes for j = 2, #separated_group - 1, 2 do if separated_group[j + 1] ~= "" then parse_err("Extraneous text after bracketed footnotes: '" .. table.concat(separated_group) .. "'") end if not footnotes then footnotes = {} end table.insert(footnotes, separated_group[j]) end return footnotes end local inside = angle_bracket_spec:match("^<(.*)>$") assert(inside) if inside == "" then return base end local segments = put.parse_balanced_segment_run(inside, "[", "]") local dot_separated_groups = put.split_alternating_runs(segments, "%.") for i, dot_separated_group in ipairs(dot_separated_groups) do local first_element = dot_separated_group[1] if first_element == "addnote" then local spec_and_footnotes = fetch_footnotes(dot_separated_group) if #spec_and_footnotes < 2 then parse_err("Spec with 'addnote' should be of the form 'addnote[SLOTSPEC][FOOTNOTE][FOOTNOTE][...]'") end local slot_spec = table.remove(spec_and_footnotes, 1) local slot_spec_inside = rmatch(slot_spec, "^%[(.*)%]$") if not slot_spec_inside then parse_err("Internal error: slot_spec " .. slot_spec .. " should be surrounded with brackets") end local slot_specs = rsplit(slot_spec_inside, ",") -- FIXME: Here, [[Module:it-verb]] called strip_spaces(). Generally we don't do this. Should we? table.insert(base.addnote_specs, {slot_specs = slot_specs, footnotes = spec_and_footnotes}) elseif indicator_flags[first_element] then if #dot_separated_group > 1 then parse_err("No footnotes allowed with '" .. first_element .. "' spec") end if base[first_element] then parse_err("Spec '" .. first_element .. "' specified twice") end base[first_element] = true elseif first_element:find("^var:") then if #dot_separated_group > 1 then parse_err(("Can't attach footnotes to 'var:' spec '%s'"):format(first_element)) end base.var = first_element:match("^var:(.*)$") elseif first_element:find(":") then local colon_separated_groups = put.split_alternating_runs(dot_separated_group, "%s*:%s*") local first_element = colon_separated_groups[1][1] if #colon_separated_groups[1] > 1 then parse_err("Can't attach footnotes directly to '" .. first_element .. "' spec; attach them to the " .. "colon-separated values following the initial colon") end if overridable_stems[first_element] then if base.user_stems[first_element] then parse_err("Overridable stem '" .. first_element .. "' specified twice") end table.remove(colon_separated_groups, 1) base.user_stems[first_element] = overridable_stems[first_element](colon_separated_groups, {prefix = first_element, base = base, parse_err = parse_err, fetch_footnotes = fetch_footnotes}) else -- assume a basic override; we validate further later when the possible slots are available if base.user_basic_overrides[first_element] then parse_err("Basic override '" .. first_element .. "' specified twice") end table.remove(colon_separated_groups, 1) base.user_basic_overrides[first_element] = allow_multiple_values_for_override(colon_separated_groups, {prefix = first_element, base = base, parse_err = parse_err, fetch_footnotes = fetch_footnotes}, "is form override") end else parse_err("Unrecognized spec '" .. first_element .. "'") end end return base end -- Normalize all lemmas, substituting the pagename for blank lemmas and adding links to multiword lemmas. local function normalize_all_lemmas(alternant_multiword_spec, head) -- (1) Add links to all before and after text. Remember the original text so we can reconstruct the verb spec later. if not alternant_multiword_spec.args.noautolinktext then iut.add_links_to_before_and_after_text(alternant_multiword_spec, "remember original") end -- (2) Remove any links from the lemma, but remember the original form so we can use it below in the 'lemma_linked' -- form. iut.map_word_specs(alternant_multiword_spec, function(base) if base.lemma == "" then base.lemma = head end base.user_specified_lemma = base.lemma base.lemma = m_links.remove_links(base.lemma) local refl_verb = base.lemma local verb, refl = rmatch(refl_verb, "^(.-)%-(se)$") if not verb then verb, refl = rmatch(refl_verb, "^(.-)('s)$") end if not verb then verb, refl = refl_verb, nil end base.user_specified_verb = verb base.refl = refl base.verb = base.user_specified_verb local linked_lemma if alternant_multiword_spec.args.noautolinkverb or base.user_specified_lemma:find("%[%[") then linked_lemma = base.user_specified_lemma elseif base.refl then -- Reconstruct the linked lemma with separate links around base verb, reflexive pronoun and clitic. linked_lemma = base.user_specified_verb == base.verb and "[[" .. base.user_specified_verb .. "]]" or "[[" .. base.verb .. "|" .. base.user_specified_verb .. "]]" linked_lemma = linked_lemma .. (refl and "-[[" .. refl .. "]]" or "") else -- Add links to the lemma so the user doesn't specifically need to, since we preserve links in multiword -- lemmas and include links in non-lemma forms rather than allowing the entire form to be a link. linked_lemma = iut.add_links(base.user_specified_lemma) end base.linked_lemma = linked_lemma end) end local function detect_indicator_spec(base) if (base.only3s and 1 or 0) + (base.only3sp and 1 or 0) + (base.only3p and 1 or 0) > 1 then error("Only one of 'only3s', 'only3sp' and 'only3p' can be specified") end base.forms = {} base.input_stems = {} base.basic_overrides = {} base.basic_reflexive_only_overrides = {} base.orig_verb = base.verb -- in case of a 'like = "..."' redirect if not base.no_built_in then local function match_built_in_spec(verb, built_in_spec) local prefix, non_prefixed_verb if type(built_in_spec.match) == "function" then prefix, non_prefixed_verb = built_in_spec.match(verb) elseif built_in_spec.match:find("^%^") and rsub(built_in_spec.match, "^%^", "") == verb then -- begins with ^, for exact match, and matches prefix, non_prefixed_verb = "", verb else prefix, non_prefixed_verb = rmatch(verb, "^(.*)(" .. built_in_spec.match .. ")$") end return prefix, non_prefixed_verb end local function find_built_in(verb, var) for _, built_in_spec in ipairs(built_in_conjugations) do local prefix, non_prefixed_verb = match_built_in_spec(verb, built_in_spec) if prefix then if not built_in_spec.var then if var then error(("Can't specify a variant spec 'var:%s' with verb '%s'"):format(var, verb)) end return prefix, non_prefixed_verb, built_in_spec elseif not var then local possible_vars = {} for _, built_in_spec in ipairs(built_in_conjugations) do local prefix, non_prefixed_verb = match_built_in_spec(verb, built_in_spec) if prefix then table.insert(possible_vars, built_in_spec.var) end end error(("For verb '%s', must specify a variant using 'var:...'; possible values are %s"):format( verb, table.concat(possible_vars, ", "))) elseif built_in_spec.var == var then return prefix, non_prefixed_verb, built_in_spec end end end return nil end local prefix, non_prefixed_verb, built_in_spec = find_built_in(base.verb, base.var) if prefix then -- we found a built-in verb if built_in_spec.like then -- we found a redirect to another verb that has the same conjugation, just a different infinitive base.verb = prefix .. built_in_spec.like local new_prefix, new_non_prefixed_verb, new_built_in_spec = find_built_in(base.verb, built_in_spec.likevar) if new_prefix then -- redirected to another built-in verb base.prefix = new_prefix base.non_prefixed_verb = new_non_prefixed_verb built_in_spec = new_built_in_spec else built_in_spec = nil end else base.prefix = prefix base.non_prefixed_verb = non_prefixed_verb end end if built_in_spec then -- we found a built-in verb, possibly redirecting to another built-in verb for stem, forms in pairs(built_in_spec.forms) do if type(forms) == "function" then forms = forms(base, base.prefix) end if stem:find("^refl_") then stem = stem:gsub("^refl_", "") if not base.alternant_multiword_spec.verb_slots_basic_map[stem] then error("Internal error: setting for 'refl_" .. stem .. "' does not refer to a basic verb slot") end base.basic_reflexive_only_overrides[stem] = forms elseif base.alternant_multiword_spec.verb_slots_basic_map[stem] then -- an individual form override of a basic form base.basic_overrides[stem] = forms else base.input_stems[stem] = forms end end end end -- Override built-in-verb stems and overrides with user-specified ones. for stem, values in pairs(base.user_stems) do base.input_stems[stem] = values end for override, values in pairs(base.user_basic_overrides) do if not base.alternant_multiword_spec.verb_slots_basic_map[override] then error("Unrecognized override '" .. override .. "': " .. base.angle_bracket_spec) end base.basic_overrides[override] = values end base.prefix = base.prefix or "" base.non_prefixed_verb = base.non_prefixed_verb or base.verb local inf_stem, suffix = rmatch(base.non_prefixed_verb, "^(.*)(re)$") if not inf_stem then inf_stem, suffix = rmatch(base.non_prefixed_verb, "^(.*)([aeiu]r)$") end if not inf_stem then error("Unrecognized infinitive: " .. base.verb) end -- Remove accents from e.g. [[parèixer]], [[córrer]]. inf_stem = com.remove_accents(inf_stem) -- Save full infinitive stem for use in future and conditional. base.inf_stem = (inf_stem .. suffix):gsub("e$", "") local stem = inf_stem if suffix == "re" then -- verbs in -ldre, -ndre have stem without the d stem = stem:gsub("([ln])d$", "%1") elseif suffix == "ur" then stem = stem .. "u" end base.conj_vowel = (suffix == "re" or suffix == "ur") and "e" or suffix:gsub("r$", "") -- If the stem is followed by a front vowel, convert it to its "back" form before calling combine_stem_ending(), -- which expects the "back" form of the stem and may convert it back to the "front" form. Don't do this conversion -- for ï so we leave [[arguïr]] (underlyingly 'argüïr') as 'argu' ("back" form), which becomes 'argü' ("front" form) -- before front vowel ï and we end up with base.stem containing the underlying form 'argüï'. We remove the first of -- two umlauts in a row in a postprocessing step (fix_double_umlauts()). if rfind(suffix, "^[ei]") then stem = com.front_to_back(stem) end -- Use combine_stem_ending() so we get ï if necessary. base.stem = combine_stem_ending(base, stem, base.conj_vowel, false, "dont include prefix") -- Propagate built-in-verb indicator flags to `base` and combine with user-specified flags. for indicator_flag, _ in pairs(indicator_flags) do base[indicator_flag] = base[indicator_flag] or base.input_stems[indicator_flag] end end local function detect_all_indicator_specs(alternant_multiword_spec) -- Propagate some settings up; some are used internally, others by [[Module:pt-headword]]. iut.map_word_specs(alternant_multiword_spec, function(base) -- Internal indicator flags. Do these before calling detect_indicator_spec() because add_slots() uses them. for _, prop in ipairs { "refl", "clitic" } do if base[prop] then alternant_multiword_spec[prop] = true end end base.alternant_multiword_spec = alternant_multiword_spec end) add_slots(alternant_multiword_spec) iut.map_word_specs(alternant_multiword_spec, function(base) detect_indicator_spec(base) -- User-specified indicator flags. Do these after calling detect_indicator_spec() because the latter may set these -- indicators for built-in verbs. for prop, _ in pairs(indicator_flags) do if base[prop] then alternant_multiword_spec[prop] = true end end end) end local function add_categories_and_annotation(alternant_multiword_spec, base, multiword_lemma) local function insert_ann(anntype, value) m_table.insertIfNot(alternant_multiword_spec.annotation[anntype], value) end local function insert_cat(cat, also_when_multiword) -- Don't place multiword terms in categories like 'Catalan verbs ending in -ar' to avoid spamming the -- categories with such terms. if also_when_multiword or not multiword_lemma then m_table.insertIfNot(alternant_multiword_spec.categories, "カタルーニャ語 " .. cat) end end if check_for_red_links and alternant_multiword_spec.source_template == "ca-conj" and multiword_lemma then for _, slot_and_accel in ipairs(alternant_multiword_spec.all_verb_slots) do local slot = slot_and_accel[1] local forms = base.forms[slot] local must_break = false if forms then for _, form in ipairs(forms) do if not form.form:find("%[%[") then local title = mw.title.new(form.form) if title and not title.exists then insert_cat("活用表に赤リンクを含む動詞") must_break = true break end end end end if must_break then break end end end map_general(base.output_stems.stem, function(stem) local stem_base, conj_vowel = split_conj_vowel(stem) local need_no_eix_infix = true if conj_vowel ~= base.conj_vowel then insert_ann("conj", "[[付録:カタルーニャ語の動詞#不規則動詞|混合活用]]") elseif conj_vowel == "a" then insert_ann("conj", "[[付録:カタルーニャ語の動詞#第一変化動詞|第一変化]]") insert_cat("第一変化動詞") elseif conj_vowel == "e" then insert_ann("conj", "[[付録:カタルーニャ語の動詞#第二変化動詞|第二変化]]") insert_cat("第二変化動詞") elseif conj_vowel == "i" then insert_ann("conj", "[[付録:カタルーニャ語の動詞#第三変化動詞|第三変化]]") insert_cat("第三変化動詞") need_no_eix_infix = false map_general(base.output_stems.eix_infix, function(form) if form == "+" then insert_ann("eix_infix", "接中辞-eix-有り") insert_cat("-eix-を含む第三変化動詞") elseif form == "-" then insert_ann("eix_infix", "接中辞-eix-無し") insert_cat("-eix-を含まない第三変化動詞") end end) else error(("Internal error: Stem '%s' doesn't end in conjugation vowel a/e/i and split_conj_vowel() didn't catch it" ):format(stem)) end if need_no_eix_infix then insert_ann("eix_infix", "接中辞無し") end end) if base.input_stems.g_infix then insert_ann("g_infix", "軟口蓋接中辞有り") insert_cat("軟口蓋接中辞を含む動詞") else insert_ann("g_infix", "no infix") end if base.output_stems.irreg then insert_ann("irreg", "不規則") insert_cat("不規則動詞") else insert_ann("irreg", "regular") end if base.only3s then insert_ann("defective", "非人称") insert_cat("非人称動詞") elseif base.only3sp then insert_ann("defective", "第三人称のみ") insert_cat("第三人称動詞") elseif base.only3p then insert_ann("defective", "第三人称複数のみ") insert_cat("第三人称複数動詞") elseif base.no_pres_stressed then insert_ann("defective", "欠如") insert_cat("欠如動詞") else insert_ann("defective", "規則動詞") end --if base.clitic then -- insert_cat("verbs with lexical clitics") --end if base.refl then insert_cat("再帰動詞") end local stem_base, conj_vowel = split_conj_vowel(base.stem) local cons_alt if conj_vowel == "i" and base.output_stems.eix_infix == "+" then -- no alternations in verbs like [[afligir]] because all endings are front elseif stem_base:find("ç$") then cons_alt = "ç-c" elseif stem_base:find("c$") then cons_alt = "c-qu" elseif stem_base:find("g$") then cons_alt = "g-gu" elseif stem_base:find("gu$") then cons_alt = "gu-gü" elseif stem_base:find("j$") then cons_alt = "j-g" elseif stem_base:find("qu$") then cons_alt = "qu-qü" end if cons_alt then local desc = cons_alt .. " alternation" insert_ann("cons_alt", desc) insert_cat(desc .. "交替の動詞") else insert_ann("cons_alt", "non-alternating") end end -- Compute the categories to add the verb to, as well as the annotation to display in the -- conjugation title bar. We combine the code to do these functions as both categories and -- title bar contain similar information. local function compute_categories_and_annotation(alternant_multiword_spec) alternant_multiword_spec.categories = {} local ann = {} alternant_multiword_spec.annotation = ann ann.conj = {} ann.g_infix = {} ann.eix_infix = {} ann.irreg = {} ann.defective = {} ann.cons_alt = {} local multiword_lemma = false for _, form in ipairs(alternant_multiword_spec.forms.infinitive) do if form.form:find(" ") then multiword_lemma = true break end end iut.map_word_specs(alternant_multiword_spec, function(base) add_categories_and_annotation(alternant_multiword_spec, base, multiword_lemma) end) local ann_parts = {} local conj = table.concat(ann.conj, " or ") if conj ~= "" then table.insert(ann_parts, conj) end local eix_infix = table.concat(ann.eix_infix, " or ") if eix_infix ~= "" and eix_infix ~= "no infix" then table.insert(ann_parts, eix_infix) end local irreg = table.concat(ann.irreg, " or ") if irreg ~= "" and irreg ~= "regular" then table.insert(ann_parts, irreg) end local g_infix = table.concat(ann.g_infix, " or ") if g_infix ~= "" and g_infix ~= "no infix" then table.insert(ann_parts, g_infix) end local defective = table.concat(ann.defective, " or ") if defective ~= "" and defective ~= "regular" then table.insert(ann_parts, defective) end local cons_alt = table.concat(ann.cons_alt, " or ") if cons_alt ~= "" and cons_alt ~= "non-alternating" then table.insert(ann_parts, cons_alt) end alternant_multiword_spec.annotation = table.concat(ann_parts, ", ") end local function show_forms(alternant_multiword_spec) local lemmas = alternant_multiword_spec.forms.infinitive alternant_multiword_spec.lemmas = lemmas -- save for later use in make_table() local reconstructed_verb_spec = iut.reconstruct_original_spec(alternant_multiword_spec) local function transform_accel_obj(slot, formobj, accel_obj) -- No accelerators for negative imperatives, which are always multiword and derived directly from the -- present subjunctive. if slot:find("^neg_imp") then return nil end if accel_obj then accel_obj.form = "verb-form-" .. reconstructed_verb_spec end return accel_obj end local props = { lang = lang, lemmas = lemmas, transform_accel_obj = transform_accel_obj, slot_list = alternant_multiword_spec.verb_slots_basic, } iut.show_forms(alternant_multiword_spec.forms, props) alternant_multiword_spec.footnote_basic = alternant_multiword_spec.forms.footnote end local notes_template = [=[ <div class="roa-footnote-outer-div" style="width:100%;"> <div class="roa-footnote-inner-div"> {footnote} </div></div> ]=] local basic_table = [=[ {description}<div class="NavFrame"> <div class="NavHead">&nbsp; &nbsp; {title} の活用</div> <div class="NavContent"> {\op}| class="roa-inflection-table" data-toggle-category="inflection" |- ! colspan="3" class="roa-nonfinite-header" | <span title="infinitiu">不定詞</span> | colspan="5" | {infinitive} |- ! colspan="3" class="roa-nonfinite-header" | <span title="gerundi">現在分詞</span> | colspan="5" | {gerund} |- ! rowspan="3" colspan="2" class="roa-nonfinite-header" | <span title="participi passat">過去分詞</span> | colspan="2" class="roa-nonfinite-header" | ! colspan="2" class="roa-nonfinite-header" | 男性 ! colspan="2" class="roa-nonfinite-header" | 女性 |- ! colspan="2" class="roa-nonfinite-header" | 単数 | colspan="2" | {pp_ms} | colspan="2" | {pp_fs} |- ! colspan="2" class="roa-nonfinite-header" | 複数 | colspan="2" | {pp_mp} | colspan="2" | {pp_fp} |- ! colspan="2" rowspan="2" class="roa-person-number-header" | 人称 ! colspan="3" class="roa-person-number-header" | 単数 ! colspan="3" class="roa-person-number-header" | 複数 |- ! class="roa-person-number-header" style="width:12.5%;" | 第一人称 ! class="roa-person-number-header" style="width:12.5%;" | 第二人称 ! class="roa-person-number-header" style="width:12.5%;" | 第三人称 ! class="roa-person-number-header" style="width:12.5%;" | 第一人称 ! class="roa-person-number-header" style="width:12.5%;" | 第二人称 ! class="roa-person-number-header" style="width:12.5%;" | 第三人称 |- ! rowspan="6" class="roa-indicative-left-rail" | <span title="indicatiu">直説法</span> ! class="roa-indicative-left-rail" | ! class="roa-indicative-left-rail" | <<jo>> ! class="roa-indicative-left-rail" | <<tu>> ! class="roa-indicative-left-rail" | <<ell>>/<<ella>><br /><<vostè>> ! class="roa-indicative-left-rail" | <<nosaltres>><br /><<nós>> ! class="roa-indicative-left-rail" | <<vosaltres>><br /><<vós>> ! class="roa-indicative-left-rail" | <<ells>>/<<elles>><br /><<vostès>> |- ! class="roa-indicative-left-rail" style="height:3em;" | <span title="present">現在</span> | {pres_1s} | {pres_2s} | {pres_3s} | {pres_1p} | {pres_2p} | {pres_3p} |- ! class="roa-indicative-left-rail" style="height:3em;" | <span title="imperfet">不完了過去</span> | {impf_1s} | {impf_2s} | {impf_3s} | {impf_1p} | {impf_2p} | {impf_3p} |- ! class="roa-indicative-left-rail" style="height:3em;" | <span title="futur">未来</span> | {fut_1s} | {fut_2s} | {fut_3s} | {fut_1p} | {fut_2p} | {fut_3p} |- ! class="roa-indicative-left-rail" style="height:3em;" | <span title="passat">完了過去</span> | {pret_1s} | {pret_2s} | {pret_3s} | {pret_1p} | {pret_2p} | {pret_3p} |- ! class="roa-indicative-left-rail" style="height:3em;" | <span title="condicional">可能法</span> | {cond_1s} | {cond_2s} | {cond_3s} | {cond_1p} | {cond_2p} | {cond_3p} |- ! class="roa-subjunctive-left-rail" rowspan="3" | <span title="subjuntiu">接続法</span> ! class="roa-subjunctive-left-rail" | ! class="roa-subjunctive-left-rail" | <<jo>> ! class="roa-subjunctive-left-rail" | <<tu>> ! class="roa-subjunctive-left-rail" | <<ell>>/<<ella>><br /><<vostè>> ! class="roa-subjunctive-left-rail" | <<nosaltres>><br /><<nós>> ! class="roa-subjunctive-left-rail" | <<vosaltres>><br /><<vós>> ! class="roa-subjunctive-left-rail" | <<ells>>/<<elles>><br /><<vostès>> |- ! class="roa-subjunctive-left-rail" style="height:3em;" | <span title="present">現在</span> | {pres_sub_1s} | {pres_sub_2s} | {pres_sub_3s} | {pres_sub_1p} | {pres_sub_2p} | {pres_sub_3p} |- ! class="roa-subjunctive-left-rail" style="height:3em;" rowspan="1" | <span title="imperfet">過去</span> | {impf_sub_1s} | {impf_sub_2s} | {impf_sub_3s} | {impf_sub_1p} | {impf_sub_2p} | {impf_sub_3p} |- ! rowspan="3" class="roa-imperative-left-rail" style="height:3em;" | <span title="imperatiu">命令法</span> ! class="roa-imperative-left-rail" | ! class="roa-imperative-left-rail" | &mdash; ! class="roa-imperative-left-rail" | <<tu>> ! class="roa-imperative-left-rail" | <<vostè>> ! class="roa-imperative-left-rail" | <<nosaltres>> ! class="roa-imperative-left-rail" | <<vosaltres>><br /><<vós>> ! class="roa-imperative-left-rail" | <<vostès>> |- ! class="roa-imperative-left-rail" style="height:3em;" | <span title="afirmatiu">-</span> | &mdash; | {imp_2s} | {imp_3s} | {imp_1p} | {imp_2p} | {imp_3p} |- ! class="roa-imperative-left-rail" style="height:3em;" | <span title="negatiu">禁止</span> (<<no>>) | &mdash; | {neg_imp_2s} | {neg_imp_3s} | {neg_imp_1p} | {neg_imp_2p} | {neg_imp_3p} |{\cl}{notes_clause}</div></div>]=] local function make_table(alternant_multiword_spec) local forms = alternant_multiword_spec.forms forms.title = link_term(alternant_multiword_spec.lemmas[1].form, nil, "term") local ann_parts = {} if alternant_multiword_spec.annotation ~= "" then table.insert(ann_parts, alternant_multiword_spec.annotation) end if alternant_multiword_spec.args.titlenote then table.insert(ann_parts, alternant_multiword_spec.args.titlenote) end local annotation = table.concat(ann_parts, ", ") if annotation ~= "" then forms.title = forms.title .. " (" .. annotation .. ")" end forms.description = "" -- Format the table. forms.footnote = alternant_multiword_spec.footnote_basic forms.notes_clause = forms.footnote ~= "" and m_string_utilities.format(notes_template, forms) or "" local table_with_pronouns = rsub(basic_table, "<<([^<>|]-)|([^<>|]-)>>", link_term) local table_with_pronouns = rsub(table_with_pronouns, "<<(.-)>>", link_term) return require("Module:TemplateStyles")("Module:roa-verb/style.css") .. m_string_utilities.format(table_with_pronouns, forms) end -- Externally callable function to parse and conjugate a verb given user-specified arguments. -- Return value is WORD_SPEC, an object where the conjugated forms are in `WORD_SPEC.forms` -- for each slot. If there are no values for a slot, the slot key will be missing. The value -- for a given slot is a list of objects {form=FORM, footnotes=FOOTNOTES}. function export.do_generate_forms(args, source_template, headword_head) local PAGENAME = mw.loadData("Module:headword/data").pagename local function in_template_space() return mw.title.getCurrentTitle().nsText == "テンプレート" end -- Determine the verb spec we're being asked to generate the conjugation of. This may be taken from the -- current page title or the value of |pagename=; but not when called from {{ca-verb form of}}, where the -- page title is a non-lemma form. Note that the verb spec may omit the infinitive; e.g. it may be "<i-e>". -- For this reason, we use the value of `pagename` computed here down below, when calling normalize_all_lemmas(). local pagename = source_template ~= "ca-verb form of" and args.pagename or PAGENAME local head = headword_head or pagename local arg1 = args[1] if not arg1 then if (pagename == "ca-conj" or pagename == "ca-verb" or pagename == "ca-verb form of") and in_template_space() then arg1 = "amar<>" else arg1 = "<>" end end -- When called from {{ca-verb form of}}, determine the non-lemma form whose inflections we're being asked to -- determine. This normally comes from the page title or the value of |pagename=. local verb_form_of_form if source_template == "ca-verb form of" then verb_form_of_form = args.pagename if not verb_form_of_form then if PAGENAME == "ca-verb form of" and in_template_space() then verb_form_of_form = "ami" else verb_form_of_form = PAGENAME end end end local incorporated_headword_head_into_lemma = false if arg1:find("^<.*>$") then -- missing lemma if head:find(" ") then -- If multiword lemma, try to add arg spec after the first word. -- Try to preserve the brackets in the part after the verb, but don't do it -- if there aren't the same number of left and right brackets in the verb -- (which means the verb was linked as part of a larger expression). local refl_clitic_verb, post = rmatch(head, "^(.-)( .*)$") local left_brackets = rsub(refl_clitic_verb, "[^%[]", "") local right_brackets = rsub(refl_clitic_verb, "[^%]]", "") if #left_brackets == #right_brackets then arg1 = iut.remove_redundant_links(refl_clitic_verb) .. arg1 .. post incorporated_headword_head_into_lemma = true else -- Try again using the form without links. local linkless_head = m_links.remove_links(head) if linkless_head:find(" ") then refl_clitic_verb, post = rmatch(linkless_head, "^(.-)( .*)$") arg1 = refl_clitic_verb .. arg1 .. post else error("Unable to incorporate <...> spec into explicit head due to a multiword linked verb or " .. "unbalanced brackets; please include <> explicitly: " .. arg1) end end else -- Will be incorporated through `head` below in the call to normalize_all_lemmas(). incorporated_headword_head_into_lemma = true end end local function split_bracketed_runs_into_words(bracketed_runs) return put.split_alternating_runs(bracketed_runs, " ", "preserve splitchar") end local parse_props = { parse_indicator_spec = parse_indicator_spec, -- Split words only on spaces, not on hyphens, because that messes up reflexive verb parsing. split_bracketed_runs_into_words = split_bracketed_runs_into_words, allow_default_indicator = true, allow_blank_lemma = true, } local alternant_multiword_spec = iut.parse_inflected_text(arg1, parse_props) alternant_multiword_spec.pos = pos or "verbs" alternant_multiword_spec.args = args alternant_multiword_spec.source_template = source_template alternant_multiword_spec.verb_form_of_form = verb_form_of_form alternant_multiword_spec.incorporated_headword_head_into_lemma = incorporated_headword_head_into_lemma normalize_all_lemmas(alternant_multiword_spec, head) detect_all_indicator_specs(alternant_multiword_spec) local inflect_props = { slot_list = alternant_multiword_spec.all_verb_slots, inflect_word_spec = conjugate_verb, -- We add links around the generated verbal forms rather than allow the entire multiword -- expression to be a link, so ensure that user-specified links get included as well. include_user_specified_links = true, } iut.inflect_multiword_or_alternant_multiword_spec(alternant_multiword_spec, inflect_props) -- Remove redundant brackets around entire forms. for slot, forms in pairs(alternant_multiword_spec.forms) do for _, form in ipairs(forms) do form.form = iut.remove_redundant_links(form.form) end end compute_categories_and_annotation(alternant_multiword_spec) if args.json and source_template == "ca-conj" then return require("Module:JSON").toJSON(alternant_multiword_spec.forms) end return alternant_multiword_spec end -- Entry point for {{ca-conj}}. Template-callable function to parse and conjugate a verb given -- user-specified arguments and generate a displayable table of the conjugated forms. function export.show(frame) local parent_args = frame:getParent().args local params = { [1] = {}, ["titlenote"] = {}, ["noautolinktext"] = {type = "boolean"}, ["noautolinkverb"] = {type = "boolean"}, ["pagename"] = {}, -- for testing/documentation pages ["json"] = {type = "boolean"}, -- for bot use } local args = require("Module:parameters").process(parent_args, params) local alternant_multiword_spec = export.do_generate_forms(args, "ca-conj") if type(alternant_multiword_spec) == "string" then -- JSON return value return alternant_multiword_spec end show_forms(alternant_multiword_spec) return make_table(alternant_multiword_spec) .. require("Module:utilities").format_categories(alternant_multiword_spec.categories, lang, nil, nil, force_cat) end return export 8t3cg5alvmvtssqspxbmpq0xy0dfqca 2313417 2313412 2026-08-09T09:36:40Z Kuroco2k 84207 2313417 Scribunto text/plain --[=[ This module implements {{ca-conj}} and provides the underlying conjugation functions for {{ca-verb}} (whose actual formatting is done in [[Module:ca-headword]]). Authorship: Ben Wing <benwing2> ]=] local export = {} --[=[ TERMINOLOGY: -- "slot" = A particular combination of tense/mood/person/number/etc. Example slot names for verbs are "pres_1s" (present indicative first-person singular), "pres_sub_2s" (present subjunctive second-person singular) "impf_sub_3p" (imperfect subjunctive third-person plural). Each slot is filled with zero or more forms. -- "form" = The conjugated Catalan form representing the value of a given slot. -- "lemma" = The dictionary form of a given Catalan term. For Catalan, always the infinitive. ]=] --[=[ FIXME: --]=] local lang = require("Module:languages").getByCode("ca") local m_string_utilities = require("Module:string utilities") local m_links = require("Module:links") local m_table = require("Module:table") local iut = require("Module:inflection utilities") local put = require("Module:parse utilities") local com = require("Module:ca-common") local force_cat = false -- set to true for debugging local check_for_red_links = false -- set to false for debugging local rfind = mw.ustring.find local rmatch = mw.ustring.match local rsplit = mw.text.split local rsubn = mw.ustring.gsub local rsub = com.rsub local u = mw.ustring.char local unpack = unpack or table.unpack -- Lua 5.2 compatibility -- version of rsubn() that returns a 2nd argument boolean indicating whether a substitution was made. local function rsubb(term, foo, bar) local retval, nsubs = rsubn(term, foo, bar) return retval, nsubs > 0 end local function link_term(term, display, face) return m_links.full_link({ lang = lang, term = term, alt = display }, face) end local front_vowel = "eèéiíï" local front_vowel_c = "[" .. front_vowel .. "]" local V = com.V -- vowel regex class local C = com.C -- consonant regex class -- IS_USER_STEM_OVERRIDE is prepended to user-supplied stem overrides to prevent `base.prefix` from being prepended. -- IS_USER_FORM_OVERRIDE is similar but also prevents final devoicing (cf. Balearic pres_1s 'trob' of [[trobar]]). -- Don't use 0xFFF0 in case we call a [[Module:parse-utilities]] function that uses it temporarily. local IS_USER_STEM_OVERRIDE = u(0xFFF1) local IS_USER_FORM_OVERRIDE = u(0xFFF2) --[=[ Irregular verbs: -ldre/-ndre verbs: infinitive pres1s pres3s pres1p impf1s fut1s pret1s sub1s sub1p pp caldre - cal [calent] calia caldrà calgué calgui - calgut,- coldre colc col colem colia coldré colguí colgui colguem colt,colta doldre dolc dol dolem dolia doldré dolguí dolgui dolguem dolgut,dolguda moldre molc mol molem molia moldré molguí molgui molguem molt,molta oldre olc ol olem olia oldré olguí olgui olguem olgut,olguda -soldre -solc -sol -solem -solia -soldré -solguí -solgui -solguem -solt,-solta (absoldre, dissoldre, resoldre) toldre tolc tol tolem tolia toldré tolguí tolgui tolguem tolt,tolta romandre romanc roman romanem romania romandré romanguí romangui romanguem romàs,romasa,romasos encendre encenc encén encenem encenia encendré encenguí encengui encenguem encès,encesa,encesos fendre fenc fen/-fèn fenem fenia fendré fenguí fengui fenguem fes/-fès,fesa,fesos (defendre, ofendre) -pendre -depenc -pèn -penem -penia -pendré -penguí -pengui -penguem -pès,-pesa,-pesos (dependre,despendre,expendre,suspendre) prendre prenc pren/-prèn prenem prenia prendré prenguí prengui prenguem pres/-près,presa,presos (aprendre, comprendre, desprendre, emprendre, reprendre, sorprendre) -tendre -tenc -tén -tenem -tenia -tendré -tenguí -tengui -tenguem -tès,-tesa,-tesos (pres2s: atens, pres3p: atenen) (atendre, contendre, distendre, entendre, estendre, pretendre) vendre venc ven venem venia vendré venguí vengui venguem venut,venuda (malvendre, revendre) fondre fonc fon fonem fonia fondré fonguí fongui fonguem fos/-fós,fosa,fosos (confondre, difondre, infondre, refondre) enfondre enfonc enfon enfonem enfonia enfondré enfonguí enfongui enfonguem enfús,enfusa,enfusos pondre ponc pon ponem ponia pondré ponguí pongui ponguem post,posta,postos (compondre, correspondre, descompondre, respondre) tondre tonc ton tonem tonia tondré tonguí tongui tonguem tos,tosa,tosos cerndre cerno cern cernem cernia cerndré cerní cerni cernem cernut,cernuda -ler verbs (mostly like -ldre verbs): infinitive pres1s pres3s pres1p impf1s fut1s pret1s sub1s sub1p pp caler (var. of caldre) doler (var. of doldre) soler solc sol solem solia soldré solguí solgui solguem solgut,solguda valer/valdre valc val valem valia valdré valguí valgui valguem valgut,valguda (prevaler, equivaler) other -dre/-tre verbs (regular except sometimes pp): infinitive pres1s pres3s pres1p impf1s fut1s pret1s sub1s sub1p pp batre bato bat batem batia batré batí bati batem batut,batuda -metre -meto -met -metem -metia -metré -metí -meti -metem -mès,-mesa,-mesos (ad-, co-, compro-, e-, entremetre's, mal-, o-, per-, pro-, read-, re-, retrans-, sot-, tra-, trans-) perdre perdo perd perdem perdia perdré perdí perdi perdem perdut,perduda -ure verbs infinitive pres1s pres3s pres1p impf1s impf1p fut1s pret1s sub1s sub1p pp caure caic cau caiem queia quèiem cauré caiguí caigui caiguem caigut,caiguda (decaure, recaure) plaure plac plau plaem plaïa plaíem plauré plaguí plagui plaguem plagut,plaguda (complaure) raure rac rau raem raïa raíem rauré raguí ragui raguem ragut,raguda beure bec beu bevem bevia bevíem beuré beguí begui beguem begut,beguda (embeure) creure crec creu creiem creia crèiem creuré creguí cregui creguem cregut,creguda deure dec deu devem devia devíem deuré deguí degui deguem degut,deguda jeure jec jeu jaiem jeia jèiem jauré jaguí jegui jaguem jagut,jaguda (ajeure) lleure - lleu [-] llevia - lleurà llegué llegui - llegut,- seure sec seu seiem seia sèiem seuré seguí segui seguem segut,seguda (asseure) treure trec treu traiem treia trèiem trauré traguí tregui traguem tret,treta (abstreure, atreure, contreure, distreure, extreure, retreure, sostreure) veure veig veu veiem veia vèiem veuré viu,veieres/veres, vegi vegem vist,vista,vists/vistos (entreveure, preveure, reveure) veié/veu,veiérem/vérem riure ric riu riem reia rèiem riuré riguí rigui riguem rigut,riguda (somriure) (e)scriure escric escriu escrivim escrivia escrivíem escriuré escriví/escriguí escrigui escriguem escrit,escrita (circumscriure, descriure, inscriure, prescriure, proscriure, subscriure, transcriure) viure visc viu vivim vivia vivíem viuré visquí visqui visquem viscut,viscuda (conviure, sobreviure) cloure cloc clou cloem cloïa cloíem clouré cloguí clogui cloguem clos,closa,closos (concloure, descloure, encloure, excloure, incloure, recloure) encloure encloc enclou encloem encloïa encloíem enclouré encloguí enclogui encloguem enclòs,enclosa,enclosos coure coc cou coem coïa coíem couré coguí cogui coguem cuit/cogut,cuita/coguda moure moc mou movem movia movíem mouré moguí mogui moguem mogut,moguda (promoure) noure noc nou noem noïa noíem nouré noguí nogui noguem nogut,noguda ploure - plou [plovent] plovia - plourà plogué plogui - plogut,ploguda -nyer verbs (regular except pp) infinitive pres1s pres3s pres1p impf1s fut1s pret1s sub1s sub1p pp atènyer atenyo ateny atenyem atenyia atenyeré atenyí atenyi atenyem atès,atesa,atesos empènyer empenyo empeny empenyem empenyia empenyeré empenyí empenyi empenyem empès,empesa,empesos estrènyer estrenyo estreny estrenyem estrenyia estrenyeré estrenyí estrenyi estrenyem estret,estreta estrènyer (constrènyer,restrènyer) fènyer fenyo feny fenyem fenyia fenyeré fenyí/fenguí fenyi fenyem fenyut/fengut,fenyuda/fenguda pertànyer pertanyo pertany pertanyem pertanyia pertanyeré pertanyí/pertanguí pertanyi pertanyem pertanyut/pertangut,pertanyuda/pertanguda plànyer planyo plany planyem planyia planyeré planyí/planguí planyi planyem plangut/planyut,planguda/planyuda -xer verbs (NOTE: pres2s in -xes) infinitive pres1s pres3s pres1p impf1s fut1s pret1s sub1s sub1p pp créixer creixo creix creixem creixia creixeré creixí/cresquí creixi creixem crescut,crescuda (acréixer,decréixer) conèixer conec coneix coneixem coneixia coneixeré coneguí conegui coneguem conegut,coneguda (desconèixer,reconèixer) merèixer mereixo mereix mereixem mereixia mereixeré mereixí/meresquí mereixi mereixem merescut,merescuda néixer/ neixo/ neix/ naixem naixia naixeré naixí/nasquí neixi/ naixem/nasquem nascut,nascuda nàixer naixo naix naixi (renéixer) parèixer parec pareix pareixem pareixia pareixeré pareguí paregui pareguem paregut,pareguda (aparèixer,comparèixer,desaparèixer,reaparèixer) péixer peixo peix paixem paixia paixeré paixí peixi paixem pascut,pascuda misc. -er verbs infinitive pres1s pres3s pres1p impf1s impf1p fut1s pret1s sub1s sub1p pp córrer corro corre correm corria corríem correré correguí corri correm corregut,correguda fúmer fumo fum fumem fumia fumíem fumeré fumí fumi fumem fumut,fumuda prémer premo prem premem premia premíem premeré premí premi premem premut,premuda (es-, re-) témer temo tem temem temia temíem temeré temí temi temem temut,temuda trémer [regular] tòrcer torço torç torcem torcia torcíem torceré torcí torci torcem torçut,torçuda (des-) [pres2s torces] vèncer venço venç vencem vencia vencíem venceré vencí venci vencem vençut,vençuda (con-, re-) [pres2s vences] cabre/caber cabo cap cabem cabia cabíem cabré cabí càpiga capiguem cabut,cabuda [sub2s càpigues] haver he/haig ha havem/hem havia havíem hauré haguí hagi hàgim/haguem hagut,haguda [noimp] [cond1s hauria/haguera; impsub2s haguessis/haguesses] poder puc pot podem podia podíem podré poguí pugui puguem pogut,poguda saber sé sap sabem sabia sabíem sabré sabí sàpiga sapiguem sabut,sabuda [imp2s sàpigues, imp2p sapigueu] voler vull vol volem volia volíem voldré volguí vulgui vulguem volgut,volguda ser/ésser soc és som era érem seré fui sigui siguem estat/sigut,estada/siguda [ger sent/essent] [cond1s seria/fora] [pres: soc,ets,éts,som,sou,són; pret: fui,fores,fou,fórem,fóreu,foren; impsub: fos,fossis,fos,fóssim,fóssiu,fossin] [imp: sigues,sigueu] fer faig fa fem feia fèiem faré fiu faci fem fet,feta [pres3p fan] [pret: fiu,feres,feu,férem,féreu,feren] ]=] local all_persons_numbers = { ["1s"] = "1|s", ["2s"] = "2|s", ["3s"] = "3|s", ["1p"] = "1|p", ["2p"] = "2|p", ["3p"] = "3|p", } local person_number_list = {"1s", "2s", "3s", "1p", "2p", "3p"} local imp_person_number_list = {"2s", "3s", "1p", "2p", "3p"} local neg_imp_person_number_list = {"2s", "3s", "1p", "2p", "3p"} proclitic_non_elided_person_number_to_reflexive_pronoun = { ["1s"] = "em ", ["2s"] = "et ", ["3s"] = "es ", ["1p"] = "ens ", ["2p"] = "us ", ["3p"] = "es ", } proclitic_elided_person_number_to_reflexive_pronoun = { ["1s"] = "m'", ["2s"] = "t'", ["3s"] = "s'", ["1p"] = "ens ", ["2p"] = "us ", ["3p"] = "s'", } enclitic_non_elided_person_number_to_reflexive_pronoun = { ["1s"] = "-me", ["2s"] = "-te", ["3s"] = "-se", ["1p"] = "-nos", ["2p"] = "-vos", ["3p"] = "-se", } enclitic_elided_person_number_to_reflexive_pronoun = { ["1s"] = "'m", ["2s"] = "'t", ["3s"] = "'s", ["1p"] = "'ns", ["2p"] = "-us", ["3p"] = "'s", } local indicator_flags = m_table.listToSet { "no_pres_stressed", "only3s", "only3sp", "only3p", "noimp", "pp_inv", "irreg", "no_built_in", } -- Initialize all the slots for which we generate forms. local function add_slots(alternant_multiword_spec) -- "Basic" slots: All slots that go into the regular table (not the reflexive form-of table). alternant_multiword_spec.verb_slots_basic = { {"infinitive", "inf"}, {"infinitive_linked", "inf"}, {"gerund", "ger"}, {"pp_ms", "m|s|past|part"}, {"pp_fs", "f|s|past|part"}, {"pp_mp", "m|p|past|part"}, {"pp_fp", "f|p|past|part"}, } -- Special slots used to handle non-reflexive parts of reflexive verbs in {{ca-verb form of}}. For example, for a -- reflexive-only verb like [[arrepentirse]], we want to be able to use {{ca-verb form of}} on [[arrepinta]] (which -- should mention that it is a part of 'me arrepinta', first-person singular present subjunctive, and -- 'se arrepinta', third-person singular present subjunctive) or on [[arrepentimos]] (which should mention that it -- is a part of 'arrepentímonos', first-person plural present indicative or preterite). Similarly, we want to use -- {{ca-verb form of}} on [[arrepentindo]] (which should mention that it is a part of 'se ... arrepentindo', -- syntactic variant of [[arrepentíndose]], which is the gerund of [[arrepentirse]]). To do this, we need to be -- able to map non-reflexive parts like [[arrepinta]], [[arrepentimos]], [[arrepentindo]], etc. to their reflexive -- equivalent(s), to the tag(s) of the equivalent(s), and, in the case of forms like [[arrepentindo]], -- [[arrepentir]] and imperatives, to the separated syntactic variant of the verb+clitic combination. We do this by -- creating slots for the non-reflexive part equivalent of each basic reflexive slot, and for the separated -- syntactic-variant equivalent of each basic reflexive slot that is formed of verb+clitic. We use slots in this -- way to deal with multiword lemmas. Note that we run into difficulties mapping between reflexive verbs, -- non-reflexive part equivalents, and separated syntactic variants if a slot contains more than one form. To -- handle this, if there are the same number of forms in two slots we're trying to match up, we assume the forms -- match one-to-one; otherwise we don't match up the two slots (which means {{ca-verb form of}} won't work in this -- case, but such a case is extremely rare and not worth worrying about). Alternatives that handle this "properly" -- are significantly more complicated and require non-trivial modifications to [[Module:inflection utilities]]. local need_special_verb_form_of_slots = alternant_multiword_spec.source_template == "ca-verb form of" and alternant_multiword_spec.refl if need_special_verb_form_of_slots then alternant_multiword_spec.verb_slots_reflexive_verb_form_of = { {"infinitive_non_reflexive", "-"}, {"infinitive_variant", "-"}, {"gerund_non_reflexive", "-"}, {"gerund_variant", "-"}, } else alternant_multiword_spec.verb_slots_reflexive_verb_form_of = {} end -- Add entries for a slot with person/number variants. -- `verb_slots` is the table to add to. -- `slot_prefix` is the prefix of the slot, typically specifying the tense/aspect. -- `tag_suffix` is a string listing the set of inflection tags to add after the person/number tags. -- `person_number_list` is a list of the person/number slot suffixes to add to `slot_prefix`. local function add_personal_slot(verb_slots, slot_prefix, tag_suffix, person_number_list) for _, persnum in ipairs(person_number_list) do local persnum_tag = all_persons_numbers[persnum] local slot = slot_prefix .. "_" .. persnum local accel = tag_suffix .. "|" .. persnum_tag table.insert(verb_slots, {slot, accel}) end end -- Add a personal slot (i.e. a slot with person/number variants) to `verb_slots_basic`. local function add_basic_personal_slot(slot_prefix, tag_suffix, person_number_list, no_special_verb_form_of_slot) add_personal_slot(alternant_multiword_spec.verb_slots_basic, slot_prefix, tag_suffix, person_number_list) -- Add special slots for handling non-reflexive parts of reflexive verbs in {{ca-verb form of}}. -- See comment above in `need_special_verb_form_of_slots`. if need_special_verb_form_of_slots and not no_special_verb_form_of_slot then for _, persnum in ipairs(person_number_list) do local persnum_tag = all_persons_numbers[persnum] local basic_slot = slot_prefix .. "_" .. persnum local accel = tag_suffix .. "|" .. persnum_tag table.insert(alternant_multiword_spec.verb_slots_reflexive_verb_form_of, {basic_slot .. "_non_reflexive", "-"}) end end end add_basic_personal_slot("pres", "直説法|現在", person_number_list) add_basic_personal_slot("impf", "直説法|不完全過去", person_number_list) add_basic_personal_slot("pret", "直説法|完全過去", person_number_list) add_basic_personal_slot("fut", "直説法|未来", person_number_list) add_basic_personal_slot("cond", "可能法", person_number_list) add_basic_personal_slot("pres_sub", "接続法|現在", person_number_list) add_basic_personal_slot("impf_sub", "接続法|過去", person_number_list) add_basic_personal_slot("imp", "命令法", imp_person_number_list) -- Don't need special non-reflexive-part slots because the negative imperative is multiword, of which the -- individual words are 'no' + subjunctive. add_basic_personal_slot("neg_imp", "命令法|禁止", neg_imp_person_number_list, "no special verb form of") -- Don't need special non-reflexive-part slots because we don't want [[arrependendo]] mapping to [[arrependendo-me]] -- (only [[arrependendo-se]]) or [[arrepender]] mapping to [[arrepender-me]] (only [[arrepender-se]]). add_basic_personal_slot("infinitive", "inf", person_number_list, "no special verb form of") add_basic_personal_slot("gerund", "ger", person_number_list, "no special verb form of") -- Generate the list of all slots. alternant_multiword_spec.all_verb_slots = {} for _, slot_and_accel in ipairs(alternant_multiword_spec.verb_slots_basic) do table.insert(alternant_multiword_spec.all_verb_slots, slot_and_accel) end for _, slot_and_accel in ipairs(alternant_multiword_spec.verb_slots_reflexive_verb_form_of) do table.insert(alternant_multiword_spec.all_verb_slots, slot_and_accel) end alternant_multiword_spec.verb_slots_basic_map = {} for _, slotaccel in ipairs(alternant_multiword_spec.verb_slots_basic) do local slot, accel = unpack(slotaccel) alternant_multiword_spec.verb_slots_basic_map[slot] = accel end end local overridable_stems = {} local function allow_multiple_values_for_override(separated_groups, data, is_form_override) local retvals = {} for _, separated_group in ipairs(separated_groups) do local footnotes = data.fetch_footnotes(separated_group) local form = separated_group[1] -- Prepend marker to prevent prefixing with `base.prefix`, and (in the case of form overrides) prevent -- final devoicing. if is_form_override then form = IS_USER_FORM_OVERRIDE .. form else form = IS_USER_STEM_OVERRIDE .. form end local retval = {form = form, footnotes = footnotes} table.insert(retvals, retval) end return retvals end for _, overridable_stem in ipairs { "stem", "stressed_stem", "unstressed_stem", "pres_unstressed", "pres_stressed", "pres3s", -- overrides just pres_2s and pres_3s -- Don't include pres1s, pres3p; use pres_1s etc. if you need to override just those forms "impf1", "impf2", "pret", "fut", "cond", "pres_sub_stressed", "pres_sub_unstressed", "impf_sub", "pp", "g_infix", "eix_infix", } do -- Written so we can substitute a different validator; parallel code in [[Module:es-verb]] and [[Module:pt-verb]] -- has simple_choice validators. overridable_stems[overridable_stem] = allow_multiple_values_for_override end -- Useful as the value of the `match` property of a built-in verb. `main_verb_spec` is a Lua pattern that should match -- the non-prefixed part of a verb, and `prefix_specs` is a list of Lua patterns that should match the prefixed part of -- a verb. If a prefix spec is preceded by ^, it must match exactly at the beginning of the verb; otherwise, additional -- prefixes (e.g. re-, des-) may precede. Return the prefix and main verb. local function match_against_verbs(main_verb_spec, prefix_specs) return function(verb) for _, prefix_spec in ipairs(prefix_specs) do if prefix_spec:find("^%^") then -- must match exactly prefix_spec = prefix_spec:gsub("^%^", "") if prefix_spec == "" then -- We can't use the second branch of the if-else statement because an empty () returns the current position -- in rmatch(). local main_verb = rmatch(verb, "^(" .. main_verb_spec .. ")$") if main_verb then return "", main_verb end else local prefix, main_verb = rmatch(verb, "^(" .. prefix_spec .. ")(" .. main_verb_spec .. ")$") if prefix then return prefix, main_verb end end else local prefix, main_verb = rmatch(verb, "^(.*" .. prefix_spec .. ")(" .. main_verb_spec .. ")$") if prefix then return prefix, main_verb end end end return nil end end --[=[ Built-in (usually irregular) conjugations. Each entry is processed in turn and consists of an object with two fields: 1. match=: Specifies the built-in verbs that match this object. 2. forms=: Specifies the built-in stems and forms for these verbs. The value of match= is either a string beginning with "^" (match only the specified verb), a string not beginning with "^" (match any verb ending in that string), or a function that is passed in the verb and should return the prefix of the verb if it matches, otherwise nil. The function match_against_verbs() is provided to facilitate matching a set of verbs with a common ending and specific prefixes (e.g. [[ter]] and [[ater]] but not [[abater]], etc.). The value of forms= is a table specifying stems and individual override forms. Each key of the table names either a stem (e.g. `pres_stressed`), a stem property (e.g. `g_infix`) or an individual override form (e.g. `pres_1s`). Each value of a stem can either be a string (a single stem), a list of strings, or a list of objects of the form {form = STEM, footnotes = {FOONOTES}}. Each value of an individual override should be of exactly the same form except that the strings specify full forms rather than stems. The values of a stem property depend on the specific property but are generally strings or booleans. In order to understand how the stem specifications work, it's important to understand the phonetic modifications done by combine_stem_ending(). In general, the complexities of predictable prefix, stem and ending modifications are all handled in this function. In particular: 1. Spelling-based modifications (c/qu, ç/c, g/gu, j/g, gu/gü, qu/qü) occur automatically as appropriate for the ending. 2. If the ending begins with an asterisk, this is a signal to delete the accent on the last syllable of the stem, e.g. veié -> veierem. 3. If ending begins with i, it may turn into í or ï after an unstressed vowel (in some but not all cases) to prevent the two merging into a diphthong. See combine_stem_ending() for specifics. The following stems are recognized [FIXME: This is not correct for Catalan, needs rewriting]: -- pres_unstressed: The present indicative unstressed stem (1p, 2p). Also controls the imperative 2p and gerund. Defaults to the infinitive stem (minus the ending -ar/-er/-ir/-or). -- pres_stressed: The present indicative stressed stem (1s, 2s, 3s, 3p). Also controls the imperative 2s. Default is empty if indicator `no_pres_stressed`, else a vowel alternation if such an indicator is given (e.g. `ue`, `ì`), else the infinitive stem. -- pres1: Special stem for 1s present indicative. Normally, do not set this explicitly. If you need to specify an irregular 1s present indicative, use the form override pres_1s= to specify the entire form. Defaults to pres_stressed. -- pres_sub_unstressed: The present subjunctive unstressed stem (1p, 2p). Defaults to the infinitive stem. -- pres_sub_stressed: The present subjunctive stressed stem (1s, 2s, 3s, 1p). Defaults to pres1. -- impf: The imperfect stem (not including the -av-/-i- stem suffix, which is determined by the conjugation). Defaults to the infinitive stem. -- pret: The full preterite stem missing only the endings (-ste, -mos, etc.), e.g. 'fige', 'fo'. Only used for verbs with irregular preterites (pret_conj == "irreg") such as [[facer]], [[poder]], [[traer]], etc. Defaults to `pret_base` + the conjugation vowel. -- fut: The future stem. Defaults to the infinitive stem + the conjugation vowel. -- cond: The conditional stem. Defaults to `fut`. -- impf_sub: The imperfect subjunctive stem. Defaults to `pret`. -- pp: The masculine singular past participle. Default is based on the verb conjugation: infinitive stem + '-ado' for -ar verbs, otherwise infinitive stem + '-ido'. -- pp_inv: `true` if the past participle exists only in the masculine singular. ]=] local built_in_conjugations = { -------------------------------------------------------------------------------------------- -- -ar -- -------------------------------------------------------------------------------------------- -- Orthographic consonant alternations in endings are handled automatically in combine_stem_ending(). { -- [[aguar]]: -- pres agúo, agúes, agúa, agüem, agüeu, agúen -- pres_sub aguï, aguïs, aguï, agüem, agüeu, aguïn -- contrast a more typical verb in -guar, [[enaiguar]]: -- pres enaiguo, enaigües, enaigua, enaigüem, enaigüeu, enaigüen -- pres_sub enaigüi, enaigüis, enaigüi, enaigüem, enaigüeu, enaigüin match = "^aguar", forms = { pres_stressed = "agú", pres_sub_stressed = "aguï", irreg = true, } }, { -- [[anar]] (full verb); highly irregular match = "^anar", var = "full", forms = { fut = "anir", pres_1s = "vaj", -- will be converted to 'vaig'; 'vaig' gets converted to 'vaic' pres_2s = "vas", pres_3s = "va", pres_3p = "van", pres_sub_stressed = "vagi", imp_2s = "ves", irreg = true, } }, { -- [[anar]] (auxiliary); highly irregular match = "^anar", var = "aux", forms = { pres_1s = "vaj", -- will be converted to 'vaig'; 'vaig' gets converted to 'vaic' pres_2s = {"vas", "vares"}, pres_3s = "va", pres_1p = {"vam", "vàrem"}, pres_2p = {"vau", "vàreu"}, pres_3p = {"van", "varen"}, pres_sub_stressed = "vagi", pres_sub_unstressed = "vàgi", impf1 = {}, impf2 = {}, fut = {}, pret = {}, pp = {}, gerund = {}, noimp = true, irreg = true, } }, { -- [[dar]] match = "^dar", forms = { pres_1s = {form = "do", footnotes = {"[obsolete]"}}, pres_2s = {form = "das", footnotes = {"[obsolete]"}}, pres_3s = {form = "da", footnotes = {"[obsolete]"}}, pres_3p = {form = "dan", footnotes = {"[obsolete]"}}, pres_sub_1s = {form = "de", footnotes = {"[obsolete]"}}, pres_sub_2s = {form = "des", footnotes = {"[obsolete]"}}, pres_sub_3s = {form = "de", footnotes = {"[obsolete]"}}, pres_sub_3p = {form = "den", footnotes = {"[obsolete]"}}, pret_1s = "di", -- regular except for lack of accent pret_3s = "da", -- regular except for lack of accent impf_sub_1s = "des", -- regular except for lack of accent impf_sub_3s = "des", -- regular except for lack of accent irreg = true, } }, { -- [[estar]]; highly irregular match = "^estar", forms = { pres_2s = "estàs", pres_3s = "està", pres_3p = "estan", g_infix = "estig", imp_2s = "estigues", imp_2p = "estigueu", pp = "estad", } }, -------------------------------------------------------------------------------------------- -- -er/-re -- -------------------------------------------------------------------------------------------- -- Regular verbs not needing entries here: -- -- [[rebre]], [[concebre]], [[decebre]], [[percebre]] -- [[rompre]] -- [[fúmer]], [[prémer]], [[témer]], [[trémer]] -- [[perdre]], [[batre]], [[botre]], [[fotre]], [[retre]] -- [[tòrcer]], [[vèncer]] -- etc. ------------------------------------------- -ldre/-ler/-lre -------------------------------------- { -- [[caldre]], [[doldre]], [[condoldre's]], [[oldre]] match = match_against_verbs("ldre", {"ca", "do", "^o"}), forms = { -- g_infix implies irreg = true -- g_infix adds -g to pres_1s, sub, pret and pp stems; combine_stem_ending() changes final -g to -c g_infix = "+", } }, { -- [[caler]] match = "caler", like = "caldre", }, { -- [[doler]] and compounds match = "doler", like = "doldre", }, { -- [[dolre]] match = "dolre", forms = { -- see above for g_infix effects g_infix = "+", } }, { -- [[valer]], [[equivaler]], [[prevaler]], [[sobrevaler]] match = "valer", forms = { -- see above for g_infix effects fut = "valdr", g_infix = "+", } }, { -- [[valdre]] and compounds match = "valdre", like = "valer", }, { -- [[soler]] match = "^soler", -- this must precede -oldre rule below for alt form [[soldre]] forms = { -- see above for g_infix effects fut = {}, pret = {}, impf_sub = "solgué", -- regular, but we disabled the preterite, which would normally disable impf_sub too g_infix = "+", pp = {}, noimp = true, } }, { -- [[soldre]] match = "^soldre", -- this must precede -oldre rule below like = "soler", }, { -- [[coldre]], [[moldre]], [[absoldre]], [[dissoldre]], [[resoldre]], [[toldre]] match = "oldre", -- this must follow [[doldre]]/[[oldre]] rule above forms = { -- see above for g_infix effects g_infix = "+", pp = "olt", } }, { -- [[voler]], [[malvoler]] match = "voler", forms = { fut = "voldr", pres_1s = "vull", pres_sub_stressed = "vulgui", pres_sub_unstressed = "vulgue", g_infix = "+", imp_2s = "vulgues", imp_2p = "vulgueu", } }, --------------------------------------------- -ndre ---------------------------------------- { -- [[romandre]]; write it this way so there's a prefix with a vowel to prevent against the accent in the pp -- from being removed while still removing it in the feminine. match = match_against_verbs("mandre", {"^ro"}), forms = { -- see above for g_infix effects g_infix = "+", pp = "màs#", } }, { -- [[encendre]], [[atendre]], [[contendre]], [[desentendre's]], [[distendre]], [[entendre]], [[estendre]], -- [[pretendre]] match = match_against_verbs("endre", {"enc", "t"}), forms = { pres_3s = "én#", -- remove final accent without prefix with vowel; also removed when adding a suffix -- see above for g_infix effects g_infix = "+", pp = "ès#", -- see above for effect of final # } }, { -- [[vendre]], [[malvendre]], [[revendre]] match = "vendre", forms = { pres_3s = "vèn#", -- see above for effect of final # -- see above for g_infix effects g_infix = "+", pp = "venud", -- g_infix would normally make it vengud } }, { -- [[fendre]], [[defendre]], [[ofendre]], [[dependre]], [[despendre]], [[expendre]], [[suspendre]], [[prendre]], -- [[aprendre]], [[comprendre]], [[desprendre]], [[emprendre]], [[reprendre]], [[sorprendre]] match = "endre", -- this must follow previous -endre rules above forms = { pres_3s = "èn#", -- see above for effect of final # -- see above for g_infix effects g_infix = "+", pp = "ès#", -- see above for effect of final # } }, { -- [[enfondre]]; write it this way so there's a prefix with a vowel to prevent against the accent in the pp -- from being removed while still removing it in the feminine. match = match_against_verbs("fondre", {"^en"}), forms = { -- see above for g_infix effects g_infix = "+", pp = "fús#", } }, { -- [[pondre]], [[compondre]], [[correspondre]], [[descompondre]], [[despondre's]], [[respondre]] match = "pondre", forms = { -- see above for g_infix effects g_infix = "+", pp = "post", } }, { -- [[fondre]], [[confondre]], [[difondre]], [[infondre]], [[refondre]], [[tondre]] match = "ondre", -- this must follow previous -ondre rules above forms = { -- see above for g_infix effects g_infix = "+", pp = "ós#", -- see above for effect of final # } }, --------------------------------------------- -nyer ---------------------------------------- { -- [[atènyer]]; write it this way so there's a prefix with a vowel to prevent against the accent in the pp -- from being removed while still removing it in the feminine. match = match_against_verbs("tènyer", {"^a"}), forms = { pp = "tès#", irreg = true, } }, { -- [[empènyer]], [[espènyer]] match = match_against_verbs("pènyer", {"^em", "^es"}), forms = { pp = "pès#", irreg = true, } }, { -- [[estrènyer]], [[constrènyer]], [[destrènyer]], [[restrènyer]] match = match_against_verbs("strènyer", {"^e", "con", "^de", "^re"}), forms = { pp = "stret", irreg = true, } }, { -- [[fènyer]] match = "fènyer", forms = { pp = {"fengud", "fenyud"}, irreg = true, } }, { -- [[júnyer]] match = "júnyer", like = "junyir", }, { -- [[plànyer]], [[complànyer]], [[pertànyer]] match = match_against_verbs("ànyer", {"pl", "pert"}), forms = { pp = {"angud", "anyud"}, irreg = true, } }, --------------------------------------------- -aure ---------------------------------------- { -- [[caure]], [[decaure]], [[recaure]] match = "caure", forms = { -- stem ending in -ai and imperfect in -ia causes special stressed imperfect logic to take effect; we get -- impf1s queia, impf1p quèiem (preceding vowel changed to è and attached to initial consonant using -- combine_stem_ending(), which changes c- to qu-) stem = "caie", -- i dropped by g_infix before u -- g_infix implies irreg = true -- g_infix adds -g to pres_1s, sub, pret and pp stems; combine_stem_ending() changes final -g to -c -- g_infix sets pres_stressed to end in -u, removing a preceding -i or -v g_infix = "+", } }, { -- [[plaure]], [[complaure]] match = "plaure", forms = { stem = "plae", -- ï in impf1s -aïa gets generated automatically by combine_stem_ending() g_infix = "+", } }, { -- [[raure]] match = "^raure", forms = { stem = "rae", -- ï in impf1s -aïa gets generated automatically by combine_stem_ending() g_infix = "+", pp = {"ragud", "ras"}, } }, --------------------------------------------- -eure ---------------------------------------- { -- [[beure]], [[embeure]], [[deure]], [[lleure]] match = match_against_verbs("eure", {"b", "d", "ll"}), forms = { stem = "eve", -- v dropped by g_infix before g and u g_infix = "+", } }, { -- [[creure]], [[seure]], [[asseure]] match = match_against_verbs("eure", {"cr", "s"}), forms = { stem = "ee", pres_unstressed = "eie", -- affects pres_1p, pres_2p, gerund, imperfect (see [[caure]]) g_infix = "+", } }, { -- [[jeure]], [[ajeure]] match = "jeure", forms = { fut = "jaur", -- affects future and cond stressed_stem = "jee", -- affects stressed forms, which get g added by g_infix by added except for -- pres_stressed, which gets u added (controls pres_3s, pres_2s, pres_3p) unstressed_stem = "jae", -- affects unstressed_stem, which get g added by g_infix pres_stressed = {"jeu", "jau"}, pres_unstressed = "jaie", -- affects pres_1p, pres_2p, gerund, imperfect (see [[caure]]) pres_1s = {"jec", "jac"}, impf1 = "jei", -- otherwise we'd get impf_1s '#geia' etc. impf2 = "jèi", g_infix = "+", } }, { match = "jaure", like = "jeure", }, { -- [[treure]], [[abstreure]], [[atreure]], [[bestreure]], [[contreure]], [[detreure]], [[distreure]], -- [[extreure]], [[retreure], [[retrotreure]], [[sostreure]] match = "treure", forms = { -- like [[jeure]] except for irregular pp fut = "traur", stressed_stem = "tree", unstressed_stem = "trae", pres_stressed = {"treu", "trau"}, pres_unstressed = "traie", pres_1s = {"trec", "trac"}, g_infix = "+", pp = "tret", } }, { match = "traure", like = "treure", }, { -- [[veure]], [[entreveure]], [[preveure]], [[reveure]] match = "veure", forms = { stem = "veie", -- impf1s veia, impf1p vèiem (preceding vowel changed to è) pres_stressed = "veu", pres_1s = "vej", -- will be converted to 'veig'; 'veig' gets converted to 'veic' pres_sub_stressed = "vegi", pres_sub_unstressed = "vege", pret = {"veié", "vé"}, pret_1s = "viu", pret_3s = {"veié", "veu"}, impf_sub = "veié", pp = "vist", imp_2s = "veges", imp_2p = {"vegeu", "veieu"}, irreg = true, } }, --------------------------------------------- -iure ---------------------------------------- { -- [[escriure]], [[circumscriure]], [[descriure]], [[inscriure]], [[prescriure]], [[proscriure]], -- [[subscriure]], [[transcriure]] match = "scriure", forms = { stem = "scrivi", -- v dropped by g_infix before g and u; pres_1p/pres_2p have -ir endings g_infix = "+", pret = {"scriví", "scrigué"}, pp = "scrit", } }, { -- [[riure]], [[somriure]] match = "riure", -- must follow rule for 'scriure' forms = { stem = "rie", -- impf1s reia, impf1p rèiem (preceding vowel changed to è) g_infix = "+", } }, { -- [[viure]], [[conviure]], [[desviure's]], [[sobreviure]] match = "viure", forms = { stem = "vivi", -- v dropped by g_infix before g and u; pres_1p/pres_2p have -ir endings g_infix = "visc", -- applies to pres1s, sub, pret, pp } }, --------------------------------------------- -oure ---------------------------------------- { -- [[cloure]], [[concloure]], [[descloure]], [[encloure]], [[excloure]], [[incloure]], [[recloure]] match = "cloure", forms = { stem = "cloe", -- ï in impf1s cloïa gets generated automatically by combine_stem_ending() g_infix = "+", pp = "clòs#", -- remove final accent without prefix with vowel; also removed when adding a suffix } }, { -- [[coure]] "to cook" match = "coure", var = "cook", forms = { stem = "coe", -- ï in impf1s coïa gets generated automatically by combine_stem_ending() g_infix = "+", pp = "cuit", } }, { -- [[coure]] "to sting" match = "coure", var = "sting", forms = { stem = "coe", -- ï in impf1s coïa gets generated automatically by combine_stem_ending() g_infix = "+", -- pp regular 'cogud' } }, { -- [[moure]], [[promoure]], [[remoure]], [[somoure]], [[ploure]] match = match_against_verbs("oure", {"m", "pl"}), forms = { stem = "ove", -- v dropped by g_infix before g and u g_infix = "+", } }, { -- [[noure]] match = "noure", forms = { stem = "noe", -- ï in impf1s -aïa gets generated automatically by combine_stem_ending() g_infix = "+", } }, --------------------------------------------- -xer ---------------------------------------- { -- [[conèixer]], [[desconèixer]], [[reconèixer]] match = "conèixer", forms = { g_infix = "coneg", } }, { -- [[créixer]], [[acréixer]], [[decréixer]], [[recréixer]], [[sobrecréixer]] match = "créixer", forms = { pret = {"creixé", "cresqué"}, pres_sub_unstressed = {"creixe", "cresque"}, pp = "crescud", irreg = true, } }, { -- [[merèixer]], [[desmerèixer]], [[irèixer-se]] match = match_against_verbs("rèixer", {"me", "^i"}), forms = { pret = {"reixé", "resqué"}, pres_sub_unstressed = {"reixe", "resque"}, pp = "rescud", irreg = true, } }, { -- [[néixer]]/[[nàixer]], [[renéixer]]/[[renàixer]], [[sobrenéixer]]/[[sobrenàixer]], [[péixer]]/[[pàixer]] match = match_against_verbs("éixer", {"n", "p"}), forms = { stem = "aixe", fut = "aixer", pres_stressed = {"eix", "aix"}, pres_1s = "eixo", pret = {"aixé", "asqué"}, pres_sub_stressed = "eixi", pres_sub_unstressed = {"aixe", "asque"}, pp = "ascud", irreg = true, } }, { match = "àixer", like = "éixer", }, { -- [[parèixer]], [[aparèixer]], [[comparèixer]], [[desaparèixer]], [[reaparèixer]] match = "parèixer", forms = { g_infix = "pareg", } }, --------------------------------------------- misc ---------------------------------------- { -- [[cabre]] match = "cabre", forms = { pres_sub_stressed = "càpiga", pres_sub_unstressed = "capigue", irreg = true, } }, { -- [[caber]] match = "caber", like = "cabre", }, { -- [[saber]] match = "saber", forms = { fut = "sabr", pres_1s = "sé", pres_sub_stressed = "sàpiga", pres_sub_unstressed = "sapigue", imp_2s = "sàpiga", imp_2p = "sapigueu", irreg = true, } }, { -- [[poder]] match = "poder", forms = { fut = "podr", pres_1s = "puc", pres_sub_stressed = "pugui", pres_sub_unstressed = "pugue", g_infix = "pog", imp_2s = "pugues", imp_2p = "pugueu", irreg = true, } }, { -- [[córrer]], [[acórrer]], [[concórrer]], [[decórrer]], [[descórrer]], [[discórrer]], [[encórrer]], -- [[escórrer]], [[incórrer]], [[ocórrer]], [[recórrer]], [[socórrer]], [[transcórrer]] match = "córrer", forms = { pret = "corregué", pres_sub_unstressed = {"corre", "corregue"}, pp = "corregud", irreg = true, } }, { -- [[metre]], [[admetre]], [[arremetre]], [[cometre]], [[comprometre]], [[demetre]], [[descomprometre]], -- [[emetre]], [[entremetre's]], [[escometre]], [[malmetre]], [[manumetre]], [[ometre]], [[permetre]], -- [[prometre]], [[readmetre]], [[remetre]], [[retransmetre]], [[sotmetre]], [[trametre]], [[transmetre]] match = "metre", forms = { pp = "mès#", irreg = true, } }, -------------------------------------------------------------------------------------------- -- -ir -- -------------------------------------------------------------------------------------------- { -- [[acudir]]; NOTE: Separation by meaning does not occur in DCC, DIEC, DEIEC, and DCVB says the distinction -- is geographical and makes no mention of distinction by meaning. OTOH ca.wikt does say that the pronominal -- sense "to occur" tends to conjugate non-inchoative. match = "acudir", forms = { eix_infix = {{ form = "+", footnotes = {'[especially in the sense "to turn up, to be present"]'} }, { form = "-", footnotes = {'[especially in the pronominal sense "to occur"]'} }} } }, -- [[afegir]]: -- non-inchoative in Valencia, inchoative elsewhere { -- [[ajupir]] -- [[buixir]] -- [[bullir]], [[rebullir]] -- [[cruixir]], [[escruixir]] (Routledge says this is inchoative but DIEC, DEIEC and DCC all disagree; note -- pres_2s 'cruixes', handled automatically) -- [[dormir]], [[adormir]] -- [[funyir]] -- [[grunyir]] -- [[munyir]], [[esmunyir]] -- [[pudir]] -- [[punyir]] -- [[retrunyir]] -- [[sallir]] -- [[sentir]], [[pressentir]], [[ressentir-se]]; not [[consentir]], with can be either non-inchoative or -- inchoative, and not [[assentir]] or [[dissentir]], which are only inchoative match = match_against_verbs("ir", {"ajup", "buix", "bull", "cruix", "dorm", "funy", "gruny", "muny", "pud", "puny", "retruny", "^sent", "pressent", "^ressent", "sall"}), forms = { eix_infix = "-", } }, { -- [[arrupir-se]]; -- [[brumir]]; -- [[brunzir]]; -- [[consumir]], [[resumir]], [[presumir]] (not [[sumir]], [[assumir]], [[subsumir]], which are regular) -- [[mentir]], [[desmentir]] -- [[percudir]]; cf. also [[acudir]], which to some extent has separate conjugations per meaning -- [[consentir]] match = match_against_verbs("ir", {"arrup", "brum", "brunz", "consum", "^resum", "presum", "ment", "percud", "consent"}), forms = { eix_infix = {"+", "-"}, } }, -- [[cenyir]]: -- non-inchoative or inchoative in Balearics, inchoative elsewhere { -- [[cobrir]], [[descobrir]], [[encobrir]], [[recobrir]], [[redescobrir]] match = "cobrir", forms = { pp = "cobert", irreg = true, } }, { -- [[collir]], [[acollir]], [[escollir]], [[recollir]] match = "collir", forms = { stressed_stem = "culli", eix_infix = "-", irreg = true, } }, { -- [[complir]], [[acomplir]], [[incomplir]] match = "complir", forms = { pp = {"complert", "complid"}, irreg = true, } }, { -- [[cosir]], [[descosir]], [[recosir]] match = "cosir", forms = { stressed_stem = "cusi", pres_3s = "cús#", eix_infix = "-", irreg = true, } }, { -- [[eixir]], [[deseixir-se]]; not [[teixir]] or [[entreteixir]], and not [[reeixir]] or [[sobreeixir]], -- which have an ï in the stem-stressed forms match = match_against_verbs("eixir", {"^", "des"}), forms = { stressed_stem = "ixi", eix_infix = "-", irreg = true, } }, { -- [[reeixir]], [[sobreeixir]] match = match_against_verbs("eixir", {"^re", "sobre"}), forms = { stressed_stem = "ïxi", eix_infix = "-", irreg = true, } }, -- [[engolir]]: -- non-inchoative in Valencia, inchoative elsewhere { -- [[escopir]] match = "escopir", forms = { stressed_stem = "escupi", eix_infix = "-", irreg = true, } }, { -- [[establir]], [[preestablir]], [[restablir]] match = "establir", forms = { pp = {"establert", "establid"}, irreg = true, } }, -- [[ferir]]: -- non-inchoative in Balearics, inchoative elsewhere -- [[fregir]]: -- non-inchoative in Valencia, inchoative elsewhere { -- [[fugir]], [[confugir]], [[defugir]], [[enfugir-se]]; pres sing ''fujo, fuges, fuig'' handled by -- combine_stem_ending(); can't be handled by rule above that lists many non-inchoative verbs because the -- prefix would be 'fug' and the front-back alternation code doesn't apply to prefixes. match = "fugir", forms = { eix_infix = "-", } }, { -- [[imprimir]], [[reimprimir]], [[sobreimprimir]]; not any other verbs in -primir; write it this way so -- there's a prefix with a vowel to prevent against the accent in the pp from being removed while still -- removing it in the feminine. match = match_against_verbs("primir", {"im"}), forms = { pp = "près#", irreg = true, } }, -- [[llegir]]: -- non-inchoative in Valencia and Minorca, inchoative elsewhere { -- [[lluir]]: regular inchoative in the figurative meaning "to display (something), to be showy" also in the -- legal meaning "free from a pecuniary obligation, such as a land-based tax (emphyteusis)"; irregular in the -- literal meaning "to shine"; use <no_built_in> to get regular conjugation. In the regular conjugation, -- umlauts appear in the following forms: pres_1p/pres_sub_1p/imp_1p lluïm, pres_2p/pres_sub_2p/imp_2p lluïu, -- impf_1s/impf_3s lluïa, impf_2s lluïes, impf_3p lluïen, pret_2s lluïres, pret_3p lluïren, -- impf_sub_2s lluïssis, impf_sub_3p lluïssin, throughout the pp: lluït, lluïda, lluïts, lluïdes. IN the -- irregular conjugation, umlauts appear in the same places as well as elsewhere in the present subjunctive: -- pres_sub_1s/pres_sub_3s/imp_3s lluï, pres_sub_2s lluïs, pres_sub_3p/imp_3p lluïn. Notably, they do *NOT* -- appear in the gerund lluint, the infinitive lluir, or anywhere in the future or conditional. Note that -- verbs.cat [https://www.verbs.cat/en/conjugation/899-lluir.html] lists additional irregular forms pres_1s -- lluu, and alternative impf_sub forms in -e- instead of -i- (lluïsses, lluíssem, lluísseu, lluïssen), but -- these are nonstandard or dialectal per both Routledge and DEIEC. match = "^lluir", forms = { eix_infix = "-", pres3s = {"lluu", "llu"}, -- generates pres_2s, imp_2s irreg = true, } }, { -- [[entrelluir]] "to be half-seen", [[relluir]] "to shine", [[traslluir-se]] "to be translucent"; either -- inchoative or non-inchoative, not distinguished by meaning; note, [[deslluir]] and [[enlluir]] are regular -- inchoative verbs. match = match_against_verbs("lluir", {"entre", "^re", "tras"}), forms = { eix_infix = {"+", "-"}, pres3s = {"llueix", "lluu", "llú"}, -- generates pres_2s, imp_2s; note, pres_2s will end in -es due to -- combine_stem_ending() irreg = true, } }, { -- [[morir]], [[premorir]]; but not [[atemorir]] match = match_against_verbs("morir", {"^", "pre"}), forms = { eix_infix = "-", pp = "mort", irreg = true, } }, { -- [[obrir]], [[entreobrir]], [[reobrir]]; not [[cobrir]] and derivatives, not [[empobrir]], so we have to list -- them individually match = match_against_verbs("obrir", {"^", "entre", "^re"}), forms = { eix_infix = "-", pp = "obert", irreg = true, } }, { -- [[oferir]]; but not [[proferir]] match = "^oferir", forms = { pp = {"ofert", "oferid"}, irreg = true, } }, -- [[oir]], [[desoir]], [[entreoir]]: -- per Routledge, non-inchoative or inchoative normally but only -- non-inchoative in Valencian; but all dictionaries disagree and say it is a regular inchoative-only verb. -- It has the same umlauts as lluir (and [[corroir]], another regular inchoative verb). { -- [[omplir]], [[desomplir-se]], [[reomplir]]; not [[complir]] and derivatives, so we have to list them -- individually match = match_against_verbs("omplir", {"^", "des", "^re"}), forms = { eix_infix = "-", pp = {"omplert", "omplid"}, irreg = true, } }, -- [[penedir-se]]: -- non-inchoative in Balearics, inchoative elsewhere { -- [[pruir]] "to itch": same umlauts as in [[lluir]]. match = "^pruir", forms = { eix_infix = "-", pres3s = {"pruu", "pru"}, -- generates pres_2s, imp_2s irreg = true, } }, { -- [[reblir]] match = "^reblir", forms = { pp = {"reblert", "reblid"}, irreg = true, } }, -- [[renyir]]: -- non-inchoative in Valencia, inchoative elsewhere { -- [[sofrir]] match = "^sofrir", forms = { pp = {"sofert", "sofrid"}, irreg = true, } }, { -- [[sortir]], [[ressortir]], [[sobresortir]]; but not [[assortir]], which is regular inchoative match = match_against_verbs("sortir", {"^", "^res", "sobre"}), forms = { stressed_stem = "surti", eix_infix = "-", irreg = true, } }, { -- [[suplir]] match = "^suplir", forms = { pp = {"suplert", "suplid"}, irreg = true, } }, -- [[teixir]], [[entreteixir]]: -- non-inchoative in Valencia, inchoative elsewhere { -- [[tenir]] but not any compounds; highly irregular match = "^tenir", forms = { fut = "tindr", pres_stressed = "ten", pres_3s = "té", imp_2s = {"té", "ten", "tingues"}, imp_2p = {"teniu", "tingueu"}, g_infix = "ting", } }, { -- [[abstenir-se]], [[atenir-se]], [[captenir-se]], [[cartenir]], [[contenir]], [[detenir]], [[entretenir]], -- [[mantenir]], [[menystenir]], [[obtenir]], [[retenir]], [[sostenir]], [[viltenir]]; highly irregular match = "tenir", forms = { fut = "tindr", pres_stressed = "ten", pres_3s = "té", imp_2s = {"tén", "tingues"}, imp_2p = {"teniu", "tingueu"}, g_infix = "ting", } }, { -- [[tindre]]: variant of [[tenir]] match = "tindre", like = "tenir", }, -- [[tenyir]], [[destenyir]]: -- non-inchoative in Valencia, but [[retenyir]] inchoative or non-inchoative in -- Valencia? (per Routledge); regular inchoative elsewhere { -- [[tossir]] "to cough" match = "^tossir", forms = { stressed_stem = "tussi", -- pres_2s gets 'tusses' pres_3s = "tus", -- note, pres_3s (a single form override) not pres3s (a stem override, which also affects -- pres_2s; but imp_2s is physically copied from pres_3s, so imp_2s correctly gets 'tus') eix_infix = "-", irreg = true, } }, { -- [[venir]] but not any compounds; highly irregular match = "^venir", forms = { fut = "vindr", pres_stressed = "ven", pres_3s = "ve", imp_2s = "vine", g_infix = "ving", } }, { -- compounds of [[venir]]: [[advenir]], [[avenir]], [[contravenir]], [[convenir]], [[desavenir-se]], -- [[desconvenir]], [[entrevenir]], [[esdevenir]], [[intervenir]], [[obvenir]], [[pervenir]], [[prevenir]], -- [[provenir]], [[reconvenir]], [[revenir]], [[sobrevenir]], [[subvenir]]; but not [[enjovenir]] or -- [[rejovenir]]; highly irregular match = match_against_verbs("venir", {"^ad", "^a", "contra", "con", "desa", "entre", "esde", "inter", "ob", "per", "pre", "pro", "^re", "sobre", "sub"}), forms = { fut = "vindr", pres_stressed = "ven", pres_3s = "vé", imp_2s = "vén", g_infix = "ving", } }, { -- [[vindre]]: variant of [[venir]] match = "vindre", like = "venir", }, -- [[vestir]], [[desvestir]], [[revestir]], maybe [[transvestir]]: non-inchoative in Valencia, inchoative or -- non-inchoative in the Balearics; regular inchoative elsewhere; but not [[envestir]] or [[investir]], which are -- regular inchoative everywhere { -- [[fer]], [[contrafer]], [[desfer]], [[estrafer]], [[perfer]], [[refer]], [[satisfer]]; highly irregular match = "fer", forms = { fut = "far", pres_1s = "faj", -- will be converted to 'faig'; 'faig' gets converted to 'faic' pres_2s = "fàs#", pres_3s = "fà#", pres_3p = "fan", pres_unstressed = "fe", impf1 = "fei", impf2 = "fèi", pres_sub_stressed = "faci", pres_sub_unstressed = "fe", pret = "fé", pret_1s = "fiu", pret_3s = "feu", impf_sub_1s = "fés#", -- regular except for base form [[fes]], lacking an accent impf_sub_3s = "fés#", -- same imp_2s = "fés#", pp = "fet", irreg = true, } }, { -- [[dir]], [[adir-se]], [[contradir]], [[desdir]], [[entredir]], [[interdir]], [[maldir]], [[predir]], [[redir]]; -- behaves like an -er/-re verb match = match_against_verbs("dir", {"^", "^a", "contra", "des", "entre", "inter", "mal", "pre", "^re"}), forms = { stem = "die", g_infix = "+", imp_2s = "digues", imp_2p = "digueu", pp = "dit", } }, { -- [[dur]], [[endur-se]]; behaves like an -er/-re verb match = "dur", forms = { stem = "due", g_infix = "+", pres3s = {"duu", "du"}, -- generates pres_2s, imp_2s impf1 = "dui", impf2 = "dúi", pp = "dut", } }, { -- [[ser]]; highly irregular match = "^ser", forms = { pres_1s = "soc", pres_2s = "ets", pres_3s = "és", pres_1p = "som", pres_2p = "sou", pres_3p = "són", impf1 = "er", impf2 = "ér", pres_sub_stressed = "sigui", pres_sub_unstressed = "sigue", pret = "fó", pret_1s = "fui", pret_3s = "fou", impf_sub_1s = "fos", -- regular except for lack of accent impf_sub_3s = "fos", -- same cond = {"serí", "fór"}, imp_2s = "sigues", imp_2p = "sigueu", pp = {"estad", "sigud"}, gerund = {"sent", "essent"}, irreg = true, } }, { -- [[ésser]]; variant of [[ser]] match = "^ésser", like = "ser", }, { -- [[haver]] as auxiliary; highly irregular match = "^haver", var = "aux", forms = { pres_1s = "he", pres_2s = "has", pres_3s = "ha", pres_1p = "hem", pres_2p = "heu", pres_3p = "han", fut = "haur", cond = {"haurí", "haguér"}, pres_sub_stressed = "hagi", pres_sub_unstressed = "hàgi", noimp = true, g_infix = "+", } }, { -- [[haver]] as full verb; highly irregular match = "^haver", var = "full", forms = { pres_1s = {"hec", "hac"}, pres_stressed = {"heu", "hau"}, fut = "haur", pres_sub_stressed = "hegui", g_infix = "+", } }, { -- [[heure]]; variant of full verb [[haver]] match = "^heure", like = "haver", likevar = "full", }, { -- [[haure]]; variant of full verb [[haver]] match = "^haure", like = "haver", likevar = "full", }, } local function skip_slot(base, slot, allow_overrides) if not allow_overrides and (base.basic_overrides[slot] or base.refl and base.basic_reflexive_only_overrides[slot]) then -- Skip any slots for which there are overrides. return true end if base.only3s and (slot:find("^pp_f") or slot:find("^pp_mp")) then -- diluviar, atardecer, neviscar; impersonal verbs have only masc sing pp return true end if not slot:find("[123]") then -- Don't skip non-personal slots. return false end if base.nofinite then return true end if (base.only3s or base.only3sp or base.only3p) and (slot:find("^imp_") or slot:find("^neg_imp_")) then return true end if base.only3s and not slot:find("3s") then -- diluviar, atardecer, neviscar return true end if base.only3sp and not slot:find("3[sp]") then -- atañer, concernir return true end if base.only3p and not slot:find("3p") then -- [[caer cuatro gotas]], [[caer chuzos de punta]], [[entrarle los siete males]] return true end return false end local function add_stem_ending(stem, ending) if ending == "" then return stem end if stem:find("#$") then -- remove final accent when adding a suffix stem = com.remove_accents((stem:gsub("#$", "")), "final syllable only") end return stem .. ending end local function process_stem(stem, fn) if stem:find("#$") then local stem_no_pound_sign = stem:match("^(.*)#$") return fn(stem_no_pound_sign) .. "#" else return fn(stem) end end -- Add the `stem` to the `ending` and apply any phonetic modifications. `is_full_word` indicates that we're creating -- a "full word" not a stem, and turns on devoicing of final consonants. `dont_include_prefix` is used when creating -- stems and indicates not to prepend the prefix in `base.prefix` to the result. `is_pres_sub_stressed` is used when -- creating the pres_sub_stressed stem, to correctly handle both [[desaiguar]] and [[argüir]], whose respective -- interactions between ü and i/ï are very tricky. -- -- WARNING: This function is written very carefully; changes to it can easily have unintended consequences. local function combine_stem_ending(base, stem, ending, is_full_word, dont_include_prefix, is_pres_sub_stressed) -- Include the prefix in the stem unless dont_include_prefix is given (used in construct_stems()), or the value of -- `stem` comes from a user-specified stem or form override. if not dont_include_prefix and not stem:find(IS_USER_STEM_OVERRIDE) and not stem:find(IS_USER_FORM_OVERRIDE) then stem = base.prefix .. stem end -- A * at the beginning of the ending is a signal to remove a stressed accent from the stem. This may feed any of -- the following rules. if ending:find("^%*") then ending = ending:gsub("^%*", "") stem = com.remove_accents(stem, "final syllable only") end -- If ending begins with s and stem ends in a sibilant, we need an e in between; cf. pres_2s 'apareixes' of -- [[aparèixer]], pres_2s 'torces' of [[tòrcer]], pres_2s 'fuges' of [[fugir]], pres_2s 'brunzes' of [[brunzir]]. -- This may feed the next rule. if ending:find("^s") and rfind(stem, "[çjsxz]$") then ending = "e" .. ending end -- By default, stems are in their "back" (standalone) form. Before a front vowel, convert the final consonant to -- its "front" form so the pronunciation doesn't change. if rfind(ending, "^" .. front_vowel_c) then -- adequar -> adeqües -- enaiguar -> enaigües -- pegar -> pegues -- arranjar -> arranges -- marcar -> marques -- abraçar -> abraces stem = com.back_to_front(stem) end -- Ending beginning in -i after diphthong ending in V + i compresses the two i's into one (cf. pret_1s 'desmaí' and -- pres_sub_1s 'desmaï' of [[desmaiar]]). This rule doesn't apply after pseudo-vowel u in gu/qu; cf. pret_1s 'guií' -- of [[guiar]] and contrast pret_1s 'cruí' of [[cruiar]]. This may feed the next rule. if rfind(ending, "^[iíï]") and rfind(stem, V .. "i$") and not rfind(stem, "[gq][uü]i$") then stem = stem:gsub("i$", "") end -- If ending begins with i (not í), it must get a diaeresis after a true vowel (not gu/qu, cf. pres_1p 'delinquim' -- of [[delinquir]], not '#delinquïm'; also not a diphthong ending in u, cf. pres_sub_1s 'apreui' of [[apreuar]] -- not '#apreuï') to prevent the two merging into a diphthong. Note that ü -> u before ï, but to simplify things -- we leave the double umlauts in place and remove the first one during postprocessing, in fix_double_umlauts(). -- Cf.: -- * impf_1s 'raïa' of [[raure]]; -- * pres_sub_1s 'creï' of [[crear]]; -- * pres_sub_1s 'associï' of [[associar]]; -- * impf_1s 'cloïa' of [[cloure]]; -- * pres_1p 'lluïm' of [[lluir]]; -- * pres_1p 'arguïm' of [[argüir]]. if ending:find("^i") and rfind(stem, "[aeiouü]$") and not stem:find("[aeiogq]u$") and -- Unstressed subjunctive endings of [[enaiguar]] remain without umlaut: enaigüi/enaigüis/enaigüin; -- but stressed endings of [[argüir]] that begin with 'i' do get an umlaut: arguït, impf. arguïa, including -- stressed subjunctive endings arguïm/arguïu. In both cases the ending is '-i' as part of the creation of -- the respective stems. There seems no way of distinguishing the two cases other than with a special flag. not (rfind(stem, "[gq]ü$") and ending == "i" and is_pres_sub_stressed) then ending = ending:gsub("^i", "ï") end local retval = add_stem_ending(stem, ending) if retval:find("#$") then -- remove final accent if no vowels in prefix retval = retval:gsub("#$", "") if not rfind(base.prefix, V) then retval = com.remove_accents(retval, "final syllable only") end end if is_full_word then local saw_is_user_form_override retval, saw_is_user_form_override = rsubb(retval, IS_USER_FORM_OVERRIDE, "") retval = retval:gsub(IS_USER_STEM_OVERRIDE, "") if not saw_is_user_form_override then -- Devoice final voiced obstruent (cf. pres_2s 'caps', pres_3s 'cap' of [[cabre]]). But not after a -- consonant (cf. pres_2s 'perds', pres_3s 'perd' of [[perdre]]), except for g -> c, which operates -- even after a consonant (pres_1s 'resolc' of [[resoldre]], pres_1s 'tinc' of [[tenir]]). retval = retval:gsub("g(s?)$", "c%1") retval = rsub(retval, "(" .. V .. ")([bdj])(s?)$", function(before, voiced, after) local devoice = { b = "p", d = "t", j = "ig", -- pres_3s 'fuj' of [[fugir]] -> 'fuig' } return before .. devoice[voiced] .. after end) end end return retval end local function add3(base, slot, stems, endings, footnotes, allow_overrides) if skip_slot(base, slot, allow_overrides) then return end local function do_combine_stem_ending(stem, ending) return combine_stem_ending(base, stem, ending, "is full word") end iut.add_forms(base.forms, slot, stems, endings, do_combine_stem_ending, nil, nil, footnotes) end local function insert_form(base, slot, form) if not skip_slot(base, slot) then iut.insert_form(base.forms, slot, form) end end local function insert_forms(base, slot, forms) if not skip_slot(base, slot) then iut.insert_forms(base.forms, slot, forms) end end local function add_single_stem_tense(base, slot_pref, stems, s1, s2, s3, p1, p2, p3) local function addit(slot, ending) add3(base, slot_pref .. "_" .. slot, stems, ending) end addit("1s", s1) addit("2s", s2) addit("3s", s3) addit("1p", p1) addit("2p", p2) addit("3p", p3) end local function map_general(stemforms, fn) return iut.map_forms(iut.convert_to_general_list_form(stemforms), fn) end local function flatmap_general(stemforms, fn) return iut.flatmap_forms(iut.convert_to_general_list_form(stemforms), fn) end -- Given a stem ending in a conjugation vowel -a/-e/-i/-ï, split into stem base and conjugation vowel, converting the -- stem base to "back" form if the conjugation vowel is front (hence 'torce' of [[tòrcer]] splits into 'torç' and 'e', -- and 'fugi' of [[fugir]] splits into 'fuj' and 'i'). local function split_conj_vowel(stem) local stem_base, conj_vowel = rmatch(stem, "^(.*)([aeiï])$") if not stem_base then error(("Internal error: Stem '%s' doesn't end in conjugation vowel a/e/i"):format(stem)) end if conj_vowel == "ï" then -- To simplify handling of ï, convert to i. It will be converted back to ï as necessary in -- combine_stem_ending(). conj_vowel = "i" end if rfind(conj_vowel, front_vowel_c) then stem_base = com.front_to_back(stem_base) end return stem_base, conj_vowel end local function construct_stems(base) base.output_stems = {} local stems = base.output_stems local bst = base.input_stems -- YUCK, see combine_stem_ending() for the necessity of is_pres_sub_stressed. local function combine(stem, ending, is_pres_sub_stressed) return combine_stem_ending(base, stem, ending, false, "dont include prefix", is_pres_sub_stressed) end stems.irreg = bst.irreg or bst.g_infix -- NOTE: Some stems end in a conjugation or similar vowel, specifically: -- * `stem` (ends in conjugation vowel -a/-e/-i); -- * `stressed_stem` (likewise); -- * `unstressed_stem` (likewise); -- * `pres_unstressed` (which assumes the form of the gerund minus the -nt; note that `pres_stressed` does *NOT* -- end in a conjugation vowel, but assumes the stem form; the value of pres_3s will be derived by adding -a for -- -ar verbs and otherwise adding an -e prop vowel when required, as in [[cobrir]], and otherwise adding no -- vowel); -- * `pres_sub_stressed` (which assumes the form of pres_sub_3s and hence usually ends in -i, occasionally -a); -- * `pres_sub_unstressed` (which assumes the form of pres_sub_1p minus the -m, hence ends in -e or -i). -- Save stem for use in add_categories_and_annotation() for determining the conjugation class. stems.stem = bst.stem or base.stem local eix_infix_stem if base.conj_vowel == "i" then -- Save eix_infix value for use in add_categories_and_annotation() for determining whether consonant -- alternations exist. stems.eix_infix = bst.eix_infix or bst.g_infix and "-" or "+" eix_infix_stem = flatmap_general(stems.eix_infix, function(form) if form == "+" then return map_general(stems.stem, function(form) local stem_base, conj_vowel = split_conj_vowel(form) return combine(stem_base, "eixe") end) elseif form == "-" then return stems.stem else return form end end) end local stressed_stem = bst.stressed_stem or eix_infix_stem or stems.stem local unstressed_stem = bst.unstressed_stem or stems.stem -- Add the 'g' that is characteristic of g-infix verbs. We remove a stem-final v, e.g. [[beure]] with stem 'beve' -- becomes 'beg'. local function add_g(stemforms) return map_general(stemforms, function(form) local stem_base, conj_vowel = split_conj_vowel(form) stem_base = stem_base:gsub("v$", "") return combine(stem_base, "g") end) end -- Add the 'u' of the pres_3s that is characteristic of g-infix verbs (and conjugation vowel 'e', later removed). -- We remove a stem-final v, as well as i as part of a diphthong, e.g. [[beure]] with stem 'beve' becomes 'beue' -- and [[veure]] with stem 'veie' becomes 'veue' (but [[riure]] with stem 'rie' becomes 'riue' not '#rue'). We -- don't add -u after a consonant, e.g. [[doldre]] with stem 'dole' becomes 'dole' not '#dolue'. local function add_u(stemforms) return map_general(stemforms, function(form) local stem_base, conj_vowel = split_conj_vowel(form) if stem_base:find("v$") then stem_base = stem_base:gsub("v$", "") else stem_base = rsub(stem_base, "(" .. V .. ")i$", "%1") end -- Add u after vowel but not after another u, so we get pres_3p 'duen' of [[dur]] not '#duuen'. if rfind(stem_base, V .. "$") and not stem_base:find("u$") then return combine(stem_base, "u") else return stem_base end end) end local stressed_g_infix, unstressed_g_infix, g_infix_pres_stressed if bst.g_infix then local function flatmap_g_infix(default) return flatmap_general(bst.g_infix, function(form) if form == "+" then return default else return form end end) end stressed_g_infix = flatmap_g_infix(add_g(stressed_stem)) unstressed_g_infix = flatmap_g_infix(add_g(unstressed_stem)) g_infix_pres_stressed = add_u(stressed_stem) end stems.pres_unstressed = bst.pres_unstressed or unstressed_stem stems.pres_stressed = -- If no_pres_stressed given, pres_stressed stem should be empty so no forms are generated. base.no_pres_stressed and {} or bst.pres_stressed or g_infix_pres_stressed or map_general(stressed_stem, function(form) local stem_base, conj_vowel = split_conj_vowel(form) return stem_base end) stems.pres1s = -- If no_pres_stressed given, pres1s stem should be empty so no forms are generated. base.no_pres_stressed and {} or stressed_g_infix or map_general(stems.pres_stressed, function(form) return combine(form, "o") end) stems.pres3s = -- If no_pres_stressed given, pres3s stem should be empty so no forms are generated. base.no_pres_stressed and {} or bst.pres3s or map_general(stems.pres_stressed, function(form) if base.conj_vowel == "a" then return combine(form, "a") elseif rfind(form, C .. "[lr]$") and not rfind(form, V .. "ll$") then return combine(form, "e") else return form end end) stems.pres3p = -- If no_pres_stressed given, pres3p stem should be empty so no forms are generated. base.no_pres_stressed and {} or map_general(stems.pres_stressed, function(form) return combine(form, "en") end) local function compute_impf_stem(with_accent) return map_general(stems.pres_unstressed, function(form) local stem_base, conj_vowel = split_conj_vowel(form) if conj_vowel == "a" then return combine(stem_base, with_accent and "àv" or "av") elseif stem_base:find("i#?$") then form = form:gsub("i#?$", "") return combine(rmatch(stem_base, "^(.-)" .. V .. "*$"), with_accent and "èi" or "ei") else return combine(stem_base, with_accent and "í" or "i") -- i -> ï after a vowel end end) end stems.impf1 = bst.impf1 or compute_impf_stem(false) stems.impf2 = bst.impf2 or compute_impf_stem(true) stems.pret = bst.pret or unstressed_g_infix and map_general(unstressed_g_infix, function(form) return combine(form, "é") end ) or map_general(unstressed_stem, function(form) local accent_conj_vowel = { a = "à", e = "é", i = "í", } local stem_base, conj_vowel = split_conj_vowel(form) return combine(stem_base, accent_conj_vowel[conj_vowel]) end) stems.fut = bst.fut or base.inf_stem stems.cond = bst.cond or map_general(stems.fut, function(form) return combine(form, "í") end) stems.pres_sub_stressed = bst.pres_sub_stressed or stressed_g_infix and map_general(stressed_g_infix, function(form) return combine(form, "i") end) or map_general(stressed_stem, function(form) local stem_base, conj_vowel = split_conj_vowel(form) return combine(stem_base, "i", "is pres_sub_stressed") end) stems.pres_sub_unstressed = bst.pres_sub_unstressed or unstressed_g_infix and map_general(unstressed_g_infix, function(form) return combine(form, "e") end) or map_general(unstressed_stem, function(form) local stem_base, conj_vowel = split_conj_vowel(form) return combine(stem_base, conj_vowel == "i" and conj_vowel or "e") end) stems.impf_sub = bst.impf_sub or map_general(stems.pret, function(form) local stem_base = rmatch(form, "^(.*)à$") -- already in "back" form, no need to convert if stem_base then return combine(stem_base, "é") else return form end end) stems.pp = bst.pp or unstressed_g_infix and map_general(unstressed_g_infix, function(form) return combine(form, "ud") end ) or map_general(unstressed_stem, function(form) local stem_base, conj_vowel = split_conj_vowel(form) -- use combine() so we get 'abduïd' from 'abdu-' of [[abduir]], 'seguid' from 'seg-' from [[seguir]], etc. return combine(stem_base, (conj_vowel == "e" and "u" or conj_vowel) .. "d") end) end local function a_to_e(base, stems, suffix) return map_general(stems, function(form) local stem_base = form:match("^(.-)a$") if stem_base then suffix = "e" .. suffix else stem_base = form end return combine_stem_ending(base, stem_base, suffix, "is full word") end) end local function add_present_indic(base) local stems = base.output_stems local function addit(slot, stems, ending) add3(base, "pres_" .. slot, stems, ending) end addit("1s", stems.pres1s, "") insert_forms(base, "pres_2s", a_to_e(base, stems.pres3s, "s")) addit("3s", stems.pres3s, "") insert_forms(base, "pres_1p", a_to_e(base, stems.pres_unstressed, "m")) insert_forms(base, "pres_2p", a_to_e(base, stems.pres_unstressed, "u")) addit("3p", stems.pres3p, "") end local function add_present_subj(base) local stems = base.output_stems local function addit(slot, stems, ending) add3(base, "pres_sub_" .. slot, stems, ending) end -- Regular -ar verb: [[amar]]: ami, amis, ami, amem, ameu, amin -- Regular -re verb: [[batre]]: bati, batis, bati, batem, bateu, batin (same as -ar verb) -- Regular -ir verb, no -eix- infix: [[dormir]]: dormi, dormis, dormi, dormim, dormiu, dormin -- Regular -ir verb, -eix- infix: [[imprimir]]: imprimeixi, imprimeixis, imprimeixi, imprimim, imprimiu, imprimeixin -- Stem changing in 123s/3p vs. 12p: -- * -eix- infix (-eix- in all stressed forms: 123s/3p of pres ind/sub, 2s imp) -- * [[collir]]: culli, cullis, culli, collim, colliu, cullin (cull- in all stressed forms) -- * [[cabre]]: càpiga, càpigues, càpiga, capiguem, capigueu, càpiguen (also different endings) addit("1s", stems.pres_sub_stressed, "") insert_forms(base, "pres_sub_2s", a_to_e(base, stems.pres_sub_stressed, "s")) addit("3s", stems.pres_sub_stressed, "") addit("1p", stems.pres_sub_unstressed, "m") addit("2p", stems.pres_sub_unstressed, "u") insert_forms(base, "pres_sub_3p", a_to_e(base, stems.pres_sub_stressed, "n")) end local function add_finite_non_present(base) local stems = base.output_stems local function add_tense(slot, stem, s1, s2, s3, p1, p2, p3) add_single_stem_tense(base, slot, stem, s1, s2, s3, p1, p2, p3) end add_tense("impf", stems.impf1, "a", "es", "a", nil, nil, "en") add_tense("impf", stems.impf2, nil, nil, nil, "em", "eu", nil) -- pret_1s ends in -í regardless of the normal vowel of the stem. insert_forms(base, "pret_1s", map_general(stems.pret, function(form) local stem_base, conj_vowel = rmatch(form, "^(.*)(" .. V .. ")$") if not stem_base then error(("Internal error: Preterite stem '%s' doesn't end in vowel"):format(form)) end if rfind(conj_vowel, front_vowel_c) then stem_base = com.front_to_back(stem_base) end -- Use combine_stem_ending() to handle back-to-front conversions, e.g. pegà -> peguí for [[pegar]] and ensure -- that the prefix gets added. return combine_stem_ending(base, stem_base, "í", "is full word") end)) -- * at the beginning of the ending means to remove an accent from the last vowel of the preterite stem. add_tense("pret", stems.pret, nil, "*res", "", "rem", "reu", "*ren") -- * at the beginning of the ending means to remove an accent from the last vowel of the imperfect subjunctive stem. add_tense("impf_sub", stems.impf_sub, "s", "*ssis", "s", "ssim", "ssiu", "*ssin") add_tense("fut", stems.fut, "é", "às", "à", "em", "eu", "an") add_tense("cond", stems.cond, "*a", "*es", "*a", "em", "eu", "*en") end local function add_non_finite_forms(base) local stems = base.output_stems local function addit(slot, stems, ending, footnotes) add3(base, slot, stems, ending, footnotes) end insert_form(base, "infinitive", {form = base.orig_verb}) -- Also insert "infinitive + reflexive pronoun" combinations if we're handling a reflexive verb. See comment below -- for "gerund + reflexive pronoun" combinations. if base.refl then for _, persnum in ipairs(person_number_list) do insert_form(base, "infinitive_" .. persnum, {form = base.orig_verb}) end end -- Gerunds don't have an umlaut over the i in cases like 'abduint' of 'abduir' (not '#abduïnt'). local pres_unstressed_no_umlaut = map_general(stems.pres_unstressed, function(form) return rsub(form, "ï$", "i") end) addit("gerund", pres_unstressed_no_umlaut, "nt") -- Also insert "gerund + reflexive pronoun" combinations if we're handling a reflexive verb. We insert exactly the -- same form as for the bare gerund; later on in add_reflexive_or_fixed_clitic_to_forms(), we add the appropriate -- clitic pronouns. It's important not to do this for non-reflexive verbs, because in that case, the clitic -- pronouns won't be added, and {{ca-verb form of}} will wrongly consider all these combinations as possible -- inflections of the bare gerund. Thanks to [[User:JeffDoozan]] for this bug fix. if base.refl then for _, persnum in ipairs(person_number_list) do addit("gerund_" .. persnum, pres_unstressed_no_umlaut, "nt") end end addit("pp_ms", stems.pp, "") if not base.pp_inv then addit("pp_fs", stems.pp, "a") -- make_plural() handles the complexities of e.g. 'vist' of [[veure]] -> 'vistos'/'vists' and 'romàs' of -- [[romandre]] -> 'romasos'. We need to use flatmap_general() because make_plural() may return more than one -- plural, and we need to use map_general() on the result, applying combine_stem_ending(), to ensure that -- prefixes get properly added and plurals like 'amads' of stem 'amad' of [[amar]] get converted to 'amats'. insert_forms(base, "pp_mp", map_general(flatmap_general(stems.pp, function(form) -- Remove any # indicating that an accent will be dropped; it will be dropped in any case by make_plural(). form = form:gsub("#$", "") return com.make_plural(form, "m") end), function(form) return combine_stem_ending(base, form, "", "is full word") end)) addit("pp_fp", stems.pp, "es") end end local function add_imperatives(base) if base.noimp then return end -- Copy pres3s to imperative since they are almost always the same. insert_forms(base, "imp_2s", iut.map_forms(base.forms.pres_3s, function(form) return form end)) -- Copy pres2p to imperative plural since they are almost always the same. insert_forms(base, "imp_2p", iut.map_forms(base.forms.pres_2p, function(form) return form end)) -- Copy subjunctives to imperatives. for _, persnum in ipairs({"3s", "1p", "3p"}) do local from = "pres_sub_" .. persnum local to = "imp_" .. persnum insert_forms(base, to, iut.map_forms(base.forms[from], function(form) return form end)) end end local function fix_double_umlauts(base) for slot, forms in pairs(base.forms) do for _, form in ipairs(forms) do form.form = form.form:gsub("üï", "uï") end end end local function process_slot_overrides(base, filter_slot, reflexive_only) local overrides = reflexive_only and base.basic_reflexive_only_overrides or base.basic_overrides for slot, forms in pairs(overrides) do if not filter_slot or filter_slot(slot) then add3(base, slot, forms, "", nil, "allow overrides") end end end local function link_clitic(clitic) return (clitic:gsub("([^ %-]+)", "[[%1]]")) end -- Prefix `form` with `clitic`, adding fixed text `between` between them. Add links as appropriate unless the user -- requested no links. Check whether form already has brackets (as will be the case if the form has a fixed clitic). local function prefix_clitic_to_form(base, clitic, between, form) if base.alternant_multiword_spec.args.noautolinkverb then return clitic .. between .. form else local clitic_pref = link_clitic(clitic) .. between if form:find("%[%[") then return clitic_pref .. form else return clitic_pref .. "[[" .. form .. "]]" end end end -- Suffix `form` with `clitic`. Add links as appropriate unless the user requested no links. Check whether form already -- has brackets (as will be the case if the form has a fixed clitic). local function suffix_clitic_to_form(base, clitic, form) local autolink = not base.alternant_multiword_spec.args.noautolinkverb if base.alternant_multiword_spec.args.noautolinkverb then return form .. clitic else local clitic_suf = link_clitic(clitic) if form:find("%[%[") then return form .. clitic_suf else return "[[" .. form .. "]]" .. clitic_suf end end end -- Add a reflexive pronoun or fixed clitic (FIXME: not working), as appropriate to the base forms that were generated. -- `do_joined` means to do only the forms where the pronoun is joined to the end of the form; otherwise, do only the -- forms where it is not joined and precedes the form. local function add_reflexive_or_fixed_clitic_to_forms(base, do_reflexive, do_joined) for _, slotaccel in ipairs(base.alternant_multiword_spec.verb_slots_basic) do local slot, accel = unpack(slotaccel) local persnum if slot:find("[123]") then persnum = slot:match("^.*_(.-)$") else persnum = "3s" end local function get_proclitic(form) --if not do_reflexive then -- return base.clitic if form:find("^[aeiouh]") then return proclitic_elided_person_number_to_reflexive_pronoun[persnum] else return proclitic_non_elided_person_number_to_reflexive_pronoun[persnum] end end local function get_enclitic(form) --if not do_reflexive then -- return base.clitic if rfind(form, C .. "$") or rfind(form, V .. "[iu]$") and not form:find("[gq]ui$") then return enclitic_non_elided_person_number_to_reflexive_pronoun[persnum] else return enclitic_elided_person_number_to_reflexive_pronoun[persnum] end end if base.forms[slot] then if do_reflexive and slot:find("^pp_") or slot == "infinitive_linked" then -- do nothing with reflexive past participles or with infinitive linked (handled at the end) elseif slot:find("^neg_imp_") then error("Internal error: Should not have forms set for negative imperative at this stage") else local slot_has_suffixed_clitic = slot:find("infinitive") or slot:find("gerund") or slot:find("^imp_") -- Maybe generate non-reflexive parts and separated syntactic variants for use in -- {{ca-verb form of}}. See comment in add_slots() above `need_special_verb_form_of_slots`. -- Check for do_joined so we only run this code once. if do_reflexive and do_joined and base.alternant_multiword_spec.source_template == "ca-verb form of" and -- Skip personal variants of infinitives and gerunds so we don't think [[arrependendo]] is a -- non-reflexive equivalent of [[arrependendo-me]]. not slot:find("infinitive_") and not slot:find("gerund_") then -- Clone the forms because we will be destructively modifying them just below, adding the reflexive -- pronoun. insert_forms(base, slot .. "_non_reflexive", mw.clone(base.forms[slot])) if slot_has_suffixed_clitic then insert_forms(base, slot .. "_variant", iut.map_forms(base.forms[slot], function(form) return prefix_clitic_to_form(base, get_proclitic(form), "... ", form) end)) end end if slot_has_suffixed_clitic then if do_joined then -- Add clitic after form. for _, form in ipairs(base.forms[slot]) do form.form = suffix_clitic_to_form(base, get_enclitic(form.form), form.form) end end elseif not do_joined then -- Add clitic before form. for _, form in ipairs(base.forms[slot]) do form.form = prefix_clitic_to_form(base, get_proclitic(form.form), "", form.form) end end end end end end local function handle_infinitive_linked(base) -- Compute linked versions of potential lemma slots, for use in {{ca-verb}}. -- We substitute the original lemma (before removing links) for forms that -- are the same as the lemma, if the original lemma has links. for _, slot in ipairs({"infinitive"}) do insert_forms(base, slot .. "_linked", iut.map_forms(base.forms[slot], function(form) if form == base.lemma and rfind(base.linked_lemma, "%[%[") then return base.linked_lemma else return form end end)) end end local function generate_negative_imperatives(base) if base.noimp then return end -- Copy subjunctives to negative imperatives, preceded by "no". for _, persnum in ipairs(neg_imp_person_number_list) do local from = "pres_sub_" .. persnum local to = "neg_imp_" .. persnum insert_forms(base, to, iut.map_forms(base.forms[from], function(form) if base.alternant_multiword_spec.args.noautolinkverb then return "no " .. form elseif form:find("%[%[") then -- already linked, e.g. when reflexive return "[[no]] " .. form else return "[[no]] [[" .. form .. "]]" end end)) end end -- Process specs given by the user using 'addnote[SLOTSPEC][FOOTNOTE][FOOTNOTE][...]'. local function process_addnote_specs(base) for _, spec in ipairs(base.addnote_specs) do for _, slot_spec in ipairs(spec.slot_specs) do slot_spec = "^" .. slot_spec .. "$" for slot, forms in pairs(base.forms) do if rfind(slot, slot_spec) then -- To save on memory, side-effect the existing forms. for _, form in ipairs(forms) do form.footnotes = iut.combine_footnotes(form.footnotes, spec.footnotes) end end end end end end local function add_missing_links_to_forms(base) -- Any forms without links should get them now. Redundant ones will be stripped later. for slot, forms in pairs(base.forms) do for _, form in ipairs(forms) do if not form.form:find("%[%[") then form.form = "[[" .. form.form .. "]]" end end end end local function conjugate_verb(base) construct_stems(base) add_present_indic(base) add_present_subj(base) add_finite_non_present(base) add_non_finite_forms(base) fix_double_umlauts(base) -- do non-reflexive non-imperative slot overrides process_slot_overrides(base, function(slot) return not slot:find("^imp_") and not slot:find("^neg_imp_") end) -- This should happen after process_slot_overrides() in case a derived slot is based on an override -- (as with the imp_3s of [[dar]], [[estar]]). add_imperatives(base) -- do non-reflexive positive imperative slot overrides process_slot_overrides(base, function(slot) return slot:find("^imp_") end) -- We need to add joined reflexives, then joined and non-joined clitics, then non-joined reflexives, so we get -- [[arrepéndete]] but [[no]] [[te]] [[arrependas]]. if base.refl then add_reflexive_or_fixed_clitic_to_forms(base, "do reflexive", "do joined") process_slot_overrides(base, nil, "do reflexive") -- do reflexive-only slot overrides add_reflexive_or_fixed_clitic_to_forms(base, "do reflexive", false) end -- This should happen after add_reflexive_or_fixed_clitic_to_forms() so negative imperatives get the reflexive pronoun -- and clitic in them. generate_negative_imperatives(base) -- do non-reflexive negative imperative slot overrides -- FIXME: What about reflexive negative imperatives? process_slot_overrides(base, function(slot) return slot:find("^neg_imp_") end) -- This should happen before add_missing_links_to_forms() so that the comparison `form == base.lemma` -- in handle_infinitive_linked() works correctly and compares unlinked forms to unlinked forms. handle_infinitive_linked(base) process_addnote_specs(base) if not base.alternant_multiword_spec.args.noautolinkverb then add_missing_links_to_forms(base) end end local function parse_indicator_spec(angle_bracket_spec) -- Store the original angle bracket spec so we can reconstruct the overall conj spec with the lemma(s) in them. local base = { angle_bracket_spec = angle_bracket_spec, user_basic_overrides = {}, user_stems = {}, addnote_specs = {}, } local function parse_err(msg) error(msg .. ": " .. angle_bracket_spec) end local function fetch_footnotes(separated_group) local footnotes for j = 2, #separated_group - 1, 2 do if separated_group[j + 1] ~= "" then parse_err("Extraneous text after bracketed footnotes: '" .. table.concat(separated_group) .. "'") end if not footnotes then footnotes = {} end table.insert(footnotes, separated_group[j]) end return footnotes end local inside = angle_bracket_spec:match("^<(.*)>$") assert(inside) if inside == "" then return base end local segments = put.parse_balanced_segment_run(inside, "[", "]") local dot_separated_groups = put.split_alternating_runs(segments, "%.") for i, dot_separated_group in ipairs(dot_separated_groups) do local first_element = dot_separated_group[1] if first_element == "addnote" then local spec_and_footnotes = fetch_footnotes(dot_separated_group) if #spec_and_footnotes < 2 then parse_err("Spec with 'addnote' should be of the form 'addnote[SLOTSPEC][FOOTNOTE][FOOTNOTE][...]'") end local slot_spec = table.remove(spec_and_footnotes, 1) local slot_spec_inside = rmatch(slot_spec, "^%[(.*)%]$") if not slot_spec_inside then parse_err("Internal error: slot_spec " .. slot_spec .. " should be surrounded with brackets") end local slot_specs = rsplit(slot_spec_inside, ",") -- FIXME: Here, [[Module:it-verb]] called strip_spaces(). Generally we don't do this. Should we? table.insert(base.addnote_specs, {slot_specs = slot_specs, footnotes = spec_and_footnotes}) elseif indicator_flags[first_element] then if #dot_separated_group > 1 then parse_err("No footnotes allowed with '" .. first_element .. "' spec") end if base[first_element] then parse_err("Spec '" .. first_element .. "' specified twice") end base[first_element] = true elseif first_element:find("^var:") then if #dot_separated_group > 1 then parse_err(("Can't attach footnotes to 'var:' spec '%s'"):format(first_element)) end base.var = first_element:match("^var:(.*)$") elseif first_element:find(":") then local colon_separated_groups = put.split_alternating_runs(dot_separated_group, "%s*:%s*") local first_element = colon_separated_groups[1][1] if #colon_separated_groups[1] > 1 then parse_err("Can't attach footnotes directly to '" .. first_element .. "' spec; attach them to the " .. "colon-separated values following the initial colon") end if overridable_stems[first_element] then if base.user_stems[first_element] then parse_err("Overridable stem '" .. first_element .. "' specified twice") end table.remove(colon_separated_groups, 1) base.user_stems[first_element] = overridable_stems[first_element](colon_separated_groups, {prefix = first_element, base = base, parse_err = parse_err, fetch_footnotes = fetch_footnotes}) else -- assume a basic override; we validate further later when the possible slots are available if base.user_basic_overrides[first_element] then parse_err("Basic override '" .. first_element .. "' specified twice") end table.remove(colon_separated_groups, 1) base.user_basic_overrides[first_element] = allow_multiple_values_for_override(colon_separated_groups, {prefix = first_element, base = base, parse_err = parse_err, fetch_footnotes = fetch_footnotes}, "is form override") end else parse_err("Unrecognized spec '" .. first_element .. "'") end end return base end -- Normalize all lemmas, substituting the pagename for blank lemmas and adding links to multiword lemmas. local function normalize_all_lemmas(alternant_multiword_spec, head) -- (1) Add links to all before and after text. Remember the original text so we can reconstruct the verb spec later. if not alternant_multiword_spec.args.noautolinktext then iut.add_links_to_before_and_after_text(alternant_multiword_spec, "remember original") end -- (2) Remove any links from the lemma, but remember the original form so we can use it below in the 'lemma_linked' -- form. iut.map_word_specs(alternant_multiword_spec, function(base) if base.lemma == "" then base.lemma = head end base.user_specified_lemma = base.lemma base.lemma = m_links.remove_links(base.lemma) local refl_verb = base.lemma local verb, refl = rmatch(refl_verb, "^(.-)%-(se)$") if not verb then verb, refl = rmatch(refl_verb, "^(.-)('s)$") end if not verb then verb, refl = refl_verb, nil end base.user_specified_verb = verb base.refl = refl base.verb = base.user_specified_verb local linked_lemma if alternant_multiword_spec.args.noautolinkverb or base.user_specified_lemma:find("%[%[") then linked_lemma = base.user_specified_lemma elseif base.refl then -- Reconstruct the linked lemma with separate links around base verb, reflexive pronoun and clitic. linked_lemma = base.user_specified_verb == base.verb and "[[" .. base.user_specified_verb .. "]]" or "[[" .. base.verb .. "|" .. base.user_specified_verb .. "]]" linked_lemma = linked_lemma .. (refl and "-[[" .. refl .. "]]" or "") else -- Add links to the lemma so the user doesn't specifically need to, since we preserve links in multiword -- lemmas and include links in non-lemma forms rather than allowing the entire form to be a link. linked_lemma = iut.add_links(base.user_specified_lemma) end base.linked_lemma = linked_lemma end) end local function detect_indicator_spec(base) if (base.only3s and 1 or 0) + (base.only3sp and 1 or 0) + (base.only3p and 1 or 0) > 1 then error("Only one of 'only3s', 'only3sp' and 'only3p' can be specified") end base.forms = {} base.input_stems = {} base.basic_overrides = {} base.basic_reflexive_only_overrides = {} base.orig_verb = base.verb -- in case of a 'like = "..."' redirect if not base.no_built_in then local function match_built_in_spec(verb, built_in_spec) local prefix, non_prefixed_verb if type(built_in_spec.match) == "function" then prefix, non_prefixed_verb = built_in_spec.match(verb) elseif built_in_spec.match:find("^%^") and rsub(built_in_spec.match, "^%^", "") == verb then -- begins with ^, for exact match, and matches prefix, non_prefixed_verb = "", verb else prefix, non_prefixed_verb = rmatch(verb, "^(.*)(" .. built_in_spec.match .. ")$") end return prefix, non_prefixed_verb end local function find_built_in(verb, var) for _, built_in_spec in ipairs(built_in_conjugations) do local prefix, non_prefixed_verb = match_built_in_spec(verb, built_in_spec) if prefix then if not built_in_spec.var then if var then error(("Can't specify a variant spec 'var:%s' with verb '%s'"):format(var, verb)) end return prefix, non_prefixed_verb, built_in_spec elseif not var then local possible_vars = {} for _, built_in_spec in ipairs(built_in_conjugations) do local prefix, non_prefixed_verb = match_built_in_spec(verb, built_in_spec) if prefix then table.insert(possible_vars, built_in_spec.var) end end error(("For verb '%s', must specify a variant using 'var:...'; possible values are %s"):format( verb, table.concat(possible_vars, ", "))) elseif built_in_spec.var == var then return prefix, non_prefixed_verb, built_in_spec end end end return nil end local prefix, non_prefixed_verb, built_in_spec = find_built_in(base.verb, base.var) if prefix then -- we found a built-in verb if built_in_spec.like then -- we found a redirect to another verb that has the same conjugation, just a different infinitive base.verb = prefix .. built_in_spec.like local new_prefix, new_non_prefixed_verb, new_built_in_spec = find_built_in(base.verb, built_in_spec.likevar) if new_prefix then -- redirected to another built-in verb base.prefix = new_prefix base.non_prefixed_verb = new_non_prefixed_verb built_in_spec = new_built_in_spec else built_in_spec = nil end else base.prefix = prefix base.non_prefixed_verb = non_prefixed_verb end end if built_in_spec then -- we found a built-in verb, possibly redirecting to another built-in verb for stem, forms in pairs(built_in_spec.forms) do if type(forms) == "function" then forms = forms(base, base.prefix) end if stem:find("^refl_") then stem = stem:gsub("^refl_", "") if not base.alternant_multiword_spec.verb_slots_basic_map[stem] then error("Internal error: setting for 'refl_" .. stem .. "' does not refer to a basic verb slot") end base.basic_reflexive_only_overrides[stem] = forms elseif base.alternant_multiword_spec.verb_slots_basic_map[stem] then -- an individual form override of a basic form base.basic_overrides[stem] = forms else base.input_stems[stem] = forms end end end end -- Override built-in-verb stems and overrides with user-specified ones. for stem, values in pairs(base.user_stems) do base.input_stems[stem] = values end for override, values in pairs(base.user_basic_overrides) do if not base.alternant_multiword_spec.verb_slots_basic_map[override] then error("Unrecognized override '" .. override .. "': " .. base.angle_bracket_spec) end base.basic_overrides[override] = values end base.prefix = base.prefix or "" base.non_prefixed_verb = base.non_prefixed_verb or base.verb local inf_stem, suffix = rmatch(base.non_prefixed_verb, "^(.*)(re)$") if not inf_stem then inf_stem, suffix = rmatch(base.non_prefixed_verb, "^(.*)([aeiu]r)$") end if not inf_stem then error("Unrecognized infinitive: " .. base.verb) end -- Remove accents from e.g. [[parèixer]], [[córrer]]. inf_stem = com.remove_accents(inf_stem) -- Save full infinitive stem for use in future and conditional. base.inf_stem = (inf_stem .. suffix):gsub("e$", "") local stem = inf_stem if suffix == "re" then -- verbs in -ldre, -ndre have stem without the d stem = stem:gsub("([ln])d$", "%1") elseif suffix == "ur" then stem = stem .. "u" end base.conj_vowel = (suffix == "re" or suffix == "ur") and "e" or suffix:gsub("r$", "") -- If the stem is followed by a front vowel, convert it to its "back" form before calling combine_stem_ending(), -- which expects the "back" form of the stem and may convert it back to the "front" form. Don't do this conversion -- for ï so we leave [[arguïr]] (underlyingly 'argüïr') as 'argu' ("back" form), which becomes 'argü' ("front" form) -- before front vowel ï and we end up with base.stem containing the underlying form 'argüï'. We remove the first of -- two umlauts in a row in a postprocessing step (fix_double_umlauts()). if rfind(suffix, "^[ei]") then stem = com.front_to_back(stem) end -- Use combine_stem_ending() so we get ï if necessary. base.stem = combine_stem_ending(base, stem, base.conj_vowel, false, "dont include prefix") -- Propagate built-in-verb indicator flags to `base` and combine with user-specified flags. for indicator_flag, _ in pairs(indicator_flags) do base[indicator_flag] = base[indicator_flag] or base.input_stems[indicator_flag] end end local function detect_all_indicator_specs(alternant_multiword_spec) -- Propagate some settings up; some are used internally, others by [[Module:pt-headword]]. iut.map_word_specs(alternant_multiword_spec, function(base) -- Internal indicator flags. Do these before calling detect_indicator_spec() because add_slots() uses them. for _, prop in ipairs { "refl", "clitic" } do if base[prop] then alternant_multiword_spec[prop] = true end end base.alternant_multiword_spec = alternant_multiword_spec end) add_slots(alternant_multiword_spec) iut.map_word_specs(alternant_multiword_spec, function(base) detect_indicator_spec(base) -- User-specified indicator flags. Do these after calling detect_indicator_spec() because the latter may set these -- indicators for built-in verbs. for prop, _ in pairs(indicator_flags) do if base[prop] then alternant_multiword_spec[prop] = true end end end) end local function add_categories_and_annotation(alternant_multiword_spec, base, multiword_lemma) local function insert_ann(anntype, value) m_table.insertIfNot(alternant_multiword_spec.annotation[anntype], value) end local function insert_cat(cat, also_when_multiword) -- Don't place multiword terms in categories like 'Catalan verbs ending in -ar' to avoid spamming the -- categories with such terms. if also_when_multiword or not multiword_lemma then m_table.insertIfNot(alternant_multiword_spec.categories, "カタルーニャ語 " .. cat) end end if check_for_red_links and alternant_multiword_spec.source_template == "ca-conj" and multiword_lemma then for _, slot_and_accel in ipairs(alternant_multiword_spec.all_verb_slots) do local slot = slot_and_accel[1] local forms = base.forms[slot] local must_break = false if forms then for _, form in ipairs(forms) do if not form.form:find("%[%[") then local title = mw.title.new(form.form) if title and not title.exists then insert_cat("活用表に赤リンクを含む動詞") must_break = true break end end end end if must_break then break end end end map_general(base.output_stems.stem, function(stem) local stem_base, conj_vowel = split_conj_vowel(stem) local need_no_eix_infix = true if conj_vowel ~= base.conj_vowel then insert_ann("conj", "[[付録:カタルーニャ語の動詞#不規則動詞|混合活用]]") elseif conj_vowel == "a" then insert_ann("conj", "[[付録:カタルーニャ語の動詞#第一変化動詞|第一変化]]") insert_cat("第一変化動詞") elseif conj_vowel == "e" then insert_ann("conj", "[[付録:カタルーニャ語の動詞#第二変化動詞|第二変化]]") insert_cat("第二変化動詞") elseif conj_vowel == "i" then insert_ann("conj", "[[付録:カタルーニャ語の動詞#第三変化動詞|第三変化]]") insert_cat("第三変化動詞") need_no_eix_infix = false map_general(base.output_stems.eix_infix, function(form) if form == "+" then insert_ann("eix_infix", "接中辞-eix-有り") insert_cat("-eix-を含む第三変化動詞") elseif form == "-" then insert_ann("eix_infix", "接中辞-eix-無し") insert_cat("-eix-を含まない第三変化動詞") end end) else error(("Internal error: Stem '%s' doesn't end in conjugation vowel a/e/i and split_conj_vowel() didn't catch it" ):format(stem)) end if need_no_eix_infix then insert_ann("eix_infix", "接中辞無し") end end) if base.input_stems.g_infix then insert_ann("g_infix", "軟口蓋接中辞有り") insert_cat("軟口蓋接中辞を含む動詞") else insert_ann("g_infix", "no infix") end if base.output_stems.irreg then insert_ann("irreg", "不規則") insert_cat("不規則動詞") else insert_ann("irreg", "regular") end if base.only3s then insert_ann("defective", "非人称") insert_cat("非人称動詞") elseif base.only3sp then insert_ann("defective", "第三人称のみ") insert_cat("第三人称動詞") elseif base.only3p then insert_ann("defective", "第三人称複数のみ") insert_cat("第三人称複数動詞") elseif base.no_pres_stressed then insert_ann("defective", "欠如") insert_cat("欠如動詞") else insert_ann("defective", "no infix") end --if base.clitic then -- insert_cat("verbs with lexical clitics") --end if base.refl then insert_cat("再帰動詞") end local stem_base, conj_vowel = split_conj_vowel(base.stem) local cons_alt if conj_vowel == "i" and base.output_stems.eix_infix == "+" then -- no alternations in verbs like [[afligir]] because all endings are front elseif stem_base:find("ç$") then cons_alt = "ç-c" elseif stem_base:find("c$") then cons_alt = "c-qu" elseif stem_base:find("g$") then cons_alt = "g-gu" elseif stem_base:find("gu$") then cons_alt = "gu-gü" elseif stem_base:find("j$") then cons_alt = "j-g" elseif stem_base:find("qu$") then cons_alt = "qu-qü" end if cons_alt then local desc = cons_alt .. " alternation" insert_ann("cons_alt", desc) insert_cat(desc .. "交替の動詞") else insert_ann("cons_alt", "non-alternating") end end -- Compute the categories to add the verb to, as well as the annotation to display in the -- conjugation title bar. We combine the code to do these functions as both categories and -- title bar contain similar information. local function compute_categories_and_annotation(alternant_multiword_spec) alternant_multiword_spec.categories = {} local ann = {} alternant_multiword_spec.annotation = ann ann.conj = {} ann.g_infix = {} ann.eix_infix = {} ann.irreg = {} ann.defective = {} ann.cons_alt = {} local multiword_lemma = false for _, form in ipairs(alternant_multiword_spec.forms.infinitive) do if form.form:find(" ") then multiword_lemma = true break end end iut.map_word_specs(alternant_multiword_spec, function(base) add_categories_and_annotation(alternant_multiword_spec, base, multiword_lemma) end) local ann_parts = {} local conj = table.concat(ann.conj, " or ") if conj ~= "" then table.insert(ann_parts, conj) end local eix_infix = table.concat(ann.eix_infix, " or ") if eix_infix ~= "" and eix_infix ~= "no infix" then table.insert(ann_parts, eix_infix) end local irreg = table.concat(ann.irreg, " or ") if irreg ~= "" and irreg ~= "regular" then table.insert(ann_parts, irreg) end local g_infix = table.concat(ann.g_infix, " or ") if g_infix ~= "" and g_infix ~= "no infix" then table.insert(ann_parts, g_infix) end local defective = table.concat(ann.defective, " or ") if defective ~= "" and defective ~= "regular" then table.insert(ann_parts, defective) end local cons_alt = table.concat(ann.cons_alt, " or ") if cons_alt ~= "" and cons_alt ~= "non-alternating" then table.insert(ann_parts, cons_alt) end alternant_multiword_spec.annotation = table.concat(ann_parts, ", ") end local function show_forms(alternant_multiword_spec) local lemmas = alternant_multiword_spec.forms.infinitive alternant_multiword_spec.lemmas = lemmas -- save for later use in make_table() local reconstructed_verb_spec = iut.reconstruct_original_spec(alternant_multiword_spec) local function transform_accel_obj(slot, formobj, accel_obj) -- No accelerators for negative imperatives, which are always multiword and derived directly from the -- present subjunctive. if slot:find("^neg_imp") then return nil end if accel_obj then accel_obj.form = "verb-form-" .. reconstructed_verb_spec end return accel_obj end local props = { lang = lang, lemmas = lemmas, transform_accel_obj = transform_accel_obj, slot_list = alternant_multiword_spec.verb_slots_basic, } iut.show_forms(alternant_multiword_spec.forms, props) alternant_multiword_spec.footnote_basic = alternant_multiword_spec.forms.footnote end local notes_template = [=[ <div class="roa-footnote-outer-div" style="width:100%;"> <div class="roa-footnote-inner-div"> {footnote} </div></div> ]=] local basic_table = [=[ {description}<div class="NavFrame"> <div class="NavHead">&nbsp; &nbsp; {title} の活用</div> <div class="NavContent"> {\op}| class="roa-inflection-table" data-toggle-category="inflection" |- ! colspan="3" class="roa-nonfinite-header" | <span title="infinitiu">不定詞</span> | colspan="5" | {infinitive} |- ! colspan="3" class="roa-nonfinite-header" | <span title="gerundi">現在分詞</span> | colspan="5" | {gerund} |- ! rowspan="3" colspan="2" class="roa-nonfinite-header" | <span title="participi passat">過去分詞</span> | colspan="2" class="roa-nonfinite-header" | ! colspan="2" class="roa-nonfinite-header" | 男性 ! colspan="2" class="roa-nonfinite-header" | 女性 |- ! colspan="2" class="roa-nonfinite-header" | 単数 | colspan="2" | {pp_ms} | colspan="2" | {pp_fs} |- ! colspan="2" class="roa-nonfinite-header" | 複数 | colspan="2" | {pp_mp} | colspan="2" | {pp_fp} |- ! colspan="2" rowspan="2" class="roa-person-number-header" | 人称 ! colspan="3" class="roa-person-number-header" | 単数 ! colspan="3" class="roa-person-number-header" | 複数 |- ! class="roa-person-number-header" style="width:12.5%;" | 第一人称 ! class="roa-person-number-header" style="width:12.5%;" | 第二人称 ! class="roa-person-number-header" style="width:12.5%;" | 第三人称 ! class="roa-person-number-header" style="width:12.5%;" | 第一人称 ! class="roa-person-number-header" style="width:12.5%;" | 第二人称 ! class="roa-person-number-header" style="width:12.5%;" | 第三人称 |- ! rowspan="6" class="roa-indicative-left-rail" | <span title="indicatiu">直説法</span> ! class="roa-indicative-left-rail" | ! class="roa-indicative-left-rail" | <<jo>> ! class="roa-indicative-left-rail" | <<tu>> ! class="roa-indicative-left-rail" | <<ell>>/<<ella>><br /><<vostè>> ! class="roa-indicative-left-rail" | <<nosaltres>><br /><<nós>> ! class="roa-indicative-left-rail" | <<vosaltres>><br /><<vós>> ! class="roa-indicative-left-rail" | <<ells>>/<<elles>><br /><<vostès>> |- ! class="roa-indicative-left-rail" style="height:3em;" | <span title="present">現在</span> | {pres_1s} | {pres_2s} | {pres_3s} | {pres_1p} | {pres_2p} | {pres_3p} |- ! class="roa-indicative-left-rail" style="height:3em;" | <span title="imperfet">不完了過去</span> | {impf_1s} | {impf_2s} | {impf_3s} | {impf_1p} | {impf_2p} | {impf_3p} |- ! class="roa-indicative-left-rail" style="height:3em;" | <span title="futur">未来</span> | {fut_1s} | {fut_2s} | {fut_3s} | {fut_1p} | {fut_2p} | {fut_3p} |- ! class="roa-indicative-left-rail" style="height:3em;" | <span title="passat">完了過去</span> | {pret_1s} | {pret_2s} | {pret_3s} | {pret_1p} | {pret_2p} | {pret_3p} |- ! class="roa-indicative-left-rail" style="height:3em;" | <span title="condicional">可能法</span> | {cond_1s} | {cond_2s} | {cond_3s} | {cond_1p} | {cond_2p} | {cond_3p} |- ! class="roa-subjunctive-left-rail" rowspan="3" | <span title="subjuntiu">接続法</span> ! class="roa-subjunctive-left-rail" | ! class="roa-subjunctive-left-rail" | <<jo>> ! class="roa-subjunctive-left-rail" | <<tu>> ! class="roa-subjunctive-left-rail" | <<ell>>/<<ella>><br /><<vostè>> ! class="roa-subjunctive-left-rail" | <<nosaltres>><br /><<nós>> ! class="roa-subjunctive-left-rail" | <<vosaltres>><br /><<vós>> ! class="roa-subjunctive-left-rail" | <<ells>>/<<elles>><br /><<vostès>> |- ! class="roa-subjunctive-left-rail" style="height:3em;" | <span title="present">現在</span> | {pres_sub_1s} | {pres_sub_2s} | {pres_sub_3s} | {pres_sub_1p} | {pres_sub_2p} | {pres_sub_3p} |- ! class="roa-subjunctive-left-rail" style="height:3em;" rowspan="1" | <span title="imperfet">過去</span> | {impf_sub_1s} | {impf_sub_2s} | {impf_sub_3s} | {impf_sub_1p} | {impf_sub_2p} | {impf_sub_3p} |- ! rowspan="3" class="roa-imperative-left-rail" style="height:3em;" | <span title="imperatiu">命令法</span> ! class="roa-imperative-left-rail" | ! class="roa-imperative-left-rail" | &mdash; ! class="roa-imperative-left-rail" | <<tu>> ! class="roa-imperative-left-rail" | <<vostè>> ! class="roa-imperative-left-rail" | <<nosaltres>> ! class="roa-imperative-left-rail" | <<vosaltres>><br /><<vós>> ! class="roa-imperative-left-rail" | <<vostès>> |- ! class="roa-imperative-left-rail" style="height:3em;" | <span title="afirmatiu">-</span> | &mdash; | {imp_2s} | {imp_3s} | {imp_1p} | {imp_2p} | {imp_3p} |- ! class="roa-imperative-left-rail" style="height:3em;" | <span title="negatiu">禁止</span> (<<no>>) | &mdash; | {neg_imp_2s} | {neg_imp_3s} | {neg_imp_1p} | {neg_imp_2p} | {neg_imp_3p} |{\cl}{notes_clause}</div></div>]=] local function make_table(alternant_multiword_spec) local forms = alternant_multiword_spec.forms forms.title = link_term(alternant_multiword_spec.lemmas[1].form, nil, "term") local ann_parts = {} if alternant_multiword_spec.annotation ~= "" then table.insert(ann_parts, alternant_multiword_spec.annotation) end if alternant_multiword_spec.args.titlenote then table.insert(ann_parts, alternant_multiword_spec.args.titlenote) end local annotation = table.concat(ann_parts, ", ") if annotation ~= "" then forms.title = forms.title .. " (" .. annotation .. ")" end forms.description = "" -- Format the table. forms.footnote = alternant_multiword_spec.footnote_basic forms.notes_clause = forms.footnote ~= "" and m_string_utilities.format(notes_template, forms) or "" local table_with_pronouns = rsub(basic_table, "<<([^<>|]-)|([^<>|]-)>>", link_term) local table_with_pronouns = rsub(table_with_pronouns, "<<(.-)>>", link_term) return require("Module:TemplateStyles")("Module:roa-verb/style.css") .. m_string_utilities.format(table_with_pronouns, forms) end -- Externally callable function to parse and conjugate a verb given user-specified arguments. -- Return value is WORD_SPEC, an object where the conjugated forms are in `WORD_SPEC.forms` -- for each slot. If there are no values for a slot, the slot key will be missing. The value -- for a given slot is a list of objects {form=FORM, footnotes=FOOTNOTES}. function export.do_generate_forms(args, source_template, headword_head) local PAGENAME = mw.loadData("Module:headword/data").pagename local function in_template_space() return mw.title.getCurrentTitle().nsText == "テンプレート" end -- Determine the verb spec we're being asked to generate the conjugation of. This may be taken from the -- current page title or the value of |pagename=; but not when called from {{ca-verb form of}}, where the -- page title is a non-lemma form. Note that the verb spec may omit the infinitive; e.g. it may be "<i-e>". -- For this reason, we use the value of `pagename` computed here down below, when calling normalize_all_lemmas(). local pagename = source_template ~= "ca-verb form of" and args.pagename or PAGENAME local head = headword_head or pagename local arg1 = args[1] if not arg1 then if (pagename == "ca-conj" or pagename == "ca-verb" or pagename == "ca-verb form of") and in_template_space() then arg1 = "amar<>" else arg1 = "<>" end end -- When called from {{ca-verb form of}}, determine the non-lemma form whose inflections we're being asked to -- determine. This normally comes from the page title or the value of |pagename=. local verb_form_of_form if source_template == "ca-verb form of" then verb_form_of_form = args.pagename if not verb_form_of_form then if PAGENAME == "ca-verb form of" and in_template_space() then verb_form_of_form = "ami" else verb_form_of_form = PAGENAME end end end local incorporated_headword_head_into_lemma = false if arg1:find("^<.*>$") then -- missing lemma if head:find(" ") then -- If multiword lemma, try to add arg spec after the first word. -- Try to preserve the brackets in the part after the verb, but don't do it -- if there aren't the same number of left and right brackets in the verb -- (which means the verb was linked as part of a larger expression). local refl_clitic_verb, post = rmatch(head, "^(.-)( .*)$") local left_brackets = rsub(refl_clitic_verb, "[^%[]", "") local right_brackets = rsub(refl_clitic_verb, "[^%]]", "") if #left_brackets == #right_brackets then arg1 = iut.remove_redundant_links(refl_clitic_verb) .. arg1 .. post incorporated_headword_head_into_lemma = true else -- Try again using the form without links. local linkless_head = m_links.remove_links(head) if linkless_head:find(" ") then refl_clitic_verb, post = rmatch(linkless_head, "^(.-)( .*)$") arg1 = refl_clitic_verb .. arg1 .. post else error("Unable to incorporate <...> spec into explicit head due to a multiword linked verb or " .. "unbalanced brackets; please include <> explicitly: " .. arg1) end end else -- Will be incorporated through `head` below in the call to normalize_all_lemmas(). incorporated_headword_head_into_lemma = true end end local function split_bracketed_runs_into_words(bracketed_runs) return put.split_alternating_runs(bracketed_runs, " ", "preserve splitchar") end local parse_props = { parse_indicator_spec = parse_indicator_spec, -- Split words only on spaces, not on hyphens, because that messes up reflexive verb parsing. split_bracketed_runs_into_words = split_bracketed_runs_into_words, allow_default_indicator = true, allow_blank_lemma = true, } local alternant_multiword_spec = iut.parse_inflected_text(arg1, parse_props) alternant_multiword_spec.pos = pos or "verbs" alternant_multiword_spec.args = args alternant_multiword_spec.source_template = source_template alternant_multiword_spec.verb_form_of_form = verb_form_of_form alternant_multiword_spec.incorporated_headword_head_into_lemma = incorporated_headword_head_into_lemma normalize_all_lemmas(alternant_multiword_spec, head) detect_all_indicator_specs(alternant_multiword_spec) local inflect_props = { slot_list = alternant_multiword_spec.all_verb_slots, inflect_word_spec = conjugate_verb, -- We add links around the generated verbal forms rather than allow the entire multiword -- expression to be a link, so ensure that user-specified links get included as well. include_user_specified_links = true, } iut.inflect_multiword_or_alternant_multiword_spec(alternant_multiword_spec, inflect_props) -- Remove redundant brackets around entire forms. for slot, forms in pairs(alternant_multiword_spec.forms) do for _, form in ipairs(forms) do form.form = iut.remove_redundant_links(form.form) end end compute_categories_and_annotation(alternant_multiword_spec) if args.json and source_template == "ca-conj" then return require("Module:JSON").toJSON(alternant_multiword_spec.forms) end return alternant_multiword_spec end -- Entry point for {{ca-conj}}. Template-callable function to parse and conjugate a verb given -- user-specified arguments and generate a displayable table of the conjugated forms. function export.show(frame) local parent_args = frame:getParent().args local params = { [1] = {}, ["titlenote"] = {}, ["noautolinktext"] = {type = "boolean"}, ["noautolinkverb"] = {type = "boolean"}, ["pagename"] = {}, -- for testing/documentation pages ["json"] = {type = "boolean"}, -- for bot use } local args = require("Module:parameters").process(parent_args, params) local alternant_multiword_spec = export.do_generate_forms(args, "ca-conj") if type(alternant_multiword_spec) == "string" then -- JSON return value return alternant_multiword_spec end show_forms(alternant_multiword_spec) return make_table(alternant_multiword_spec) .. require("Module:utilities").format_categories(alternant_multiword_spec.categories, lang, nil, nil, force_cat) end return export 78ojbn5so77xd0j7p6szjnwj6wb3z9x 2313418 2313417 2026-08-09T09:36:52Z Kuroco2k 84207 [[Special:Contributions/Kuroco2k|Kuroco2k]] ([[User talk:Kuroco2k|トーク]]) による版 [[Special:Diff/2313417|2313417]] を取り消し 2313418 Scribunto text/plain --[=[ This module implements {{ca-conj}} and provides the underlying conjugation functions for {{ca-verb}} (whose actual formatting is done in [[Module:ca-headword]]). Authorship: Ben Wing <benwing2> ]=] local export = {} --[=[ TERMINOLOGY: -- "slot" = A particular combination of tense/mood/person/number/etc. Example slot names for verbs are "pres_1s" (present indicative first-person singular), "pres_sub_2s" (present subjunctive second-person singular) "impf_sub_3p" (imperfect subjunctive third-person plural). Each slot is filled with zero or more forms. -- "form" = The conjugated Catalan form representing the value of a given slot. -- "lemma" = The dictionary form of a given Catalan term. For Catalan, always the infinitive. ]=] --[=[ FIXME: --]=] local lang = require("Module:languages").getByCode("ca") local m_string_utilities = require("Module:string utilities") local m_links = require("Module:links") local m_table = require("Module:table") local iut = require("Module:inflection utilities") local put = require("Module:parse utilities") local com = require("Module:ca-common") local force_cat = false -- set to true for debugging local check_for_red_links = false -- set to false for debugging local rfind = mw.ustring.find local rmatch = mw.ustring.match local rsplit = mw.text.split local rsubn = mw.ustring.gsub local rsub = com.rsub local u = mw.ustring.char local unpack = unpack or table.unpack -- Lua 5.2 compatibility -- version of rsubn() that returns a 2nd argument boolean indicating whether a substitution was made. local function rsubb(term, foo, bar) local retval, nsubs = rsubn(term, foo, bar) return retval, nsubs > 0 end local function link_term(term, display, face) return m_links.full_link({ lang = lang, term = term, alt = display }, face) end local front_vowel = "eèéiíï" local front_vowel_c = "[" .. front_vowel .. "]" local V = com.V -- vowel regex class local C = com.C -- consonant regex class -- IS_USER_STEM_OVERRIDE is prepended to user-supplied stem overrides to prevent `base.prefix` from being prepended. -- IS_USER_FORM_OVERRIDE is similar but also prevents final devoicing (cf. Balearic pres_1s 'trob' of [[trobar]]). -- Don't use 0xFFF0 in case we call a [[Module:parse-utilities]] function that uses it temporarily. local IS_USER_STEM_OVERRIDE = u(0xFFF1) local IS_USER_FORM_OVERRIDE = u(0xFFF2) --[=[ Irregular verbs: -ldre/-ndre verbs: infinitive pres1s pres3s pres1p impf1s fut1s pret1s sub1s sub1p pp caldre - cal [calent] calia caldrà calgué calgui - calgut,- coldre colc col colem colia coldré colguí colgui colguem colt,colta doldre dolc dol dolem dolia doldré dolguí dolgui dolguem dolgut,dolguda moldre molc mol molem molia moldré molguí molgui molguem molt,molta oldre olc ol olem olia oldré olguí olgui olguem olgut,olguda -soldre -solc -sol -solem -solia -soldré -solguí -solgui -solguem -solt,-solta (absoldre, dissoldre, resoldre) toldre tolc tol tolem tolia toldré tolguí tolgui tolguem tolt,tolta romandre romanc roman romanem romania romandré romanguí romangui romanguem romàs,romasa,romasos encendre encenc encén encenem encenia encendré encenguí encengui encenguem encès,encesa,encesos fendre fenc fen/-fèn fenem fenia fendré fenguí fengui fenguem fes/-fès,fesa,fesos (defendre, ofendre) -pendre -depenc -pèn -penem -penia -pendré -penguí -pengui -penguem -pès,-pesa,-pesos (dependre,despendre,expendre,suspendre) prendre prenc pren/-prèn prenem prenia prendré prenguí prengui prenguem pres/-près,presa,presos (aprendre, comprendre, desprendre, emprendre, reprendre, sorprendre) -tendre -tenc -tén -tenem -tenia -tendré -tenguí -tengui -tenguem -tès,-tesa,-tesos (pres2s: atens, pres3p: atenen) (atendre, contendre, distendre, entendre, estendre, pretendre) vendre venc ven venem venia vendré venguí vengui venguem venut,venuda (malvendre, revendre) fondre fonc fon fonem fonia fondré fonguí fongui fonguem fos/-fós,fosa,fosos (confondre, difondre, infondre, refondre) enfondre enfonc enfon enfonem enfonia enfondré enfonguí enfongui enfonguem enfús,enfusa,enfusos pondre ponc pon ponem ponia pondré ponguí pongui ponguem post,posta,postos (compondre, correspondre, descompondre, respondre) tondre tonc ton tonem tonia tondré tonguí tongui tonguem tos,tosa,tosos cerndre cerno cern cernem cernia cerndré cerní cerni cernem cernut,cernuda -ler verbs (mostly like -ldre verbs): infinitive pres1s pres3s pres1p impf1s fut1s pret1s sub1s sub1p pp caler (var. of caldre) doler (var. of doldre) soler solc sol solem solia soldré solguí solgui solguem solgut,solguda valer/valdre valc val valem valia valdré valguí valgui valguem valgut,valguda (prevaler, equivaler) other -dre/-tre verbs (regular except sometimes pp): infinitive pres1s pres3s pres1p impf1s fut1s pret1s sub1s sub1p pp batre bato bat batem batia batré batí bati batem batut,batuda -metre -meto -met -metem -metia -metré -metí -meti -metem -mès,-mesa,-mesos (ad-, co-, compro-, e-, entremetre's, mal-, o-, per-, pro-, read-, re-, retrans-, sot-, tra-, trans-) perdre perdo perd perdem perdia perdré perdí perdi perdem perdut,perduda -ure verbs infinitive pres1s pres3s pres1p impf1s impf1p fut1s pret1s sub1s sub1p pp caure caic cau caiem queia quèiem cauré caiguí caigui caiguem caigut,caiguda (decaure, recaure) plaure plac plau plaem plaïa plaíem plauré plaguí plagui plaguem plagut,plaguda (complaure) raure rac rau raem raïa raíem rauré raguí ragui raguem ragut,raguda beure bec beu bevem bevia bevíem beuré beguí begui beguem begut,beguda (embeure) creure crec creu creiem creia crèiem creuré creguí cregui creguem cregut,creguda deure dec deu devem devia devíem deuré deguí degui deguem degut,deguda jeure jec jeu jaiem jeia jèiem jauré jaguí jegui jaguem jagut,jaguda (ajeure) lleure - lleu [-] llevia - lleurà llegué llegui - llegut,- seure sec seu seiem seia sèiem seuré seguí segui seguem segut,seguda (asseure) treure trec treu traiem treia trèiem trauré traguí tregui traguem tret,treta (abstreure, atreure, contreure, distreure, extreure, retreure, sostreure) veure veig veu veiem veia vèiem veuré viu,veieres/veres, vegi vegem vist,vista,vists/vistos (entreveure, preveure, reveure) veié/veu,veiérem/vérem riure ric riu riem reia rèiem riuré riguí rigui riguem rigut,riguda (somriure) (e)scriure escric escriu escrivim escrivia escrivíem escriuré escriví/escriguí escrigui escriguem escrit,escrita (circumscriure, descriure, inscriure, prescriure, proscriure, subscriure, transcriure) viure visc viu vivim vivia vivíem viuré visquí visqui visquem viscut,viscuda (conviure, sobreviure) cloure cloc clou cloem cloïa cloíem clouré cloguí clogui cloguem clos,closa,closos (concloure, descloure, encloure, excloure, incloure, recloure) encloure encloc enclou encloem encloïa encloíem enclouré encloguí enclogui encloguem enclòs,enclosa,enclosos coure coc cou coem coïa coíem couré coguí cogui coguem cuit/cogut,cuita/coguda moure moc mou movem movia movíem mouré moguí mogui moguem mogut,moguda (promoure) noure noc nou noem noïa noíem nouré noguí nogui noguem nogut,noguda ploure - plou [plovent] plovia - plourà plogué plogui - plogut,ploguda -nyer verbs (regular except pp) infinitive pres1s pres3s pres1p impf1s fut1s pret1s sub1s sub1p pp atènyer atenyo ateny atenyem atenyia atenyeré atenyí atenyi atenyem atès,atesa,atesos empènyer empenyo empeny empenyem empenyia empenyeré empenyí empenyi empenyem empès,empesa,empesos estrènyer estrenyo estreny estrenyem estrenyia estrenyeré estrenyí estrenyi estrenyem estret,estreta estrènyer (constrènyer,restrènyer) fènyer fenyo feny fenyem fenyia fenyeré fenyí/fenguí fenyi fenyem fenyut/fengut,fenyuda/fenguda pertànyer pertanyo pertany pertanyem pertanyia pertanyeré pertanyí/pertanguí pertanyi pertanyem pertanyut/pertangut,pertanyuda/pertanguda plànyer planyo plany planyem planyia planyeré planyí/planguí planyi planyem plangut/planyut,planguda/planyuda -xer verbs (NOTE: pres2s in -xes) infinitive pres1s pres3s pres1p impf1s fut1s pret1s sub1s sub1p pp créixer creixo creix creixem creixia creixeré creixí/cresquí creixi creixem crescut,crescuda (acréixer,decréixer) conèixer conec coneix coneixem coneixia coneixeré coneguí conegui coneguem conegut,coneguda (desconèixer,reconèixer) merèixer mereixo mereix mereixem mereixia mereixeré mereixí/meresquí mereixi mereixem merescut,merescuda néixer/ neixo/ neix/ naixem naixia naixeré naixí/nasquí neixi/ naixem/nasquem nascut,nascuda nàixer naixo naix naixi (renéixer) parèixer parec pareix pareixem pareixia pareixeré pareguí paregui pareguem paregut,pareguda (aparèixer,comparèixer,desaparèixer,reaparèixer) péixer peixo peix paixem paixia paixeré paixí peixi paixem pascut,pascuda misc. -er verbs infinitive pres1s pres3s pres1p impf1s impf1p fut1s pret1s sub1s sub1p pp córrer corro corre correm corria corríem correré correguí corri correm corregut,correguda fúmer fumo fum fumem fumia fumíem fumeré fumí fumi fumem fumut,fumuda prémer premo prem premem premia premíem premeré premí premi premem premut,premuda (es-, re-) témer temo tem temem temia temíem temeré temí temi temem temut,temuda trémer [regular] tòrcer torço torç torcem torcia torcíem torceré torcí torci torcem torçut,torçuda (des-) [pres2s torces] vèncer venço venç vencem vencia vencíem venceré vencí venci vencem vençut,vençuda (con-, re-) [pres2s vences] cabre/caber cabo cap cabem cabia cabíem cabré cabí càpiga capiguem cabut,cabuda [sub2s càpigues] haver he/haig ha havem/hem havia havíem hauré haguí hagi hàgim/haguem hagut,haguda [noimp] [cond1s hauria/haguera; impsub2s haguessis/haguesses] poder puc pot podem podia podíem podré poguí pugui puguem pogut,poguda saber sé sap sabem sabia sabíem sabré sabí sàpiga sapiguem sabut,sabuda [imp2s sàpigues, imp2p sapigueu] voler vull vol volem volia volíem voldré volguí vulgui vulguem volgut,volguda ser/ésser soc és som era érem seré fui sigui siguem estat/sigut,estada/siguda [ger sent/essent] [cond1s seria/fora] [pres: soc,ets,éts,som,sou,són; pret: fui,fores,fou,fórem,fóreu,foren; impsub: fos,fossis,fos,fóssim,fóssiu,fossin] [imp: sigues,sigueu] fer faig fa fem feia fèiem faré fiu faci fem fet,feta [pres3p fan] [pret: fiu,feres,feu,férem,féreu,feren] ]=] local all_persons_numbers = { ["1s"] = "1|s", ["2s"] = "2|s", ["3s"] = "3|s", ["1p"] = "1|p", ["2p"] = "2|p", ["3p"] = "3|p", } local person_number_list = {"1s", "2s", "3s", "1p", "2p", "3p"} local imp_person_number_list = {"2s", "3s", "1p", "2p", "3p"} local neg_imp_person_number_list = {"2s", "3s", "1p", "2p", "3p"} proclitic_non_elided_person_number_to_reflexive_pronoun = { ["1s"] = "em ", ["2s"] = "et ", ["3s"] = "es ", ["1p"] = "ens ", ["2p"] = "us ", ["3p"] = "es ", } proclitic_elided_person_number_to_reflexive_pronoun = { ["1s"] = "m'", ["2s"] = "t'", ["3s"] = "s'", ["1p"] = "ens ", ["2p"] = "us ", ["3p"] = "s'", } enclitic_non_elided_person_number_to_reflexive_pronoun = { ["1s"] = "-me", ["2s"] = "-te", ["3s"] = "-se", ["1p"] = "-nos", ["2p"] = "-vos", ["3p"] = "-se", } enclitic_elided_person_number_to_reflexive_pronoun = { ["1s"] = "'m", ["2s"] = "'t", ["3s"] = "'s", ["1p"] = "'ns", ["2p"] = "-us", ["3p"] = "'s", } local indicator_flags = m_table.listToSet { "no_pres_stressed", "only3s", "only3sp", "only3p", "noimp", "pp_inv", "irreg", "no_built_in", } -- Initialize all the slots for which we generate forms. local function add_slots(alternant_multiword_spec) -- "Basic" slots: All slots that go into the regular table (not the reflexive form-of table). alternant_multiword_spec.verb_slots_basic = { {"infinitive", "inf"}, {"infinitive_linked", "inf"}, {"gerund", "ger"}, {"pp_ms", "m|s|past|part"}, {"pp_fs", "f|s|past|part"}, {"pp_mp", "m|p|past|part"}, {"pp_fp", "f|p|past|part"}, } -- Special slots used to handle non-reflexive parts of reflexive verbs in {{ca-verb form of}}. For example, for a -- reflexive-only verb like [[arrepentirse]], we want to be able to use {{ca-verb form of}} on [[arrepinta]] (which -- should mention that it is a part of 'me arrepinta', first-person singular present subjunctive, and -- 'se arrepinta', third-person singular present subjunctive) or on [[arrepentimos]] (which should mention that it -- is a part of 'arrepentímonos', first-person plural present indicative or preterite). Similarly, we want to use -- {{ca-verb form of}} on [[arrepentindo]] (which should mention that it is a part of 'se ... arrepentindo', -- syntactic variant of [[arrepentíndose]], which is the gerund of [[arrepentirse]]). To do this, we need to be -- able to map non-reflexive parts like [[arrepinta]], [[arrepentimos]], [[arrepentindo]], etc. to their reflexive -- equivalent(s), to the tag(s) of the equivalent(s), and, in the case of forms like [[arrepentindo]], -- [[arrepentir]] and imperatives, to the separated syntactic variant of the verb+clitic combination. We do this by -- creating slots for the non-reflexive part equivalent of each basic reflexive slot, and for the separated -- syntactic-variant equivalent of each basic reflexive slot that is formed of verb+clitic. We use slots in this -- way to deal with multiword lemmas. Note that we run into difficulties mapping between reflexive verbs, -- non-reflexive part equivalents, and separated syntactic variants if a slot contains more than one form. To -- handle this, if there are the same number of forms in two slots we're trying to match up, we assume the forms -- match one-to-one; otherwise we don't match up the two slots (which means {{ca-verb form of}} won't work in this -- case, but such a case is extremely rare and not worth worrying about). Alternatives that handle this "properly" -- are significantly more complicated and require non-trivial modifications to [[Module:inflection utilities]]. local need_special_verb_form_of_slots = alternant_multiword_spec.source_template == "ca-verb form of" and alternant_multiword_spec.refl if need_special_verb_form_of_slots then alternant_multiword_spec.verb_slots_reflexive_verb_form_of = { {"infinitive_non_reflexive", "-"}, {"infinitive_variant", "-"}, {"gerund_non_reflexive", "-"}, {"gerund_variant", "-"}, } else alternant_multiword_spec.verb_slots_reflexive_verb_form_of = {} end -- Add entries for a slot with person/number variants. -- `verb_slots` is the table to add to. -- `slot_prefix` is the prefix of the slot, typically specifying the tense/aspect. -- `tag_suffix` is a string listing the set of inflection tags to add after the person/number tags. -- `person_number_list` is a list of the person/number slot suffixes to add to `slot_prefix`. local function add_personal_slot(verb_slots, slot_prefix, tag_suffix, person_number_list) for _, persnum in ipairs(person_number_list) do local persnum_tag = all_persons_numbers[persnum] local slot = slot_prefix .. "_" .. persnum local accel = tag_suffix .. "|" .. persnum_tag table.insert(verb_slots, {slot, accel}) end end -- Add a personal slot (i.e. a slot with person/number variants) to `verb_slots_basic`. local function add_basic_personal_slot(slot_prefix, tag_suffix, person_number_list, no_special_verb_form_of_slot) add_personal_slot(alternant_multiword_spec.verb_slots_basic, slot_prefix, tag_suffix, person_number_list) -- Add special slots for handling non-reflexive parts of reflexive verbs in {{ca-verb form of}}. -- See comment above in `need_special_verb_form_of_slots`. if need_special_verb_form_of_slots and not no_special_verb_form_of_slot then for _, persnum in ipairs(person_number_list) do local persnum_tag = all_persons_numbers[persnum] local basic_slot = slot_prefix .. "_" .. persnum local accel = tag_suffix .. "|" .. persnum_tag table.insert(alternant_multiword_spec.verb_slots_reflexive_verb_form_of, {basic_slot .. "_non_reflexive", "-"}) end end end add_basic_personal_slot("pres", "直説法|現在", person_number_list) add_basic_personal_slot("impf", "直説法|不完全過去", person_number_list) add_basic_personal_slot("pret", "直説法|完全過去", person_number_list) add_basic_personal_slot("fut", "直説法|未来", person_number_list) add_basic_personal_slot("cond", "可能法", person_number_list) add_basic_personal_slot("pres_sub", "接続法|現在", person_number_list) add_basic_personal_slot("impf_sub", "接続法|過去", person_number_list) add_basic_personal_slot("imp", "命令法", imp_person_number_list) -- Don't need special non-reflexive-part slots because the negative imperative is multiword, of which the -- individual words are 'no' + subjunctive. add_basic_personal_slot("neg_imp", "命令法|禁止", neg_imp_person_number_list, "no special verb form of") -- Don't need special non-reflexive-part slots because we don't want [[arrependendo]] mapping to [[arrependendo-me]] -- (only [[arrependendo-se]]) or [[arrepender]] mapping to [[arrepender-me]] (only [[arrepender-se]]). add_basic_personal_slot("infinitive", "inf", person_number_list, "no special verb form of") add_basic_personal_slot("gerund", "ger", person_number_list, "no special verb form of") -- Generate the list of all slots. alternant_multiword_spec.all_verb_slots = {} for _, slot_and_accel in ipairs(alternant_multiword_spec.verb_slots_basic) do table.insert(alternant_multiword_spec.all_verb_slots, slot_and_accel) end for _, slot_and_accel in ipairs(alternant_multiword_spec.verb_slots_reflexive_verb_form_of) do table.insert(alternant_multiword_spec.all_verb_slots, slot_and_accel) end alternant_multiword_spec.verb_slots_basic_map = {} for _, slotaccel in ipairs(alternant_multiword_spec.verb_slots_basic) do local slot, accel = unpack(slotaccel) alternant_multiword_spec.verb_slots_basic_map[slot] = accel end end local overridable_stems = {} local function allow_multiple_values_for_override(separated_groups, data, is_form_override) local retvals = {} for _, separated_group in ipairs(separated_groups) do local footnotes = data.fetch_footnotes(separated_group) local form = separated_group[1] -- Prepend marker to prevent prefixing with `base.prefix`, and (in the case of form overrides) prevent -- final devoicing. if is_form_override then form = IS_USER_FORM_OVERRIDE .. form else form = IS_USER_STEM_OVERRIDE .. form end local retval = {form = form, footnotes = footnotes} table.insert(retvals, retval) end return retvals end for _, overridable_stem in ipairs { "stem", "stressed_stem", "unstressed_stem", "pres_unstressed", "pres_stressed", "pres3s", -- overrides just pres_2s and pres_3s -- Don't include pres1s, pres3p; use pres_1s etc. if you need to override just those forms "impf1", "impf2", "pret", "fut", "cond", "pres_sub_stressed", "pres_sub_unstressed", "impf_sub", "pp", "g_infix", "eix_infix", } do -- Written so we can substitute a different validator; parallel code in [[Module:es-verb]] and [[Module:pt-verb]] -- has simple_choice validators. overridable_stems[overridable_stem] = allow_multiple_values_for_override end -- Useful as the value of the `match` property of a built-in verb. `main_verb_spec` is a Lua pattern that should match -- the non-prefixed part of a verb, and `prefix_specs` is a list of Lua patterns that should match the prefixed part of -- a verb. If a prefix spec is preceded by ^, it must match exactly at the beginning of the verb; otherwise, additional -- prefixes (e.g. re-, des-) may precede. Return the prefix and main verb. local function match_against_verbs(main_verb_spec, prefix_specs) return function(verb) for _, prefix_spec in ipairs(prefix_specs) do if prefix_spec:find("^%^") then -- must match exactly prefix_spec = prefix_spec:gsub("^%^", "") if prefix_spec == "" then -- We can't use the second branch of the if-else statement because an empty () returns the current position -- in rmatch(). local main_verb = rmatch(verb, "^(" .. main_verb_spec .. ")$") if main_verb then return "", main_verb end else local prefix, main_verb = rmatch(verb, "^(" .. prefix_spec .. ")(" .. main_verb_spec .. ")$") if prefix then return prefix, main_verb end end else local prefix, main_verb = rmatch(verb, "^(.*" .. prefix_spec .. ")(" .. main_verb_spec .. ")$") if prefix then return prefix, main_verb end end end return nil end end --[=[ Built-in (usually irregular) conjugations. Each entry is processed in turn and consists of an object with two fields: 1. match=: Specifies the built-in verbs that match this object. 2. forms=: Specifies the built-in stems and forms for these verbs. The value of match= is either a string beginning with "^" (match only the specified verb), a string not beginning with "^" (match any verb ending in that string), or a function that is passed in the verb and should return the prefix of the verb if it matches, otherwise nil. The function match_against_verbs() is provided to facilitate matching a set of verbs with a common ending and specific prefixes (e.g. [[ter]] and [[ater]] but not [[abater]], etc.). The value of forms= is a table specifying stems and individual override forms. Each key of the table names either a stem (e.g. `pres_stressed`), a stem property (e.g. `g_infix`) or an individual override form (e.g. `pres_1s`). Each value of a stem can either be a string (a single stem), a list of strings, or a list of objects of the form {form = STEM, footnotes = {FOONOTES}}. Each value of an individual override should be of exactly the same form except that the strings specify full forms rather than stems. The values of a stem property depend on the specific property but are generally strings or booleans. In order to understand how the stem specifications work, it's important to understand the phonetic modifications done by combine_stem_ending(). In general, the complexities of predictable prefix, stem and ending modifications are all handled in this function. In particular: 1. Spelling-based modifications (c/qu, ç/c, g/gu, j/g, gu/gü, qu/qü) occur automatically as appropriate for the ending. 2. If the ending begins with an asterisk, this is a signal to delete the accent on the last syllable of the stem, e.g. veié -> veierem. 3. If ending begins with i, it may turn into í or ï after an unstressed vowel (in some but not all cases) to prevent the two merging into a diphthong. See combine_stem_ending() for specifics. The following stems are recognized [FIXME: This is not correct for Catalan, needs rewriting]: -- pres_unstressed: The present indicative unstressed stem (1p, 2p). Also controls the imperative 2p and gerund. Defaults to the infinitive stem (minus the ending -ar/-er/-ir/-or). -- pres_stressed: The present indicative stressed stem (1s, 2s, 3s, 3p). Also controls the imperative 2s. Default is empty if indicator `no_pres_stressed`, else a vowel alternation if such an indicator is given (e.g. `ue`, `ì`), else the infinitive stem. -- pres1: Special stem for 1s present indicative. Normally, do not set this explicitly. If you need to specify an irregular 1s present indicative, use the form override pres_1s= to specify the entire form. Defaults to pres_stressed. -- pres_sub_unstressed: The present subjunctive unstressed stem (1p, 2p). Defaults to the infinitive stem. -- pres_sub_stressed: The present subjunctive stressed stem (1s, 2s, 3s, 1p). Defaults to pres1. -- impf: The imperfect stem (not including the -av-/-i- stem suffix, which is determined by the conjugation). Defaults to the infinitive stem. -- pret: The full preterite stem missing only the endings (-ste, -mos, etc.), e.g. 'fige', 'fo'. Only used for verbs with irregular preterites (pret_conj == "irreg") such as [[facer]], [[poder]], [[traer]], etc. Defaults to `pret_base` + the conjugation vowel. -- fut: The future stem. Defaults to the infinitive stem + the conjugation vowel. -- cond: The conditional stem. Defaults to `fut`. -- impf_sub: The imperfect subjunctive stem. Defaults to `pret`. -- pp: The masculine singular past participle. Default is based on the verb conjugation: infinitive stem + '-ado' for -ar verbs, otherwise infinitive stem + '-ido'. -- pp_inv: `true` if the past participle exists only in the masculine singular. ]=] local built_in_conjugations = { -------------------------------------------------------------------------------------------- -- -ar -- -------------------------------------------------------------------------------------------- -- Orthographic consonant alternations in endings are handled automatically in combine_stem_ending(). { -- [[aguar]]: -- pres agúo, agúes, agúa, agüem, agüeu, agúen -- pres_sub aguï, aguïs, aguï, agüem, agüeu, aguïn -- contrast a more typical verb in -guar, [[enaiguar]]: -- pres enaiguo, enaigües, enaigua, enaigüem, enaigüeu, enaigüen -- pres_sub enaigüi, enaigüis, enaigüi, enaigüem, enaigüeu, enaigüin match = "^aguar", forms = { pres_stressed = "agú", pres_sub_stressed = "aguï", irreg = true, } }, { -- [[anar]] (full verb); highly irregular match = "^anar", var = "full", forms = { fut = "anir", pres_1s = "vaj", -- will be converted to 'vaig'; 'vaig' gets converted to 'vaic' pres_2s = "vas", pres_3s = "va", pres_3p = "van", pres_sub_stressed = "vagi", imp_2s = "ves", irreg = true, } }, { -- [[anar]] (auxiliary); highly irregular match = "^anar", var = "aux", forms = { pres_1s = "vaj", -- will be converted to 'vaig'; 'vaig' gets converted to 'vaic' pres_2s = {"vas", "vares"}, pres_3s = "va", pres_1p = {"vam", "vàrem"}, pres_2p = {"vau", "vàreu"}, pres_3p = {"van", "varen"}, pres_sub_stressed = "vagi", pres_sub_unstressed = "vàgi", impf1 = {}, impf2 = {}, fut = {}, pret = {}, pp = {}, gerund = {}, noimp = true, irreg = true, } }, { -- [[dar]] match = "^dar", forms = { pres_1s = {form = "do", footnotes = {"[obsolete]"}}, pres_2s = {form = "das", footnotes = {"[obsolete]"}}, pres_3s = {form = "da", footnotes = {"[obsolete]"}}, pres_3p = {form = "dan", footnotes = {"[obsolete]"}}, pres_sub_1s = {form = "de", footnotes = {"[obsolete]"}}, pres_sub_2s = {form = "des", footnotes = {"[obsolete]"}}, pres_sub_3s = {form = "de", footnotes = {"[obsolete]"}}, pres_sub_3p = {form = "den", footnotes = {"[obsolete]"}}, pret_1s = "di", -- regular except for lack of accent pret_3s = "da", -- regular except for lack of accent impf_sub_1s = "des", -- regular except for lack of accent impf_sub_3s = "des", -- regular except for lack of accent irreg = true, } }, { -- [[estar]]; highly irregular match = "^estar", forms = { pres_2s = "estàs", pres_3s = "està", pres_3p = "estan", g_infix = "estig", imp_2s = "estigues", imp_2p = "estigueu", pp = "estad", } }, -------------------------------------------------------------------------------------------- -- -er/-re -- -------------------------------------------------------------------------------------------- -- Regular verbs not needing entries here: -- -- [[rebre]], [[concebre]], [[decebre]], [[percebre]] -- [[rompre]] -- [[fúmer]], [[prémer]], [[témer]], [[trémer]] -- [[perdre]], [[batre]], [[botre]], [[fotre]], [[retre]] -- [[tòrcer]], [[vèncer]] -- etc. ------------------------------------------- -ldre/-ler/-lre -------------------------------------- { -- [[caldre]], [[doldre]], [[condoldre's]], [[oldre]] match = match_against_verbs("ldre", {"ca", "do", "^o"}), forms = { -- g_infix implies irreg = true -- g_infix adds -g to pres_1s, sub, pret and pp stems; combine_stem_ending() changes final -g to -c g_infix = "+", } }, { -- [[caler]] match = "caler", like = "caldre", }, { -- [[doler]] and compounds match = "doler", like = "doldre", }, { -- [[dolre]] match = "dolre", forms = { -- see above for g_infix effects g_infix = "+", } }, { -- [[valer]], [[equivaler]], [[prevaler]], [[sobrevaler]] match = "valer", forms = { -- see above for g_infix effects fut = "valdr", g_infix = "+", } }, { -- [[valdre]] and compounds match = "valdre", like = "valer", }, { -- [[soler]] match = "^soler", -- this must precede -oldre rule below for alt form [[soldre]] forms = { -- see above for g_infix effects fut = {}, pret = {}, impf_sub = "solgué", -- regular, but we disabled the preterite, which would normally disable impf_sub too g_infix = "+", pp = {}, noimp = true, } }, { -- [[soldre]] match = "^soldre", -- this must precede -oldre rule below like = "soler", }, { -- [[coldre]], [[moldre]], [[absoldre]], [[dissoldre]], [[resoldre]], [[toldre]] match = "oldre", -- this must follow [[doldre]]/[[oldre]] rule above forms = { -- see above for g_infix effects g_infix = "+", pp = "olt", } }, { -- [[voler]], [[malvoler]] match = "voler", forms = { fut = "voldr", pres_1s = "vull", pres_sub_stressed = "vulgui", pres_sub_unstressed = "vulgue", g_infix = "+", imp_2s = "vulgues", imp_2p = "vulgueu", } }, --------------------------------------------- -ndre ---------------------------------------- { -- [[romandre]]; write it this way so there's a prefix with a vowel to prevent against the accent in the pp -- from being removed while still removing it in the feminine. match = match_against_verbs("mandre", {"^ro"}), forms = { -- see above for g_infix effects g_infix = "+", pp = "màs#", } }, { -- [[encendre]], [[atendre]], [[contendre]], [[desentendre's]], [[distendre]], [[entendre]], [[estendre]], -- [[pretendre]] match = match_against_verbs("endre", {"enc", "t"}), forms = { pres_3s = "én#", -- remove final accent without prefix with vowel; also removed when adding a suffix -- see above for g_infix effects g_infix = "+", pp = "ès#", -- see above for effect of final # } }, { -- [[vendre]], [[malvendre]], [[revendre]] match = "vendre", forms = { pres_3s = "vèn#", -- see above for effect of final # -- see above for g_infix effects g_infix = "+", pp = "venud", -- g_infix would normally make it vengud } }, { -- [[fendre]], [[defendre]], [[ofendre]], [[dependre]], [[despendre]], [[expendre]], [[suspendre]], [[prendre]], -- [[aprendre]], [[comprendre]], [[desprendre]], [[emprendre]], [[reprendre]], [[sorprendre]] match = "endre", -- this must follow previous -endre rules above forms = { pres_3s = "èn#", -- see above for effect of final # -- see above for g_infix effects g_infix = "+", pp = "ès#", -- see above for effect of final # } }, { -- [[enfondre]]; write it this way so there's a prefix with a vowel to prevent against the accent in the pp -- from being removed while still removing it in the feminine. match = match_against_verbs("fondre", {"^en"}), forms = { -- see above for g_infix effects g_infix = "+", pp = "fús#", } }, { -- [[pondre]], [[compondre]], [[correspondre]], [[descompondre]], [[despondre's]], [[respondre]] match = "pondre", forms = { -- see above for g_infix effects g_infix = "+", pp = "post", } }, { -- [[fondre]], [[confondre]], [[difondre]], [[infondre]], [[refondre]], [[tondre]] match = "ondre", -- this must follow previous -ondre rules above forms = { -- see above for g_infix effects g_infix = "+", pp = "ós#", -- see above for effect of final # } }, --------------------------------------------- -nyer ---------------------------------------- { -- [[atènyer]]; write it this way so there's a prefix with a vowel to prevent against the accent in the pp -- from being removed while still removing it in the feminine. match = match_against_verbs("tènyer", {"^a"}), forms = { pp = "tès#", irreg = true, } }, { -- [[empènyer]], [[espènyer]] match = match_against_verbs("pènyer", {"^em", "^es"}), forms = { pp = "pès#", irreg = true, } }, { -- [[estrènyer]], [[constrènyer]], [[destrènyer]], [[restrènyer]] match = match_against_verbs("strènyer", {"^e", "con", "^de", "^re"}), forms = { pp = "stret", irreg = true, } }, { -- [[fènyer]] match = "fènyer", forms = { pp = {"fengud", "fenyud"}, irreg = true, } }, { -- [[júnyer]] match = "júnyer", like = "junyir", }, { -- [[plànyer]], [[complànyer]], [[pertànyer]] match = match_against_verbs("ànyer", {"pl", "pert"}), forms = { pp = {"angud", "anyud"}, irreg = true, } }, --------------------------------------------- -aure ---------------------------------------- { -- [[caure]], [[decaure]], [[recaure]] match = "caure", forms = { -- stem ending in -ai and imperfect in -ia causes special stressed imperfect logic to take effect; we get -- impf1s queia, impf1p quèiem (preceding vowel changed to è and attached to initial consonant using -- combine_stem_ending(), which changes c- to qu-) stem = "caie", -- i dropped by g_infix before u -- g_infix implies irreg = true -- g_infix adds -g to pres_1s, sub, pret and pp stems; combine_stem_ending() changes final -g to -c -- g_infix sets pres_stressed to end in -u, removing a preceding -i or -v g_infix = "+", } }, { -- [[plaure]], [[complaure]] match = "plaure", forms = { stem = "plae", -- ï in impf1s -aïa gets generated automatically by combine_stem_ending() g_infix = "+", } }, { -- [[raure]] match = "^raure", forms = { stem = "rae", -- ï in impf1s -aïa gets generated automatically by combine_stem_ending() g_infix = "+", pp = {"ragud", "ras"}, } }, --------------------------------------------- -eure ---------------------------------------- { -- [[beure]], [[embeure]], [[deure]], [[lleure]] match = match_against_verbs("eure", {"b", "d", "ll"}), forms = { stem = "eve", -- v dropped by g_infix before g and u g_infix = "+", } }, { -- [[creure]], [[seure]], [[asseure]] match = match_against_verbs("eure", {"cr", "s"}), forms = { stem = "ee", pres_unstressed = "eie", -- affects pres_1p, pres_2p, gerund, imperfect (see [[caure]]) g_infix = "+", } }, { -- [[jeure]], [[ajeure]] match = "jeure", forms = { fut = "jaur", -- affects future and cond stressed_stem = "jee", -- affects stressed forms, which get g added by g_infix by added except for -- pres_stressed, which gets u added (controls pres_3s, pres_2s, pres_3p) unstressed_stem = "jae", -- affects unstressed_stem, which get g added by g_infix pres_stressed = {"jeu", "jau"}, pres_unstressed = "jaie", -- affects pres_1p, pres_2p, gerund, imperfect (see [[caure]]) pres_1s = {"jec", "jac"}, impf1 = "jei", -- otherwise we'd get impf_1s '#geia' etc. impf2 = "jèi", g_infix = "+", } }, { match = "jaure", like = "jeure", }, { -- [[treure]], [[abstreure]], [[atreure]], [[bestreure]], [[contreure]], [[detreure]], [[distreure]], -- [[extreure]], [[retreure], [[retrotreure]], [[sostreure]] match = "treure", forms = { -- like [[jeure]] except for irregular pp fut = "traur", stressed_stem = "tree", unstressed_stem = "trae", pres_stressed = {"treu", "trau"}, pres_unstressed = "traie", pres_1s = {"trec", "trac"}, g_infix = "+", pp = "tret", } }, { match = "traure", like = "treure", }, { -- [[veure]], [[entreveure]], [[preveure]], [[reveure]] match = "veure", forms = { stem = "veie", -- impf1s veia, impf1p vèiem (preceding vowel changed to è) pres_stressed = "veu", pres_1s = "vej", -- will be converted to 'veig'; 'veig' gets converted to 'veic' pres_sub_stressed = "vegi", pres_sub_unstressed = "vege", pret = {"veié", "vé"}, pret_1s = "viu", pret_3s = {"veié", "veu"}, impf_sub = "veié", pp = "vist", imp_2s = "veges", imp_2p = {"vegeu", "veieu"}, irreg = true, } }, --------------------------------------------- -iure ---------------------------------------- { -- [[escriure]], [[circumscriure]], [[descriure]], [[inscriure]], [[prescriure]], [[proscriure]], -- [[subscriure]], [[transcriure]] match = "scriure", forms = { stem = "scrivi", -- v dropped by g_infix before g and u; pres_1p/pres_2p have -ir endings g_infix = "+", pret = {"scriví", "scrigué"}, pp = "scrit", } }, { -- [[riure]], [[somriure]] match = "riure", -- must follow rule for 'scriure' forms = { stem = "rie", -- impf1s reia, impf1p rèiem (preceding vowel changed to è) g_infix = "+", } }, { -- [[viure]], [[conviure]], [[desviure's]], [[sobreviure]] match = "viure", forms = { stem = "vivi", -- v dropped by g_infix before g and u; pres_1p/pres_2p have -ir endings g_infix = "visc", -- applies to pres1s, sub, pret, pp } }, --------------------------------------------- -oure ---------------------------------------- { -- [[cloure]], [[concloure]], [[descloure]], [[encloure]], [[excloure]], [[incloure]], [[recloure]] match = "cloure", forms = { stem = "cloe", -- ï in impf1s cloïa gets generated automatically by combine_stem_ending() g_infix = "+", pp = "clòs#", -- remove final accent without prefix with vowel; also removed when adding a suffix } }, { -- [[coure]] "to cook" match = "coure", var = "cook", forms = { stem = "coe", -- ï in impf1s coïa gets generated automatically by combine_stem_ending() g_infix = "+", pp = "cuit", } }, { -- [[coure]] "to sting" match = "coure", var = "sting", forms = { stem = "coe", -- ï in impf1s coïa gets generated automatically by combine_stem_ending() g_infix = "+", -- pp regular 'cogud' } }, { -- [[moure]], [[promoure]], [[remoure]], [[somoure]], [[ploure]] match = match_against_verbs("oure", {"m", "pl"}), forms = { stem = "ove", -- v dropped by g_infix before g and u g_infix = "+", } }, { -- [[noure]] match = "noure", forms = { stem = "noe", -- ï in impf1s -aïa gets generated automatically by combine_stem_ending() g_infix = "+", } }, --------------------------------------------- -xer ---------------------------------------- { -- [[conèixer]], [[desconèixer]], [[reconèixer]] match = "conèixer", forms = { g_infix = "coneg", } }, { -- [[créixer]], [[acréixer]], [[decréixer]], [[recréixer]], [[sobrecréixer]] match = "créixer", forms = { pret = {"creixé", "cresqué"}, pres_sub_unstressed = {"creixe", "cresque"}, pp = "crescud", irreg = true, } }, { -- [[merèixer]], [[desmerèixer]], [[irèixer-se]] match = match_against_verbs("rèixer", {"me", "^i"}), forms = { pret = {"reixé", "resqué"}, pres_sub_unstressed = {"reixe", "resque"}, pp = "rescud", irreg = true, } }, { -- [[néixer]]/[[nàixer]], [[renéixer]]/[[renàixer]], [[sobrenéixer]]/[[sobrenàixer]], [[péixer]]/[[pàixer]] match = match_against_verbs("éixer", {"n", "p"}), forms = { stem = "aixe", fut = "aixer", pres_stressed = {"eix", "aix"}, pres_1s = "eixo", pret = {"aixé", "asqué"}, pres_sub_stressed = "eixi", pres_sub_unstressed = {"aixe", "asque"}, pp = "ascud", irreg = true, } }, { match = "àixer", like = "éixer", }, { -- [[parèixer]], [[aparèixer]], [[comparèixer]], [[desaparèixer]], [[reaparèixer]] match = "parèixer", forms = { g_infix = "pareg", } }, --------------------------------------------- misc ---------------------------------------- { -- [[cabre]] match = "cabre", forms = { pres_sub_stressed = "càpiga", pres_sub_unstressed = "capigue", irreg = true, } }, { -- [[caber]] match = "caber", like = "cabre", }, { -- [[saber]] match = "saber", forms = { fut = "sabr", pres_1s = "sé", pres_sub_stressed = "sàpiga", pres_sub_unstressed = "sapigue", imp_2s = "sàpiga", imp_2p = "sapigueu", irreg = true, } }, { -- [[poder]] match = "poder", forms = { fut = "podr", pres_1s = "puc", pres_sub_stressed = "pugui", pres_sub_unstressed = "pugue", g_infix = "pog", imp_2s = "pugues", imp_2p = "pugueu", irreg = true, } }, { -- [[córrer]], [[acórrer]], [[concórrer]], [[decórrer]], [[descórrer]], [[discórrer]], [[encórrer]], -- [[escórrer]], [[incórrer]], [[ocórrer]], [[recórrer]], [[socórrer]], [[transcórrer]] match = "córrer", forms = { pret = "corregué", pres_sub_unstressed = {"corre", "corregue"}, pp = "corregud", irreg = true, } }, { -- [[metre]], [[admetre]], [[arremetre]], [[cometre]], [[comprometre]], [[demetre]], [[descomprometre]], -- [[emetre]], [[entremetre's]], [[escometre]], [[malmetre]], [[manumetre]], [[ometre]], [[permetre]], -- [[prometre]], [[readmetre]], [[remetre]], [[retransmetre]], [[sotmetre]], [[trametre]], [[transmetre]] match = "metre", forms = { pp = "mès#", irreg = true, } }, -------------------------------------------------------------------------------------------- -- -ir -- -------------------------------------------------------------------------------------------- { -- [[acudir]]; NOTE: Separation by meaning does not occur in DCC, DIEC, DEIEC, and DCVB says the distinction -- is geographical and makes no mention of distinction by meaning. OTOH ca.wikt does say that the pronominal -- sense "to occur" tends to conjugate non-inchoative. match = "acudir", forms = { eix_infix = {{ form = "+", footnotes = {'[especially in the sense "to turn up, to be present"]'} }, { form = "-", footnotes = {'[especially in the pronominal sense "to occur"]'} }} } }, -- [[afegir]]: -- non-inchoative in Valencia, inchoative elsewhere { -- [[ajupir]] -- [[buixir]] -- [[bullir]], [[rebullir]] -- [[cruixir]], [[escruixir]] (Routledge says this is inchoative but DIEC, DEIEC and DCC all disagree; note -- pres_2s 'cruixes', handled automatically) -- [[dormir]], [[adormir]] -- [[funyir]] -- [[grunyir]] -- [[munyir]], [[esmunyir]] -- [[pudir]] -- [[punyir]] -- [[retrunyir]] -- [[sallir]] -- [[sentir]], [[pressentir]], [[ressentir-se]]; not [[consentir]], with can be either non-inchoative or -- inchoative, and not [[assentir]] or [[dissentir]], which are only inchoative match = match_against_verbs("ir", {"ajup", "buix", "bull", "cruix", "dorm", "funy", "gruny", "muny", "pud", "puny", "retruny", "^sent", "pressent", "^ressent", "sall"}), forms = { eix_infix = "-", } }, { -- [[arrupir-se]]; -- [[brumir]]; -- [[brunzir]]; -- [[consumir]], [[resumir]], [[presumir]] (not [[sumir]], [[assumir]], [[subsumir]], which are regular) -- [[mentir]], [[desmentir]] -- [[percudir]]; cf. also [[acudir]], which to some extent has separate conjugations per meaning -- [[consentir]] match = match_against_verbs("ir", {"arrup", "brum", "brunz", "consum", "^resum", "presum", "ment", "percud", "consent"}), forms = { eix_infix = {"+", "-"}, } }, -- [[cenyir]]: -- non-inchoative or inchoative in Balearics, inchoative elsewhere { -- [[cobrir]], [[descobrir]], [[encobrir]], [[recobrir]], [[redescobrir]] match = "cobrir", forms = { pp = "cobert", irreg = true, } }, { -- [[collir]], [[acollir]], [[escollir]], [[recollir]] match = "collir", forms = { stressed_stem = "culli", eix_infix = "-", irreg = true, } }, { -- [[complir]], [[acomplir]], [[incomplir]] match = "complir", forms = { pp = {"complert", "complid"}, irreg = true, } }, { -- [[cosir]], [[descosir]], [[recosir]] match = "cosir", forms = { stressed_stem = "cusi", pres_3s = "cús#", eix_infix = "-", irreg = true, } }, { -- [[eixir]], [[deseixir-se]]; not [[teixir]] or [[entreteixir]], and not [[reeixir]] or [[sobreeixir]], -- which have an ï in the stem-stressed forms match = match_against_verbs("eixir", {"^", "des"}), forms = { stressed_stem = "ixi", eix_infix = "-", irreg = true, } }, { -- [[reeixir]], [[sobreeixir]] match = match_against_verbs("eixir", {"^re", "sobre"}), forms = { stressed_stem = "ïxi", eix_infix = "-", irreg = true, } }, -- [[engolir]]: -- non-inchoative in Valencia, inchoative elsewhere { -- [[escopir]] match = "escopir", forms = { stressed_stem = "escupi", eix_infix = "-", irreg = true, } }, { -- [[establir]], [[preestablir]], [[restablir]] match = "establir", forms = { pp = {"establert", "establid"}, irreg = true, } }, -- [[ferir]]: -- non-inchoative in Balearics, inchoative elsewhere -- [[fregir]]: -- non-inchoative in Valencia, inchoative elsewhere { -- [[fugir]], [[confugir]], [[defugir]], [[enfugir-se]]; pres sing ''fujo, fuges, fuig'' handled by -- combine_stem_ending(); can't be handled by rule above that lists many non-inchoative verbs because the -- prefix would be 'fug' and the front-back alternation code doesn't apply to prefixes. match = "fugir", forms = { eix_infix = "-", } }, { -- [[imprimir]], [[reimprimir]], [[sobreimprimir]]; not any other verbs in -primir; write it this way so -- there's a prefix with a vowel to prevent against the accent in the pp from being removed while still -- removing it in the feminine. match = match_against_verbs("primir", {"im"}), forms = { pp = "près#", irreg = true, } }, -- [[llegir]]: -- non-inchoative in Valencia and Minorca, inchoative elsewhere { -- [[lluir]]: regular inchoative in the figurative meaning "to display (something), to be showy" also in the -- legal meaning "free from a pecuniary obligation, such as a land-based tax (emphyteusis)"; irregular in the -- literal meaning "to shine"; use <no_built_in> to get regular conjugation. In the regular conjugation, -- umlauts appear in the following forms: pres_1p/pres_sub_1p/imp_1p lluïm, pres_2p/pres_sub_2p/imp_2p lluïu, -- impf_1s/impf_3s lluïa, impf_2s lluïes, impf_3p lluïen, pret_2s lluïres, pret_3p lluïren, -- impf_sub_2s lluïssis, impf_sub_3p lluïssin, throughout the pp: lluït, lluïda, lluïts, lluïdes. IN the -- irregular conjugation, umlauts appear in the same places as well as elsewhere in the present subjunctive: -- pres_sub_1s/pres_sub_3s/imp_3s lluï, pres_sub_2s lluïs, pres_sub_3p/imp_3p lluïn. Notably, they do *NOT* -- appear in the gerund lluint, the infinitive lluir, or anywhere in the future or conditional. Note that -- verbs.cat [https://www.verbs.cat/en/conjugation/899-lluir.html] lists additional irregular forms pres_1s -- lluu, and alternative impf_sub forms in -e- instead of -i- (lluïsses, lluíssem, lluísseu, lluïssen), but -- these are nonstandard or dialectal per both Routledge and DEIEC. match = "^lluir", forms = { eix_infix = "-", pres3s = {"lluu", "llu"}, -- generates pres_2s, imp_2s irreg = true, } }, { -- [[entrelluir]] "to be half-seen", [[relluir]] "to shine", [[traslluir-se]] "to be translucent"; either -- inchoative or non-inchoative, not distinguished by meaning; note, [[deslluir]] and [[enlluir]] are regular -- inchoative verbs. match = match_against_verbs("lluir", {"entre", "^re", "tras"}), forms = { eix_infix = {"+", "-"}, pres3s = {"llueix", "lluu", "llú"}, -- generates pres_2s, imp_2s; note, pres_2s will end in -es due to -- combine_stem_ending() irreg = true, } }, { -- [[morir]], [[premorir]]; but not [[atemorir]] match = match_against_verbs("morir", {"^", "pre"}), forms = { eix_infix = "-", pp = "mort", irreg = true, } }, { -- [[obrir]], [[entreobrir]], [[reobrir]]; not [[cobrir]] and derivatives, not [[empobrir]], so we have to list -- them individually match = match_against_verbs("obrir", {"^", "entre", "^re"}), forms = { eix_infix = "-", pp = "obert", irreg = true, } }, { -- [[oferir]]; but not [[proferir]] match = "^oferir", forms = { pp = {"ofert", "oferid"}, irreg = true, } }, -- [[oir]], [[desoir]], [[entreoir]]: -- per Routledge, non-inchoative or inchoative normally but only -- non-inchoative in Valencian; but all dictionaries disagree and say it is a regular inchoative-only verb. -- It has the same umlauts as lluir (and [[corroir]], another regular inchoative verb). { -- [[omplir]], [[desomplir-se]], [[reomplir]]; not [[complir]] and derivatives, so we have to list them -- individually match = match_against_verbs("omplir", {"^", "des", "^re"}), forms = { eix_infix = "-", pp = {"omplert", "omplid"}, irreg = true, } }, -- [[penedir-se]]: -- non-inchoative in Balearics, inchoative elsewhere { -- [[pruir]] "to itch": same umlauts as in [[lluir]]. match = "^pruir", forms = { eix_infix = "-", pres3s = {"pruu", "pru"}, -- generates pres_2s, imp_2s irreg = true, } }, { -- [[reblir]] match = "^reblir", forms = { pp = {"reblert", "reblid"}, irreg = true, } }, -- [[renyir]]: -- non-inchoative in Valencia, inchoative elsewhere { -- [[sofrir]] match = "^sofrir", forms = { pp = {"sofert", "sofrid"}, irreg = true, } }, { -- [[sortir]], [[ressortir]], [[sobresortir]]; but not [[assortir]], which is regular inchoative match = match_against_verbs("sortir", {"^", "^res", "sobre"}), forms = { stressed_stem = "surti", eix_infix = "-", irreg = true, } }, { -- [[suplir]] match = "^suplir", forms = { pp = {"suplert", "suplid"}, irreg = true, } }, -- [[teixir]], [[entreteixir]]: -- non-inchoative in Valencia, inchoative elsewhere { -- [[tenir]] but not any compounds; highly irregular match = "^tenir", forms = { fut = "tindr", pres_stressed = "ten", pres_3s = "té", imp_2s = {"té", "ten", "tingues"}, imp_2p = {"teniu", "tingueu"}, g_infix = "ting", } }, { -- [[abstenir-se]], [[atenir-se]], [[captenir-se]], [[cartenir]], [[contenir]], [[detenir]], [[entretenir]], -- [[mantenir]], [[menystenir]], [[obtenir]], [[retenir]], [[sostenir]], [[viltenir]]; highly irregular match = "tenir", forms = { fut = "tindr", pres_stressed = "ten", pres_3s = "té", imp_2s = {"tén", "tingues"}, imp_2p = {"teniu", "tingueu"}, g_infix = "ting", } }, { -- [[tindre]]: variant of [[tenir]] match = "tindre", like = "tenir", }, -- [[tenyir]], [[destenyir]]: -- non-inchoative in Valencia, but [[retenyir]] inchoative or non-inchoative in -- Valencia? (per Routledge); regular inchoative elsewhere { -- [[tossir]] "to cough" match = "^tossir", forms = { stressed_stem = "tussi", -- pres_2s gets 'tusses' pres_3s = "tus", -- note, pres_3s (a single form override) not pres3s (a stem override, which also affects -- pres_2s; but imp_2s is physically copied from pres_3s, so imp_2s correctly gets 'tus') eix_infix = "-", irreg = true, } }, { -- [[venir]] but not any compounds; highly irregular match = "^venir", forms = { fut = "vindr", pres_stressed = "ven", pres_3s = "ve", imp_2s = "vine", g_infix = "ving", } }, { -- compounds of [[venir]]: [[advenir]], [[avenir]], [[contravenir]], [[convenir]], [[desavenir-se]], -- [[desconvenir]], [[entrevenir]], [[esdevenir]], [[intervenir]], [[obvenir]], [[pervenir]], [[prevenir]], -- [[provenir]], [[reconvenir]], [[revenir]], [[sobrevenir]], [[subvenir]]; but not [[enjovenir]] or -- [[rejovenir]]; highly irregular match = match_against_verbs("venir", {"^ad", "^a", "contra", "con", "desa", "entre", "esde", "inter", "ob", "per", "pre", "pro", "^re", "sobre", "sub"}), forms = { fut = "vindr", pres_stressed = "ven", pres_3s = "vé", imp_2s = "vén", g_infix = "ving", } }, { -- [[vindre]]: variant of [[venir]] match = "vindre", like = "venir", }, -- [[vestir]], [[desvestir]], [[revestir]], maybe [[transvestir]]: non-inchoative in Valencia, inchoative or -- non-inchoative in the Balearics; regular inchoative elsewhere; but not [[envestir]] or [[investir]], which are -- regular inchoative everywhere { -- [[fer]], [[contrafer]], [[desfer]], [[estrafer]], [[perfer]], [[refer]], [[satisfer]]; highly irregular match = "fer", forms = { fut = "far", pres_1s = "faj", -- will be converted to 'faig'; 'faig' gets converted to 'faic' pres_2s = "fàs#", pres_3s = "fà#", pres_3p = "fan", pres_unstressed = "fe", impf1 = "fei", impf2 = "fèi", pres_sub_stressed = "faci", pres_sub_unstressed = "fe", pret = "fé", pret_1s = "fiu", pret_3s = "feu", impf_sub_1s = "fés#", -- regular except for base form [[fes]], lacking an accent impf_sub_3s = "fés#", -- same imp_2s = "fés#", pp = "fet", irreg = true, } }, { -- [[dir]], [[adir-se]], [[contradir]], [[desdir]], [[entredir]], [[interdir]], [[maldir]], [[predir]], [[redir]]; -- behaves like an -er/-re verb match = match_against_verbs("dir", {"^", "^a", "contra", "des", "entre", "inter", "mal", "pre", "^re"}), forms = { stem = "die", g_infix = "+", imp_2s = "digues", imp_2p = "digueu", pp = "dit", } }, { -- [[dur]], [[endur-se]]; behaves like an -er/-re verb match = "dur", forms = { stem = "due", g_infix = "+", pres3s = {"duu", "du"}, -- generates pres_2s, imp_2s impf1 = "dui", impf2 = "dúi", pp = "dut", } }, { -- [[ser]]; highly irregular match = "^ser", forms = { pres_1s = "soc", pres_2s = "ets", pres_3s = "és", pres_1p = "som", pres_2p = "sou", pres_3p = "són", impf1 = "er", impf2 = "ér", pres_sub_stressed = "sigui", pres_sub_unstressed = "sigue", pret = "fó", pret_1s = "fui", pret_3s = "fou", impf_sub_1s = "fos", -- regular except for lack of accent impf_sub_3s = "fos", -- same cond = {"serí", "fór"}, imp_2s = "sigues", imp_2p = "sigueu", pp = {"estad", "sigud"}, gerund = {"sent", "essent"}, irreg = true, } }, { -- [[ésser]]; variant of [[ser]] match = "^ésser", like = "ser", }, { -- [[haver]] as auxiliary; highly irregular match = "^haver", var = "aux", forms = { pres_1s = "he", pres_2s = "has", pres_3s = "ha", pres_1p = "hem", pres_2p = "heu", pres_3p = "han", fut = "haur", cond = {"haurí", "haguér"}, pres_sub_stressed = "hagi", pres_sub_unstressed = "hàgi", noimp = true, g_infix = "+", } }, { -- [[haver]] as full verb; highly irregular match = "^haver", var = "full", forms = { pres_1s = {"hec", "hac"}, pres_stressed = {"heu", "hau"}, fut = "haur", pres_sub_stressed = "hegui", g_infix = "+", } }, { -- [[heure]]; variant of full verb [[haver]] match = "^heure", like = "haver", likevar = "full", }, { -- [[haure]]; variant of full verb [[haver]] match = "^haure", like = "haver", likevar = "full", }, } local function skip_slot(base, slot, allow_overrides) if not allow_overrides and (base.basic_overrides[slot] or base.refl and base.basic_reflexive_only_overrides[slot]) then -- Skip any slots for which there are overrides. return true end if base.only3s and (slot:find("^pp_f") or slot:find("^pp_mp")) then -- diluviar, atardecer, neviscar; impersonal verbs have only masc sing pp return true end if not slot:find("[123]") then -- Don't skip non-personal slots. return false end if base.nofinite then return true end if (base.only3s or base.only3sp or base.only3p) and (slot:find("^imp_") or slot:find("^neg_imp_")) then return true end if base.only3s and not slot:find("3s") then -- diluviar, atardecer, neviscar return true end if base.only3sp and not slot:find("3[sp]") then -- atañer, concernir return true end if base.only3p and not slot:find("3p") then -- [[caer cuatro gotas]], [[caer chuzos de punta]], [[entrarle los siete males]] return true end return false end local function add_stem_ending(stem, ending) if ending == "" then return stem end if stem:find("#$") then -- remove final accent when adding a suffix stem = com.remove_accents((stem:gsub("#$", "")), "final syllable only") end return stem .. ending end local function process_stem(stem, fn) if stem:find("#$") then local stem_no_pound_sign = stem:match("^(.*)#$") return fn(stem_no_pound_sign) .. "#" else return fn(stem) end end -- Add the `stem` to the `ending` and apply any phonetic modifications. `is_full_word` indicates that we're creating -- a "full word" not a stem, and turns on devoicing of final consonants. `dont_include_prefix` is used when creating -- stems and indicates not to prepend the prefix in `base.prefix` to the result. `is_pres_sub_stressed` is used when -- creating the pres_sub_stressed stem, to correctly handle both [[desaiguar]] and [[argüir]], whose respective -- interactions between ü and i/ï are very tricky. -- -- WARNING: This function is written very carefully; changes to it can easily have unintended consequences. local function combine_stem_ending(base, stem, ending, is_full_word, dont_include_prefix, is_pres_sub_stressed) -- Include the prefix in the stem unless dont_include_prefix is given (used in construct_stems()), or the value of -- `stem` comes from a user-specified stem or form override. if not dont_include_prefix and not stem:find(IS_USER_STEM_OVERRIDE) and not stem:find(IS_USER_FORM_OVERRIDE) then stem = base.prefix .. stem end -- A * at the beginning of the ending is a signal to remove a stressed accent from the stem. This may feed any of -- the following rules. if ending:find("^%*") then ending = ending:gsub("^%*", "") stem = com.remove_accents(stem, "final syllable only") end -- If ending begins with s and stem ends in a sibilant, we need an e in between; cf. pres_2s 'apareixes' of -- [[aparèixer]], pres_2s 'torces' of [[tòrcer]], pres_2s 'fuges' of [[fugir]], pres_2s 'brunzes' of [[brunzir]]. -- This may feed the next rule. if ending:find("^s") and rfind(stem, "[çjsxz]$") then ending = "e" .. ending end -- By default, stems are in their "back" (standalone) form. Before a front vowel, convert the final consonant to -- its "front" form so the pronunciation doesn't change. if rfind(ending, "^" .. front_vowel_c) then -- adequar -> adeqües -- enaiguar -> enaigües -- pegar -> pegues -- arranjar -> arranges -- marcar -> marques -- abraçar -> abraces stem = com.back_to_front(stem) end -- Ending beginning in -i after diphthong ending in V + i compresses the two i's into one (cf. pret_1s 'desmaí' and -- pres_sub_1s 'desmaï' of [[desmaiar]]). This rule doesn't apply after pseudo-vowel u in gu/qu; cf. pret_1s 'guií' -- of [[guiar]] and contrast pret_1s 'cruí' of [[cruiar]]. This may feed the next rule. if rfind(ending, "^[iíï]") and rfind(stem, V .. "i$") and not rfind(stem, "[gq][uü]i$") then stem = stem:gsub("i$", "") end -- If ending begins with i (not í), it must get a diaeresis after a true vowel (not gu/qu, cf. pres_1p 'delinquim' -- of [[delinquir]], not '#delinquïm'; also not a diphthong ending in u, cf. pres_sub_1s 'apreui' of [[apreuar]] -- not '#apreuï') to prevent the two merging into a diphthong. Note that ü -> u before ï, but to simplify things -- we leave the double umlauts in place and remove the first one during postprocessing, in fix_double_umlauts(). -- Cf.: -- * impf_1s 'raïa' of [[raure]]; -- * pres_sub_1s 'creï' of [[crear]]; -- * pres_sub_1s 'associï' of [[associar]]; -- * impf_1s 'cloïa' of [[cloure]]; -- * pres_1p 'lluïm' of [[lluir]]; -- * pres_1p 'arguïm' of [[argüir]]. if ending:find("^i") and rfind(stem, "[aeiouü]$") and not stem:find("[aeiogq]u$") and -- Unstressed subjunctive endings of [[enaiguar]] remain without umlaut: enaigüi/enaigüis/enaigüin; -- but stressed endings of [[argüir]] that begin with 'i' do get an umlaut: arguït, impf. arguïa, including -- stressed subjunctive endings arguïm/arguïu. In both cases the ending is '-i' as part of the creation of -- the respective stems. There seems no way of distinguishing the two cases other than with a special flag. not (rfind(stem, "[gq]ü$") and ending == "i" and is_pres_sub_stressed) then ending = ending:gsub("^i", "ï") end local retval = add_stem_ending(stem, ending) if retval:find("#$") then -- remove final accent if no vowels in prefix retval = retval:gsub("#$", "") if not rfind(base.prefix, V) then retval = com.remove_accents(retval, "final syllable only") end end if is_full_word then local saw_is_user_form_override retval, saw_is_user_form_override = rsubb(retval, IS_USER_FORM_OVERRIDE, "") retval = retval:gsub(IS_USER_STEM_OVERRIDE, "") if not saw_is_user_form_override then -- Devoice final voiced obstruent (cf. pres_2s 'caps', pres_3s 'cap' of [[cabre]]). But not after a -- consonant (cf. pres_2s 'perds', pres_3s 'perd' of [[perdre]]), except for g -> c, which operates -- even after a consonant (pres_1s 'resolc' of [[resoldre]], pres_1s 'tinc' of [[tenir]]). retval = retval:gsub("g(s?)$", "c%1") retval = rsub(retval, "(" .. V .. ")([bdj])(s?)$", function(before, voiced, after) local devoice = { b = "p", d = "t", j = "ig", -- pres_3s 'fuj' of [[fugir]] -> 'fuig' } return before .. devoice[voiced] .. after end) end end return retval end local function add3(base, slot, stems, endings, footnotes, allow_overrides) if skip_slot(base, slot, allow_overrides) then return end local function do_combine_stem_ending(stem, ending) return combine_stem_ending(base, stem, ending, "is full word") end iut.add_forms(base.forms, slot, stems, endings, do_combine_stem_ending, nil, nil, footnotes) end local function insert_form(base, slot, form) if not skip_slot(base, slot) then iut.insert_form(base.forms, slot, form) end end local function insert_forms(base, slot, forms) if not skip_slot(base, slot) then iut.insert_forms(base.forms, slot, forms) end end local function add_single_stem_tense(base, slot_pref, stems, s1, s2, s3, p1, p2, p3) local function addit(slot, ending) add3(base, slot_pref .. "_" .. slot, stems, ending) end addit("1s", s1) addit("2s", s2) addit("3s", s3) addit("1p", p1) addit("2p", p2) addit("3p", p3) end local function map_general(stemforms, fn) return iut.map_forms(iut.convert_to_general_list_form(stemforms), fn) end local function flatmap_general(stemforms, fn) return iut.flatmap_forms(iut.convert_to_general_list_form(stemforms), fn) end -- Given a stem ending in a conjugation vowel -a/-e/-i/-ï, split into stem base and conjugation vowel, converting the -- stem base to "back" form if the conjugation vowel is front (hence 'torce' of [[tòrcer]] splits into 'torç' and 'e', -- and 'fugi' of [[fugir]] splits into 'fuj' and 'i'). local function split_conj_vowel(stem) local stem_base, conj_vowel = rmatch(stem, "^(.*)([aeiï])$") if not stem_base then error(("Internal error: Stem '%s' doesn't end in conjugation vowel a/e/i"):format(stem)) end if conj_vowel == "ï" then -- To simplify handling of ï, convert to i. It will be converted back to ï as necessary in -- combine_stem_ending(). conj_vowel = "i" end if rfind(conj_vowel, front_vowel_c) then stem_base = com.front_to_back(stem_base) end return stem_base, conj_vowel end local function construct_stems(base) base.output_stems = {} local stems = base.output_stems local bst = base.input_stems -- YUCK, see combine_stem_ending() for the necessity of is_pres_sub_stressed. local function combine(stem, ending, is_pres_sub_stressed) return combine_stem_ending(base, stem, ending, false, "dont include prefix", is_pres_sub_stressed) end stems.irreg = bst.irreg or bst.g_infix -- NOTE: Some stems end in a conjugation or similar vowel, specifically: -- * `stem` (ends in conjugation vowel -a/-e/-i); -- * `stressed_stem` (likewise); -- * `unstressed_stem` (likewise); -- * `pres_unstressed` (which assumes the form of the gerund minus the -nt; note that `pres_stressed` does *NOT* -- end in a conjugation vowel, but assumes the stem form; the value of pres_3s will be derived by adding -a for -- -ar verbs and otherwise adding an -e prop vowel when required, as in [[cobrir]], and otherwise adding no -- vowel); -- * `pres_sub_stressed` (which assumes the form of pres_sub_3s and hence usually ends in -i, occasionally -a); -- * `pres_sub_unstressed` (which assumes the form of pres_sub_1p minus the -m, hence ends in -e or -i). -- Save stem for use in add_categories_and_annotation() for determining the conjugation class. stems.stem = bst.stem or base.stem local eix_infix_stem if base.conj_vowel == "i" then -- Save eix_infix value for use in add_categories_and_annotation() for determining whether consonant -- alternations exist. stems.eix_infix = bst.eix_infix or bst.g_infix and "-" or "+" eix_infix_stem = flatmap_general(stems.eix_infix, function(form) if form == "+" then return map_general(stems.stem, function(form) local stem_base, conj_vowel = split_conj_vowel(form) return combine(stem_base, "eixe") end) elseif form == "-" then return stems.stem else return form end end) end local stressed_stem = bst.stressed_stem or eix_infix_stem or stems.stem local unstressed_stem = bst.unstressed_stem or stems.stem -- Add the 'g' that is characteristic of g-infix verbs. We remove a stem-final v, e.g. [[beure]] with stem 'beve' -- becomes 'beg'. local function add_g(stemforms) return map_general(stemforms, function(form) local stem_base, conj_vowel = split_conj_vowel(form) stem_base = stem_base:gsub("v$", "") return combine(stem_base, "g") end) end -- Add the 'u' of the pres_3s that is characteristic of g-infix verbs (and conjugation vowel 'e', later removed). -- We remove a stem-final v, as well as i as part of a diphthong, e.g. [[beure]] with stem 'beve' becomes 'beue' -- and [[veure]] with stem 'veie' becomes 'veue' (but [[riure]] with stem 'rie' becomes 'riue' not '#rue'). We -- don't add -u after a consonant, e.g. [[doldre]] with stem 'dole' becomes 'dole' not '#dolue'. local function add_u(stemforms) return map_general(stemforms, function(form) local stem_base, conj_vowel = split_conj_vowel(form) if stem_base:find("v$") then stem_base = stem_base:gsub("v$", "") else stem_base = rsub(stem_base, "(" .. V .. ")i$", "%1") end -- Add u after vowel but not after another u, so we get pres_3p 'duen' of [[dur]] not '#duuen'. if rfind(stem_base, V .. "$") and not stem_base:find("u$") then return combine(stem_base, "u") else return stem_base end end) end local stressed_g_infix, unstressed_g_infix, g_infix_pres_stressed if bst.g_infix then local function flatmap_g_infix(default) return flatmap_general(bst.g_infix, function(form) if form == "+" then return default else return form end end) end stressed_g_infix = flatmap_g_infix(add_g(stressed_stem)) unstressed_g_infix = flatmap_g_infix(add_g(unstressed_stem)) g_infix_pres_stressed = add_u(stressed_stem) end stems.pres_unstressed = bst.pres_unstressed or unstressed_stem stems.pres_stressed = -- If no_pres_stressed given, pres_stressed stem should be empty so no forms are generated. base.no_pres_stressed and {} or bst.pres_stressed or g_infix_pres_stressed or map_general(stressed_stem, function(form) local stem_base, conj_vowel = split_conj_vowel(form) return stem_base end) stems.pres1s = -- If no_pres_stressed given, pres1s stem should be empty so no forms are generated. base.no_pres_stressed and {} or stressed_g_infix or map_general(stems.pres_stressed, function(form) return combine(form, "o") end) stems.pres3s = -- If no_pres_stressed given, pres3s stem should be empty so no forms are generated. base.no_pres_stressed and {} or bst.pres3s or map_general(stems.pres_stressed, function(form) if base.conj_vowel == "a" then return combine(form, "a") elseif rfind(form, C .. "[lr]$") and not rfind(form, V .. "ll$") then return combine(form, "e") else return form end end) stems.pres3p = -- If no_pres_stressed given, pres3p stem should be empty so no forms are generated. base.no_pres_stressed and {} or map_general(stems.pres_stressed, function(form) return combine(form, "en") end) local function compute_impf_stem(with_accent) return map_general(stems.pres_unstressed, function(form) local stem_base, conj_vowel = split_conj_vowel(form) if conj_vowel == "a" then return combine(stem_base, with_accent and "àv" or "av") elseif stem_base:find("i#?$") then form = form:gsub("i#?$", "") return combine(rmatch(stem_base, "^(.-)" .. V .. "*$"), with_accent and "èi" or "ei") else return combine(stem_base, with_accent and "í" or "i") -- i -> ï after a vowel end end) end stems.impf1 = bst.impf1 or compute_impf_stem(false) stems.impf2 = bst.impf2 or compute_impf_stem(true) stems.pret = bst.pret or unstressed_g_infix and map_general(unstressed_g_infix, function(form) return combine(form, "é") end ) or map_general(unstressed_stem, function(form) local accent_conj_vowel = { a = "à", e = "é", i = "í", } local stem_base, conj_vowel = split_conj_vowel(form) return combine(stem_base, accent_conj_vowel[conj_vowel]) end) stems.fut = bst.fut or base.inf_stem stems.cond = bst.cond or map_general(stems.fut, function(form) return combine(form, "í") end) stems.pres_sub_stressed = bst.pres_sub_stressed or stressed_g_infix and map_general(stressed_g_infix, function(form) return combine(form, "i") end) or map_general(stressed_stem, function(form) local stem_base, conj_vowel = split_conj_vowel(form) return combine(stem_base, "i", "is pres_sub_stressed") end) stems.pres_sub_unstressed = bst.pres_sub_unstressed or unstressed_g_infix and map_general(unstressed_g_infix, function(form) return combine(form, "e") end) or map_general(unstressed_stem, function(form) local stem_base, conj_vowel = split_conj_vowel(form) return combine(stem_base, conj_vowel == "i" and conj_vowel or "e") end) stems.impf_sub = bst.impf_sub or map_general(stems.pret, function(form) local stem_base = rmatch(form, "^(.*)à$") -- already in "back" form, no need to convert if stem_base then return combine(stem_base, "é") else return form end end) stems.pp = bst.pp or unstressed_g_infix and map_general(unstressed_g_infix, function(form) return combine(form, "ud") end ) or map_general(unstressed_stem, function(form) local stem_base, conj_vowel = split_conj_vowel(form) -- use combine() so we get 'abduïd' from 'abdu-' of [[abduir]], 'seguid' from 'seg-' from [[seguir]], etc. return combine(stem_base, (conj_vowel == "e" and "u" or conj_vowel) .. "d") end) end local function a_to_e(base, stems, suffix) return map_general(stems, function(form) local stem_base = form:match("^(.-)a$") if stem_base then suffix = "e" .. suffix else stem_base = form end return combine_stem_ending(base, stem_base, suffix, "is full word") end) end local function add_present_indic(base) local stems = base.output_stems local function addit(slot, stems, ending) add3(base, "pres_" .. slot, stems, ending) end addit("1s", stems.pres1s, "") insert_forms(base, "pres_2s", a_to_e(base, stems.pres3s, "s")) addit("3s", stems.pres3s, "") insert_forms(base, "pres_1p", a_to_e(base, stems.pres_unstressed, "m")) insert_forms(base, "pres_2p", a_to_e(base, stems.pres_unstressed, "u")) addit("3p", stems.pres3p, "") end local function add_present_subj(base) local stems = base.output_stems local function addit(slot, stems, ending) add3(base, "pres_sub_" .. slot, stems, ending) end -- Regular -ar verb: [[amar]]: ami, amis, ami, amem, ameu, amin -- Regular -re verb: [[batre]]: bati, batis, bati, batem, bateu, batin (same as -ar verb) -- Regular -ir verb, no -eix- infix: [[dormir]]: dormi, dormis, dormi, dormim, dormiu, dormin -- Regular -ir verb, -eix- infix: [[imprimir]]: imprimeixi, imprimeixis, imprimeixi, imprimim, imprimiu, imprimeixin -- Stem changing in 123s/3p vs. 12p: -- * -eix- infix (-eix- in all stressed forms: 123s/3p of pres ind/sub, 2s imp) -- * [[collir]]: culli, cullis, culli, collim, colliu, cullin (cull- in all stressed forms) -- * [[cabre]]: càpiga, càpigues, càpiga, capiguem, capigueu, càpiguen (also different endings) addit("1s", stems.pres_sub_stressed, "") insert_forms(base, "pres_sub_2s", a_to_e(base, stems.pres_sub_stressed, "s")) addit("3s", stems.pres_sub_stressed, "") addit("1p", stems.pres_sub_unstressed, "m") addit("2p", stems.pres_sub_unstressed, "u") insert_forms(base, "pres_sub_3p", a_to_e(base, stems.pres_sub_stressed, "n")) end local function add_finite_non_present(base) local stems = base.output_stems local function add_tense(slot, stem, s1, s2, s3, p1, p2, p3) add_single_stem_tense(base, slot, stem, s1, s2, s3, p1, p2, p3) end add_tense("impf", stems.impf1, "a", "es", "a", nil, nil, "en") add_tense("impf", stems.impf2, nil, nil, nil, "em", "eu", nil) -- pret_1s ends in -í regardless of the normal vowel of the stem. insert_forms(base, "pret_1s", map_general(stems.pret, function(form) local stem_base, conj_vowel = rmatch(form, "^(.*)(" .. V .. ")$") if not stem_base then error(("Internal error: Preterite stem '%s' doesn't end in vowel"):format(form)) end if rfind(conj_vowel, front_vowel_c) then stem_base = com.front_to_back(stem_base) end -- Use combine_stem_ending() to handle back-to-front conversions, e.g. pegà -> peguí for [[pegar]] and ensure -- that the prefix gets added. return combine_stem_ending(base, stem_base, "í", "is full word") end)) -- * at the beginning of the ending means to remove an accent from the last vowel of the preterite stem. add_tense("pret", stems.pret, nil, "*res", "", "rem", "reu", "*ren") -- * at the beginning of the ending means to remove an accent from the last vowel of the imperfect subjunctive stem. add_tense("impf_sub", stems.impf_sub, "s", "*ssis", "s", "ssim", "ssiu", "*ssin") add_tense("fut", stems.fut, "é", "às", "à", "em", "eu", "an") add_tense("cond", stems.cond, "*a", "*es", "*a", "em", "eu", "*en") end local function add_non_finite_forms(base) local stems = base.output_stems local function addit(slot, stems, ending, footnotes) add3(base, slot, stems, ending, footnotes) end insert_form(base, "infinitive", {form = base.orig_verb}) -- Also insert "infinitive + reflexive pronoun" combinations if we're handling a reflexive verb. See comment below -- for "gerund + reflexive pronoun" combinations. if base.refl then for _, persnum in ipairs(person_number_list) do insert_form(base, "infinitive_" .. persnum, {form = base.orig_verb}) end end -- Gerunds don't have an umlaut over the i in cases like 'abduint' of 'abduir' (not '#abduïnt'). local pres_unstressed_no_umlaut = map_general(stems.pres_unstressed, function(form) return rsub(form, "ï$", "i") end) addit("gerund", pres_unstressed_no_umlaut, "nt") -- Also insert "gerund + reflexive pronoun" combinations if we're handling a reflexive verb. We insert exactly the -- same form as for the bare gerund; later on in add_reflexive_or_fixed_clitic_to_forms(), we add the appropriate -- clitic pronouns. It's important not to do this for non-reflexive verbs, because in that case, the clitic -- pronouns won't be added, and {{ca-verb form of}} will wrongly consider all these combinations as possible -- inflections of the bare gerund. Thanks to [[User:JeffDoozan]] for this bug fix. if base.refl then for _, persnum in ipairs(person_number_list) do addit("gerund_" .. persnum, pres_unstressed_no_umlaut, "nt") end end addit("pp_ms", stems.pp, "") if not base.pp_inv then addit("pp_fs", stems.pp, "a") -- make_plural() handles the complexities of e.g. 'vist' of [[veure]] -> 'vistos'/'vists' and 'romàs' of -- [[romandre]] -> 'romasos'. We need to use flatmap_general() because make_plural() may return more than one -- plural, and we need to use map_general() on the result, applying combine_stem_ending(), to ensure that -- prefixes get properly added and plurals like 'amads' of stem 'amad' of [[amar]] get converted to 'amats'. insert_forms(base, "pp_mp", map_general(flatmap_general(stems.pp, function(form) -- Remove any # indicating that an accent will be dropped; it will be dropped in any case by make_plural(). form = form:gsub("#$", "") return com.make_plural(form, "m") end), function(form) return combine_stem_ending(base, form, "", "is full word") end)) addit("pp_fp", stems.pp, "es") end end local function add_imperatives(base) if base.noimp then return end -- Copy pres3s to imperative since they are almost always the same. insert_forms(base, "imp_2s", iut.map_forms(base.forms.pres_3s, function(form) return form end)) -- Copy pres2p to imperative plural since they are almost always the same. insert_forms(base, "imp_2p", iut.map_forms(base.forms.pres_2p, function(form) return form end)) -- Copy subjunctives to imperatives. for _, persnum in ipairs({"3s", "1p", "3p"}) do local from = "pres_sub_" .. persnum local to = "imp_" .. persnum insert_forms(base, to, iut.map_forms(base.forms[from], function(form) return form end)) end end local function fix_double_umlauts(base) for slot, forms in pairs(base.forms) do for _, form in ipairs(forms) do form.form = form.form:gsub("üï", "uï") end end end local function process_slot_overrides(base, filter_slot, reflexive_only) local overrides = reflexive_only and base.basic_reflexive_only_overrides or base.basic_overrides for slot, forms in pairs(overrides) do if not filter_slot or filter_slot(slot) then add3(base, slot, forms, "", nil, "allow overrides") end end end local function link_clitic(clitic) return (clitic:gsub("([^ %-]+)", "[[%1]]")) end -- Prefix `form` with `clitic`, adding fixed text `between` between them. Add links as appropriate unless the user -- requested no links. Check whether form already has brackets (as will be the case if the form has a fixed clitic). local function prefix_clitic_to_form(base, clitic, between, form) if base.alternant_multiword_spec.args.noautolinkverb then return clitic .. between .. form else local clitic_pref = link_clitic(clitic) .. between if form:find("%[%[") then return clitic_pref .. form else return clitic_pref .. "[[" .. form .. "]]" end end end -- Suffix `form` with `clitic`. Add links as appropriate unless the user requested no links. Check whether form already -- has brackets (as will be the case if the form has a fixed clitic). local function suffix_clitic_to_form(base, clitic, form) local autolink = not base.alternant_multiword_spec.args.noautolinkverb if base.alternant_multiword_spec.args.noautolinkverb then return form .. clitic else local clitic_suf = link_clitic(clitic) if form:find("%[%[") then return form .. clitic_suf else return "[[" .. form .. "]]" .. clitic_suf end end end -- Add a reflexive pronoun or fixed clitic (FIXME: not working), as appropriate to the base forms that were generated. -- `do_joined` means to do only the forms where the pronoun is joined to the end of the form; otherwise, do only the -- forms where it is not joined and precedes the form. local function add_reflexive_or_fixed_clitic_to_forms(base, do_reflexive, do_joined) for _, slotaccel in ipairs(base.alternant_multiword_spec.verb_slots_basic) do local slot, accel = unpack(slotaccel) local persnum if slot:find("[123]") then persnum = slot:match("^.*_(.-)$") else persnum = "3s" end local function get_proclitic(form) --if not do_reflexive then -- return base.clitic if form:find("^[aeiouh]") then return proclitic_elided_person_number_to_reflexive_pronoun[persnum] else return proclitic_non_elided_person_number_to_reflexive_pronoun[persnum] end end local function get_enclitic(form) --if not do_reflexive then -- return base.clitic if rfind(form, C .. "$") or rfind(form, V .. "[iu]$") and not form:find("[gq]ui$") then return enclitic_non_elided_person_number_to_reflexive_pronoun[persnum] else return enclitic_elided_person_number_to_reflexive_pronoun[persnum] end end if base.forms[slot] then if do_reflexive and slot:find("^pp_") or slot == "infinitive_linked" then -- do nothing with reflexive past participles or with infinitive linked (handled at the end) elseif slot:find("^neg_imp_") then error("Internal error: Should not have forms set for negative imperative at this stage") else local slot_has_suffixed_clitic = slot:find("infinitive") or slot:find("gerund") or slot:find("^imp_") -- Maybe generate non-reflexive parts and separated syntactic variants for use in -- {{ca-verb form of}}. See comment in add_slots() above `need_special_verb_form_of_slots`. -- Check for do_joined so we only run this code once. if do_reflexive and do_joined and base.alternant_multiword_spec.source_template == "ca-verb form of" and -- Skip personal variants of infinitives and gerunds so we don't think [[arrependendo]] is a -- non-reflexive equivalent of [[arrependendo-me]]. not slot:find("infinitive_") and not slot:find("gerund_") then -- Clone the forms because we will be destructively modifying them just below, adding the reflexive -- pronoun. insert_forms(base, slot .. "_non_reflexive", mw.clone(base.forms[slot])) if slot_has_suffixed_clitic then insert_forms(base, slot .. "_variant", iut.map_forms(base.forms[slot], function(form) return prefix_clitic_to_form(base, get_proclitic(form), "... ", form) end)) end end if slot_has_suffixed_clitic then if do_joined then -- Add clitic after form. for _, form in ipairs(base.forms[slot]) do form.form = suffix_clitic_to_form(base, get_enclitic(form.form), form.form) end end elseif not do_joined then -- Add clitic before form. for _, form in ipairs(base.forms[slot]) do form.form = prefix_clitic_to_form(base, get_proclitic(form.form), "", form.form) end end end end end end local function handle_infinitive_linked(base) -- Compute linked versions of potential lemma slots, for use in {{ca-verb}}. -- We substitute the original lemma (before removing links) for forms that -- are the same as the lemma, if the original lemma has links. for _, slot in ipairs({"infinitive"}) do insert_forms(base, slot .. "_linked", iut.map_forms(base.forms[slot], function(form) if form == base.lemma and rfind(base.linked_lemma, "%[%[") then return base.linked_lemma else return form end end)) end end local function generate_negative_imperatives(base) if base.noimp then return end -- Copy subjunctives to negative imperatives, preceded by "no". for _, persnum in ipairs(neg_imp_person_number_list) do local from = "pres_sub_" .. persnum local to = "neg_imp_" .. persnum insert_forms(base, to, iut.map_forms(base.forms[from], function(form) if base.alternant_multiword_spec.args.noautolinkverb then return "no " .. form elseif form:find("%[%[") then -- already linked, e.g. when reflexive return "[[no]] " .. form else return "[[no]] [[" .. form .. "]]" end end)) end end -- Process specs given by the user using 'addnote[SLOTSPEC][FOOTNOTE][FOOTNOTE][...]'. local function process_addnote_specs(base) for _, spec in ipairs(base.addnote_specs) do for _, slot_spec in ipairs(spec.slot_specs) do slot_spec = "^" .. slot_spec .. "$" for slot, forms in pairs(base.forms) do if rfind(slot, slot_spec) then -- To save on memory, side-effect the existing forms. for _, form in ipairs(forms) do form.footnotes = iut.combine_footnotes(form.footnotes, spec.footnotes) end end end end end end local function add_missing_links_to_forms(base) -- Any forms without links should get them now. Redundant ones will be stripped later. for slot, forms in pairs(base.forms) do for _, form in ipairs(forms) do if not form.form:find("%[%[") then form.form = "[[" .. form.form .. "]]" end end end end local function conjugate_verb(base) construct_stems(base) add_present_indic(base) add_present_subj(base) add_finite_non_present(base) add_non_finite_forms(base) fix_double_umlauts(base) -- do non-reflexive non-imperative slot overrides process_slot_overrides(base, function(slot) return not slot:find("^imp_") and not slot:find("^neg_imp_") end) -- This should happen after process_slot_overrides() in case a derived slot is based on an override -- (as with the imp_3s of [[dar]], [[estar]]). add_imperatives(base) -- do non-reflexive positive imperative slot overrides process_slot_overrides(base, function(slot) return slot:find("^imp_") end) -- We need to add joined reflexives, then joined and non-joined clitics, then non-joined reflexives, so we get -- [[arrepéndete]] but [[no]] [[te]] [[arrependas]]. if base.refl then add_reflexive_or_fixed_clitic_to_forms(base, "do reflexive", "do joined") process_slot_overrides(base, nil, "do reflexive") -- do reflexive-only slot overrides add_reflexive_or_fixed_clitic_to_forms(base, "do reflexive", false) end -- This should happen after add_reflexive_or_fixed_clitic_to_forms() so negative imperatives get the reflexive pronoun -- and clitic in them. generate_negative_imperatives(base) -- do non-reflexive negative imperative slot overrides -- FIXME: What about reflexive negative imperatives? process_slot_overrides(base, function(slot) return slot:find("^neg_imp_") end) -- This should happen before add_missing_links_to_forms() so that the comparison `form == base.lemma` -- in handle_infinitive_linked() works correctly and compares unlinked forms to unlinked forms. handle_infinitive_linked(base) process_addnote_specs(base) if not base.alternant_multiword_spec.args.noautolinkverb then add_missing_links_to_forms(base) end end local function parse_indicator_spec(angle_bracket_spec) -- Store the original angle bracket spec so we can reconstruct the overall conj spec with the lemma(s) in them. local base = { angle_bracket_spec = angle_bracket_spec, user_basic_overrides = {}, user_stems = {}, addnote_specs = {}, } local function parse_err(msg) error(msg .. ": " .. angle_bracket_spec) end local function fetch_footnotes(separated_group) local footnotes for j = 2, #separated_group - 1, 2 do if separated_group[j + 1] ~= "" then parse_err("Extraneous text after bracketed footnotes: '" .. table.concat(separated_group) .. "'") end if not footnotes then footnotes = {} end table.insert(footnotes, separated_group[j]) end return footnotes end local inside = angle_bracket_spec:match("^<(.*)>$") assert(inside) if inside == "" then return base end local segments = put.parse_balanced_segment_run(inside, "[", "]") local dot_separated_groups = put.split_alternating_runs(segments, "%.") for i, dot_separated_group in ipairs(dot_separated_groups) do local first_element = dot_separated_group[1] if first_element == "addnote" then local spec_and_footnotes = fetch_footnotes(dot_separated_group) if #spec_and_footnotes < 2 then parse_err("Spec with 'addnote' should be of the form 'addnote[SLOTSPEC][FOOTNOTE][FOOTNOTE][...]'") end local slot_spec = table.remove(spec_and_footnotes, 1) local slot_spec_inside = rmatch(slot_spec, "^%[(.*)%]$") if not slot_spec_inside then parse_err("Internal error: slot_spec " .. slot_spec .. " should be surrounded with brackets") end local slot_specs = rsplit(slot_spec_inside, ",") -- FIXME: Here, [[Module:it-verb]] called strip_spaces(). Generally we don't do this. Should we? table.insert(base.addnote_specs, {slot_specs = slot_specs, footnotes = spec_and_footnotes}) elseif indicator_flags[first_element] then if #dot_separated_group > 1 then parse_err("No footnotes allowed with '" .. first_element .. "' spec") end if base[first_element] then parse_err("Spec '" .. first_element .. "' specified twice") end base[first_element] = true elseif first_element:find("^var:") then if #dot_separated_group > 1 then parse_err(("Can't attach footnotes to 'var:' spec '%s'"):format(first_element)) end base.var = first_element:match("^var:(.*)$") elseif first_element:find(":") then local colon_separated_groups = put.split_alternating_runs(dot_separated_group, "%s*:%s*") local first_element = colon_separated_groups[1][1] if #colon_separated_groups[1] > 1 then parse_err("Can't attach footnotes directly to '" .. first_element .. "' spec; attach them to the " .. "colon-separated values following the initial colon") end if overridable_stems[first_element] then if base.user_stems[first_element] then parse_err("Overridable stem '" .. first_element .. "' specified twice") end table.remove(colon_separated_groups, 1) base.user_stems[first_element] = overridable_stems[first_element](colon_separated_groups, {prefix = first_element, base = base, parse_err = parse_err, fetch_footnotes = fetch_footnotes}) else -- assume a basic override; we validate further later when the possible slots are available if base.user_basic_overrides[first_element] then parse_err("Basic override '" .. first_element .. "' specified twice") end table.remove(colon_separated_groups, 1) base.user_basic_overrides[first_element] = allow_multiple_values_for_override(colon_separated_groups, {prefix = first_element, base = base, parse_err = parse_err, fetch_footnotes = fetch_footnotes}, "is form override") end else parse_err("Unrecognized spec '" .. first_element .. "'") end end return base end -- Normalize all lemmas, substituting the pagename for blank lemmas and adding links to multiword lemmas. local function normalize_all_lemmas(alternant_multiword_spec, head) -- (1) Add links to all before and after text. Remember the original text so we can reconstruct the verb spec later. if not alternant_multiword_spec.args.noautolinktext then iut.add_links_to_before_and_after_text(alternant_multiword_spec, "remember original") end -- (2) Remove any links from the lemma, but remember the original form so we can use it below in the 'lemma_linked' -- form. iut.map_word_specs(alternant_multiword_spec, function(base) if base.lemma == "" then base.lemma = head end base.user_specified_lemma = base.lemma base.lemma = m_links.remove_links(base.lemma) local refl_verb = base.lemma local verb, refl = rmatch(refl_verb, "^(.-)%-(se)$") if not verb then verb, refl = rmatch(refl_verb, "^(.-)('s)$") end if not verb then verb, refl = refl_verb, nil end base.user_specified_verb = verb base.refl = refl base.verb = base.user_specified_verb local linked_lemma if alternant_multiword_spec.args.noautolinkverb or base.user_specified_lemma:find("%[%[") then linked_lemma = base.user_specified_lemma elseif base.refl then -- Reconstruct the linked lemma with separate links around base verb, reflexive pronoun and clitic. linked_lemma = base.user_specified_verb == base.verb and "[[" .. base.user_specified_verb .. "]]" or "[[" .. base.verb .. "|" .. base.user_specified_verb .. "]]" linked_lemma = linked_lemma .. (refl and "-[[" .. refl .. "]]" or "") else -- Add links to the lemma so the user doesn't specifically need to, since we preserve links in multiword -- lemmas and include links in non-lemma forms rather than allowing the entire form to be a link. linked_lemma = iut.add_links(base.user_specified_lemma) end base.linked_lemma = linked_lemma end) end local function detect_indicator_spec(base) if (base.only3s and 1 or 0) + (base.only3sp and 1 or 0) + (base.only3p and 1 or 0) > 1 then error("Only one of 'only3s', 'only3sp' and 'only3p' can be specified") end base.forms = {} base.input_stems = {} base.basic_overrides = {} base.basic_reflexive_only_overrides = {} base.orig_verb = base.verb -- in case of a 'like = "..."' redirect if not base.no_built_in then local function match_built_in_spec(verb, built_in_spec) local prefix, non_prefixed_verb if type(built_in_spec.match) == "function" then prefix, non_prefixed_verb = built_in_spec.match(verb) elseif built_in_spec.match:find("^%^") and rsub(built_in_spec.match, "^%^", "") == verb then -- begins with ^, for exact match, and matches prefix, non_prefixed_verb = "", verb else prefix, non_prefixed_verb = rmatch(verb, "^(.*)(" .. built_in_spec.match .. ")$") end return prefix, non_prefixed_verb end local function find_built_in(verb, var) for _, built_in_spec in ipairs(built_in_conjugations) do local prefix, non_prefixed_verb = match_built_in_spec(verb, built_in_spec) if prefix then if not built_in_spec.var then if var then error(("Can't specify a variant spec 'var:%s' with verb '%s'"):format(var, verb)) end return prefix, non_prefixed_verb, built_in_spec elseif not var then local possible_vars = {} for _, built_in_spec in ipairs(built_in_conjugations) do local prefix, non_prefixed_verb = match_built_in_spec(verb, built_in_spec) if prefix then table.insert(possible_vars, built_in_spec.var) end end error(("For verb '%s', must specify a variant using 'var:...'; possible values are %s"):format( verb, table.concat(possible_vars, ", "))) elseif built_in_spec.var == var then return prefix, non_prefixed_verb, built_in_spec end end end return nil end local prefix, non_prefixed_verb, built_in_spec = find_built_in(base.verb, base.var) if prefix then -- we found a built-in verb if built_in_spec.like then -- we found a redirect to another verb that has the same conjugation, just a different infinitive base.verb = prefix .. built_in_spec.like local new_prefix, new_non_prefixed_verb, new_built_in_spec = find_built_in(base.verb, built_in_spec.likevar) if new_prefix then -- redirected to another built-in verb base.prefix = new_prefix base.non_prefixed_verb = new_non_prefixed_verb built_in_spec = new_built_in_spec else built_in_spec = nil end else base.prefix = prefix base.non_prefixed_verb = non_prefixed_verb end end if built_in_spec then -- we found a built-in verb, possibly redirecting to another built-in verb for stem, forms in pairs(built_in_spec.forms) do if type(forms) == "function" then forms = forms(base, base.prefix) end if stem:find("^refl_") then stem = stem:gsub("^refl_", "") if not base.alternant_multiword_spec.verb_slots_basic_map[stem] then error("Internal error: setting for 'refl_" .. stem .. "' does not refer to a basic verb slot") end base.basic_reflexive_only_overrides[stem] = forms elseif base.alternant_multiword_spec.verb_slots_basic_map[stem] then -- an individual form override of a basic form base.basic_overrides[stem] = forms else base.input_stems[stem] = forms end end end end -- Override built-in-verb stems and overrides with user-specified ones. for stem, values in pairs(base.user_stems) do base.input_stems[stem] = values end for override, values in pairs(base.user_basic_overrides) do if not base.alternant_multiword_spec.verb_slots_basic_map[override] then error("Unrecognized override '" .. override .. "': " .. base.angle_bracket_spec) end base.basic_overrides[override] = values end base.prefix = base.prefix or "" base.non_prefixed_verb = base.non_prefixed_verb or base.verb local inf_stem, suffix = rmatch(base.non_prefixed_verb, "^(.*)(re)$") if not inf_stem then inf_stem, suffix = rmatch(base.non_prefixed_verb, "^(.*)([aeiu]r)$") end if not inf_stem then error("Unrecognized infinitive: " .. base.verb) end -- Remove accents from e.g. [[parèixer]], [[córrer]]. inf_stem = com.remove_accents(inf_stem) -- Save full infinitive stem for use in future and conditional. base.inf_stem = (inf_stem .. suffix):gsub("e$", "") local stem = inf_stem if suffix == "re" then -- verbs in -ldre, -ndre have stem without the d stem = stem:gsub("([ln])d$", "%1") elseif suffix == "ur" then stem = stem .. "u" end base.conj_vowel = (suffix == "re" or suffix == "ur") and "e" or suffix:gsub("r$", "") -- If the stem is followed by a front vowel, convert it to its "back" form before calling combine_stem_ending(), -- which expects the "back" form of the stem and may convert it back to the "front" form. Don't do this conversion -- for ï so we leave [[arguïr]] (underlyingly 'argüïr') as 'argu' ("back" form), which becomes 'argü' ("front" form) -- before front vowel ï and we end up with base.stem containing the underlying form 'argüï'. We remove the first of -- two umlauts in a row in a postprocessing step (fix_double_umlauts()). if rfind(suffix, "^[ei]") then stem = com.front_to_back(stem) end -- Use combine_stem_ending() so we get ï if necessary. base.stem = combine_stem_ending(base, stem, base.conj_vowel, false, "dont include prefix") -- Propagate built-in-verb indicator flags to `base` and combine with user-specified flags. for indicator_flag, _ in pairs(indicator_flags) do base[indicator_flag] = base[indicator_flag] or base.input_stems[indicator_flag] end end local function detect_all_indicator_specs(alternant_multiword_spec) -- Propagate some settings up; some are used internally, others by [[Module:pt-headword]]. iut.map_word_specs(alternant_multiword_spec, function(base) -- Internal indicator flags. Do these before calling detect_indicator_spec() because add_slots() uses them. for _, prop in ipairs { "refl", "clitic" } do if base[prop] then alternant_multiword_spec[prop] = true end end base.alternant_multiword_spec = alternant_multiword_spec end) add_slots(alternant_multiword_spec) iut.map_word_specs(alternant_multiword_spec, function(base) detect_indicator_spec(base) -- User-specified indicator flags. Do these after calling detect_indicator_spec() because the latter may set these -- indicators for built-in verbs. for prop, _ in pairs(indicator_flags) do if base[prop] then alternant_multiword_spec[prop] = true end end end) end local function add_categories_and_annotation(alternant_multiword_spec, base, multiword_lemma) local function insert_ann(anntype, value) m_table.insertIfNot(alternant_multiword_spec.annotation[anntype], value) end local function insert_cat(cat, also_when_multiword) -- Don't place multiword terms in categories like 'Catalan verbs ending in -ar' to avoid spamming the -- categories with such terms. if also_when_multiword or not multiword_lemma then m_table.insertIfNot(alternant_multiword_spec.categories, "カタルーニャ語 " .. cat) end end if check_for_red_links and alternant_multiword_spec.source_template == "ca-conj" and multiword_lemma then for _, slot_and_accel in ipairs(alternant_multiword_spec.all_verb_slots) do local slot = slot_and_accel[1] local forms = base.forms[slot] local must_break = false if forms then for _, form in ipairs(forms) do if not form.form:find("%[%[") then local title = mw.title.new(form.form) if title and not title.exists then insert_cat("活用表に赤リンクを含む動詞") must_break = true break end end end end if must_break then break end end end map_general(base.output_stems.stem, function(stem) local stem_base, conj_vowel = split_conj_vowel(stem) local need_no_eix_infix = true if conj_vowel ~= base.conj_vowel then insert_ann("conj", "[[付録:カタルーニャ語の動詞#不規則動詞|混合活用]]") elseif conj_vowel == "a" then insert_ann("conj", "[[付録:カタルーニャ語の動詞#第一変化動詞|第一変化]]") insert_cat("第一変化動詞") elseif conj_vowel == "e" then insert_ann("conj", "[[付録:カタルーニャ語の動詞#第二変化動詞|第二変化]]") insert_cat("第二変化動詞") elseif conj_vowel == "i" then insert_ann("conj", "[[付録:カタルーニャ語の動詞#第三変化動詞|第三変化]]") insert_cat("第三変化動詞") need_no_eix_infix = false map_general(base.output_stems.eix_infix, function(form) if form == "+" then insert_ann("eix_infix", "接中辞-eix-有り") insert_cat("-eix-を含む第三変化動詞") elseif form == "-" then insert_ann("eix_infix", "接中辞-eix-無し") insert_cat("-eix-を含まない第三変化動詞") end end) else error(("Internal error: Stem '%s' doesn't end in conjugation vowel a/e/i and split_conj_vowel() didn't catch it" ):format(stem)) end if need_no_eix_infix then insert_ann("eix_infix", "接中辞無し") end end) if base.input_stems.g_infix then insert_ann("g_infix", "軟口蓋接中辞有り") insert_cat("軟口蓋接中辞を含む動詞") else insert_ann("g_infix", "no infix") end if base.output_stems.irreg then insert_ann("irreg", "不規則") insert_cat("不規則動詞") else insert_ann("irreg", "regular") end if base.only3s then insert_ann("defective", "非人称") insert_cat("非人称動詞") elseif base.only3sp then insert_ann("defective", "第三人称のみ") insert_cat("第三人称動詞") elseif base.only3p then insert_ann("defective", "第三人称複数のみ") insert_cat("第三人称複数動詞") elseif base.no_pres_stressed then insert_ann("defective", "欠如") insert_cat("欠如動詞") else insert_ann("defective", "規則動詞") end --if base.clitic then -- insert_cat("verbs with lexical clitics") --end if base.refl then insert_cat("再帰動詞") end local stem_base, conj_vowel = split_conj_vowel(base.stem) local cons_alt if conj_vowel == "i" and base.output_stems.eix_infix == "+" then -- no alternations in verbs like [[afligir]] because all endings are front elseif stem_base:find("ç$") then cons_alt = "ç-c" elseif stem_base:find("c$") then cons_alt = "c-qu" elseif stem_base:find("g$") then cons_alt = "g-gu" elseif stem_base:find("gu$") then cons_alt = "gu-gü" elseif stem_base:find("j$") then cons_alt = "j-g" elseif stem_base:find("qu$") then cons_alt = "qu-qü" end if cons_alt then local desc = cons_alt .. " alternation" insert_ann("cons_alt", desc) insert_cat(desc .. "交替の動詞") else insert_ann("cons_alt", "non-alternating") end end -- Compute the categories to add the verb to, as well as the annotation to display in the -- conjugation title bar. We combine the code to do these functions as both categories and -- title bar contain similar information. local function compute_categories_and_annotation(alternant_multiword_spec) alternant_multiword_spec.categories = {} local ann = {} alternant_multiword_spec.annotation = ann ann.conj = {} ann.g_infix = {} ann.eix_infix = {} ann.irreg = {} ann.defective = {} ann.cons_alt = {} local multiword_lemma = false for _, form in ipairs(alternant_multiword_spec.forms.infinitive) do if form.form:find(" ") then multiword_lemma = true break end end iut.map_word_specs(alternant_multiword_spec, function(base) add_categories_and_annotation(alternant_multiword_spec, base, multiword_lemma) end) local ann_parts = {} local conj = table.concat(ann.conj, " or ") if conj ~= "" then table.insert(ann_parts, conj) end local eix_infix = table.concat(ann.eix_infix, " or ") if eix_infix ~= "" and eix_infix ~= "no infix" then table.insert(ann_parts, eix_infix) end local irreg = table.concat(ann.irreg, " or ") if irreg ~= "" and irreg ~= "regular" then table.insert(ann_parts, irreg) end local g_infix = table.concat(ann.g_infix, " or ") if g_infix ~= "" and g_infix ~= "no infix" then table.insert(ann_parts, g_infix) end local defective = table.concat(ann.defective, " or ") if defective ~= "" and defective ~= "regular" then table.insert(ann_parts, defective) end local cons_alt = table.concat(ann.cons_alt, " or ") if cons_alt ~= "" and cons_alt ~= "non-alternating" then table.insert(ann_parts, cons_alt) end alternant_multiword_spec.annotation = table.concat(ann_parts, ", ") end local function show_forms(alternant_multiword_spec) local lemmas = alternant_multiword_spec.forms.infinitive alternant_multiword_spec.lemmas = lemmas -- save for later use in make_table() local reconstructed_verb_spec = iut.reconstruct_original_spec(alternant_multiword_spec) local function transform_accel_obj(slot, formobj, accel_obj) -- No accelerators for negative imperatives, which are always multiword and derived directly from the -- present subjunctive. if slot:find("^neg_imp") then return nil end if accel_obj then accel_obj.form = "verb-form-" .. reconstructed_verb_spec end return accel_obj end local props = { lang = lang, lemmas = lemmas, transform_accel_obj = transform_accel_obj, slot_list = alternant_multiword_spec.verb_slots_basic, } iut.show_forms(alternant_multiword_spec.forms, props) alternant_multiword_spec.footnote_basic = alternant_multiword_spec.forms.footnote end local notes_template = [=[ <div class="roa-footnote-outer-div" style="width:100%;"> <div class="roa-footnote-inner-div"> {footnote} </div></div> ]=] local basic_table = [=[ {description}<div class="NavFrame"> <div class="NavHead">&nbsp; &nbsp; {title} の活用</div> <div class="NavContent"> {\op}| class="roa-inflection-table" data-toggle-category="inflection" |- ! colspan="3" class="roa-nonfinite-header" | <span title="infinitiu">不定詞</span> | colspan="5" | {infinitive} |- ! colspan="3" class="roa-nonfinite-header" | <span title="gerundi">現在分詞</span> | colspan="5" | {gerund} |- ! rowspan="3" colspan="2" class="roa-nonfinite-header" | <span title="participi passat">過去分詞</span> | colspan="2" class="roa-nonfinite-header" | ! colspan="2" class="roa-nonfinite-header" | 男性 ! colspan="2" class="roa-nonfinite-header" | 女性 |- ! colspan="2" class="roa-nonfinite-header" | 単数 | colspan="2" | {pp_ms} | colspan="2" | {pp_fs} |- ! colspan="2" class="roa-nonfinite-header" | 複数 | colspan="2" | {pp_mp} | colspan="2" | {pp_fp} |- ! colspan="2" rowspan="2" class="roa-person-number-header" | 人称 ! colspan="3" class="roa-person-number-header" | 単数 ! colspan="3" class="roa-person-number-header" | 複数 |- ! class="roa-person-number-header" style="width:12.5%;" | 第一人称 ! class="roa-person-number-header" style="width:12.5%;" | 第二人称 ! class="roa-person-number-header" style="width:12.5%;" | 第三人称 ! class="roa-person-number-header" style="width:12.5%;" | 第一人称 ! class="roa-person-number-header" style="width:12.5%;" | 第二人称 ! class="roa-person-number-header" style="width:12.5%;" | 第三人称 |- ! rowspan="6" class="roa-indicative-left-rail" | <span title="indicatiu">直説法</span> ! class="roa-indicative-left-rail" | ! class="roa-indicative-left-rail" | <<jo>> ! class="roa-indicative-left-rail" | <<tu>> ! class="roa-indicative-left-rail" | <<ell>>/<<ella>><br /><<vostè>> ! class="roa-indicative-left-rail" | <<nosaltres>><br /><<nós>> ! class="roa-indicative-left-rail" | <<vosaltres>><br /><<vós>> ! class="roa-indicative-left-rail" | <<ells>>/<<elles>><br /><<vostès>> |- ! class="roa-indicative-left-rail" style="height:3em;" | <span title="present">現在</span> | {pres_1s} | {pres_2s} | {pres_3s} | {pres_1p} | {pres_2p} | {pres_3p} |- ! class="roa-indicative-left-rail" style="height:3em;" | <span title="imperfet">不完了過去</span> | {impf_1s} | {impf_2s} | {impf_3s} | {impf_1p} | {impf_2p} | {impf_3p} |- ! class="roa-indicative-left-rail" style="height:3em;" | <span title="futur">未来</span> | {fut_1s} | {fut_2s} | {fut_3s} | {fut_1p} | {fut_2p} | {fut_3p} |- ! class="roa-indicative-left-rail" style="height:3em;" | <span title="passat">完了過去</span> | {pret_1s} | {pret_2s} | {pret_3s} | {pret_1p} | {pret_2p} | {pret_3p} |- ! class="roa-indicative-left-rail" style="height:3em;" | <span title="condicional">可能法</span> | {cond_1s} | {cond_2s} | {cond_3s} | {cond_1p} | {cond_2p} | {cond_3p} |- ! class="roa-subjunctive-left-rail" rowspan="3" | <span title="subjuntiu">接続法</span> ! class="roa-subjunctive-left-rail" | ! class="roa-subjunctive-left-rail" | <<jo>> ! class="roa-subjunctive-left-rail" | <<tu>> ! class="roa-subjunctive-left-rail" | <<ell>>/<<ella>><br /><<vostè>> ! class="roa-subjunctive-left-rail" | <<nosaltres>><br /><<nós>> ! class="roa-subjunctive-left-rail" | <<vosaltres>><br /><<vós>> ! class="roa-subjunctive-left-rail" | <<ells>>/<<elles>><br /><<vostès>> |- ! class="roa-subjunctive-left-rail" style="height:3em;" | <span title="present">現在</span> | {pres_sub_1s} | {pres_sub_2s} | {pres_sub_3s} | {pres_sub_1p} | {pres_sub_2p} | {pres_sub_3p} |- ! class="roa-subjunctive-left-rail" style="height:3em;" rowspan="1" | <span title="imperfet">過去</span> | {impf_sub_1s} | {impf_sub_2s} | {impf_sub_3s} | {impf_sub_1p} | {impf_sub_2p} | {impf_sub_3p} |- ! rowspan="3" class="roa-imperative-left-rail" style="height:3em;" | <span title="imperatiu">命令法</span> ! class="roa-imperative-left-rail" | ! class="roa-imperative-left-rail" | &mdash; ! class="roa-imperative-left-rail" | <<tu>> ! class="roa-imperative-left-rail" | <<vostè>> ! class="roa-imperative-left-rail" | <<nosaltres>> ! class="roa-imperative-left-rail" | <<vosaltres>><br /><<vós>> ! class="roa-imperative-left-rail" | <<vostès>> |- ! class="roa-imperative-left-rail" style="height:3em;" | <span title="afirmatiu">-</span> | &mdash; | {imp_2s} | {imp_3s} | {imp_1p} | {imp_2p} | {imp_3p} |- ! class="roa-imperative-left-rail" style="height:3em;" | <span title="negatiu">禁止</span> (<<no>>) | &mdash; | {neg_imp_2s} | {neg_imp_3s} | {neg_imp_1p} | {neg_imp_2p} | {neg_imp_3p} |{\cl}{notes_clause}</div></div>]=] local function make_table(alternant_multiword_spec) local forms = alternant_multiword_spec.forms forms.title = link_term(alternant_multiword_spec.lemmas[1].form, nil, "term") local ann_parts = {} if alternant_multiword_spec.annotation ~= "" then table.insert(ann_parts, alternant_multiword_spec.annotation) end if alternant_multiword_spec.args.titlenote then table.insert(ann_parts, alternant_multiword_spec.args.titlenote) end local annotation = table.concat(ann_parts, ", ") if annotation ~= "" then forms.title = forms.title .. " (" .. annotation .. ")" end forms.description = "" -- Format the table. forms.footnote = alternant_multiword_spec.footnote_basic forms.notes_clause = forms.footnote ~= "" and m_string_utilities.format(notes_template, forms) or "" local table_with_pronouns = rsub(basic_table, "<<([^<>|]-)|([^<>|]-)>>", link_term) local table_with_pronouns = rsub(table_with_pronouns, "<<(.-)>>", link_term) return require("Module:TemplateStyles")("Module:roa-verb/style.css") .. m_string_utilities.format(table_with_pronouns, forms) end -- Externally callable function to parse and conjugate a verb given user-specified arguments. -- Return value is WORD_SPEC, an object where the conjugated forms are in `WORD_SPEC.forms` -- for each slot. If there are no values for a slot, the slot key will be missing. The value -- for a given slot is a list of objects {form=FORM, footnotes=FOOTNOTES}. function export.do_generate_forms(args, source_template, headword_head) local PAGENAME = mw.loadData("Module:headword/data").pagename local function in_template_space() return mw.title.getCurrentTitle().nsText == "テンプレート" end -- Determine the verb spec we're being asked to generate the conjugation of. This may be taken from the -- current page title or the value of |pagename=; but not when called from {{ca-verb form of}}, where the -- page title is a non-lemma form. Note that the verb spec may omit the infinitive; e.g. it may be "<i-e>". -- For this reason, we use the value of `pagename` computed here down below, when calling normalize_all_lemmas(). local pagename = source_template ~= "ca-verb form of" and args.pagename or PAGENAME local head = headword_head or pagename local arg1 = args[1] if not arg1 then if (pagename == "ca-conj" or pagename == "ca-verb" or pagename == "ca-verb form of") and in_template_space() then arg1 = "amar<>" else arg1 = "<>" end end -- When called from {{ca-verb form of}}, determine the non-lemma form whose inflections we're being asked to -- determine. This normally comes from the page title or the value of |pagename=. local verb_form_of_form if source_template == "ca-verb form of" then verb_form_of_form = args.pagename if not verb_form_of_form then if PAGENAME == "ca-verb form of" and in_template_space() then verb_form_of_form = "ami" else verb_form_of_form = PAGENAME end end end local incorporated_headword_head_into_lemma = false if arg1:find("^<.*>$") then -- missing lemma if head:find(" ") then -- If multiword lemma, try to add arg spec after the first word. -- Try to preserve the brackets in the part after the verb, but don't do it -- if there aren't the same number of left and right brackets in the verb -- (which means the verb was linked as part of a larger expression). local refl_clitic_verb, post = rmatch(head, "^(.-)( .*)$") local left_brackets = rsub(refl_clitic_verb, "[^%[]", "") local right_brackets = rsub(refl_clitic_verb, "[^%]]", "") if #left_brackets == #right_brackets then arg1 = iut.remove_redundant_links(refl_clitic_verb) .. arg1 .. post incorporated_headword_head_into_lemma = true else -- Try again using the form without links. local linkless_head = m_links.remove_links(head) if linkless_head:find(" ") then refl_clitic_verb, post = rmatch(linkless_head, "^(.-)( .*)$") arg1 = refl_clitic_verb .. arg1 .. post else error("Unable to incorporate <...> spec into explicit head due to a multiword linked verb or " .. "unbalanced brackets; please include <> explicitly: " .. arg1) end end else -- Will be incorporated through `head` below in the call to normalize_all_lemmas(). incorporated_headword_head_into_lemma = true end end local function split_bracketed_runs_into_words(bracketed_runs) return put.split_alternating_runs(bracketed_runs, " ", "preserve splitchar") end local parse_props = { parse_indicator_spec = parse_indicator_spec, -- Split words only on spaces, not on hyphens, because that messes up reflexive verb parsing. split_bracketed_runs_into_words = split_bracketed_runs_into_words, allow_default_indicator = true, allow_blank_lemma = true, } local alternant_multiword_spec = iut.parse_inflected_text(arg1, parse_props) alternant_multiword_spec.pos = pos or "verbs" alternant_multiword_spec.args = args alternant_multiword_spec.source_template = source_template alternant_multiword_spec.verb_form_of_form = verb_form_of_form alternant_multiword_spec.incorporated_headword_head_into_lemma = incorporated_headword_head_into_lemma normalize_all_lemmas(alternant_multiword_spec, head) detect_all_indicator_specs(alternant_multiword_spec) local inflect_props = { slot_list = alternant_multiword_spec.all_verb_slots, inflect_word_spec = conjugate_verb, -- We add links around the generated verbal forms rather than allow the entire multiword -- expression to be a link, so ensure that user-specified links get included as well. include_user_specified_links = true, } iut.inflect_multiword_or_alternant_multiword_spec(alternant_multiword_spec, inflect_props) -- Remove redundant brackets around entire forms. for slot, forms in pairs(alternant_multiword_spec.forms) do for _, form in ipairs(forms) do form.form = iut.remove_redundant_links(form.form) end end compute_categories_and_annotation(alternant_multiword_spec) if args.json and source_template == "ca-conj" then return require("Module:JSON").toJSON(alternant_multiword_spec.forms) end return alternant_multiword_spec end -- Entry point for {{ca-conj}}. Template-callable function to parse and conjugate a verb given -- user-specified arguments and generate a displayable table of the conjugated forms. function export.show(frame) local parent_args = frame:getParent().args local params = { [1] = {}, ["titlenote"] = {}, ["noautolinktext"] = {type = "boolean"}, ["noautolinkverb"] = {type = "boolean"}, ["pagename"] = {}, -- for testing/documentation pages ["json"] = {type = "boolean"}, -- for bot use } local args = require("Module:parameters").process(parent_args, params) local alternant_multiword_spec = export.do_generate_forms(args, "ca-conj") if type(alternant_multiword_spec) == "string" then -- JSON return value return alternant_multiword_spec end show_forms(alternant_multiword_spec) return make_table(alternant_multiword_spec) .. require("Module:utilities").format_categories(alternant_multiword_spec.categories, lang, nil, nil, force_cat) end return export 8t3cg5alvmvtssqspxbmpq0xy0dfqca 2313420 2313418 2026-08-09T09:41:26Z Kuroco2k 84207 2313420 Scribunto text/plain --[=[ This module implements {{ca-conj}} and provides the underlying conjugation functions for {{ca-verb}} (whose actual formatting is done in [[Module:ca-headword]]). Authorship: Ben Wing <benwing2> ]=] local export = {} --[=[ TERMINOLOGY: -- "slot" = A particular combination of tense/mood/person/number/etc. Example slot names for verbs are "pres_1s" (present indicative first-person singular), "pres_sub_2s" (present subjunctive second-person singular) "impf_sub_3p" (imperfect subjunctive third-person plural). Each slot is filled with zero or more forms. -- "form" = The conjugated Catalan form representing the value of a given slot. -- "lemma" = The dictionary form of a given Catalan term. For Catalan, always the infinitive. ]=] --[=[ FIXME: --]=] local lang = require("Module:languages").getByCode("ca") local m_string_utilities = require("Module:string utilities") local m_links = require("Module:links") local m_table = require("Module:table") local iut = require("Module:inflection utilities") local put = require("Module:parse utilities") local com = require("Module:ca-common") local force_cat = false -- set to true for debugging local check_for_red_links = false -- set to false for debugging local rfind = mw.ustring.find local rmatch = mw.ustring.match local rsplit = mw.text.split local rsubn = mw.ustring.gsub local rsub = com.rsub local u = mw.ustring.char local unpack = unpack or table.unpack -- Lua 5.2 compatibility -- version of rsubn() that returns a 2nd argument boolean indicating whether a substitution was made. local function rsubb(term, foo, bar) local retval, nsubs = rsubn(term, foo, bar) return retval, nsubs > 0 end local function link_term(term, display, face) return m_links.full_link({ lang = lang, term = term, alt = display }, face) end local front_vowel = "eèéiíï" local front_vowel_c = "[" .. front_vowel .. "]" local V = com.V -- vowel regex class local C = com.C -- consonant regex class -- IS_USER_STEM_OVERRIDE is prepended to user-supplied stem overrides to prevent `base.prefix` from being prepended. -- IS_USER_FORM_OVERRIDE is similar but also prevents final devoicing (cf. Balearic pres_1s 'trob' of [[trobar]]). -- Don't use 0xFFF0 in case we call a [[Module:parse-utilities]] function that uses it temporarily. local IS_USER_STEM_OVERRIDE = u(0xFFF1) local IS_USER_FORM_OVERRIDE = u(0xFFF2) --[=[ Irregular verbs: -ldre/-ndre verbs: infinitive pres1s pres3s pres1p impf1s fut1s pret1s sub1s sub1p pp caldre - cal [calent] calia caldrà calgué calgui - calgut,- coldre colc col colem colia coldré colguí colgui colguem colt,colta doldre dolc dol dolem dolia doldré dolguí dolgui dolguem dolgut,dolguda moldre molc mol molem molia moldré molguí molgui molguem molt,molta oldre olc ol olem olia oldré olguí olgui olguem olgut,olguda -soldre -solc -sol -solem -solia -soldré -solguí -solgui -solguem -solt,-solta (absoldre, dissoldre, resoldre) toldre tolc tol tolem tolia toldré tolguí tolgui tolguem tolt,tolta romandre romanc roman romanem romania romandré romanguí romangui romanguem romàs,romasa,romasos encendre encenc encén encenem encenia encendré encenguí encengui encenguem encès,encesa,encesos fendre fenc fen/-fèn fenem fenia fendré fenguí fengui fenguem fes/-fès,fesa,fesos (defendre, ofendre) -pendre -depenc -pèn -penem -penia -pendré -penguí -pengui -penguem -pès,-pesa,-pesos (dependre,despendre,expendre,suspendre) prendre prenc pren/-prèn prenem prenia prendré prenguí prengui prenguem pres/-près,presa,presos (aprendre, comprendre, desprendre, emprendre, reprendre, sorprendre) -tendre -tenc -tén -tenem -tenia -tendré -tenguí -tengui -tenguem -tès,-tesa,-tesos (pres2s: atens, pres3p: atenen) (atendre, contendre, distendre, entendre, estendre, pretendre) vendre venc ven venem venia vendré venguí vengui venguem venut,venuda (malvendre, revendre) fondre fonc fon fonem fonia fondré fonguí fongui fonguem fos/-fós,fosa,fosos (confondre, difondre, infondre, refondre) enfondre enfonc enfon enfonem enfonia enfondré enfonguí enfongui enfonguem enfús,enfusa,enfusos pondre ponc pon ponem ponia pondré ponguí pongui ponguem post,posta,postos (compondre, correspondre, descompondre, respondre) tondre tonc ton tonem tonia tondré tonguí tongui tonguem tos,tosa,tosos cerndre cerno cern cernem cernia cerndré cerní cerni cernem cernut,cernuda -ler verbs (mostly like -ldre verbs): infinitive pres1s pres3s pres1p impf1s fut1s pret1s sub1s sub1p pp caler (var. of caldre) doler (var. of doldre) soler solc sol solem solia soldré solguí solgui solguem solgut,solguda valer/valdre valc val valem valia valdré valguí valgui valguem valgut,valguda (prevaler, equivaler) other -dre/-tre verbs (regular except sometimes pp): infinitive pres1s pres3s pres1p impf1s fut1s pret1s sub1s sub1p pp batre bato bat batem batia batré batí bati batem batut,batuda -metre -meto -met -metem -metia -metré -metí -meti -metem -mès,-mesa,-mesos (ad-, co-, compro-, e-, entremetre's, mal-, o-, per-, pro-, read-, re-, retrans-, sot-, tra-, trans-) perdre perdo perd perdem perdia perdré perdí perdi perdem perdut,perduda -ure verbs infinitive pres1s pres3s pres1p impf1s impf1p fut1s pret1s sub1s sub1p pp caure caic cau caiem queia quèiem cauré caiguí caigui caiguem caigut,caiguda (decaure, recaure) plaure plac plau plaem plaïa plaíem plauré plaguí plagui plaguem plagut,plaguda (complaure) raure rac rau raem raïa raíem rauré raguí ragui raguem ragut,raguda beure bec beu bevem bevia bevíem beuré beguí begui beguem begut,beguda (embeure) creure crec creu creiem creia crèiem creuré creguí cregui creguem cregut,creguda deure dec deu devem devia devíem deuré deguí degui deguem degut,deguda jeure jec jeu jaiem jeia jèiem jauré jaguí jegui jaguem jagut,jaguda (ajeure) lleure - lleu [-] llevia - lleurà llegué llegui - llegut,- seure sec seu seiem seia sèiem seuré seguí segui seguem segut,seguda (asseure) treure trec treu traiem treia trèiem trauré traguí tregui traguem tret,treta (abstreure, atreure, contreure, distreure, extreure, retreure, sostreure) veure veig veu veiem veia vèiem veuré viu,veieres/veres, vegi vegem vist,vista,vists/vistos (entreveure, preveure, reveure) veié/veu,veiérem/vérem riure ric riu riem reia rèiem riuré riguí rigui riguem rigut,riguda (somriure) (e)scriure escric escriu escrivim escrivia escrivíem escriuré escriví/escriguí escrigui escriguem escrit,escrita (circumscriure, descriure, inscriure, prescriure, proscriure, subscriure, transcriure) viure visc viu vivim vivia vivíem viuré visquí visqui visquem viscut,viscuda (conviure, sobreviure) cloure cloc clou cloem cloïa cloíem clouré cloguí clogui cloguem clos,closa,closos (concloure, descloure, encloure, excloure, incloure, recloure) encloure encloc enclou encloem encloïa encloíem enclouré encloguí enclogui encloguem enclòs,enclosa,enclosos coure coc cou coem coïa coíem couré coguí cogui coguem cuit/cogut,cuita/coguda moure moc mou movem movia movíem mouré moguí mogui moguem mogut,moguda (promoure) noure noc nou noem noïa noíem nouré noguí nogui noguem nogut,noguda ploure - plou [plovent] plovia - plourà plogué plogui - plogut,ploguda -nyer verbs (regular except pp) infinitive pres1s pres3s pres1p impf1s fut1s pret1s sub1s sub1p pp atènyer atenyo ateny atenyem atenyia atenyeré atenyí atenyi atenyem atès,atesa,atesos empènyer empenyo empeny empenyem empenyia empenyeré empenyí empenyi empenyem empès,empesa,empesos estrènyer estrenyo estreny estrenyem estrenyia estrenyeré estrenyí estrenyi estrenyem estret,estreta estrènyer (constrènyer,restrènyer) fènyer fenyo feny fenyem fenyia fenyeré fenyí/fenguí fenyi fenyem fenyut/fengut,fenyuda/fenguda pertànyer pertanyo pertany pertanyem pertanyia pertanyeré pertanyí/pertanguí pertanyi pertanyem pertanyut/pertangut,pertanyuda/pertanguda plànyer planyo plany planyem planyia planyeré planyí/planguí planyi planyem plangut/planyut,planguda/planyuda -xer verbs (NOTE: pres2s in -xes) infinitive pres1s pres3s pres1p impf1s fut1s pret1s sub1s sub1p pp créixer creixo creix creixem creixia creixeré creixí/cresquí creixi creixem crescut,crescuda (acréixer,decréixer) conèixer conec coneix coneixem coneixia coneixeré coneguí conegui coneguem conegut,coneguda (desconèixer,reconèixer) merèixer mereixo mereix mereixem mereixia mereixeré mereixí/meresquí mereixi mereixem merescut,merescuda néixer/ neixo/ neix/ naixem naixia naixeré naixí/nasquí neixi/ naixem/nasquem nascut,nascuda nàixer naixo naix naixi (renéixer) parèixer parec pareix pareixem pareixia pareixeré pareguí paregui pareguem paregut,pareguda (aparèixer,comparèixer,desaparèixer,reaparèixer) péixer peixo peix paixem paixia paixeré paixí peixi paixem pascut,pascuda misc. -er verbs infinitive pres1s pres3s pres1p impf1s impf1p fut1s pret1s sub1s sub1p pp córrer corro corre correm corria corríem correré correguí corri correm corregut,correguda fúmer fumo fum fumem fumia fumíem fumeré fumí fumi fumem fumut,fumuda prémer premo prem premem premia premíem premeré premí premi premem premut,premuda (es-, re-) témer temo tem temem temia temíem temeré temí temi temem temut,temuda trémer [regular] tòrcer torço torç torcem torcia torcíem torceré torcí torci torcem torçut,torçuda (des-) [pres2s torces] vèncer venço venç vencem vencia vencíem venceré vencí venci vencem vençut,vençuda (con-, re-) [pres2s vences] cabre/caber cabo cap cabem cabia cabíem cabré cabí càpiga capiguem cabut,cabuda [sub2s càpigues] haver he/haig ha havem/hem havia havíem hauré haguí hagi hàgim/haguem hagut,haguda [noimp] [cond1s hauria/haguera; impsub2s haguessis/haguesses] poder puc pot podem podia podíem podré poguí pugui puguem pogut,poguda saber sé sap sabem sabia sabíem sabré sabí sàpiga sapiguem sabut,sabuda [imp2s sàpigues, imp2p sapigueu] voler vull vol volem volia volíem voldré volguí vulgui vulguem volgut,volguda ser/ésser soc és som era érem seré fui sigui siguem estat/sigut,estada/siguda [ger sent/essent] [cond1s seria/fora] [pres: soc,ets,éts,som,sou,són; pret: fui,fores,fou,fórem,fóreu,foren; impsub: fos,fossis,fos,fóssim,fóssiu,fossin] [imp: sigues,sigueu] fer faig fa fem feia fèiem faré fiu faci fem fet,feta [pres3p fan] [pret: fiu,feres,feu,férem,féreu,feren] ]=] local all_persons_numbers = { ["1s"] = "1|s", ["2s"] = "2|s", ["3s"] = "3|s", ["1p"] = "1|p", ["2p"] = "2|p", ["3p"] = "3|p", } local person_number_list = {"1s", "2s", "3s", "1p", "2p", "3p"} local imp_person_number_list = {"2s", "3s", "1p", "2p", "3p"} local neg_imp_person_number_list = {"2s", "3s", "1p", "2p", "3p"} proclitic_non_elided_person_number_to_reflexive_pronoun = { ["1s"] = "em ", ["2s"] = "et ", ["3s"] = "es ", ["1p"] = "ens ", ["2p"] = "us ", ["3p"] = "es ", } proclitic_elided_person_number_to_reflexive_pronoun = { ["1s"] = "m'", ["2s"] = "t'", ["3s"] = "s'", ["1p"] = "ens ", ["2p"] = "us ", ["3p"] = "s'", } enclitic_non_elided_person_number_to_reflexive_pronoun = { ["1s"] = "-me", ["2s"] = "-te", ["3s"] = "-se", ["1p"] = "-nos", ["2p"] = "-vos", ["3p"] = "-se", } enclitic_elided_person_number_to_reflexive_pronoun = { ["1s"] = "'m", ["2s"] = "'t", ["3s"] = "'s", ["1p"] = "'ns", ["2p"] = "-us", ["3p"] = "'s", } local indicator_flags = m_table.listToSet { "no_pres_stressed", "only3s", "only3sp", "only3p", "noimp", "pp_inv", "irreg", "no_built_in", } -- Initialize all the slots for which we generate forms. local function add_slots(alternant_multiword_spec) -- "Basic" slots: All slots that go into the regular table (not the reflexive form-of table). alternant_multiword_spec.verb_slots_basic = { {"infinitive", "inf"}, {"infinitive_linked", "inf"}, {"gerund", "ger"}, {"pp_ms", "m|s|past|part"}, {"pp_fs", "f|s|past|part"}, {"pp_mp", "m|p|past|part"}, {"pp_fp", "f|p|past|part"}, } -- Special slots used to handle non-reflexive parts of reflexive verbs in {{ca-verb form of}}. For example, for a -- reflexive-only verb like [[arrepentirse]], we want to be able to use {{ca-verb form of}} on [[arrepinta]] (which -- should mention that it is a part of 'me arrepinta', first-person singular present subjunctive, and -- 'se arrepinta', third-person singular present subjunctive) or on [[arrepentimos]] (which should mention that it -- is a part of 'arrepentímonos', first-person plural present indicative or preterite). Similarly, we want to use -- {{ca-verb form of}} on [[arrepentindo]] (which should mention that it is a part of 'se ... arrepentindo', -- syntactic variant of [[arrepentíndose]], which is the gerund of [[arrepentirse]]). To do this, we need to be -- able to map non-reflexive parts like [[arrepinta]], [[arrepentimos]], [[arrepentindo]], etc. to their reflexive -- equivalent(s), to the tag(s) of the equivalent(s), and, in the case of forms like [[arrepentindo]], -- [[arrepentir]] and imperatives, to the separated syntactic variant of the verb+clitic combination. We do this by -- creating slots for the non-reflexive part equivalent of each basic reflexive slot, and for the separated -- syntactic-variant equivalent of each basic reflexive slot that is formed of verb+clitic. We use slots in this -- way to deal with multiword lemmas. Note that we run into difficulties mapping between reflexive verbs, -- non-reflexive part equivalents, and separated syntactic variants if a slot contains more than one form. To -- handle this, if there are the same number of forms in two slots we're trying to match up, we assume the forms -- match one-to-one; otherwise we don't match up the two slots (which means {{ca-verb form of}} won't work in this -- case, but such a case is extremely rare and not worth worrying about). Alternatives that handle this "properly" -- are significantly more complicated and require non-trivial modifications to [[Module:inflection utilities]]. local need_special_verb_form_of_slots = alternant_multiword_spec.source_template == "ca-verb form of" and alternant_multiword_spec.refl if need_special_verb_form_of_slots then alternant_multiword_spec.verb_slots_reflexive_verb_form_of = { {"infinitive_non_reflexive", "-"}, {"infinitive_variant", "-"}, {"gerund_non_reflexive", "-"}, {"gerund_variant", "-"}, } else alternant_multiword_spec.verb_slots_reflexive_verb_form_of = {} end -- Add entries for a slot with person/number variants. -- `verb_slots` is the table to add to. -- `slot_prefix` is the prefix of the slot, typically specifying the tense/aspect. -- `tag_suffix` is a string listing the set of inflection tags to add after the person/number tags. -- `person_number_list` is a list of the person/number slot suffixes to add to `slot_prefix`. local function add_personal_slot(verb_slots, slot_prefix, tag_suffix, person_number_list) for _, persnum in ipairs(person_number_list) do local persnum_tag = all_persons_numbers[persnum] local slot = slot_prefix .. "_" .. persnum local accel = tag_suffix .. "|" .. persnum_tag table.insert(verb_slots, {slot, accel}) end end -- Add a personal slot (i.e. a slot with person/number variants) to `verb_slots_basic`. local function add_basic_personal_slot(slot_prefix, tag_suffix, person_number_list, no_special_verb_form_of_slot) add_personal_slot(alternant_multiword_spec.verb_slots_basic, slot_prefix, tag_suffix, person_number_list) -- Add special slots for handling non-reflexive parts of reflexive verbs in {{ca-verb form of}}. -- See comment above in `need_special_verb_form_of_slots`. if need_special_verb_form_of_slots and not no_special_verb_form_of_slot then for _, persnum in ipairs(person_number_list) do local persnum_tag = all_persons_numbers[persnum] local basic_slot = slot_prefix .. "_" .. persnum local accel = tag_suffix .. "|" .. persnum_tag table.insert(alternant_multiword_spec.verb_slots_reflexive_verb_form_of, {basic_slot .. "_non_reflexive", "-"}) end end end add_basic_personal_slot("pres", "直説法|現在", person_number_list) add_basic_personal_slot("impf", "直説法|不完全過去", person_number_list) add_basic_personal_slot("pret", "直説法|完全過去", person_number_list) add_basic_personal_slot("fut", "直説法|未来", person_number_list) add_basic_personal_slot("cond", "可能法", person_number_list) add_basic_personal_slot("pres_sub", "接続法|現在", person_number_list) add_basic_personal_slot("impf_sub", "接続法|過去", person_number_list) add_basic_personal_slot("imp", "命令法", imp_person_number_list) -- Don't need special non-reflexive-part slots because the negative imperative is multiword, of which the -- individual words are 'no' + subjunctive. add_basic_personal_slot("neg_imp", "命令法|禁止", neg_imp_person_number_list, "no special verb form of") -- Don't need special non-reflexive-part slots because we don't want [[arrependendo]] mapping to [[arrependendo-me]] -- (only [[arrependendo-se]]) or [[arrepender]] mapping to [[arrepender-me]] (only [[arrepender-se]]). add_basic_personal_slot("infinitive", "inf", person_number_list, "no special verb form of") add_basic_personal_slot("gerund", "ger", person_number_list, "no special verb form of") -- Generate the list of all slots. alternant_multiword_spec.all_verb_slots = {} for _, slot_and_accel in ipairs(alternant_multiword_spec.verb_slots_basic) do table.insert(alternant_multiword_spec.all_verb_slots, slot_and_accel) end for _, slot_and_accel in ipairs(alternant_multiword_spec.verb_slots_reflexive_verb_form_of) do table.insert(alternant_multiword_spec.all_verb_slots, slot_and_accel) end alternant_multiword_spec.verb_slots_basic_map = {} for _, slotaccel in ipairs(alternant_multiword_spec.verb_slots_basic) do local slot, accel = unpack(slotaccel) alternant_multiword_spec.verb_slots_basic_map[slot] = accel end end local overridable_stems = {} local function allow_multiple_values_for_override(separated_groups, data, is_form_override) local retvals = {} for _, separated_group in ipairs(separated_groups) do local footnotes = data.fetch_footnotes(separated_group) local form = separated_group[1] -- Prepend marker to prevent prefixing with `base.prefix`, and (in the case of form overrides) prevent -- final devoicing. if is_form_override then form = IS_USER_FORM_OVERRIDE .. form else form = IS_USER_STEM_OVERRIDE .. form end local retval = {form = form, footnotes = footnotes} table.insert(retvals, retval) end return retvals end for _, overridable_stem in ipairs { "stem", "stressed_stem", "unstressed_stem", "pres_unstressed", "pres_stressed", "pres3s", -- overrides just pres_2s and pres_3s -- Don't include pres1s, pres3p; use pres_1s etc. if you need to override just those forms "impf1", "impf2", "pret", "fut", "cond", "pres_sub_stressed", "pres_sub_unstressed", "impf_sub", "pp", "g_infix", "eix_infix", } do -- Written so we can substitute a different validator; parallel code in [[Module:es-verb]] and [[Module:pt-verb]] -- has simple_choice validators. overridable_stems[overridable_stem] = allow_multiple_values_for_override end -- Useful as the value of the `match` property of a built-in verb. `main_verb_spec` is a Lua pattern that should match -- the non-prefixed part of a verb, and `prefix_specs` is a list of Lua patterns that should match the prefixed part of -- a verb. If a prefix spec is preceded by ^, it must match exactly at the beginning of the verb; otherwise, additional -- prefixes (e.g. re-, des-) may precede. Return the prefix and main verb. local function match_against_verbs(main_verb_spec, prefix_specs) return function(verb) for _, prefix_spec in ipairs(prefix_specs) do if prefix_spec:find("^%^") then -- must match exactly prefix_spec = prefix_spec:gsub("^%^", "") if prefix_spec == "" then -- We can't use the second branch of the if-else statement because an empty () returns the current position -- in rmatch(). local main_verb = rmatch(verb, "^(" .. main_verb_spec .. ")$") if main_verb then return "", main_verb end else local prefix, main_verb = rmatch(verb, "^(" .. prefix_spec .. ")(" .. main_verb_spec .. ")$") if prefix then return prefix, main_verb end end else local prefix, main_verb = rmatch(verb, "^(.*" .. prefix_spec .. ")(" .. main_verb_spec .. ")$") if prefix then return prefix, main_verb end end end return nil end end --[=[ Built-in (usually irregular) conjugations. Each entry is processed in turn and consists of an object with two fields: 1. match=: Specifies the built-in verbs that match this object. 2. forms=: Specifies the built-in stems and forms for these verbs. The value of match= is either a string beginning with "^" (match only the specified verb), a string not beginning with "^" (match any verb ending in that string), or a function that is passed in the verb and should return the prefix of the verb if it matches, otherwise nil. The function match_against_verbs() is provided to facilitate matching a set of verbs with a common ending and specific prefixes (e.g. [[ter]] and [[ater]] but not [[abater]], etc.). The value of forms= is a table specifying stems and individual override forms. Each key of the table names either a stem (e.g. `pres_stressed`), a stem property (e.g. `g_infix`) or an individual override form (e.g. `pres_1s`). Each value of a stem can either be a string (a single stem), a list of strings, or a list of objects of the form {form = STEM, footnotes = {FOONOTES}}. Each value of an individual override should be of exactly the same form except that the strings specify full forms rather than stems. The values of a stem property depend on the specific property but are generally strings or booleans. In order to understand how the stem specifications work, it's important to understand the phonetic modifications done by combine_stem_ending(). In general, the complexities of predictable prefix, stem and ending modifications are all handled in this function. In particular: 1. Spelling-based modifications (c/qu, ç/c, g/gu, j/g, gu/gü, qu/qü) occur automatically as appropriate for the ending. 2. If the ending begins with an asterisk, this is a signal to delete the accent on the last syllable of the stem, e.g. veié -> veierem. 3. If ending begins with i, it may turn into í or ï after an unstressed vowel (in some but not all cases) to prevent the two merging into a diphthong. See combine_stem_ending() for specifics. The following stems are recognized [FIXME: This is not correct for Catalan, needs rewriting]: -- pres_unstressed: The present indicative unstressed stem (1p, 2p). Also controls the imperative 2p and gerund. Defaults to the infinitive stem (minus the ending -ar/-er/-ir/-or). -- pres_stressed: The present indicative stressed stem (1s, 2s, 3s, 3p). Also controls the imperative 2s. Default is empty if indicator `no_pres_stressed`, else a vowel alternation if such an indicator is given (e.g. `ue`, `ì`), else the infinitive stem. -- pres1: Special stem for 1s present indicative. Normally, do not set this explicitly. If you need to specify an irregular 1s present indicative, use the form override pres_1s= to specify the entire form. Defaults to pres_stressed. -- pres_sub_unstressed: The present subjunctive unstressed stem (1p, 2p). Defaults to the infinitive stem. -- pres_sub_stressed: The present subjunctive stressed stem (1s, 2s, 3s, 1p). Defaults to pres1. -- impf: The imperfect stem (not including the -av-/-i- stem suffix, which is determined by the conjugation). Defaults to the infinitive stem. -- pret: The full preterite stem missing only the endings (-ste, -mos, etc.), e.g. 'fige', 'fo'. Only used for verbs with irregular preterites (pret_conj == "irreg") such as [[facer]], [[poder]], [[traer]], etc. Defaults to `pret_base` + the conjugation vowel. -- fut: The future stem. Defaults to the infinitive stem + the conjugation vowel. -- cond: The conditional stem. Defaults to `fut`. -- impf_sub: The imperfect subjunctive stem. Defaults to `pret`. -- pp: The masculine singular past participle. Default is based on the verb conjugation: infinitive stem + '-ado' for -ar verbs, otherwise infinitive stem + '-ido'. -- pp_inv: `true` if the past participle exists only in the masculine singular. ]=] local built_in_conjugations = { -------------------------------------------------------------------------------------------- -- -ar -- -------------------------------------------------------------------------------------------- -- Orthographic consonant alternations in endings are handled automatically in combine_stem_ending(). { -- [[aguar]]: -- pres agúo, agúes, agúa, agüem, agüeu, agúen -- pres_sub aguï, aguïs, aguï, agüem, agüeu, aguïn -- contrast a more typical verb in -guar, [[enaiguar]]: -- pres enaiguo, enaigües, enaigua, enaigüem, enaigüeu, enaigüen -- pres_sub enaigüi, enaigüis, enaigüi, enaigüem, enaigüeu, enaigüin match = "^aguar", forms = { pres_stressed = "agú", pres_sub_stressed = "aguï", irreg = true, } }, { -- [[anar]] (full verb); highly irregular match = "^anar", var = "full", forms = { fut = "anir", pres_1s = "vaj", -- will be converted to 'vaig'; 'vaig' gets converted to 'vaic' pres_2s = "vas", pres_3s = "va", pres_3p = "van", pres_sub_stressed = "vagi", imp_2s = "ves", irreg = true, } }, { -- [[anar]] (auxiliary); highly irregular match = "^anar", var = "aux", forms = { pres_1s = "vaj", -- will be converted to 'vaig'; 'vaig' gets converted to 'vaic' pres_2s = {"vas", "vares"}, pres_3s = "va", pres_1p = {"vam", "vàrem"}, pres_2p = {"vau", "vàreu"}, pres_3p = {"van", "varen"}, pres_sub_stressed = "vagi", pres_sub_unstressed = "vàgi", impf1 = {}, impf2 = {}, fut = {}, pret = {}, pp = {}, gerund = {}, noimp = true, irreg = true, } }, { -- [[dar]] match = "^dar", forms = { pres_1s = {form = "do", footnotes = {"[obsolete]"}}, pres_2s = {form = "das", footnotes = {"[obsolete]"}}, pres_3s = {form = "da", footnotes = {"[obsolete]"}}, pres_3p = {form = "dan", footnotes = {"[obsolete]"}}, pres_sub_1s = {form = "de", footnotes = {"[obsolete]"}}, pres_sub_2s = {form = "des", footnotes = {"[obsolete]"}}, pres_sub_3s = {form = "de", footnotes = {"[obsolete]"}}, pres_sub_3p = {form = "den", footnotes = {"[obsolete]"}}, pret_1s = "di", -- regular except for lack of accent pret_3s = "da", -- regular except for lack of accent impf_sub_1s = "des", -- regular except for lack of accent impf_sub_3s = "des", -- regular except for lack of accent irreg = true, } }, { -- [[estar]]; highly irregular match = "^estar", forms = { pres_2s = "estàs", pres_3s = "està", pres_3p = "estan", g_infix = "estig", imp_2s = "estigues", imp_2p = "estigueu", pp = "estad", } }, -------------------------------------------------------------------------------------------- -- -er/-re -- -------------------------------------------------------------------------------------------- -- Regular verbs not needing entries here: -- -- [[rebre]], [[concebre]], [[decebre]], [[percebre]] -- [[rompre]] -- [[fúmer]], [[prémer]], [[témer]], [[trémer]] -- [[perdre]], [[batre]], [[botre]], [[fotre]], [[retre]] -- [[tòrcer]], [[vèncer]] -- etc. ------------------------------------------- -ldre/-ler/-lre -------------------------------------- { -- [[caldre]], [[doldre]], [[condoldre's]], [[oldre]] match = match_against_verbs("ldre", {"ca", "do", "^o"}), forms = { -- g_infix implies irreg = true -- g_infix adds -g to pres_1s, sub, pret and pp stems; combine_stem_ending() changes final -g to -c g_infix = "+", } }, { -- [[caler]] match = "caler", like = "caldre", }, { -- [[doler]] and compounds match = "doler", like = "doldre", }, { -- [[dolre]] match = "dolre", forms = { -- see above for g_infix effects g_infix = "+", } }, { -- [[valer]], [[equivaler]], [[prevaler]], [[sobrevaler]] match = "valer", forms = { -- see above for g_infix effects fut = "valdr", g_infix = "+", } }, { -- [[valdre]] and compounds match = "valdre", like = "valer", }, { -- [[soler]] match = "^soler", -- this must precede -oldre rule below for alt form [[soldre]] forms = { -- see above for g_infix effects fut = {}, pret = {}, impf_sub = "solgué", -- regular, but we disabled the preterite, which would normally disable impf_sub too g_infix = "+", pp = {}, noimp = true, } }, { -- [[soldre]] match = "^soldre", -- this must precede -oldre rule below like = "soler", }, { -- [[coldre]], [[moldre]], [[absoldre]], [[dissoldre]], [[resoldre]], [[toldre]] match = "oldre", -- this must follow [[doldre]]/[[oldre]] rule above forms = { -- see above for g_infix effects g_infix = "+", pp = "olt", } }, { -- [[voler]], [[malvoler]] match = "voler", forms = { fut = "voldr", pres_1s = "vull", pres_sub_stressed = "vulgui", pres_sub_unstressed = "vulgue", g_infix = "+", imp_2s = "vulgues", imp_2p = "vulgueu", } }, --------------------------------------------- -ndre ---------------------------------------- { -- [[romandre]]; write it this way so there's a prefix with a vowel to prevent against the accent in the pp -- from being removed while still removing it in the feminine. match = match_against_verbs("mandre", {"^ro"}), forms = { -- see above for g_infix effects g_infix = "+", pp = "màs#", } }, { -- [[encendre]], [[atendre]], [[contendre]], [[desentendre's]], [[distendre]], [[entendre]], [[estendre]], -- [[pretendre]] match = match_against_verbs("endre", {"enc", "t"}), forms = { pres_3s = "én#", -- remove final accent without prefix with vowel; also removed when adding a suffix -- see above for g_infix effects g_infix = "+", pp = "ès#", -- see above for effect of final # } }, { -- [[vendre]], [[malvendre]], [[revendre]] match = "vendre", forms = { pres_3s = "vèn#", -- see above for effect of final # -- see above for g_infix effects g_infix = "+", pp = "venud", -- g_infix would normally make it vengud } }, { -- [[fendre]], [[defendre]], [[ofendre]], [[dependre]], [[despendre]], [[expendre]], [[suspendre]], [[prendre]], -- [[aprendre]], [[comprendre]], [[desprendre]], [[emprendre]], [[reprendre]], [[sorprendre]] match = "endre", -- this must follow previous -endre rules above forms = { pres_3s = "èn#", -- see above for effect of final # -- see above for g_infix effects g_infix = "+", pp = "ès#", -- see above for effect of final # } }, { -- [[enfondre]]; write it this way so there's a prefix with a vowel to prevent against the accent in the pp -- from being removed while still removing it in the feminine. match = match_against_verbs("fondre", {"^en"}), forms = { -- see above for g_infix effects g_infix = "+", pp = "fús#", } }, { -- [[pondre]], [[compondre]], [[correspondre]], [[descompondre]], [[despondre's]], [[respondre]] match = "pondre", forms = { -- see above for g_infix effects g_infix = "+", pp = "post", } }, { -- [[fondre]], [[confondre]], [[difondre]], [[infondre]], [[refondre]], [[tondre]] match = "ondre", -- this must follow previous -ondre rules above forms = { -- see above for g_infix effects g_infix = "+", pp = "ós#", -- see above for effect of final # } }, --------------------------------------------- -nyer ---------------------------------------- { -- [[atènyer]]; write it this way so there's a prefix with a vowel to prevent against the accent in the pp -- from being removed while still removing it in the feminine. match = match_against_verbs("tènyer", {"^a"}), forms = { pp = "tès#", irreg = true, } }, { -- [[empènyer]], [[espènyer]] match = match_against_verbs("pènyer", {"^em", "^es"}), forms = { pp = "pès#", irreg = true, } }, { -- [[estrènyer]], [[constrènyer]], [[destrènyer]], [[restrènyer]] match = match_against_verbs("strènyer", {"^e", "con", "^de", "^re"}), forms = { pp = "stret", irreg = true, } }, { -- [[fènyer]] match = "fènyer", forms = { pp = {"fengud", "fenyud"}, irreg = true, } }, { -- [[júnyer]] match = "júnyer", like = "junyir", }, { -- [[plànyer]], [[complànyer]], [[pertànyer]] match = match_against_verbs("ànyer", {"pl", "pert"}), forms = { pp = {"angud", "anyud"}, irreg = true, } }, --------------------------------------------- -aure ---------------------------------------- { -- [[caure]], [[decaure]], [[recaure]] match = "caure", forms = { -- stem ending in -ai and imperfect in -ia causes special stressed imperfect logic to take effect; we get -- impf1s queia, impf1p quèiem (preceding vowel changed to è and attached to initial consonant using -- combine_stem_ending(), which changes c- to qu-) stem = "caie", -- i dropped by g_infix before u -- g_infix implies irreg = true -- g_infix adds -g to pres_1s, sub, pret and pp stems; combine_stem_ending() changes final -g to -c -- g_infix sets pres_stressed to end in -u, removing a preceding -i or -v g_infix = "+", } }, { -- [[plaure]], [[complaure]] match = "plaure", forms = { stem = "plae", -- ï in impf1s -aïa gets generated automatically by combine_stem_ending() g_infix = "+", } }, { -- [[raure]] match = "^raure", forms = { stem = "rae", -- ï in impf1s -aïa gets generated automatically by combine_stem_ending() g_infix = "+", pp = {"ragud", "ras"}, } }, --------------------------------------------- -eure ---------------------------------------- { -- [[beure]], [[embeure]], [[deure]], [[lleure]] match = match_against_verbs("eure", {"b", "d", "ll"}), forms = { stem = "eve", -- v dropped by g_infix before g and u g_infix = "+", } }, { -- [[creure]], [[seure]], [[asseure]] match = match_against_verbs("eure", {"cr", "s"}), forms = { stem = "ee", pres_unstressed = "eie", -- affects pres_1p, pres_2p, gerund, imperfect (see [[caure]]) g_infix = "+", } }, { -- [[jeure]], [[ajeure]] match = "jeure", forms = { fut = "jaur", -- affects future and cond stressed_stem = "jee", -- affects stressed forms, which get g added by g_infix by added except for -- pres_stressed, which gets u added (controls pres_3s, pres_2s, pres_3p) unstressed_stem = "jae", -- affects unstressed_stem, which get g added by g_infix pres_stressed = {"jeu", "jau"}, pres_unstressed = "jaie", -- affects pres_1p, pres_2p, gerund, imperfect (see [[caure]]) pres_1s = {"jec", "jac"}, impf1 = "jei", -- otherwise we'd get impf_1s '#geia' etc. impf2 = "jèi", g_infix = "+", } }, { match = "jaure", like = "jeure", }, { -- [[treure]], [[abstreure]], [[atreure]], [[bestreure]], [[contreure]], [[detreure]], [[distreure]], -- [[extreure]], [[retreure], [[retrotreure]], [[sostreure]] match = "treure", forms = { -- like [[jeure]] except for irregular pp fut = "traur", stressed_stem = "tree", unstressed_stem = "trae", pres_stressed = {"treu", "trau"}, pres_unstressed = "traie", pres_1s = {"trec", "trac"}, g_infix = "+", pp = "tret", } }, { match = "traure", like = "treure", }, { -- [[veure]], [[entreveure]], [[preveure]], [[reveure]] match = "veure", forms = { stem = "veie", -- impf1s veia, impf1p vèiem (preceding vowel changed to è) pres_stressed = "veu", pres_1s = "vej", -- will be converted to 'veig'; 'veig' gets converted to 'veic' pres_sub_stressed = "vegi", pres_sub_unstressed = "vege", pret = {"veié", "vé"}, pret_1s = "viu", pret_3s = {"veié", "veu"}, impf_sub = "veié", pp = "vist", imp_2s = "veges", imp_2p = {"vegeu", "veieu"}, irreg = true, } }, --------------------------------------------- -iure ---------------------------------------- { -- [[escriure]], [[circumscriure]], [[descriure]], [[inscriure]], [[prescriure]], [[proscriure]], -- [[subscriure]], [[transcriure]] match = "scriure", forms = { stem = "scrivi", -- v dropped by g_infix before g and u; pres_1p/pres_2p have -ir endings g_infix = "+", pret = {"scriví", "scrigué"}, pp = "scrit", } }, { -- [[riure]], [[somriure]] match = "riure", -- must follow rule for 'scriure' forms = { stem = "rie", -- impf1s reia, impf1p rèiem (preceding vowel changed to è) g_infix = "+", } }, { -- [[viure]], [[conviure]], [[desviure's]], [[sobreviure]] match = "viure", forms = { stem = "vivi", -- v dropped by g_infix before g and u; pres_1p/pres_2p have -ir endings g_infix = "visc", -- applies to pres1s, sub, pret, pp } }, --------------------------------------------- -oure ---------------------------------------- { -- [[cloure]], [[concloure]], [[descloure]], [[encloure]], [[excloure]], [[incloure]], [[recloure]] match = "cloure", forms = { stem = "cloe", -- ï in impf1s cloïa gets generated automatically by combine_stem_ending() g_infix = "+", pp = "clòs#", -- remove final accent without prefix with vowel; also removed when adding a suffix } }, { -- [[coure]] "to cook" match = "coure", var = "cook", forms = { stem = "coe", -- ï in impf1s coïa gets generated automatically by combine_stem_ending() g_infix = "+", pp = "cuit", } }, { -- [[coure]] "to sting" match = "coure", var = "sting", forms = { stem = "coe", -- ï in impf1s coïa gets generated automatically by combine_stem_ending() g_infix = "+", -- pp regular 'cogud' } }, { -- [[moure]], [[promoure]], [[remoure]], [[somoure]], [[ploure]] match = match_against_verbs("oure", {"m", "pl"}), forms = { stem = "ove", -- v dropped by g_infix before g and u g_infix = "+", } }, { -- [[noure]] match = "noure", forms = { stem = "noe", -- ï in impf1s -aïa gets generated automatically by combine_stem_ending() g_infix = "+", } }, --------------------------------------------- -xer ---------------------------------------- { -- [[conèixer]], [[desconèixer]], [[reconèixer]] match = "conèixer", forms = { g_infix = "coneg", } }, { -- [[créixer]], [[acréixer]], [[decréixer]], [[recréixer]], [[sobrecréixer]] match = "créixer", forms = { pret = {"creixé", "cresqué"}, pres_sub_unstressed = {"creixe", "cresque"}, pp = "crescud", irreg = true, } }, { -- [[merèixer]], [[desmerèixer]], [[irèixer-se]] match = match_against_verbs("rèixer", {"me", "^i"}), forms = { pret = {"reixé", "resqué"}, pres_sub_unstressed = {"reixe", "resque"}, pp = "rescud", irreg = true, } }, { -- [[néixer]]/[[nàixer]], [[renéixer]]/[[renàixer]], [[sobrenéixer]]/[[sobrenàixer]], [[péixer]]/[[pàixer]] match = match_against_verbs("éixer", {"n", "p"}), forms = { stem = "aixe", fut = "aixer", pres_stressed = {"eix", "aix"}, pres_1s = "eixo", pret = {"aixé", "asqué"}, pres_sub_stressed = "eixi", pres_sub_unstressed = {"aixe", "asque"}, pp = "ascud", irreg = true, } }, { match = "àixer", like = "éixer", }, { -- [[parèixer]], [[aparèixer]], [[comparèixer]], [[desaparèixer]], [[reaparèixer]] match = "parèixer", forms = { g_infix = "pareg", } }, --------------------------------------------- misc ---------------------------------------- { -- [[cabre]] match = "cabre", forms = { pres_sub_stressed = "càpiga", pres_sub_unstressed = "capigue", irreg = true, } }, { -- [[caber]] match = "caber", like = "cabre", }, { -- [[saber]] match = "saber", forms = { fut = "sabr", pres_1s = "sé", pres_sub_stressed = "sàpiga", pres_sub_unstressed = "sapigue", imp_2s = "sàpiga", imp_2p = "sapigueu", irreg = true, } }, { -- [[poder]] match = "poder", forms = { fut = "podr", pres_1s = "puc", pres_sub_stressed = "pugui", pres_sub_unstressed = "pugue", g_infix = "pog", imp_2s = "pugues", imp_2p = "pugueu", irreg = true, } }, { -- [[córrer]], [[acórrer]], [[concórrer]], [[decórrer]], [[descórrer]], [[discórrer]], [[encórrer]], -- [[escórrer]], [[incórrer]], [[ocórrer]], [[recórrer]], [[socórrer]], [[transcórrer]] match = "córrer", forms = { pret = "corregué", pres_sub_unstressed = {"corre", "corregue"}, pp = "corregud", irreg = true, } }, { -- [[metre]], [[admetre]], [[arremetre]], [[cometre]], [[comprometre]], [[demetre]], [[descomprometre]], -- [[emetre]], [[entremetre's]], [[escometre]], [[malmetre]], [[manumetre]], [[ometre]], [[permetre]], -- [[prometre]], [[readmetre]], [[remetre]], [[retransmetre]], [[sotmetre]], [[trametre]], [[transmetre]] match = "metre", forms = { pp = "mès#", irreg = true, } }, -------------------------------------------------------------------------------------------- -- -ir -- -------------------------------------------------------------------------------------------- { -- [[acudir]]; NOTE: Separation by meaning does not occur in DCC, DIEC, DEIEC, and DCVB says the distinction -- is geographical and makes no mention of distinction by meaning. OTOH ca.wikt does say that the pronominal -- sense "to occur" tends to conjugate non-inchoative. match = "acudir", forms = { eix_infix = {{ form = "+", footnotes = {'[especially in the sense "to turn up, to be present"]'} }, { form = "-", footnotes = {'[especially in the pronominal sense "to occur"]'} }} } }, -- [[afegir]]: -- non-inchoative in Valencia, inchoative elsewhere { -- [[ajupir]] -- [[buixir]] -- [[bullir]], [[rebullir]] -- [[cruixir]], [[escruixir]] (Routledge says this is inchoative but DIEC, DEIEC and DCC all disagree; note -- pres_2s 'cruixes', handled automatically) -- [[dormir]], [[adormir]] -- [[funyir]] -- [[grunyir]] -- [[munyir]], [[esmunyir]] -- [[pudir]] -- [[punyir]] -- [[retrunyir]] -- [[sallir]] -- [[sentir]], [[pressentir]], [[ressentir-se]]; not [[consentir]], with can be either non-inchoative or -- inchoative, and not [[assentir]] or [[dissentir]], which are only inchoative match = match_against_verbs("ir", {"ajup", "buix", "bull", "cruix", "dorm", "funy", "gruny", "muny", "pud", "puny", "retruny", "^sent", "pressent", "^ressent", "sall"}), forms = { eix_infix = "-", } }, { -- [[arrupir-se]]; -- [[brumir]]; -- [[brunzir]]; -- [[consumir]], [[resumir]], [[presumir]] (not [[sumir]], [[assumir]], [[subsumir]], which are regular) -- [[mentir]], [[desmentir]] -- [[percudir]]; cf. also [[acudir]], which to some extent has separate conjugations per meaning -- [[consentir]] match = match_against_verbs("ir", {"arrup", "brum", "brunz", "consum", "^resum", "presum", "ment", "percud", "consent"}), forms = { eix_infix = {"+", "-"}, } }, -- [[cenyir]]: -- non-inchoative or inchoative in Balearics, inchoative elsewhere { -- [[cobrir]], [[descobrir]], [[encobrir]], [[recobrir]], [[redescobrir]] match = "cobrir", forms = { pp = "cobert", irreg = true, } }, { -- [[collir]], [[acollir]], [[escollir]], [[recollir]] match = "collir", forms = { stressed_stem = "culli", eix_infix = "-", irreg = true, } }, { -- [[complir]], [[acomplir]], [[incomplir]] match = "complir", forms = { pp = {"complert", "complid"}, irreg = true, } }, { -- [[cosir]], [[descosir]], [[recosir]] match = "cosir", forms = { stressed_stem = "cusi", pres_3s = "cús#", eix_infix = "-", irreg = true, } }, { -- [[eixir]], [[deseixir-se]]; not [[teixir]] or [[entreteixir]], and not [[reeixir]] or [[sobreeixir]], -- which have an ï in the stem-stressed forms match = match_against_verbs("eixir", {"^", "des"}), forms = { stressed_stem = "ixi", eix_infix = "-", irreg = true, } }, { -- [[reeixir]], [[sobreeixir]] match = match_against_verbs("eixir", {"^re", "sobre"}), forms = { stressed_stem = "ïxi", eix_infix = "-", irreg = true, } }, -- [[engolir]]: -- non-inchoative in Valencia, inchoative elsewhere { -- [[escopir]] match = "escopir", forms = { stressed_stem = "escupi", eix_infix = "-", irreg = true, } }, { -- [[establir]], [[preestablir]], [[restablir]] match = "establir", forms = { pp = {"establert", "establid"}, irreg = true, } }, -- [[ferir]]: -- non-inchoative in Balearics, inchoative elsewhere -- [[fregir]]: -- non-inchoative in Valencia, inchoative elsewhere { -- [[fugir]], [[confugir]], [[defugir]], [[enfugir-se]]; pres sing ''fujo, fuges, fuig'' handled by -- combine_stem_ending(); can't be handled by rule above that lists many non-inchoative verbs because the -- prefix would be 'fug' and the front-back alternation code doesn't apply to prefixes. match = "fugir", forms = { eix_infix = "-", } }, { -- [[imprimir]], [[reimprimir]], [[sobreimprimir]]; not any other verbs in -primir; write it this way so -- there's a prefix with a vowel to prevent against the accent in the pp from being removed while still -- removing it in the feminine. match = match_against_verbs("primir", {"im"}), forms = { pp = "près#", irreg = true, } }, -- [[llegir]]: -- non-inchoative in Valencia and Minorca, inchoative elsewhere { -- [[lluir]]: regular inchoative in the figurative meaning "to display (something), to be showy" also in the -- legal meaning "free from a pecuniary obligation, such as a land-based tax (emphyteusis)"; irregular in the -- literal meaning "to shine"; use <no_built_in> to get regular conjugation. In the regular conjugation, -- umlauts appear in the following forms: pres_1p/pres_sub_1p/imp_1p lluïm, pres_2p/pres_sub_2p/imp_2p lluïu, -- impf_1s/impf_3s lluïa, impf_2s lluïes, impf_3p lluïen, pret_2s lluïres, pret_3p lluïren, -- impf_sub_2s lluïssis, impf_sub_3p lluïssin, throughout the pp: lluït, lluïda, lluïts, lluïdes. IN the -- irregular conjugation, umlauts appear in the same places as well as elsewhere in the present subjunctive: -- pres_sub_1s/pres_sub_3s/imp_3s lluï, pres_sub_2s lluïs, pres_sub_3p/imp_3p lluïn. Notably, they do *NOT* -- appear in the gerund lluint, the infinitive lluir, or anywhere in the future or conditional. Note that -- verbs.cat [https://www.verbs.cat/en/conjugation/899-lluir.html] lists additional irregular forms pres_1s -- lluu, and alternative impf_sub forms in -e- instead of -i- (lluïsses, lluíssem, lluísseu, lluïssen), but -- these are nonstandard or dialectal per both Routledge and DEIEC. match = "^lluir", forms = { eix_infix = "-", pres3s = {"lluu", "llu"}, -- generates pres_2s, imp_2s irreg = true, } }, { -- [[entrelluir]] "to be half-seen", [[relluir]] "to shine", [[traslluir-se]] "to be translucent"; either -- inchoative or non-inchoative, not distinguished by meaning; note, [[deslluir]] and [[enlluir]] are regular -- inchoative verbs. match = match_against_verbs("lluir", {"entre", "^re", "tras"}), forms = { eix_infix = {"+", "-"}, pres3s = {"llueix", "lluu", "llú"}, -- generates pres_2s, imp_2s; note, pres_2s will end in -es due to -- combine_stem_ending() irreg = true, } }, { -- [[morir]], [[premorir]]; but not [[atemorir]] match = match_against_verbs("morir", {"^", "pre"}), forms = { eix_infix = "-", pp = "mort", irreg = true, } }, { -- [[obrir]], [[entreobrir]], [[reobrir]]; not [[cobrir]] and derivatives, not [[empobrir]], so we have to list -- them individually match = match_against_verbs("obrir", {"^", "entre", "^re"}), forms = { eix_infix = "-", pp = "obert", irreg = true, } }, { -- [[oferir]]; but not [[proferir]] match = "^oferir", forms = { pp = {"ofert", "oferid"}, irreg = true, } }, -- [[oir]], [[desoir]], [[entreoir]]: -- per Routledge, non-inchoative or inchoative normally but only -- non-inchoative in Valencian; but all dictionaries disagree and say it is a regular inchoative-only verb. -- It has the same umlauts as lluir (and [[corroir]], another regular inchoative verb). { -- [[omplir]], [[desomplir-se]], [[reomplir]]; not [[complir]] and derivatives, so we have to list them -- individually match = match_against_verbs("omplir", {"^", "des", "^re"}), forms = { eix_infix = "-", pp = {"omplert", "omplid"}, irreg = true, } }, -- [[penedir-se]]: -- non-inchoative in Balearics, inchoative elsewhere { -- [[pruir]] "to itch": same umlauts as in [[lluir]]. match = "^pruir", forms = { eix_infix = "-", pres3s = {"pruu", "pru"}, -- generates pres_2s, imp_2s irreg = true, } }, { -- [[reblir]] match = "^reblir", forms = { pp = {"reblert", "reblid"}, irreg = true, } }, -- [[renyir]]: -- non-inchoative in Valencia, inchoative elsewhere { -- [[sofrir]] match = "^sofrir", forms = { pp = {"sofert", "sofrid"}, irreg = true, } }, { -- [[sortir]], [[ressortir]], [[sobresortir]]; but not [[assortir]], which is regular inchoative match = match_against_verbs("sortir", {"^", "^res", "sobre"}), forms = { stressed_stem = "surti", eix_infix = "-", irreg = true, } }, { -- [[suplir]] match = "^suplir", forms = { pp = {"suplert", "suplid"}, irreg = true, } }, -- [[teixir]], [[entreteixir]]: -- non-inchoative in Valencia, inchoative elsewhere { -- [[tenir]] but not any compounds; highly irregular match = "^tenir", forms = { fut = "tindr", pres_stressed = "ten", pres_3s = "té", imp_2s = {"té", "ten", "tingues"}, imp_2p = {"teniu", "tingueu"}, g_infix = "ting", } }, { -- [[abstenir-se]], [[atenir-se]], [[captenir-se]], [[cartenir]], [[contenir]], [[detenir]], [[entretenir]], -- [[mantenir]], [[menystenir]], [[obtenir]], [[retenir]], [[sostenir]], [[viltenir]]; highly irregular match = "tenir", forms = { fut = "tindr", pres_stressed = "ten", pres_3s = "té", imp_2s = {"tén", "tingues"}, imp_2p = {"teniu", "tingueu"}, g_infix = "ting", } }, { -- [[tindre]]: variant of [[tenir]] match = "tindre", like = "tenir", }, -- [[tenyir]], [[destenyir]]: -- non-inchoative in Valencia, but [[retenyir]] inchoative or non-inchoative in -- Valencia? (per Routledge); regular inchoative elsewhere { -- [[tossir]] "to cough" match = "^tossir", forms = { stressed_stem = "tussi", -- pres_2s gets 'tusses' pres_3s = "tus", -- note, pres_3s (a single form override) not pres3s (a stem override, which also affects -- pres_2s; but imp_2s is physically copied from pres_3s, so imp_2s correctly gets 'tus') eix_infix = "-", irreg = true, } }, { -- [[venir]] but not any compounds; highly irregular match = "^venir", forms = { fut = "vindr", pres_stressed = "ven", pres_3s = "ve", imp_2s = "vine", g_infix = "ving", } }, { -- compounds of [[venir]]: [[advenir]], [[avenir]], [[contravenir]], [[convenir]], [[desavenir-se]], -- [[desconvenir]], [[entrevenir]], [[esdevenir]], [[intervenir]], [[obvenir]], [[pervenir]], [[prevenir]], -- [[provenir]], [[reconvenir]], [[revenir]], [[sobrevenir]], [[subvenir]]; but not [[enjovenir]] or -- [[rejovenir]]; highly irregular match = match_against_verbs("venir", {"^ad", "^a", "contra", "con", "desa", "entre", "esde", "inter", "ob", "per", "pre", "pro", "^re", "sobre", "sub"}), forms = { fut = "vindr", pres_stressed = "ven", pres_3s = "vé", imp_2s = "vén", g_infix = "ving", } }, { -- [[vindre]]: variant of [[venir]] match = "vindre", like = "venir", }, -- [[vestir]], [[desvestir]], [[revestir]], maybe [[transvestir]]: non-inchoative in Valencia, inchoative or -- non-inchoative in the Balearics; regular inchoative elsewhere; but not [[envestir]] or [[investir]], which are -- regular inchoative everywhere { -- [[fer]], [[contrafer]], [[desfer]], [[estrafer]], [[perfer]], [[refer]], [[satisfer]]; highly irregular match = "fer", forms = { fut = "far", pres_1s = "faj", -- will be converted to 'faig'; 'faig' gets converted to 'faic' pres_2s = "fàs#", pres_3s = "fà#", pres_3p = "fan", pres_unstressed = "fe", impf1 = "fei", impf2 = "fèi", pres_sub_stressed = "faci", pres_sub_unstressed = "fe", pret = "fé", pret_1s = "fiu", pret_3s = "feu", impf_sub_1s = "fés#", -- regular except for base form [[fes]], lacking an accent impf_sub_3s = "fés#", -- same imp_2s = "fés#", pp = "fet", irreg = true, } }, { -- [[dir]], [[adir-se]], [[contradir]], [[desdir]], [[entredir]], [[interdir]], [[maldir]], [[predir]], [[redir]]; -- behaves like an -er/-re verb match = match_against_verbs("dir", {"^", "^a", "contra", "des", "entre", "inter", "mal", "pre", "^re"}), forms = { stem = "die", g_infix = "+", imp_2s = "digues", imp_2p = "digueu", pp = "dit", } }, { -- [[dur]], [[endur-se]]; behaves like an -er/-re verb match = "dur", forms = { stem = "due", g_infix = "+", pres3s = {"duu", "du"}, -- generates pres_2s, imp_2s impf1 = "dui", impf2 = "dúi", pp = "dut", } }, { -- [[ser]]; highly irregular match = "^ser", forms = { pres_1s = "soc", pres_2s = "ets", pres_3s = "és", pres_1p = "som", pres_2p = "sou", pres_3p = "són", impf1 = "er", impf2 = "ér", pres_sub_stressed = "sigui", pres_sub_unstressed = "sigue", pret = "fó", pret_1s = "fui", pret_3s = "fou", impf_sub_1s = "fos", -- regular except for lack of accent impf_sub_3s = "fos", -- same cond = {"serí", "fór"}, imp_2s = "sigues", imp_2p = "sigueu", pp = {"estad", "sigud"}, gerund = {"sent", "essent"}, irreg = true, } }, { -- [[ésser]]; variant of [[ser]] match = "^ésser", like = "ser", }, { -- [[haver]] as auxiliary; highly irregular match = "^haver", var = "aux", forms = { pres_1s = "he", pres_2s = "has", pres_3s = "ha", pres_1p = "hem", pres_2p = "heu", pres_3p = "han", fut = "haur", cond = {"haurí", "haguér"}, pres_sub_stressed = "hagi", pres_sub_unstressed = "hàgi", noimp = true, g_infix = "+", } }, { -- [[haver]] as full verb; highly irregular match = "^haver", var = "full", forms = { pres_1s = {"hec", "hac"}, pres_stressed = {"heu", "hau"}, fut = "haur", pres_sub_stressed = "hegui", g_infix = "+", } }, { -- [[heure]]; variant of full verb [[haver]] match = "^heure", like = "haver", likevar = "full", }, { -- [[haure]]; variant of full verb [[haver]] match = "^haure", like = "haver", likevar = "full", }, } local function skip_slot(base, slot, allow_overrides) if not allow_overrides and (base.basic_overrides[slot] or base.refl and base.basic_reflexive_only_overrides[slot]) then -- Skip any slots for which there are overrides. return true end if base.only3s and (slot:find("^pp_f") or slot:find("^pp_mp")) then -- diluviar, atardecer, neviscar; impersonal verbs have only masc sing pp return true end if not slot:find("[123]") then -- Don't skip non-personal slots. return false end if base.nofinite then return true end if (base.only3s or base.only3sp or base.only3p) and (slot:find("^imp_") or slot:find("^neg_imp_")) then return true end if base.only3s and not slot:find("3s") then -- diluviar, atardecer, neviscar return true end if base.only3sp and not slot:find("3[sp]") then -- atañer, concernir return true end if base.only3p and not slot:find("3p") then -- [[caer cuatro gotas]], [[caer chuzos de punta]], [[entrarle los siete males]] return true end return false end local function add_stem_ending(stem, ending) if ending == "" then return stem end if stem:find("#$") then -- remove final accent when adding a suffix stem = com.remove_accents((stem:gsub("#$", "")), "final syllable only") end return stem .. ending end local function process_stem(stem, fn) if stem:find("#$") then local stem_no_pound_sign = stem:match("^(.*)#$") return fn(stem_no_pound_sign) .. "#" else return fn(stem) end end -- Add the `stem` to the `ending` and apply any phonetic modifications. `is_full_word` indicates that we're creating -- a "full word" not a stem, and turns on devoicing of final consonants. `dont_include_prefix` is used when creating -- stems and indicates not to prepend the prefix in `base.prefix` to the result. `is_pres_sub_stressed` is used when -- creating the pres_sub_stressed stem, to correctly handle both [[desaiguar]] and [[argüir]], whose respective -- interactions between ü and i/ï are very tricky. -- -- WARNING: This function is written very carefully; changes to it can easily have unintended consequences. local function combine_stem_ending(base, stem, ending, is_full_word, dont_include_prefix, is_pres_sub_stressed) -- Include the prefix in the stem unless dont_include_prefix is given (used in construct_stems()), or the value of -- `stem` comes from a user-specified stem or form override. if not dont_include_prefix and not stem:find(IS_USER_STEM_OVERRIDE) and not stem:find(IS_USER_FORM_OVERRIDE) then stem = base.prefix .. stem end -- A * at the beginning of the ending is a signal to remove a stressed accent from the stem. This may feed any of -- the following rules. if ending:find("^%*") then ending = ending:gsub("^%*", "") stem = com.remove_accents(stem, "final syllable only") end -- If ending begins with s and stem ends in a sibilant, we need an e in between; cf. pres_2s 'apareixes' of -- [[aparèixer]], pres_2s 'torces' of [[tòrcer]], pres_2s 'fuges' of [[fugir]], pres_2s 'brunzes' of [[brunzir]]. -- This may feed the next rule. if ending:find("^s") and rfind(stem, "[çjsxz]$") then ending = "e" .. ending end -- By default, stems are in their "back" (standalone) form. Before a front vowel, convert the final consonant to -- its "front" form so the pronunciation doesn't change. if rfind(ending, "^" .. front_vowel_c) then -- adequar -> adeqües -- enaiguar -> enaigües -- pegar -> pegues -- arranjar -> arranges -- marcar -> marques -- abraçar -> abraces stem = com.back_to_front(stem) end -- Ending beginning in -i after diphthong ending in V + i compresses the two i's into one (cf. pret_1s 'desmaí' and -- pres_sub_1s 'desmaï' of [[desmaiar]]). This rule doesn't apply after pseudo-vowel u in gu/qu; cf. pret_1s 'guií' -- of [[guiar]] and contrast pret_1s 'cruí' of [[cruiar]]. This may feed the next rule. if rfind(ending, "^[iíï]") and rfind(stem, V .. "i$") and not rfind(stem, "[gq][uü]i$") then stem = stem:gsub("i$", "") end -- If ending begins with i (not í), it must get a diaeresis after a true vowel (not gu/qu, cf. pres_1p 'delinquim' -- of [[delinquir]], not '#delinquïm'; also not a diphthong ending in u, cf. pres_sub_1s 'apreui' of [[apreuar]] -- not '#apreuï') to prevent the two merging into a diphthong. Note that ü -> u before ï, but to simplify things -- we leave the double umlauts in place and remove the first one during postprocessing, in fix_double_umlauts(). -- Cf.: -- * impf_1s 'raïa' of [[raure]]; -- * pres_sub_1s 'creï' of [[crear]]; -- * pres_sub_1s 'associï' of [[associar]]; -- * impf_1s 'cloïa' of [[cloure]]; -- * pres_1p 'lluïm' of [[lluir]]; -- * pres_1p 'arguïm' of [[argüir]]. if ending:find("^i") and rfind(stem, "[aeiouü]$") and not stem:find("[aeiogq]u$") and -- Unstressed subjunctive endings of [[enaiguar]] remain without umlaut: enaigüi/enaigüis/enaigüin; -- but stressed endings of [[argüir]] that begin with 'i' do get an umlaut: arguït, impf. arguïa, including -- stressed subjunctive endings arguïm/arguïu. In both cases the ending is '-i' as part of the creation of -- the respective stems. There seems no way of distinguishing the two cases other than with a special flag. not (rfind(stem, "[gq]ü$") and ending == "i" and is_pres_sub_stressed) then ending = ending:gsub("^i", "ï") end local retval = add_stem_ending(stem, ending) if retval:find("#$") then -- remove final accent if no vowels in prefix retval = retval:gsub("#$", "") if not rfind(base.prefix, V) then retval = com.remove_accents(retval, "final syllable only") end end if is_full_word then local saw_is_user_form_override retval, saw_is_user_form_override = rsubb(retval, IS_USER_FORM_OVERRIDE, "") retval = retval:gsub(IS_USER_STEM_OVERRIDE, "") if not saw_is_user_form_override then -- Devoice final voiced obstruent (cf. pres_2s 'caps', pres_3s 'cap' of [[cabre]]). But not after a -- consonant (cf. pres_2s 'perds', pres_3s 'perd' of [[perdre]]), except for g -> c, which operates -- even after a consonant (pres_1s 'resolc' of [[resoldre]], pres_1s 'tinc' of [[tenir]]). retval = retval:gsub("g(s?)$", "c%1") retval = rsub(retval, "(" .. V .. ")([bdj])(s?)$", function(before, voiced, after) local devoice = { b = "p", d = "t", j = "ig", -- pres_3s 'fuj' of [[fugir]] -> 'fuig' } return before .. devoice[voiced] .. after end) end end return retval end local function add3(base, slot, stems, endings, footnotes, allow_overrides) if skip_slot(base, slot, allow_overrides) then return end local function do_combine_stem_ending(stem, ending) return combine_stem_ending(base, stem, ending, "is full word") end iut.add_forms(base.forms, slot, stems, endings, do_combine_stem_ending, nil, nil, footnotes) end local function insert_form(base, slot, form) if not skip_slot(base, slot) then iut.insert_form(base.forms, slot, form) end end local function insert_forms(base, slot, forms) if not skip_slot(base, slot) then iut.insert_forms(base.forms, slot, forms) end end local function add_single_stem_tense(base, slot_pref, stems, s1, s2, s3, p1, p2, p3) local function addit(slot, ending) add3(base, slot_pref .. "_" .. slot, stems, ending) end addit("1s", s1) addit("2s", s2) addit("3s", s3) addit("1p", p1) addit("2p", p2) addit("3p", p3) end local function map_general(stemforms, fn) return iut.map_forms(iut.convert_to_general_list_form(stemforms), fn) end local function flatmap_general(stemforms, fn) return iut.flatmap_forms(iut.convert_to_general_list_form(stemforms), fn) end -- Given a stem ending in a conjugation vowel -a/-e/-i/-ï, split into stem base and conjugation vowel, converting the -- stem base to "back" form if the conjugation vowel is front (hence 'torce' of [[tòrcer]] splits into 'torç' and 'e', -- and 'fugi' of [[fugir]] splits into 'fuj' and 'i'). local function split_conj_vowel(stem) local stem_base, conj_vowel = rmatch(stem, "^(.*)([aeiï])$") if not stem_base then error(("Internal error: Stem '%s' doesn't end in conjugation vowel a/e/i"):format(stem)) end if conj_vowel == "ï" then -- To simplify handling of ï, convert to i. It will be converted back to ï as necessary in -- combine_stem_ending(). conj_vowel = "i" end if rfind(conj_vowel, front_vowel_c) then stem_base = com.front_to_back(stem_base) end return stem_base, conj_vowel end local function construct_stems(base) base.output_stems = {} local stems = base.output_stems local bst = base.input_stems -- YUCK, see combine_stem_ending() for the necessity of is_pres_sub_stressed. local function combine(stem, ending, is_pres_sub_stressed) return combine_stem_ending(base, stem, ending, false, "dont include prefix", is_pres_sub_stressed) end stems.irreg = bst.irreg or bst.g_infix -- NOTE: Some stems end in a conjugation or similar vowel, specifically: -- * `stem` (ends in conjugation vowel -a/-e/-i); -- * `stressed_stem` (likewise); -- * `unstressed_stem` (likewise); -- * `pres_unstressed` (which assumes the form of the gerund minus the -nt; note that `pres_stressed` does *NOT* -- end in a conjugation vowel, but assumes the stem form; the value of pres_3s will be derived by adding -a for -- -ar verbs and otherwise adding an -e prop vowel when required, as in [[cobrir]], and otherwise adding no -- vowel); -- * `pres_sub_stressed` (which assumes the form of pres_sub_3s and hence usually ends in -i, occasionally -a); -- * `pres_sub_unstressed` (which assumes the form of pres_sub_1p minus the -m, hence ends in -e or -i). -- Save stem for use in add_categories_and_annotation() for determining the conjugation class. stems.stem = bst.stem or base.stem local eix_infix_stem if base.conj_vowel == "i" then -- Save eix_infix value for use in add_categories_and_annotation() for determining whether consonant -- alternations exist. stems.eix_infix = bst.eix_infix or bst.g_infix and "-" or "+" eix_infix_stem = flatmap_general(stems.eix_infix, function(form) if form == "+" then return map_general(stems.stem, function(form) local stem_base, conj_vowel = split_conj_vowel(form) return combine(stem_base, "eixe") end) elseif form == "-" then return stems.stem else return form end end) end local stressed_stem = bst.stressed_stem or eix_infix_stem or stems.stem local unstressed_stem = bst.unstressed_stem or stems.stem -- Add the 'g' that is characteristic of g-infix verbs. We remove a stem-final v, e.g. [[beure]] with stem 'beve' -- becomes 'beg'. local function add_g(stemforms) return map_general(stemforms, function(form) local stem_base, conj_vowel = split_conj_vowel(form) stem_base = stem_base:gsub("v$", "") return combine(stem_base, "g") end) end -- Add the 'u' of the pres_3s that is characteristic of g-infix verbs (and conjugation vowel 'e', later removed). -- We remove a stem-final v, as well as i as part of a diphthong, e.g. [[beure]] with stem 'beve' becomes 'beue' -- and [[veure]] with stem 'veie' becomes 'veue' (but [[riure]] with stem 'rie' becomes 'riue' not '#rue'). We -- don't add -u after a consonant, e.g. [[doldre]] with stem 'dole' becomes 'dole' not '#dolue'. local function add_u(stemforms) return map_general(stemforms, function(form) local stem_base, conj_vowel = split_conj_vowel(form) if stem_base:find("v$") then stem_base = stem_base:gsub("v$", "") else stem_base = rsub(stem_base, "(" .. V .. ")i$", "%1") end -- Add u after vowel but not after another u, so we get pres_3p 'duen' of [[dur]] not '#duuen'. if rfind(stem_base, V .. "$") and not stem_base:find("u$") then return combine(stem_base, "u") else return stem_base end end) end local stressed_g_infix, unstressed_g_infix, g_infix_pres_stressed if bst.g_infix then local function flatmap_g_infix(default) return flatmap_general(bst.g_infix, function(form) if form == "+" then return default else return form end end) end stressed_g_infix = flatmap_g_infix(add_g(stressed_stem)) unstressed_g_infix = flatmap_g_infix(add_g(unstressed_stem)) g_infix_pres_stressed = add_u(stressed_stem) end stems.pres_unstressed = bst.pres_unstressed or unstressed_stem stems.pres_stressed = -- If no_pres_stressed given, pres_stressed stem should be empty so no forms are generated. base.no_pres_stressed and {} or bst.pres_stressed or g_infix_pres_stressed or map_general(stressed_stem, function(form) local stem_base, conj_vowel = split_conj_vowel(form) return stem_base end) stems.pres1s = -- If no_pres_stressed given, pres1s stem should be empty so no forms are generated. base.no_pres_stressed and {} or stressed_g_infix or map_general(stems.pres_stressed, function(form) return combine(form, "o") end) stems.pres3s = -- If no_pres_stressed given, pres3s stem should be empty so no forms are generated. base.no_pres_stressed and {} or bst.pres3s or map_general(stems.pres_stressed, function(form) if base.conj_vowel == "a" then return combine(form, "a") elseif rfind(form, C .. "[lr]$") and not rfind(form, V .. "ll$") then return combine(form, "e") else return form end end) stems.pres3p = -- If no_pres_stressed given, pres3p stem should be empty so no forms are generated. base.no_pres_stressed and {} or map_general(stems.pres_stressed, function(form) return combine(form, "en") end) local function compute_impf_stem(with_accent) return map_general(stems.pres_unstressed, function(form) local stem_base, conj_vowel = split_conj_vowel(form) if conj_vowel == "a" then return combine(stem_base, with_accent and "àv" or "av") elseif stem_base:find("i#?$") then form = form:gsub("i#?$", "") return combine(rmatch(stem_base, "^(.-)" .. V .. "*$"), with_accent and "èi" or "ei") else return combine(stem_base, with_accent and "í" or "i") -- i -> ï after a vowel end end) end stems.impf1 = bst.impf1 or compute_impf_stem(false) stems.impf2 = bst.impf2 or compute_impf_stem(true) stems.pret = bst.pret or unstressed_g_infix and map_general(unstressed_g_infix, function(form) return combine(form, "é") end ) or map_general(unstressed_stem, function(form) local accent_conj_vowel = { a = "à", e = "é", i = "í", } local stem_base, conj_vowel = split_conj_vowel(form) return combine(stem_base, accent_conj_vowel[conj_vowel]) end) stems.fut = bst.fut or base.inf_stem stems.cond = bst.cond or map_general(stems.fut, function(form) return combine(form, "í") end) stems.pres_sub_stressed = bst.pres_sub_stressed or stressed_g_infix and map_general(stressed_g_infix, function(form) return combine(form, "i") end) or map_general(stressed_stem, function(form) local stem_base, conj_vowel = split_conj_vowel(form) return combine(stem_base, "i", "is pres_sub_stressed") end) stems.pres_sub_unstressed = bst.pres_sub_unstressed or unstressed_g_infix and map_general(unstressed_g_infix, function(form) return combine(form, "e") end) or map_general(unstressed_stem, function(form) local stem_base, conj_vowel = split_conj_vowel(form) return combine(stem_base, conj_vowel == "i" and conj_vowel or "e") end) stems.impf_sub = bst.impf_sub or map_general(stems.pret, function(form) local stem_base = rmatch(form, "^(.*)à$") -- already in "back" form, no need to convert if stem_base then return combine(stem_base, "é") else return form end end) stems.pp = bst.pp or unstressed_g_infix and map_general(unstressed_g_infix, function(form) return combine(form, "ud") end ) or map_general(unstressed_stem, function(form) local stem_base, conj_vowel = split_conj_vowel(form) -- use combine() so we get 'abduïd' from 'abdu-' of [[abduir]], 'seguid' from 'seg-' from [[seguir]], etc. return combine(stem_base, (conj_vowel == "e" and "u" or conj_vowel) .. "d") end) end local function a_to_e(base, stems, suffix) return map_general(stems, function(form) local stem_base = form:match("^(.-)a$") if stem_base then suffix = "e" .. suffix else stem_base = form end return combine_stem_ending(base, stem_base, suffix, "is full word") end) end local function add_present_indic(base) local stems = base.output_stems local function addit(slot, stems, ending) add3(base, "pres_" .. slot, stems, ending) end addit("1s", stems.pres1s, "") insert_forms(base, "pres_2s", a_to_e(base, stems.pres3s, "s")) addit("3s", stems.pres3s, "") insert_forms(base, "pres_1p", a_to_e(base, stems.pres_unstressed, "m")) insert_forms(base, "pres_2p", a_to_e(base, stems.pres_unstressed, "u")) addit("3p", stems.pres3p, "") end local function add_present_subj(base) local stems = base.output_stems local function addit(slot, stems, ending) add3(base, "pres_sub_" .. slot, stems, ending) end -- Regular -ar verb: [[amar]]: ami, amis, ami, amem, ameu, amin -- Regular -re verb: [[batre]]: bati, batis, bati, batem, bateu, batin (same as -ar verb) -- Regular -ir verb, no -eix- infix: [[dormir]]: dormi, dormis, dormi, dormim, dormiu, dormin -- Regular -ir verb, -eix- infix: [[imprimir]]: imprimeixi, imprimeixis, imprimeixi, imprimim, imprimiu, imprimeixin -- Stem changing in 123s/3p vs. 12p: -- * -eix- infix (-eix- in all stressed forms: 123s/3p of pres ind/sub, 2s imp) -- * [[collir]]: culli, cullis, culli, collim, colliu, cullin (cull- in all stressed forms) -- * [[cabre]]: càpiga, càpigues, càpiga, capiguem, capigueu, càpiguen (also different endings) addit("1s", stems.pres_sub_stressed, "") insert_forms(base, "pres_sub_2s", a_to_e(base, stems.pres_sub_stressed, "s")) addit("3s", stems.pres_sub_stressed, "") addit("1p", stems.pres_sub_unstressed, "m") addit("2p", stems.pres_sub_unstressed, "u") insert_forms(base, "pres_sub_3p", a_to_e(base, stems.pres_sub_stressed, "n")) end local function add_finite_non_present(base) local stems = base.output_stems local function add_tense(slot, stem, s1, s2, s3, p1, p2, p3) add_single_stem_tense(base, slot, stem, s1, s2, s3, p1, p2, p3) end add_tense("impf", stems.impf1, "a", "es", "a", nil, nil, "en") add_tense("impf", stems.impf2, nil, nil, nil, "em", "eu", nil) -- pret_1s ends in -í regardless of the normal vowel of the stem. insert_forms(base, "pret_1s", map_general(stems.pret, function(form) local stem_base, conj_vowel = rmatch(form, "^(.*)(" .. V .. ")$") if not stem_base then error(("Internal error: Preterite stem '%s' doesn't end in vowel"):format(form)) end if rfind(conj_vowel, front_vowel_c) then stem_base = com.front_to_back(stem_base) end -- Use combine_stem_ending() to handle back-to-front conversions, e.g. pegà -> peguí for [[pegar]] and ensure -- that the prefix gets added. return combine_stem_ending(base, stem_base, "í", "is full word") end)) -- * at the beginning of the ending means to remove an accent from the last vowel of the preterite stem. add_tense("pret", stems.pret, nil, "*res", "", "rem", "reu", "*ren") -- * at the beginning of the ending means to remove an accent from the last vowel of the imperfect subjunctive stem. add_tense("impf_sub", stems.impf_sub, "s", "*ssis", "s", "ssim", "ssiu", "*ssin") add_tense("fut", stems.fut, "é", "às", "à", "em", "eu", "an") add_tense("cond", stems.cond, "*a", "*es", "*a", "em", "eu", "*en") end local function add_non_finite_forms(base) local stems = base.output_stems local function addit(slot, stems, ending, footnotes) add3(base, slot, stems, ending, footnotes) end insert_form(base, "infinitive", {form = base.orig_verb}) -- Also insert "infinitive + reflexive pronoun" combinations if we're handling a reflexive verb. See comment below -- for "gerund + reflexive pronoun" combinations. if base.refl then for _, persnum in ipairs(person_number_list) do insert_form(base, "infinitive_" .. persnum, {form = base.orig_verb}) end end -- Gerunds don't have an umlaut over the i in cases like 'abduint' of 'abduir' (not '#abduïnt'). local pres_unstressed_no_umlaut = map_general(stems.pres_unstressed, function(form) return rsub(form, "ï$", "i") end) addit("gerund", pres_unstressed_no_umlaut, "nt") -- Also insert "gerund + reflexive pronoun" combinations if we're handling a reflexive verb. We insert exactly the -- same form as for the bare gerund; later on in add_reflexive_or_fixed_clitic_to_forms(), we add the appropriate -- clitic pronouns. It's important not to do this for non-reflexive verbs, because in that case, the clitic -- pronouns won't be added, and {{ca-verb form of}} will wrongly consider all these combinations as possible -- inflections of the bare gerund. Thanks to [[User:JeffDoozan]] for this bug fix. if base.refl then for _, persnum in ipairs(person_number_list) do addit("gerund_" .. persnum, pres_unstressed_no_umlaut, "nt") end end addit("pp_ms", stems.pp, "") if not base.pp_inv then addit("pp_fs", stems.pp, "a") -- make_plural() handles the complexities of e.g. 'vist' of [[veure]] -> 'vistos'/'vists' and 'romàs' of -- [[romandre]] -> 'romasos'. We need to use flatmap_general() because make_plural() may return more than one -- plural, and we need to use map_general() on the result, applying combine_stem_ending(), to ensure that -- prefixes get properly added and plurals like 'amads' of stem 'amad' of [[amar]] get converted to 'amats'. insert_forms(base, "pp_mp", map_general(flatmap_general(stems.pp, function(form) -- Remove any # indicating that an accent will be dropped; it will be dropped in any case by make_plural(). form = form:gsub("#$", "") return com.make_plural(form, "m") end), function(form) return combine_stem_ending(base, form, "", "is full word") end)) addit("pp_fp", stems.pp, "es") end end local function add_imperatives(base) if base.noimp then return end -- Copy pres3s to imperative since they are almost always the same. insert_forms(base, "imp_2s", iut.map_forms(base.forms.pres_3s, function(form) return form end)) -- Copy pres2p to imperative plural since they are almost always the same. insert_forms(base, "imp_2p", iut.map_forms(base.forms.pres_2p, function(form) return form end)) -- Copy subjunctives to imperatives. for _, persnum in ipairs({"3s", "1p", "3p"}) do local from = "pres_sub_" .. persnum local to = "imp_" .. persnum insert_forms(base, to, iut.map_forms(base.forms[from], function(form) return form end)) end end local function fix_double_umlauts(base) for slot, forms in pairs(base.forms) do for _, form in ipairs(forms) do form.form = form.form:gsub("üï", "uï") end end end local function process_slot_overrides(base, filter_slot, reflexive_only) local overrides = reflexive_only and base.basic_reflexive_only_overrides or base.basic_overrides for slot, forms in pairs(overrides) do if not filter_slot or filter_slot(slot) then add3(base, slot, forms, "", nil, "allow overrides") end end end local function link_clitic(clitic) return (clitic:gsub("([^ %-]+)", "[[%1]]")) end -- Prefix `form` with `clitic`, adding fixed text `between` between them. Add links as appropriate unless the user -- requested no links. Check whether form already has brackets (as will be the case if the form has a fixed clitic). local function prefix_clitic_to_form(base, clitic, between, form) if base.alternant_multiword_spec.args.noautolinkverb then return clitic .. between .. form else local clitic_pref = link_clitic(clitic) .. between if form:find("%[%[") then return clitic_pref .. form else return clitic_pref .. "[[" .. form .. "]]" end end end -- Suffix `form` with `clitic`. Add links as appropriate unless the user requested no links. Check whether form already -- has brackets (as will be the case if the form has a fixed clitic). local function suffix_clitic_to_form(base, clitic, form) local autolink = not base.alternant_multiword_spec.args.noautolinkverb if base.alternant_multiword_spec.args.noautolinkverb then return form .. clitic else local clitic_suf = link_clitic(clitic) if form:find("%[%[") then return form .. clitic_suf else return "[[" .. form .. "]]" .. clitic_suf end end end -- Add a reflexive pronoun or fixed clitic (FIXME: not working), as appropriate to the base forms that were generated. -- `do_joined` means to do only the forms where the pronoun is joined to the end of the form; otherwise, do only the -- forms where it is not joined and precedes the form. local function add_reflexive_or_fixed_clitic_to_forms(base, do_reflexive, do_joined) for _, slotaccel in ipairs(base.alternant_multiword_spec.verb_slots_basic) do local slot, accel = unpack(slotaccel) local persnum if slot:find("[123]") then persnum = slot:match("^.*_(.-)$") else persnum = "3s" end local function get_proclitic(form) --if not do_reflexive then -- return base.clitic if form:find("^[aeiouh]") then return proclitic_elided_person_number_to_reflexive_pronoun[persnum] else return proclitic_non_elided_person_number_to_reflexive_pronoun[persnum] end end local function get_enclitic(form) --if not do_reflexive then -- return base.clitic if rfind(form, C .. "$") or rfind(form, V .. "[iu]$") and not form:find("[gq]ui$") then return enclitic_non_elided_person_number_to_reflexive_pronoun[persnum] else return enclitic_elided_person_number_to_reflexive_pronoun[persnum] end end if base.forms[slot] then if do_reflexive and slot:find("^pp_") or slot == "infinitive_linked" then -- do nothing with reflexive past participles or with infinitive linked (handled at the end) elseif slot:find("^neg_imp_") then error("Internal error: Should not have forms set for negative imperative at this stage") else local slot_has_suffixed_clitic = slot:find("infinitive") or slot:find("gerund") or slot:find("^imp_") -- Maybe generate non-reflexive parts and separated syntactic variants for use in -- {{ca-verb form of}}. See comment in add_slots() above `need_special_verb_form_of_slots`. -- Check for do_joined so we only run this code once. if do_reflexive and do_joined and base.alternant_multiword_spec.source_template == "ca-verb form of" and -- Skip personal variants of infinitives and gerunds so we don't think [[arrependendo]] is a -- non-reflexive equivalent of [[arrependendo-me]]. not slot:find("infinitive_") and not slot:find("gerund_") then -- Clone the forms because we will be destructively modifying them just below, adding the reflexive -- pronoun. insert_forms(base, slot .. "_non_reflexive", mw.clone(base.forms[slot])) if slot_has_suffixed_clitic then insert_forms(base, slot .. "_variant", iut.map_forms(base.forms[slot], function(form) return prefix_clitic_to_form(base, get_proclitic(form), "... ", form) end)) end end if slot_has_suffixed_clitic then if do_joined then -- Add clitic after form. for _, form in ipairs(base.forms[slot]) do form.form = suffix_clitic_to_form(base, get_enclitic(form.form), form.form) end end elseif not do_joined then -- Add clitic before form. for _, form in ipairs(base.forms[slot]) do form.form = prefix_clitic_to_form(base, get_proclitic(form.form), "", form.form) end end end end end end local function handle_infinitive_linked(base) -- Compute linked versions of potential lemma slots, for use in {{ca-verb}}. -- We substitute the original lemma (before removing links) for forms that -- are the same as the lemma, if the original lemma has links. for _, slot in ipairs({"infinitive"}) do insert_forms(base, slot .. "_linked", iut.map_forms(base.forms[slot], function(form) if form == base.lemma and rfind(base.linked_lemma, "%[%[") then return base.linked_lemma else return form end end)) end end local function generate_negative_imperatives(base) if base.noimp then return end -- Copy subjunctives to negative imperatives, preceded by "no". for _, persnum in ipairs(neg_imp_person_number_list) do local from = "pres_sub_" .. persnum local to = "neg_imp_" .. persnum insert_forms(base, to, iut.map_forms(base.forms[from], function(form) if base.alternant_multiword_spec.args.noautolinkverb then return "no " .. form elseif form:find("%[%[") then -- already linked, e.g. when reflexive return "[[no]] " .. form else return "[[no]] [[" .. form .. "]]" end end)) end end -- Process specs given by the user using 'addnote[SLOTSPEC][FOOTNOTE][FOOTNOTE][...]'. local function process_addnote_specs(base) for _, spec in ipairs(base.addnote_specs) do for _, slot_spec in ipairs(spec.slot_specs) do slot_spec = "^" .. slot_spec .. "$" for slot, forms in pairs(base.forms) do if rfind(slot, slot_spec) then -- To save on memory, side-effect the existing forms. for _, form in ipairs(forms) do form.footnotes = iut.combine_footnotes(form.footnotes, spec.footnotes) end end end end end end local function add_missing_links_to_forms(base) -- Any forms without links should get them now. Redundant ones will be stripped later. for slot, forms in pairs(base.forms) do for _, form in ipairs(forms) do if not form.form:find("%[%[") then form.form = "[[" .. form.form .. "]]" end end end end local function conjugate_verb(base) construct_stems(base) add_present_indic(base) add_present_subj(base) add_finite_non_present(base) add_non_finite_forms(base) fix_double_umlauts(base) -- do non-reflexive non-imperative slot overrides process_slot_overrides(base, function(slot) return not slot:find("^imp_") and not slot:find("^neg_imp_") end) -- This should happen after process_slot_overrides() in case a derived slot is based on an override -- (as with the imp_3s of [[dar]], [[estar]]). add_imperatives(base) -- do non-reflexive positive imperative slot overrides process_slot_overrides(base, function(slot) return slot:find("^imp_") end) -- We need to add joined reflexives, then joined and non-joined clitics, then non-joined reflexives, so we get -- [[arrepéndete]] but [[no]] [[te]] [[arrependas]]. if base.refl then add_reflexive_or_fixed_clitic_to_forms(base, "do reflexive", "do joined") process_slot_overrides(base, nil, "do reflexive") -- do reflexive-only slot overrides add_reflexive_or_fixed_clitic_to_forms(base, "do reflexive", false) end -- This should happen after add_reflexive_or_fixed_clitic_to_forms() so negative imperatives get the reflexive pronoun -- and clitic in them. generate_negative_imperatives(base) -- do non-reflexive negative imperative slot overrides -- FIXME: What about reflexive negative imperatives? process_slot_overrides(base, function(slot) return slot:find("^neg_imp_") end) -- This should happen before add_missing_links_to_forms() so that the comparison `form == base.lemma` -- in handle_infinitive_linked() works correctly and compares unlinked forms to unlinked forms. handle_infinitive_linked(base) process_addnote_specs(base) if not base.alternant_multiword_spec.args.noautolinkverb then add_missing_links_to_forms(base) end end local function parse_indicator_spec(angle_bracket_spec) -- Store the original angle bracket spec so we can reconstruct the overall conj spec with the lemma(s) in them. local base = { angle_bracket_spec = angle_bracket_spec, user_basic_overrides = {}, user_stems = {}, addnote_specs = {}, } local function parse_err(msg) error(msg .. ": " .. angle_bracket_spec) end local function fetch_footnotes(separated_group) local footnotes for j = 2, #separated_group - 1, 2 do if separated_group[j + 1] ~= "" then parse_err("Extraneous text after bracketed footnotes: '" .. table.concat(separated_group) .. "'") end if not footnotes then footnotes = {} end table.insert(footnotes, separated_group[j]) end return footnotes end local inside = angle_bracket_spec:match("^<(.*)>$") assert(inside) if inside == "" then return base end local segments = put.parse_balanced_segment_run(inside, "[", "]") local dot_separated_groups = put.split_alternating_runs(segments, "%.") for i, dot_separated_group in ipairs(dot_separated_groups) do local first_element = dot_separated_group[1] if first_element == "addnote" then local spec_and_footnotes = fetch_footnotes(dot_separated_group) if #spec_and_footnotes < 2 then parse_err("Spec with 'addnote' should be of the form 'addnote[SLOTSPEC][FOOTNOTE][FOOTNOTE][...]'") end local slot_spec = table.remove(spec_and_footnotes, 1) local slot_spec_inside = rmatch(slot_spec, "^%[(.*)%]$") if not slot_spec_inside then parse_err("Internal error: slot_spec " .. slot_spec .. " should be surrounded with brackets") end local slot_specs = rsplit(slot_spec_inside, ",") -- FIXME: Here, [[Module:it-verb]] called strip_spaces(). Generally we don't do this. Should we? table.insert(base.addnote_specs, {slot_specs = slot_specs, footnotes = spec_and_footnotes}) elseif indicator_flags[first_element] then if #dot_separated_group > 1 then parse_err("No footnotes allowed with '" .. first_element .. "' spec") end if base[first_element] then parse_err("Spec '" .. first_element .. "' specified twice") end base[first_element] = true elseif first_element:find("^var:") then if #dot_separated_group > 1 then parse_err(("Can't attach footnotes to 'var:' spec '%s'"):format(first_element)) end base.var = first_element:match("^var:(.*)$") elseif first_element:find(":") then local colon_separated_groups = put.split_alternating_runs(dot_separated_group, "%s*:%s*") local first_element = colon_separated_groups[1][1] if #colon_separated_groups[1] > 1 then parse_err("Can't attach footnotes directly to '" .. first_element .. "' spec; attach them to the " .. "colon-separated values following the initial colon") end if overridable_stems[first_element] then if base.user_stems[first_element] then parse_err("Overridable stem '" .. first_element .. "' specified twice") end table.remove(colon_separated_groups, 1) base.user_stems[first_element] = overridable_stems[first_element](colon_separated_groups, {prefix = first_element, base = base, parse_err = parse_err, fetch_footnotes = fetch_footnotes}) else -- assume a basic override; we validate further later when the possible slots are available if base.user_basic_overrides[first_element] then parse_err("Basic override '" .. first_element .. "' specified twice") end table.remove(colon_separated_groups, 1) base.user_basic_overrides[first_element] = allow_multiple_values_for_override(colon_separated_groups, {prefix = first_element, base = base, parse_err = parse_err, fetch_footnotes = fetch_footnotes}, "is form override") end else parse_err("Unrecognized spec '" .. first_element .. "'") end end return base end -- Normalize all lemmas, substituting the pagename for blank lemmas and adding links to multiword lemmas. local function normalize_all_lemmas(alternant_multiword_spec, head) -- (1) Add links to all before and after text. Remember the original text so we can reconstruct the verb spec later. if not alternant_multiword_spec.args.noautolinktext then iut.add_links_to_before_and_after_text(alternant_multiword_spec, "remember original") end -- (2) Remove any links from the lemma, but remember the original form so we can use it below in the 'lemma_linked' -- form. iut.map_word_specs(alternant_multiword_spec, function(base) if base.lemma == "" then base.lemma = head end base.user_specified_lemma = base.lemma base.lemma = m_links.remove_links(base.lemma) local refl_verb = base.lemma local verb, refl = rmatch(refl_verb, "^(.-)%-(se)$") if not verb then verb, refl = rmatch(refl_verb, "^(.-)('s)$") end if not verb then verb, refl = refl_verb, nil end base.user_specified_verb = verb base.refl = refl base.verb = base.user_specified_verb local linked_lemma if alternant_multiword_spec.args.noautolinkverb or base.user_specified_lemma:find("%[%[") then linked_lemma = base.user_specified_lemma elseif base.refl then -- Reconstruct the linked lemma with separate links around base verb, reflexive pronoun and clitic. linked_lemma = base.user_specified_verb == base.verb and "[[" .. base.user_specified_verb .. "]]" or "[[" .. base.verb .. "|" .. base.user_specified_verb .. "]]" linked_lemma = linked_lemma .. (refl and "-[[" .. refl .. "]]" or "") else -- Add links to the lemma so the user doesn't specifically need to, since we preserve links in multiword -- lemmas and include links in non-lemma forms rather than allowing the entire form to be a link. linked_lemma = iut.add_links(base.user_specified_lemma) end base.linked_lemma = linked_lemma end) end local function detect_indicator_spec(base) if (base.only3s and 1 or 0) + (base.only3sp and 1 or 0) + (base.only3p and 1 or 0) > 1 then error("Only one of 'only3s', 'only3sp' and 'only3p' can be specified") end base.forms = {} base.input_stems = {} base.basic_overrides = {} base.basic_reflexive_only_overrides = {} base.orig_verb = base.verb -- in case of a 'like = "..."' redirect if not base.no_built_in then local function match_built_in_spec(verb, built_in_spec) local prefix, non_prefixed_verb if type(built_in_spec.match) == "function" then prefix, non_prefixed_verb = built_in_spec.match(verb) elseif built_in_spec.match:find("^%^") and rsub(built_in_spec.match, "^%^", "") == verb then -- begins with ^, for exact match, and matches prefix, non_prefixed_verb = "", verb else prefix, non_prefixed_verb = rmatch(verb, "^(.*)(" .. built_in_spec.match .. ")$") end return prefix, non_prefixed_verb end local function find_built_in(verb, var) for _, built_in_spec in ipairs(built_in_conjugations) do local prefix, non_prefixed_verb = match_built_in_spec(verb, built_in_spec) if prefix then if not built_in_spec.var then if var then error(("Can't specify a variant spec 'var:%s' with verb '%s'"):format(var, verb)) end return prefix, non_prefixed_verb, built_in_spec elseif not var then local possible_vars = {} for _, built_in_spec in ipairs(built_in_conjugations) do local prefix, non_prefixed_verb = match_built_in_spec(verb, built_in_spec) if prefix then table.insert(possible_vars, built_in_spec.var) end end error(("For verb '%s', must specify a variant using 'var:...'; possible values are %s"):format( verb, table.concat(possible_vars, ", "))) elseif built_in_spec.var == var then return prefix, non_prefixed_verb, built_in_spec end end end return nil end local prefix, non_prefixed_verb, built_in_spec = find_built_in(base.verb, base.var) if prefix then -- we found a built-in verb if built_in_spec.like then -- we found a redirect to another verb that has the same conjugation, just a different infinitive base.verb = prefix .. built_in_spec.like local new_prefix, new_non_prefixed_verb, new_built_in_spec = find_built_in(base.verb, built_in_spec.likevar) if new_prefix then -- redirected to another built-in verb base.prefix = new_prefix base.non_prefixed_verb = new_non_prefixed_verb built_in_spec = new_built_in_spec else built_in_spec = nil end else base.prefix = prefix base.non_prefixed_verb = non_prefixed_verb end end if built_in_spec then -- we found a built-in verb, possibly redirecting to another built-in verb for stem, forms in pairs(built_in_spec.forms) do if type(forms) == "function" then forms = forms(base, base.prefix) end if stem:find("^refl_") then stem = stem:gsub("^refl_", "") if not base.alternant_multiword_spec.verb_slots_basic_map[stem] then error("Internal error: setting for 'refl_" .. stem .. "' does not refer to a basic verb slot") end base.basic_reflexive_only_overrides[stem] = forms elseif base.alternant_multiword_spec.verb_slots_basic_map[stem] then -- an individual form override of a basic form base.basic_overrides[stem] = forms else base.input_stems[stem] = forms end end end end -- Override built-in-verb stems and overrides with user-specified ones. for stem, values in pairs(base.user_stems) do base.input_stems[stem] = values end for override, values in pairs(base.user_basic_overrides) do if not base.alternant_multiword_spec.verb_slots_basic_map[override] then error("Unrecognized override '" .. override .. "': " .. base.angle_bracket_spec) end base.basic_overrides[override] = values end base.prefix = base.prefix or "" base.non_prefixed_verb = base.non_prefixed_verb or base.verb local inf_stem, suffix = rmatch(base.non_prefixed_verb, "^(.*)(re)$") if not inf_stem then inf_stem, suffix = rmatch(base.non_prefixed_verb, "^(.*)([aeiu]r)$") end if not inf_stem then error("Unrecognized infinitive: " .. base.verb) end -- Remove accents from e.g. [[parèixer]], [[córrer]]. inf_stem = com.remove_accents(inf_stem) -- Save full infinitive stem for use in future and conditional. base.inf_stem = (inf_stem .. suffix):gsub("e$", "") local stem = inf_stem if suffix == "re" then -- verbs in -ldre, -ndre have stem without the d stem = stem:gsub("([ln])d$", "%1") elseif suffix == "ur" then stem = stem .. "u" end base.conj_vowel = (suffix == "re" or suffix == "ur") and "e" or suffix:gsub("r$", "") -- If the stem is followed by a front vowel, convert it to its "back" form before calling combine_stem_ending(), -- which expects the "back" form of the stem and may convert it back to the "front" form. Don't do this conversion -- for ï so we leave [[arguïr]] (underlyingly 'argüïr') as 'argu' ("back" form), which becomes 'argü' ("front" form) -- before front vowel ï and we end up with base.stem containing the underlying form 'argüï'. We remove the first of -- two umlauts in a row in a postprocessing step (fix_double_umlauts()). if rfind(suffix, "^[ei]") then stem = com.front_to_back(stem) end -- Use combine_stem_ending() so we get ï if necessary. base.stem = combine_stem_ending(base, stem, base.conj_vowel, false, "dont include prefix") -- Propagate built-in-verb indicator flags to `base` and combine with user-specified flags. for indicator_flag, _ in pairs(indicator_flags) do base[indicator_flag] = base[indicator_flag] or base.input_stems[indicator_flag] end end local function detect_all_indicator_specs(alternant_multiword_spec) -- Propagate some settings up; some are used internally, others by [[Module:pt-headword]]. iut.map_word_specs(alternant_multiword_spec, function(base) -- Internal indicator flags. Do these before calling detect_indicator_spec() because add_slots() uses them. for _, prop in ipairs { "refl", "clitic" } do if base[prop] then alternant_multiword_spec[prop] = true end end base.alternant_multiword_spec = alternant_multiword_spec end) add_slots(alternant_multiword_spec) iut.map_word_specs(alternant_multiword_spec, function(base) detect_indicator_spec(base) -- User-specified indicator flags. Do these after calling detect_indicator_spec() because the latter may set these -- indicators for built-in verbs. for prop, _ in pairs(indicator_flags) do if base[prop] then alternant_multiword_spec[prop] = true end end end) end local function add_categories_and_annotation(alternant_multiword_spec, base, multiword_lemma) local function insert_ann(anntype, value) m_table.insertIfNot(alternant_multiword_spec.annotation[anntype], value) end local function insert_cat(cat, also_when_multiword) -- Don't place multiword terms in categories like 'Catalan verbs ending in -ar' to avoid spamming the -- categories with such terms. if also_when_multiword or not multiword_lemma then m_table.insertIfNot(alternant_multiword_spec.categories, "カタルーニャ語 " .. cat) end end if check_for_red_links and alternant_multiword_spec.source_template == "ca-conj" and multiword_lemma then for _, slot_and_accel in ipairs(alternant_multiword_spec.all_verb_slots) do local slot = slot_and_accel[1] local forms = base.forms[slot] local must_break = false if forms then for _, form in ipairs(forms) do if not form.form:find("%[%[") then local title = mw.title.new(form.form) if title and not title.exists then insert_cat("活用表に赤リンクを含む動詞") must_break = true break end end end end if must_break then break end end end map_general(base.output_stems.stem, function(stem) local stem_base, conj_vowel = split_conj_vowel(stem) local need_no_eix_infix = true if conj_vowel ~= base.conj_vowel then insert_ann("conj", "[[付録:カタルーニャ語の動詞#不規則動詞|混合活用]]") elseif conj_vowel == "a" then insert_ann("conj", "[[付録:カタルーニャ語の動詞#第一変化動詞|第一変化]]") insert_cat("第一変化動詞") elseif conj_vowel == "e" then insert_ann("conj", "[[付録:カタルーニャ語の動詞#第二変化動詞|第二変化]]") insert_cat("第二変化動詞") elseif conj_vowel == "i" then insert_ann("conj", "[[付録:カタルーニャ語の動詞#第三変化動詞|第三変化]]") insert_cat("第三変化動詞") need_no_eix_infix = false map_general(base.output_stems.eix_infix, function(form) if form == "+" then insert_ann("eix_infix", "接中辞-eix-有り") insert_cat("-eix-を含む第三変化動詞") elseif form == "-" then insert_ann("eix_infix", "接中辞-eix-無し") insert_cat("-eix-を含まない第三変化動詞") end end) else error(("Internal error: Stem '%s' doesn't end in conjugation vowel a/e/i and split_conj_vowel() didn't catch it" ):format(stem)) end if need_no_eix_infix then insert_ann("eix_infix", "接中辞無し") end end) if base.input_stems.g_infix then insert_ann("g_infix", "軟口蓋接中辞有り") insert_cat("軟口蓋接中辞を含む動詞") else insert_ann("g_infix", "no infix") end if base.output_stems.irreg then insert_ann("irreg", "不規則") insert_cat("不規則動詞") else insert_ann("irreg", "regular") end if base.only3s then insert_ann("defective", "非人称") insert_cat("非人称動詞") elseif base.only3sp then insert_ann("defective", "第三人称のみ") insert_cat("第三人称動詞") elseif base.only3p then insert_ann("defective", "第三人称複数のみ") insert_cat("第三人称複数動詞") elseif base.no_pres_stressed then insert_ann("defective", "欠如") insert_cat("欠如動詞") else insert_ann("defective", "規則動詞") end --if base.clitic then -- insert_cat("verbs with lexical clitics") --end if base.refl then insert_cat("再帰動詞") end local stem_base, conj_vowel = split_conj_vowel(base.stem) local cons_alt if conj_vowel == "i" and base.output_stems.eix_infix == "+" then -- no alternations in verbs like [[afligir]] because all endings are front elseif stem_base:find("ç$") then cons_alt = "ç-c" elseif stem_base:find("c$") then cons_alt = "c-qu" elseif stem_base:find("g$") then cons_alt = "g-gu" elseif stem_base:find("gu$") then cons_alt = "gu-gü" elseif stem_base:find("j$") then cons_alt = "j-g" elseif stem_base:find("qu$") then cons_alt = "qu-qü" end if cons_alt then local desc = cons_alt .. " alternation" insert_ann("cons_alt", desc) insert_cat(desc .. "交替の動詞") else insert_ann("cons_alt", "non-alternating") end end -- Compute the categories to add the verb to, as well as the annotation to display in the -- conjugation title bar. We combine the code to do these functions as both categories and -- title bar contain similar information. local function compute_categories_and_annotation(alternant_multiword_spec) alternant_multiword_spec.categories = {} local ann = {} alternant_multiword_spec.annotation = ann ann.conj = {} ann.g_infix = {} ann.eix_infix = {} ann.irreg = {} ann.defective = {} ann.cons_alt = {} local multiword_lemma = false for _, form in ipairs(alternant_multiword_spec.forms.infinitive) do if form.form:find(" ") then multiword_lemma = true break end end iut.map_word_specs(alternant_multiword_spec, function(base) add_categories_and_annotation(alternant_multiword_spec, base, multiword_lemma) end) local ann_parts = {} local conj = table.concat(ann.conj, " or ") if conj ~= "" then table.insert(ann_parts, conj) end local eix_infix = table.concat(ann.eix_infix, " or ") if eix_infix ~= "" and eix_infix ~= "no infix" then table.insert(ann_parts, eix_infix) end local irreg = table.concat(ann.irreg, " or ") if irreg ~= "" and irreg ~= "regular" then table.insert(ann_parts, irreg) end local g_infix = table.concat(ann.g_infix, " or ") if g_infix ~= "" and g_infix ~= "no infix" then table.insert(ann_parts, g_infix) end local defective = table.concat(ann.defective, " or ") if defective ~= "" and defective ~= "regular" then table.insert(ann_parts, defective) end local cons_alt = table.concat(ann.cons_alt, " or ") if cons_alt ~= "" and cons_alt ~= "non-alternating" then table.insert(ann_parts, cons_alt) end alternant_multiword_spec.annotation = table.concat(ann_parts, ", ") end local function show_forms(alternant_multiword_spec) local lemmas = alternant_multiword_spec.forms.infinitive alternant_multiword_spec.lemmas = lemmas -- save for later use in make_table() local reconstructed_verb_spec = iut.reconstruct_original_spec(alternant_multiword_spec) local function transform_accel_obj(slot, formobj, accel_obj) -- No accelerators for negative imperatives, which are always multiword and derived directly from the -- present subjunctive. if slot:find("^neg_imp") then return nil end if accel_obj then accel_obj.form = "verb-form-" .. reconstructed_verb_spec end return accel_obj end local props = { lang = lang, lemmas = lemmas, transform_accel_obj = transform_accel_obj, slot_list = alternant_multiword_spec.verb_slots_basic, } iut.show_forms(alternant_multiword_spec.forms, props) alternant_multiword_spec.footnote_basic = alternant_multiword_spec.forms.footnote end local notes_template = [=[ <div class="roa-footnote-outer-div" style="width:100%;"> <div class="roa-footnote-inner-div"> {footnote} </div></div> ]=] local basic_table = [=[ {description}<div class="NavFrame"> <div class="NavHead">&nbsp; &nbsp; {title} の活用</div> <div class="NavContent"> {\op}| class="roa-inflection-table" data-toggle-category="inflection" |- ! colspan="3" class="roa-nonfinite-header" | <span title="infinitiu">不定詞</span> | colspan="5" | {infinitive} |- ! colspan="3" class="roa-nonfinite-header" | <span title="gerundi">現在分詞</span> | colspan="5" | {gerund} |- ! rowspan="3" colspan="2" class="roa-nonfinite-header" | <span title="participi passat">過去分詞</span> | colspan="2" class="roa-nonfinite-header" | ! colspan="2" class="roa-nonfinite-header" | 男性 ! colspan="2" class="roa-nonfinite-header" | 女性 |- ! colspan="2" class="roa-nonfinite-header" | 単数 | colspan="2" | {pp_ms} | colspan="2" | {pp_fs} |- ! colspan="2" class="roa-nonfinite-header" | 複数 | colspan="2" | {pp_mp} | colspan="2" | {pp_fp} |- ! colspan="2" rowspan="2" class="roa-person-number-header" | 人称 ! colspan="3" class="roa-person-number-header" | 単数 ! colspan="3" class="roa-person-number-header" | 複数 |- ! class="roa-person-number-header" style="width:12.5%;" | 第一人称 ! class="roa-person-number-header" style="width:12.5%;" | 第二人称 ! class="roa-person-number-header" style="width:12.5%;" | 第三人称 ! class="roa-person-number-header" style="width:12.5%;" | 第一人称 ! class="roa-person-number-header" style="width:12.5%;" | 第二人称 ! class="roa-person-number-header" style="width:12.5%;" | 第三人称 |- ! rowspan="6" class="roa-indicative-left-rail" | <span title="indicatiu">直説法</span> ! class="roa-indicative-left-rail" | ! class="roa-indicative-left-rail" | <<jo>> ! class="roa-indicative-left-rail" | <<tu>> ! class="roa-indicative-left-rail" | <<ell>>/<<ella>><br /><<vostè>> ! class="roa-indicative-left-rail" | <<nosaltres>><br /><<nós>> ! class="roa-indicative-left-rail" | <<vosaltres>><br /><<vós>> ! class="roa-indicative-left-rail" | <<ells>>/<<elles>><br /><<vostès>> |- ! class="roa-indicative-left-rail" style="height:3em;" | <span title="present">現在</span> | {pres_1s} | {pres_2s} | {pres_3s} | {pres_1p} | {pres_2p} | {pres_3p} |- ! class="roa-indicative-left-rail" style="height:3em;" | <span title="imperfet">不完了過去</span> | {impf_1s} | {impf_2s} | {impf_3s} | {impf_1p} | {impf_2p} | {impf_3p} |- ! class="roa-indicative-left-rail" style="height:3em;" | <span title="futur">未来</span> | {fut_1s} | {fut_2s} | {fut_3s} | {fut_1p} | {fut_2p} | {fut_3p} |- ! class="roa-indicative-left-rail" style="height:3em;" | <span title="passat">完了過去</span> | {pret_1s} | {pret_2s} | {pret_3s} | {pret_1p} | {pret_2p} | {pret_3p} |- ! class="roa-indicative-left-rail" style="height:3em;" | <span title="condicional">可能法</span> | {cond_1s} | {cond_2s} | {cond_3s} | {cond_1p} | {cond_2p} | {cond_3p} |- ! class="roa-subjunctive-left-rail" rowspan="3" | <span title="subjuntiu">接続法</span> ! class="roa-subjunctive-left-rail" | ! class="roa-subjunctive-left-rail" | <<jo>> ! class="roa-subjunctive-left-rail" | <<tu>> ! class="roa-subjunctive-left-rail" | <<ell>>/<<ella>><br /><<vostè>> ! class="roa-subjunctive-left-rail" | <<nosaltres>><br /><<nós>> ! class="roa-subjunctive-left-rail" | <<vosaltres>><br /><<vós>> ! class="roa-subjunctive-left-rail" | <<ells>>/<<elles>><br /><<vostès>> |- ! class="roa-subjunctive-left-rail" style="height:3em;" | <span title="present">現在</span> | {pres_sub_1s} | {pres_sub_2s} | {pres_sub_3s} | {pres_sub_1p} | {pres_sub_2p} | {pres_sub_3p} |- ! class="roa-subjunctive-left-rail" style="height:3em;" rowspan="1" | <span title="imperfet">過去</span> | {impf_sub_1s} | {impf_sub_2s} | {impf_sub_3s} | {impf_sub_1p} | {impf_sub_2p} | {impf_sub_3p} |- ! rowspan="3" class="roa-imperative-left-rail" style="height:3em;" | <span title="imperatiu">命令法</span> ! class="roa-imperative-left-rail" | ! class="roa-imperative-left-rail" | &mdash; ! class="roa-imperative-left-rail" | <<tu>> ! class="roa-imperative-left-rail" | <<vostè>> ! class="roa-imperative-left-rail" | <<nosaltres>> ! class="roa-imperative-left-rail" | <<vosaltres>><br /><<vós>> ! class="roa-imperative-left-rail" | <<vostès>> |- ! class="roa-imperative-left-rail" style="height:3em;" | <span title="afirmatiu">-</span> | &mdash; | {imp_2s} | {imp_3s} | {imp_1p} | {imp_2p} | {imp_3p} |- ! class="roa-imperative-left-rail" style="height:3em;" | <span title="negatiu">禁止</span> (<<no>>) | &mdash; | {neg_imp_2s} | {neg_imp_3s} | {neg_imp_1p} | {neg_imp_2p} | {neg_imp_3p} |{\cl}{notes_clause}</div></div>]=] local function make_table(alternant_multiword_spec) local forms = alternant_multiword_spec.forms forms.title = link_term(alternant_multiword_spec.lemmas[1].form, nil, "term") local ann_parts = {} if alternant_multiword_spec.annotation ~= "" then table.insert(ann_parts, alternant_multiword_spec.annotation) end if alternant_multiword_spec.args.titlenote then table.insert(ann_parts, alternant_multiword_spec.args.titlenote) end local annotation = table.concat(ann_parts, ", ") if annotation ~= "" then forms.title = forms.title .. " (" .. annotation .. ")" end forms.description = "" -- Format the table. forms.footnote = alternant_multiword_spec.footnote_basic forms.notes_clause = forms.footnote ~= "" and m_string_utilities.format(notes_template, forms) or "" local table_with_pronouns = rsub(basic_table, "<<([^<>|]-)|([^<>|]-)>>", link_term) local table_with_pronouns = rsub(table_with_pronouns, "<<(.-)>>", link_term) return require("Module:TemplateStyles")("Module:roa-verb/style.css") .. m_string_utilities.format(table_with_pronouns, forms) end -- Externally callable function to parse and conjugate a verb given user-specified arguments. -- Return value is WORD_SPEC, an object where the conjugated forms are in `WORD_SPEC.forms` -- for each slot. If there are no values for a slot, the slot key will be missing. The value -- for a given slot is a list of objects {form=FORM, footnotes=FOOTNOTES}. function export.do_generate_forms(args, source_template, headword_head) local PAGENAME = mw.loadData("Module:headword/data").pagename local function in_template_space() return mw.title.getCurrentTitle().nsText == "テンプレート" end -- Determine the verb spec we're being asked to generate the conjugation of. This may be taken from the -- current page title or the value of |pagename=; but not when called from {{ca-verb form of}}, where the -- page title is a non-lemma form. Note that the verb spec may omit the infinitive; e.g. it may be "<i-e>". -- For this reason, we use the value of `pagename` computed here down below, when calling normalize_all_lemmas(). local pagename = source_template ~= "ca-verb form of" and args.pagename or PAGENAME local head = headword_head or pagename local arg1 = args[1] if not arg1 then if (pagename == "ca-conj" or pagename == "ca-verb" or pagename == "ca-verb form of" or pagename == "ca-conjug") and in_template_space() then arg1 = "amar<>" else arg1 = "<>" end end -- When called from {{ca-verb form of}}, determine the non-lemma form whose inflections we're being asked to -- determine. This normally comes from the page title or the value of |pagename=. local verb_form_of_form if source_template == "ca-verb form of" then verb_form_of_form = args.pagename if not verb_form_of_form then if PAGENAME == "ca-verb form of" and in_template_space() then verb_form_of_form = "ami" else verb_form_of_form = PAGENAME end end end local incorporated_headword_head_into_lemma = false if arg1:find("^<.*>$") then -- missing lemma if head:find(" ") then -- If multiword lemma, try to add arg spec after the first word. -- Try to preserve the brackets in the part after the verb, but don't do it -- if there aren't the same number of left and right brackets in the verb -- (which means the verb was linked as part of a larger expression). local refl_clitic_verb, post = rmatch(head, "^(.-)( .*)$") local left_brackets = rsub(refl_clitic_verb, "[^%[]", "") local right_brackets = rsub(refl_clitic_verb, "[^%]]", "") if #left_brackets == #right_brackets then arg1 = iut.remove_redundant_links(refl_clitic_verb) .. arg1 .. post incorporated_headword_head_into_lemma = true else -- Try again using the form without links. local linkless_head = m_links.remove_links(head) if linkless_head:find(" ") then refl_clitic_verb, post = rmatch(linkless_head, "^(.-)( .*)$") arg1 = refl_clitic_verb .. arg1 .. post else error("Unable to incorporate <...> spec into explicit head due to a multiword linked verb or " .. "unbalanced brackets; please include <> explicitly: " .. arg1) end end else -- Will be incorporated through `head` below in the call to normalize_all_lemmas(). incorporated_headword_head_into_lemma = true end end local function split_bracketed_runs_into_words(bracketed_runs) return put.split_alternating_runs(bracketed_runs, " ", "preserve splitchar") end local parse_props = { parse_indicator_spec = parse_indicator_spec, -- Split words only on spaces, not on hyphens, because that messes up reflexive verb parsing. split_bracketed_runs_into_words = split_bracketed_runs_into_words, allow_default_indicator = true, allow_blank_lemma = true, } local alternant_multiword_spec = iut.parse_inflected_text(arg1, parse_props) alternant_multiword_spec.pos = pos or "verbs" alternant_multiword_spec.args = args alternant_multiword_spec.source_template = source_template alternant_multiword_spec.verb_form_of_form = verb_form_of_form alternant_multiword_spec.incorporated_headword_head_into_lemma = incorporated_headword_head_into_lemma normalize_all_lemmas(alternant_multiword_spec, head) detect_all_indicator_specs(alternant_multiword_spec) local inflect_props = { slot_list = alternant_multiword_spec.all_verb_slots, inflect_word_spec = conjugate_verb, -- We add links around the generated verbal forms rather than allow the entire multiword -- expression to be a link, so ensure that user-specified links get included as well. include_user_specified_links = true, } iut.inflect_multiword_or_alternant_multiword_spec(alternant_multiword_spec, inflect_props) -- Remove redundant brackets around entire forms. for slot, forms in pairs(alternant_multiword_spec.forms) do for _, form in ipairs(forms) do form.form = iut.remove_redundant_links(form.form) end end compute_categories_and_annotation(alternant_multiword_spec) if args.json and source_template == "ca-conj" then return require("Module:JSON").toJSON(alternant_multiword_spec.forms) end return alternant_multiword_spec end -- Entry point for {{ca-conj}}. Template-callable function to parse and conjugate a verb given -- user-specified arguments and generate a displayable table of the conjugated forms. function export.show(frame) local parent_args = frame:getParent().args local params = { [1] = {}, ["titlenote"] = {}, ["noautolinktext"] = {type = "boolean"}, ["noautolinkverb"] = {type = "boolean"}, ["pagename"] = {}, -- for testing/documentation pages ["json"] = {type = "boolean"}, -- for bot use } local args = require("Module:parameters").process(parent_args, params) local alternant_multiword_spec = export.do_generate_forms(args, "ca-conj") if type(alternant_multiword_spec) == "string" then -- JSON return value return alternant_multiword_spec end show_forms(alternant_multiword_spec) return make_table(alternant_multiword_spec) .. require("Module:utilities").format_categories(alternant_multiword_spec.categories, lang, nil, nil, force_cat) end return export g60z1mktornke5hixabhd0tk8z1w4qa 2313425 2313420 2026-08-09T09:43:49Z Kuroco2k 84207 2313425 Scribunto text/plain --[=[ This module implements {{ca-conj}} and provides the underlying conjugation functions for {{ca-verb}} (whose actual formatting is done in [[Module:ca-headword]]). Authorship: Ben Wing <benwing2> ]=] local export = {} --[=[ TERMINOLOGY: -- "slot" = A particular combination of tense/mood/person/number/etc. Example slot names for verbs are "pres_1s" (present indicative first-person singular), "pres_sub_2s" (present subjunctive second-person singular) "impf_sub_3p" (imperfect subjunctive third-person plural). Each slot is filled with zero or more forms. -- "form" = The conjugated Catalan form representing the value of a given slot. -- "lemma" = The dictionary form of a given Catalan term. For Catalan, always the infinitive. ]=] --[=[ FIXME: --]=] local lang = require("Module:languages").getByCode("ca") local m_string_utilities = require("Module:string utilities") local m_links = require("Module:links") local m_table = require("Module:table") local iut = require("Module:inflection utilities") local put = require("Module:parse utilities") local com = require("Module:ca-common") local force_cat = false -- set to true for debugging local check_for_red_links = false -- set to false for debugging local rfind = mw.ustring.find local rmatch = mw.ustring.match local rsplit = mw.text.split local rsubn = mw.ustring.gsub local rsub = com.rsub local u = mw.ustring.char local unpack = unpack or table.unpack -- Lua 5.2 compatibility -- version of rsubn() that returns a 2nd argument boolean indicating whether a substitution was made. local function rsubb(term, foo, bar) local retval, nsubs = rsubn(term, foo, bar) return retval, nsubs > 0 end local function link_term(term, display, face) return m_links.full_link({ lang = lang, term = term, alt = display }, face) end local front_vowel = "eèéiíï" local front_vowel_c = "[" .. front_vowel .. "]" local V = com.V -- vowel regex class local C = com.C -- consonant regex class -- IS_USER_STEM_OVERRIDE is prepended to user-supplied stem overrides to prevent `base.prefix` from being prepended. -- IS_USER_FORM_OVERRIDE is similar but also prevents final devoicing (cf. Balearic pres_1s 'trob' of [[trobar]]). -- Don't use 0xFFF0 in case we call a [[Module:parse-utilities]] function that uses it temporarily. local IS_USER_STEM_OVERRIDE = u(0xFFF1) local IS_USER_FORM_OVERRIDE = u(0xFFF2) --[=[ Irregular verbs: -ldre/-ndre verbs: infinitive pres1s pres3s pres1p impf1s fut1s pret1s sub1s sub1p pp caldre - cal [calent] calia caldrà calgué calgui - calgut,- coldre colc col colem colia coldré colguí colgui colguem colt,colta doldre dolc dol dolem dolia doldré dolguí dolgui dolguem dolgut,dolguda moldre molc mol molem molia moldré molguí molgui molguem molt,molta oldre olc ol olem olia oldré olguí olgui olguem olgut,olguda -soldre -solc -sol -solem -solia -soldré -solguí -solgui -solguem -solt,-solta (absoldre, dissoldre, resoldre) toldre tolc tol tolem tolia toldré tolguí tolgui tolguem tolt,tolta romandre romanc roman romanem romania romandré romanguí romangui romanguem romàs,romasa,romasos encendre encenc encén encenem encenia encendré encenguí encengui encenguem encès,encesa,encesos fendre fenc fen/-fèn fenem fenia fendré fenguí fengui fenguem fes/-fès,fesa,fesos (defendre, ofendre) -pendre -depenc -pèn -penem -penia -pendré -penguí -pengui -penguem -pès,-pesa,-pesos (dependre,despendre,expendre,suspendre) prendre prenc pren/-prèn prenem prenia prendré prenguí prengui prenguem pres/-près,presa,presos (aprendre, comprendre, desprendre, emprendre, reprendre, sorprendre) -tendre -tenc -tén -tenem -tenia -tendré -tenguí -tengui -tenguem -tès,-tesa,-tesos (pres2s: atens, pres3p: atenen) (atendre, contendre, distendre, entendre, estendre, pretendre) vendre venc ven venem venia vendré venguí vengui venguem venut,venuda (malvendre, revendre) fondre fonc fon fonem fonia fondré fonguí fongui fonguem fos/-fós,fosa,fosos (confondre, difondre, infondre, refondre) enfondre enfonc enfon enfonem enfonia enfondré enfonguí enfongui enfonguem enfús,enfusa,enfusos pondre ponc pon ponem ponia pondré ponguí pongui ponguem post,posta,postos (compondre, correspondre, descompondre, respondre) tondre tonc ton tonem tonia tondré tonguí tongui tonguem tos,tosa,tosos cerndre cerno cern cernem cernia cerndré cerní cerni cernem cernut,cernuda -ler verbs (mostly like -ldre verbs): infinitive pres1s pres3s pres1p impf1s fut1s pret1s sub1s sub1p pp caler (var. of caldre) doler (var. of doldre) soler solc sol solem solia soldré solguí solgui solguem solgut,solguda valer/valdre valc val valem valia valdré valguí valgui valguem valgut,valguda (prevaler, equivaler) other -dre/-tre verbs (regular except sometimes pp): infinitive pres1s pres3s pres1p impf1s fut1s pret1s sub1s sub1p pp batre bato bat batem batia batré batí bati batem batut,batuda -metre -meto -met -metem -metia -metré -metí -meti -metem -mès,-mesa,-mesos (ad-, co-, compro-, e-, entremetre's, mal-, o-, per-, pro-, read-, re-, retrans-, sot-, tra-, trans-) perdre perdo perd perdem perdia perdré perdí perdi perdem perdut,perduda -ure verbs infinitive pres1s pres3s pres1p impf1s impf1p fut1s pret1s sub1s sub1p pp caure caic cau caiem queia quèiem cauré caiguí caigui caiguem caigut,caiguda (decaure, recaure) plaure plac plau plaem plaïa plaíem plauré plaguí plagui plaguem plagut,plaguda (complaure) raure rac rau raem raïa raíem rauré raguí ragui raguem ragut,raguda beure bec beu bevem bevia bevíem beuré beguí begui beguem begut,beguda (embeure) creure crec creu creiem creia crèiem creuré creguí cregui creguem cregut,creguda deure dec deu devem devia devíem deuré deguí degui deguem degut,deguda jeure jec jeu jaiem jeia jèiem jauré jaguí jegui jaguem jagut,jaguda (ajeure) lleure - lleu [-] llevia - lleurà llegué llegui - llegut,- seure sec seu seiem seia sèiem seuré seguí segui seguem segut,seguda (asseure) treure trec treu traiem treia trèiem trauré traguí tregui traguem tret,treta (abstreure, atreure, contreure, distreure, extreure, retreure, sostreure) veure veig veu veiem veia vèiem veuré viu,veieres/veres, vegi vegem vist,vista,vists/vistos (entreveure, preveure, reveure) veié/veu,veiérem/vérem riure ric riu riem reia rèiem riuré riguí rigui riguem rigut,riguda (somriure) (e)scriure escric escriu escrivim escrivia escrivíem escriuré escriví/escriguí escrigui escriguem escrit,escrita (circumscriure, descriure, inscriure, prescriure, proscriure, subscriure, transcriure) viure visc viu vivim vivia vivíem viuré visquí visqui visquem viscut,viscuda (conviure, sobreviure) cloure cloc clou cloem cloïa cloíem clouré cloguí clogui cloguem clos,closa,closos (concloure, descloure, encloure, excloure, incloure, recloure) encloure encloc enclou encloem encloïa encloíem enclouré encloguí enclogui encloguem enclòs,enclosa,enclosos coure coc cou coem coïa coíem couré coguí cogui coguem cuit/cogut,cuita/coguda moure moc mou movem movia movíem mouré moguí mogui moguem mogut,moguda (promoure) noure noc nou noem noïa noíem nouré noguí nogui noguem nogut,noguda ploure - plou [plovent] plovia - plourà plogué plogui - plogut,ploguda -nyer verbs (regular except pp) infinitive pres1s pres3s pres1p impf1s fut1s pret1s sub1s sub1p pp atènyer atenyo ateny atenyem atenyia atenyeré atenyí atenyi atenyem atès,atesa,atesos empènyer empenyo empeny empenyem empenyia empenyeré empenyí empenyi empenyem empès,empesa,empesos estrènyer estrenyo estreny estrenyem estrenyia estrenyeré estrenyí estrenyi estrenyem estret,estreta estrènyer (constrènyer,restrènyer) fènyer fenyo feny fenyem fenyia fenyeré fenyí/fenguí fenyi fenyem fenyut/fengut,fenyuda/fenguda pertànyer pertanyo pertany pertanyem pertanyia pertanyeré pertanyí/pertanguí pertanyi pertanyem pertanyut/pertangut,pertanyuda/pertanguda plànyer planyo plany planyem planyia planyeré planyí/planguí planyi planyem plangut/planyut,planguda/planyuda -xer verbs (NOTE: pres2s in -xes) infinitive pres1s pres3s pres1p impf1s fut1s pret1s sub1s sub1p pp créixer creixo creix creixem creixia creixeré creixí/cresquí creixi creixem crescut,crescuda (acréixer,decréixer) conèixer conec coneix coneixem coneixia coneixeré coneguí conegui coneguem conegut,coneguda (desconèixer,reconèixer) merèixer mereixo mereix mereixem mereixia mereixeré mereixí/meresquí mereixi mereixem merescut,merescuda néixer/ neixo/ neix/ naixem naixia naixeré naixí/nasquí neixi/ naixem/nasquem nascut,nascuda nàixer naixo naix naixi (renéixer) parèixer parec pareix pareixem pareixia pareixeré pareguí paregui pareguem paregut,pareguda (aparèixer,comparèixer,desaparèixer,reaparèixer) péixer peixo peix paixem paixia paixeré paixí peixi paixem pascut,pascuda misc. -er verbs infinitive pres1s pres3s pres1p impf1s impf1p fut1s pret1s sub1s sub1p pp córrer corro corre correm corria corríem correré correguí corri correm corregut,correguda fúmer fumo fum fumem fumia fumíem fumeré fumí fumi fumem fumut,fumuda prémer premo prem premem premia premíem premeré premí premi premem premut,premuda (es-, re-) témer temo tem temem temia temíem temeré temí temi temem temut,temuda trémer [regular] tòrcer torço torç torcem torcia torcíem torceré torcí torci torcem torçut,torçuda (des-) [pres2s torces] vèncer venço venç vencem vencia vencíem venceré vencí venci vencem vençut,vençuda (con-, re-) [pres2s vences] cabre/caber cabo cap cabem cabia cabíem cabré cabí càpiga capiguem cabut,cabuda [sub2s càpigues] haver he/haig ha havem/hem havia havíem hauré haguí hagi hàgim/haguem hagut,haguda [noimp] [cond1s hauria/haguera; impsub2s haguessis/haguesses] poder puc pot podem podia podíem podré poguí pugui puguem pogut,poguda saber sé sap sabem sabia sabíem sabré sabí sàpiga sapiguem sabut,sabuda [imp2s sàpigues, imp2p sapigueu] voler vull vol volem volia volíem voldré volguí vulgui vulguem volgut,volguda ser/ésser soc és som era érem seré fui sigui siguem estat/sigut,estada/siguda [ger sent/essent] [cond1s seria/fora] [pres: soc,ets,éts,som,sou,són; pret: fui,fores,fou,fórem,fóreu,foren; impsub: fos,fossis,fos,fóssim,fóssiu,fossin] [imp: sigues,sigueu] fer faig fa fem feia fèiem faré fiu faci fem fet,feta [pres3p fan] [pret: fiu,feres,feu,férem,féreu,feren] ]=] local all_persons_numbers = { ["1s"] = "1|s", ["2s"] = "2|s", ["3s"] = "3|s", ["1p"] = "1|p", ["2p"] = "2|p", ["3p"] = "3|p", } local person_number_list = {"1s", "2s", "3s", "1p", "2p", "3p"} local imp_person_number_list = {"2s", "3s", "1p", "2p", "3p"} local neg_imp_person_number_list = {"2s", "3s", "1p", "2p", "3p"} proclitic_non_elided_person_number_to_reflexive_pronoun = { ["1s"] = "em ", ["2s"] = "et ", ["3s"] = "es ", ["1p"] = "ens ", ["2p"] = "us ", ["3p"] = "es ", } proclitic_elided_person_number_to_reflexive_pronoun = { ["1s"] = "m'", ["2s"] = "t'", ["3s"] = "s'", ["1p"] = "ens ", ["2p"] = "us ", ["3p"] = "s'", } enclitic_non_elided_person_number_to_reflexive_pronoun = { ["1s"] = "-me", ["2s"] = "-te", ["3s"] = "-se", ["1p"] = "-nos", ["2p"] = "-vos", ["3p"] = "-se", } enclitic_elided_person_number_to_reflexive_pronoun = { ["1s"] = "'m", ["2s"] = "'t", ["3s"] = "'s", ["1p"] = "'ns", ["2p"] = "-us", ["3p"] = "'s", } local indicator_flags = m_table.listToSet { "no_pres_stressed", "only3s", "only3sp", "only3p", "noimp", "pp_inv", "irreg", "no_built_in", } -- Initialize all the slots for which we generate forms. local function add_slots(alternant_multiword_spec) -- "Basic" slots: All slots that go into the regular table (not the reflexive form-of table). alternant_multiword_spec.verb_slots_basic = { {"infinitive", "inf"}, {"infinitive_linked", "inf"}, {"gerund", "ger"}, {"pp_ms", "m|s|past|part"}, {"pp_fs", "f|s|past|part"}, {"pp_mp", "m|p|past|part"}, {"pp_fp", "f|p|past|part"}, } -- Special slots used to handle non-reflexive parts of reflexive verbs in {{ca-verb form of}}. For example, for a -- reflexive-only verb like [[arrepentirse]], we want to be able to use {{ca-verb form of}} on [[arrepinta]] (which -- should mention that it is a part of 'me arrepinta', first-person singular present subjunctive, and -- 'se arrepinta', third-person singular present subjunctive) or on [[arrepentimos]] (which should mention that it -- is a part of 'arrepentímonos', first-person plural present indicative or preterite). Similarly, we want to use -- {{ca-verb form of}} on [[arrepentindo]] (which should mention that it is a part of 'se ... arrepentindo', -- syntactic variant of [[arrepentíndose]], which is the gerund of [[arrepentirse]]). To do this, we need to be -- able to map non-reflexive parts like [[arrepinta]], [[arrepentimos]], [[arrepentindo]], etc. to their reflexive -- equivalent(s), to the tag(s) of the equivalent(s), and, in the case of forms like [[arrepentindo]], -- [[arrepentir]] and imperatives, to the separated syntactic variant of the verb+clitic combination. We do this by -- creating slots for the non-reflexive part equivalent of each basic reflexive slot, and for the separated -- syntactic-variant equivalent of each basic reflexive slot that is formed of verb+clitic. We use slots in this -- way to deal with multiword lemmas. Note that we run into difficulties mapping between reflexive verbs, -- non-reflexive part equivalents, and separated syntactic variants if a slot contains more than one form. To -- handle this, if there are the same number of forms in two slots we're trying to match up, we assume the forms -- match one-to-one; otherwise we don't match up the two slots (which means {{ca-verb form of}} won't work in this -- case, but such a case is extremely rare and not worth worrying about). Alternatives that handle this "properly" -- are significantly more complicated and require non-trivial modifications to [[Module:inflection utilities]]. local need_special_verb_form_of_slots = alternant_multiword_spec.source_template == "ca-verb form of" and alternant_multiword_spec.refl if need_special_verb_form_of_slots then alternant_multiword_spec.verb_slots_reflexive_verb_form_of = { {"infinitive_non_reflexive", "-"}, {"infinitive_variant", "-"}, {"gerund_non_reflexive", "-"}, {"gerund_variant", "-"}, } else alternant_multiword_spec.verb_slots_reflexive_verb_form_of = {} end -- Add entries for a slot with person/number variants. -- `verb_slots` is the table to add to. -- `slot_prefix` is the prefix of the slot, typically specifying the tense/aspect. -- `tag_suffix` is a string listing the set of inflection tags to add after the person/number tags. -- `person_number_list` is a list of the person/number slot suffixes to add to `slot_prefix`. local function add_personal_slot(verb_slots, slot_prefix, tag_suffix, person_number_list) for _, persnum in ipairs(person_number_list) do local persnum_tag = all_persons_numbers[persnum] local slot = slot_prefix .. "_" .. persnum local accel = tag_suffix .. "|" .. persnum_tag table.insert(verb_slots, {slot, accel}) end end -- Add a personal slot (i.e. a slot with person/number variants) to `verb_slots_basic`. local function add_basic_personal_slot(slot_prefix, tag_suffix, person_number_list, no_special_verb_form_of_slot) add_personal_slot(alternant_multiword_spec.verb_slots_basic, slot_prefix, tag_suffix, person_number_list) -- Add special slots for handling non-reflexive parts of reflexive verbs in {{ca-verb form of}}. -- See comment above in `need_special_verb_form_of_slots`. if need_special_verb_form_of_slots and not no_special_verb_form_of_slot then for _, persnum in ipairs(person_number_list) do local persnum_tag = all_persons_numbers[persnum] local basic_slot = slot_prefix .. "_" .. persnum local accel = tag_suffix .. "|" .. persnum_tag table.insert(alternant_multiword_spec.verb_slots_reflexive_verb_form_of, {basic_slot .. "_non_reflexive", "-"}) end end end add_basic_personal_slot("pres", "直説法|現在", person_number_list) add_basic_personal_slot("impf", "直説法|不完全過去", person_number_list) add_basic_personal_slot("pret", "直説法|完全過去", person_number_list) add_basic_personal_slot("fut", "直説法|未来", person_number_list) add_basic_personal_slot("cond", "可能法", person_number_list) add_basic_personal_slot("pres_sub", "接続法|現在", person_number_list) add_basic_personal_slot("impf_sub", "接続法|過去", person_number_list) add_basic_personal_slot("imp", "命令法", imp_person_number_list) -- Don't need special non-reflexive-part slots because the negative imperative is multiword, of which the -- individual words are 'no' + subjunctive. add_basic_personal_slot("neg_imp", "命令法|禁止", neg_imp_person_number_list, "no special verb form of") -- Don't need special non-reflexive-part slots because we don't want [[arrependendo]] mapping to [[arrependendo-me]] -- (only [[arrependendo-se]]) or [[arrepender]] mapping to [[arrepender-me]] (only [[arrepender-se]]). add_basic_personal_slot("infinitive", "inf", person_number_list, "no special verb form of") add_basic_personal_slot("gerund", "ger", person_number_list, "no special verb form of") -- Generate the list of all slots. alternant_multiword_spec.all_verb_slots = {} for _, slot_and_accel in ipairs(alternant_multiword_spec.verb_slots_basic) do table.insert(alternant_multiword_spec.all_verb_slots, slot_and_accel) end for _, slot_and_accel in ipairs(alternant_multiword_spec.verb_slots_reflexive_verb_form_of) do table.insert(alternant_multiword_spec.all_verb_slots, slot_and_accel) end alternant_multiword_spec.verb_slots_basic_map = {} for _, slotaccel in ipairs(alternant_multiword_spec.verb_slots_basic) do local slot, accel = unpack(slotaccel) alternant_multiword_spec.verb_slots_basic_map[slot] = accel end end local overridable_stems = {} local function allow_multiple_values_for_override(separated_groups, data, is_form_override) local retvals = {} for _, separated_group in ipairs(separated_groups) do local footnotes = data.fetch_footnotes(separated_group) local form = separated_group[1] -- Prepend marker to prevent prefixing with `base.prefix`, and (in the case of form overrides) prevent -- final devoicing. if is_form_override then form = IS_USER_FORM_OVERRIDE .. form else form = IS_USER_STEM_OVERRIDE .. form end local retval = {form = form, footnotes = footnotes} table.insert(retvals, retval) end return retvals end for _, overridable_stem in ipairs { "stem", "stressed_stem", "unstressed_stem", "pres_unstressed", "pres_stressed", "pres3s", -- overrides just pres_2s and pres_3s -- Don't include pres1s, pres3p; use pres_1s etc. if you need to override just those forms "impf1", "impf2", "pret", "fut", "cond", "pres_sub_stressed", "pres_sub_unstressed", "impf_sub", "pp", "g_infix", "eix_infix", } do -- Written so we can substitute a different validator; parallel code in [[Module:es-verb]] and [[Module:pt-verb]] -- has simple_choice validators. overridable_stems[overridable_stem] = allow_multiple_values_for_override end -- Useful as the value of the `match` property of a built-in verb. `main_verb_spec` is a Lua pattern that should match -- the non-prefixed part of a verb, and `prefix_specs` is a list of Lua patterns that should match the prefixed part of -- a verb. If a prefix spec is preceded by ^, it must match exactly at the beginning of the verb; otherwise, additional -- prefixes (e.g. re-, des-) may precede. Return the prefix and main verb. local function match_against_verbs(main_verb_spec, prefix_specs) return function(verb) for _, prefix_spec in ipairs(prefix_specs) do if prefix_spec:find("^%^") then -- must match exactly prefix_spec = prefix_spec:gsub("^%^", "") if prefix_spec == "" then -- We can't use the second branch of the if-else statement because an empty () returns the current position -- in rmatch(). local main_verb = rmatch(verb, "^(" .. main_verb_spec .. ")$") if main_verb then return "", main_verb end else local prefix, main_verb = rmatch(verb, "^(" .. prefix_spec .. ")(" .. main_verb_spec .. ")$") if prefix then return prefix, main_verb end end else local prefix, main_verb = rmatch(verb, "^(.*" .. prefix_spec .. ")(" .. main_verb_spec .. ")$") if prefix then return prefix, main_verb end end end return nil end end --[=[ Built-in (usually irregular) conjugations. Each entry is processed in turn and consists of an object with two fields: 1. match=: Specifies the built-in verbs that match this object. 2. forms=: Specifies the built-in stems and forms for these verbs. The value of match= is either a string beginning with "^" (match only the specified verb), a string not beginning with "^" (match any verb ending in that string), or a function that is passed in the verb and should return the prefix of the verb if it matches, otherwise nil. The function match_against_verbs() is provided to facilitate matching a set of verbs with a common ending and specific prefixes (e.g. [[ter]] and [[ater]] but not [[abater]], etc.). The value of forms= is a table specifying stems and individual override forms. Each key of the table names either a stem (e.g. `pres_stressed`), a stem property (e.g. `g_infix`) or an individual override form (e.g. `pres_1s`). Each value of a stem can either be a string (a single stem), a list of strings, or a list of objects of the form {form = STEM, footnotes = {FOONOTES}}. Each value of an individual override should be of exactly the same form except that the strings specify full forms rather than stems. The values of a stem property depend on the specific property but are generally strings or booleans. In order to understand how the stem specifications work, it's important to understand the phonetic modifications done by combine_stem_ending(). In general, the complexities of predictable prefix, stem and ending modifications are all handled in this function. In particular: 1. Spelling-based modifications (c/qu, ç/c, g/gu, j/g, gu/gü, qu/qü) occur automatically as appropriate for the ending. 2. If the ending begins with an asterisk, this is a signal to delete the accent on the last syllable of the stem, e.g. veié -> veierem. 3. If ending begins with i, it may turn into í or ï after an unstressed vowel (in some but not all cases) to prevent the two merging into a diphthong. See combine_stem_ending() for specifics. The following stems are recognized [FIXME: This is not correct for Catalan, needs rewriting]: -- pres_unstressed: The present indicative unstressed stem (1p, 2p). Also controls the imperative 2p and gerund. Defaults to the infinitive stem (minus the ending -ar/-er/-ir/-or). -- pres_stressed: The present indicative stressed stem (1s, 2s, 3s, 3p). Also controls the imperative 2s. Default is empty if indicator `no_pres_stressed`, else a vowel alternation if such an indicator is given (e.g. `ue`, `ì`), else the infinitive stem. -- pres1: Special stem for 1s present indicative. Normally, do not set this explicitly. If you need to specify an irregular 1s present indicative, use the form override pres_1s= to specify the entire form. Defaults to pres_stressed. -- pres_sub_unstressed: The present subjunctive unstressed stem (1p, 2p). Defaults to the infinitive stem. -- pres_sub_stressed: The present subjunctive stressed stem (1s, 2s, 3s, 1p). Defaults to pres1. -- impf: The imperfect stem (not including the -av-/-i- stem suffix, which is determined by the conjugation). Defaults to the infinitive stem. -- pret: The full preterite stem missing only the endings (-ste, -mos, etc.), e.g. 'fige', 'fo'. Only used for verbs with irregular preterites (pret_conj == "irreg") such as [[facer]], [[poder]], [[traer]], etc. Defaults to `pret_base` + the conjugation vowel. -- fut: The future stem. Defaults to the infinitive stem + the conjugation vowel. -- cond: The conditional stem. Defaults to `fut`. -- impf_sub: The imperfect subjunctive stem. Defaults to `pret`. -- pp: The masculine singular past participle. Default is based on the verb conjugation: infinitive stem + '-ado' for -ar verbs, otherwise infinitive stem + '-ido'. -- pp_inv: `true` if the past participle exists only in the masculine singular. ]=] local built_in_conjugations = { -------------------------------------------------------------------------------------------- -- -ar -- -------------------------------------------------------------------------------------------- -- Orthographic consonant alternations in endings are handled automatically in combine_stem_ending(). { -- [[aguar]]: -- pres agúo, agúes, agúa, agüem, agüeu, agúen -- pres_sub aguï, aguïs, aguï, agüem, agüeu, aguïn -- contrast a more typical verb in -guar, [[enaiguar]]: -- pres enaiguo, enaigües, enaigua, enaigüem, enaigüeu, enaigüen -- pres_sub enaigüi, enaigüis, enaigüi, enaigüem, enaigüeu, enaigüin match = "^aguar", forms = { pres_stressed = "agú", pres_sub_stressed = "aguï", irreg = true, } }, { -- [[anar]] (full verb); highly irregular match = "^anar", var = "full", forms = { fut = "anir", pres_1s = "vaj", -- will be converted to 'vaig'; 'vaig' gets converted to 'vaic' pres_2s = "vas", pres_3s = "va", pres_3p = "van", pres_sub_stressed = "vagi", imp_2s = "ves", irreg = true, } }, { -- [[anar]] (auxiliary); highly irregular match = "^anar", var = "aux", forms = { pres_1s = "vaj", -- will be converted to 'vaig'; 'vaig' gets converted to 'vaic' pres_2s = {"vas", "vares"}, pres_3s = "va", pres_1p = {"vam", "vàrem"}, pres_2p = {"vau", "vàreu"}, pres_3p = {"van", "varen"}, pres_sub_stressed = "vagi", pres_sub_unstressed = "vàgi", impf1 = {}, impf2 = {}, fut = {}, pret = {}, pp = {}, gerund = {}, noimp = true, irreg = true, } }, { -- [[dar]] match = "^dar", forms = { pres_1s = {form = "do", footnotes = {"[obsolete]"}}, pres_2s = {form = "das", footnotes = {"[obsolete]"}}, pres_3s = {form = "da", footnotes = {"[obsolete]"}}, pres_3p = {form = "dan", footnotes = {"[obsolete]"}}, pres_sub_1s = {form = "de", footnotes = {"[obsolete]"}}, pres_sub_2s = {form = "des", footnotes = {"[obsolete]"}}, pres_sub_3s = {form = "de", footnotes = {"[obsolete]"}}, pres_sub_3p = {form = "den", footnotes = {"[obsolete]"}}, pret_1s = "di", -- regular except for lack of accent pret_3s = "da", -- regular except for lack of accent impf_sub_1s = "des", -- regular except for lack of accent impf_sub_3s = "des", -- regular except for lack of accent irreg = true, } }, { -- [[estar]]; highly irregular match = "^estar", forms = { pres_2s = "estàs", pres_3s = "està", pres_3p = "estan", g_infix = "estig", imp_2s = "estigues", imp_2p = "estigueu", pp = "estad", } }, -------------------------------------------------------------------------------------------- -- -er/-re -- -------------------------------------------------------------------------------------------- -- Regular verbs not needing entries here: -- -- [[rebre]], [[concebre]], [[decebre]], [[percebre]] -- [[rompre]] -- [[fúmer]], [[prémer]], [[témer]], [[trémer]] -- [[perdre]], [[batre]], [[botre]], [[fotre]], [[retre]] -- [[tòrcer]], [[vèncer]] -- etc. ------------------------------------------- -ldre/-ler/-lre -------------------------------------- { -- [[caldre]], [[doldre]], [[condoldre's]], [[oldre]] match = match_against_verbs("ldre", {"ca", "do", "^o"}), forms = { -- g_infix implies irreg = true -- g_infix adds -g to pres_1s, sub, pret and pp stems; combine_stem_ending() changes final -g to -c g_infix = "+", } }, { -- [[caler]] match = "caler", like = "caldre", }, { -- [[doler]] and compounds match = "doler", like = "doldre", }, { -- [[dolre]] match = "dolre", forms = { -- see above for g_infix effects g_infix = "+", } }, { -- [[valer]], [[equivaler]], [[prevaler]], [[sobrevaler]] match = "valer", forms = { -- see above for g_infix effects fut = "valdr", g_infix = "+", } }, { -- [[valdre]] and compounds match = "valdre", like = "valer", }, { -- [[soler]] match = "^soler", -- this must precede -oldre rule below for alt form [[soldre]] forms = { -- see above for g_infix effects fut = {}, pret = {}, impf_sub = "solgué", -- regular, but we disabled the preterite, which would normally disable impf_sub too g_infix = "+", pp = {}, noimp = true, } }, { -- [[soldre]] match = "^soldre", -- this must precede -oldre rule below like = "soler", }, { -- [[coldre]], [[moldre]], [[absoldre]], [[dissoldre]], [[resoldre]], [[toldre]] match = "oldre", -- this must follow [[doldre]]/[[oldre]] rule above forms = { -- see above for g_infix effects g_infix = "+", pp = "olt", } }, { -- [[voler]], [[malvoler]] match = "voler", forms = { fut = "voldr", pres_1s = "vull", pres_sub_stressed = "vulgui", pres_sub_unstressed = "vulgue", g_infix = "+", imp_2s = "vulgues", imp_2p = "vulgueu", } }, --------------------------------------------- -ndre ---------------------------------------- { -- [[romandre]]; write it this way so there's a prefix with a vowel to prevent against the accent in the pp -- from being removed while still removing it in the feminine. match = match_against_verbs("mandre", {"^ro"}), forms = { -- see above for g_infix effects g_infix = "+", pp = "màs#", } }, { -- [[encendre]], [[atendre]], [[contendre]], [[desentendre's]], [[distendre]], [[entendre]], [[estendre]], -- [[pretendre]] match = match_against_verbs("endre", {"enc", "t"}), forms = { pres_3s = "én#", -- remove final accent without prefix with vowel; also removed when adding a suffix -- see above for g_infix effects g_infix = "+", pp = "ès#", -- see above for effect of final # } }, { -- [[vendre]], [[malvendre]], [[revendre]] match = "vendre", forms = { pres_3s = "vèn#", -- see above for effect of final # -- see above for g_infix effects g_infix = "+", pp = "venud", -- g_infix would normally make it vengud } }, { -- [[fendre]], [[defendre]], [[ofendre]], [[dependre]], [[despendre]], [[expendre]], [[suspendre]], [[prendre]], -- [[aprendre]], [[comprendre]], [[desprendre]], [[emprendre]], [[reprendre]], [[sorprendre]] match = "endre", -- this must follow previous -endre rules above forms = { pres_3s = "èn#", -- see above for effect of final # -- see above for g_infix effects g_infix = "+", pp = "ès#", -- see above for effect of final # } }, { -- [[enfondre]]; write it this way so there's a prefix with a vowel to prevent against the accent in the pp -- from being removed while still removing it in the feminine. match = match_against_verbs("fondre", {"^en"}), forms = { -- see above for g_infix effects g_infix = "+", pp = "fús#", } }, { -- [[pondre]], [[compondre]], [[correspondre]], [[descompondre]], [[despondre's]], [[respondre]] match = "pondre", forms = { -- see above for g_infix effects g_infix = "+", pp = "post", } }, { -- [[fondre]], [[confondre]], [[difondre]], [[infondre]], [[refondre]], [[tondre]] match = "ondre", -- this must follow previous -ondre rules above forms = { -- see above for g_infix effects g_infix = "+", pp = "ós#", -- see above for effect of final # } }, --------------------------------------------- -nyer ---------------------------------------- { -- [[atènyer]]; write it this way so there's a prefix with a vowel to prevent against the accent in the pp -- from being removed while still removing it in the feminine. match = match_against_verbs("tènyer", {"^a"}), forms = { pp = "tès#", irreg = true, } }, { -- [[empènyer]], [[espènyer]] match = match_against_verbs("pènyer", {"^em", "^es"}), forms = { pp = "pès#", irreg = true, } }, { -- [[estrènyer]], [[constrènyer]], [[destrènyer]], [[restrènyer]] match = match_against_verbs("strènyer", {"^e", "con", "^de", "^re"}), forms = { pp = "stret", irreg = true, } }, { -- [[fènyer]] match = "fènyer", forms = { pp = {"fengud", "fenyud"}, irreg = true, } }, { -- [[júnyer]] match = "júnyer", like = "junyir", }, { -- [[plànyer]], [[complànyer]], [[pertànyer]] match = match_against_verbs("ànyer", {"pl", "pert"}), forms = { pp = {"angud", "anyud"}, irreg = true, } }, --------------------------------------------- -aure ---------------------------------------- { -- [[caure]], [[decaure]], [[recaure]] match = "caure", forms = { -- stem ending in -ai and imperfect in -ia causes special stressed imperfect logic to take effect; we get -- impf1s queia, impf1p quèiem (preceding vowel changed to è and attached to initial consonant using -- combine_stem_ending(), which changes c- to qu-) stem = "caie", -- i dropped by g_infix before u -- g_infix implies irreg = true -- g_infix adds -g to pres_1s, sub, pret and pp stems; combine_stem_ending() changes final -g to -c -- g_infix sets pres_stressed to end in -u, removing a preceding -i or -v g_infix = "+", } }, { -- [[plaure]], [[complaure]] match = "plaure", forms = { stem = "plae", -- ï in impf1s -aïa gets generated automatically by combine_stem_ending() g_infix = "+", } }, { -- [[raure]] match = "^raure", forms = { stem = "rae", -- ï in impf1s -aïa gets generated automatically by combine_stem_ending() g_infix = "+", pp = {"ragud", "ras"}, } }, --------------------------------------------- -eure ---------------------------------------- { -- [[beure]], [[embeure]], [[deure]], [[lleure]] match = match_against_verbs("eure", {"b", "d", "ll"}), forms = { stem = "eve", -- v dropped by g_infix before g and u g_infix = "+", } }, { -- [[creure]], [[seure]], [[asseure]] match = match_against_verbs("eure", {"cr", "s"}), forms = { stem = "ee", pres_unstressed = "eie", -- affects pres_1p, pres_2p, gerund, imperfect (see [[caure]]) g_infix = "+", } }, { -- [[jeure]], [[ajeure]] match = "jeure", forms = { fut = "jaur", -- affects future and cond stressed_stem = "jee", -- affects stressed forms, which get g added by g_infix by added except for -- pres_stressed, which gets u added (controls pres_3s, pres_2s, pres_3p) unstressed_stem = "jae", -- affects unstressed_stem, which get g added by g_infix pres_stressed = {"jeu", "jau"}, pres_unstressed = "jaie", -- affects pres_1p, pres_2p, gerund, imperfect (see [[caure]]) pres_1s = {"jec", "jac"}, impf1 = "jei", -- otherwise we'd get impf_1s '#geia' etc. impf2 = "jèi", g_infix = "+", } }, { match = "jaure", like = "jeure", }, { -- [[treure]], [[abstreure]], [[atreure]], [[bestreure]], [[contreure]], [[detreure]], [[distreure]], -- [[extreure]], [[retreure], [[retrotreure]], [[sostreure]] match = "treure", forms = { -- like [[jeure]] except for irregular pp fut = "traur", stressed_stem = "tree", unstressed_stem = "trae", pres_stressed = {"treu", "trau"}, pres_unstressed = "traie", pres_1s = {"trec", "trac"}, g_infix = "+", pp = "tret", } }, { match = "traure", like = "treure", }, { -- [[veure]], [[entreveure]], [[preveure]], [[reveure]] match = "veure", forms = { stem = "veie", -- impf1s veia, impf1p vèiem (preceding vowel changed to è) pres_stressed = "veu", pres_1s = "vej", -- will be converted to 'veig'; 'veig' gets converted to 'veic' pres_sub_stressed = "vegi", pres_sub_unstressed = "vege", pret = {"veié", "vé"}, pret_1s = "viu", pret_3s = {"veié", "veu"}, impf_sub = "veié", pp = "vist", imp_2s = "veges", imp_2p = {"vegeu", "veieu"}, irreg = true, } }, --------------------------------------------- -iure ---------------------------------------- { -- [[escriure]], [[circumscriure]], [[descriure]], [[inscriure]], [[prescriure]], [[proscriure]], -- [[subscriure]], [[transcriure]] match = "scriure", forms = { stem = "scrivi", -- v dropped by g_infix before g and u; pres_1p/pres_2p have -ir endings g_infix = "+", pret = {"scriví", "scrigué"}, pp = "scrit", } }, { -- [[riure]], [[somriure]] match = "riure", -- must follow rule for 'scriure' forms = { stem = "rie", -- impf1s reia, impf1p rèiem (preceding vowel changed to è) g_infix = "+", } }, { -- [[viure]], [[conviure]], [[desviure's]], [[sobreviure]] match = "viure", forms = { stem = "vivi", -- v dropped by g_infix before g and u; pres_1p/pres_2p have -ir endings g_infix = "visc", -- applies to pres1s, sub, pret, pp } }, --------------------------------------------- -oure ---------------------------------------- { -- [[cloure]], [[concloure]], [[descloure]], [[encloure]], [[excloure]], [[incloure]], [[recloure]] match = "cloure", forms = { stem = "cloe", -- ï in impf1s cloïa gets generated automatically by combine_stem_ending() g_infix = "+", pp = "clòs#", -- remove final accent without prefix with vowel; also removed when adding a suffix } }, { -- [[coure]] "to cook" match = "coure", var = "cook", forms = { stem = "coe", -- ï in impf1s coïa gets generated automatically by combine_stem_ending() g_infix = "+", pp = "cuit", } }, { -- [[coure]] "to sting" match = "coure", var = "sting", forms = { stem = "coe", -- ï in impf1s coïa gets generated automatically by combine_stem_ending() g_infix = "+", -- pp regular 'cogud' } }, { -- [[moure]], [[promoure]], [[remoure]], [[somoure]], [[ploure]] match = match_against_verbs("oure", {"m", "pl"}), forms = { stem = "ove", -- v dropped by g_infix before g and u g_infix = "+", } }, { -- [[noure]] match = "noure", forms = { stem = "noe", -- ï in impf1s -aïa gets generated automatically by combine_stem_ending() g_infix = "+", } }, --------------------------------------------- -xer ---------------------------------------- { -- [[conèixer]], [[desconèixer]], [[reconèixer]] match = "conèixer", forms = { g_infix = "coneg", } }, { -- [[créixer]], [[acréixer]], [[decréixer]], [[recréixer]], [[sobrecréixer]] match = "créixer", forms = { pret = {"creixé", "cresqué"}, pres_sub_unstressed = {"creixe", "cresque"}, pp = "crescud", irreg = true, } }, { -- [[merèixer]], [[desmerèixer]], [[irèixer-se]] match = match_against_verbs("rèixer", {"me", "^i"}), forms = { pret = {"reixé", "resqué"}, pres_sub_unstressed = {"reixe", "resque"}, pp = "rescud", irreg = true, } }, { -- [[néixer]]/[[nàixer]], [[renéixer]]/[[renàixer]], [[sobrenéixer]]/[[sobrenàixer]], [[péixer]]/[[pàixer]] match = match_against_verbs("éixer", {"n", "p"}), forms = { stem = "aixe", fut = "aixer", pres_stressed = {"eix", "aix"}, pres_1s = "eixo", pret = {"aixé", "asqué"}, pres_sub_stressed = "eixi", pres_sub_unstressed = {"aixe", "asque"}, pp = "ascud", irreg = true, } }, { match = "àixer", like = "éixer", }, { -- [[parèixer]], [[aparèixer]], [[comparèixer]], [[desaparèixer]], [[reaparèixer]] match = "parèixer", forms = { g_infix = "pareg", } }, --------------------------------------------- misc ---------------------------------------- { -- [[cabre]] match = "cabre", forms = { pres_sub_stressed = "càpiga", pres_sub_unstressed = "capigue", irreg = true, } }, { -- [[caber]] match = "caber", like = "cabre", }, { -- [[saber]] match = "saber", forms = { fut = "sabr", pres_1s = "sé", pres_sub_stressed = "sàpiga", pres_sub_unstressed = "sapigue", imp_2s = "sàpiga", imp_2p = "sapigueu", irreg = true, } }, { -- [[poder]] match = "poder", forms = { fut = "podr", pres_1s = "puc", pres_sub_stressed = "pugui", pres_sub_unstressed = "pugue", g_infix = "pog", imp_2s = "pugues", imp_2p = "pugueu", irreg = true, } }, { -- [[córrer]], [[acórrer]], [[concórrer]], [[decórrer]], [[descórrer]], [[discórrer]], [[encórrer]], -- [[escórrer]], [[incórrer]], [[ocórrer]], [[recórrer]], [[socórrer]], [[transcórrer]] match = "córrer", forms = { pret = "corregué", pres_sub_unstressed = {"corre", "corregue"}, pp = "corregud", irreg = true, } }, { -- [[metre]], [[admetre]], [[arremetre]], [[cometre]], [[comprometre]], [[demetre]], [[descomprometre]], -- [[emetre]], [[entremetre's]], [[escometre]], [[malmetre]], [[manumetre]], [[ometre]], [[permetre]], -- [[prometre]], [[readmetre]], [[remetre]], [[retransmetre]], [[sotmetre]], [[trametre]], [[transmetre]] match = "metre", forms = { pp = "mès#", irreg = true, } }, -------------------------------------------------------------------------------------------- -- -ir -- -------------------------------------------------------------------------------------------- { -- [[acudir]]; NOTE: Separation by meaning does not occur in DCC, DIEC, DEIEC, and DCVB says the distinction -- is geographical and makes no mention of distinction by meaning. OTOH ca.wikt does say that the pronominal -- sense "to occur" tends to conjugate non-inchoative. match = "acudir", forms = { eix_infix = {{ form = "+", footnotes = {'[especially in the sense "to turn up, to be present"]'} }, { form = "-", footnotes = {'[especially in the pronominal sense "to occur"]'} }} } }, -- [[afegir]]: -- non-inchoative in Valencia, inchoative elsewhere { -- [[ajupir]] -- [[buixir]] -- [[bullir]], [[rebullir]] -- [[cruixir]], [[escruixir]] (Routledge says this is inchoative but DIEC, DEIEC and DCC all disagree; note -- pres_2s 'cruixes', handled automatically) -- [[dormir]], [[adormir]] -- [[funyir]] -- [[grunyir]] -- [[munyir]], [[esmunyir]] -- [[pudir]] -- [[punyir]] -- [[retrunyir]] -- [[sallir]] -- [[sentir]], [[pressentir]], [[ressentir-se]]; not [[consentir]], with can be either non-inchoative or -- inchoative, and not [[assentir]] or [[dissentir]], which are only inchoative match = match_against_verbs("ir", {"ajup", "buix", "bull", "cruix", "dorm", "funy", "gruny", "muny", "pud", "puny", "retruny", "^sent", "pressent", "^ressent", "sall"}), forms = { eix_infix = "-", } }, { -- [[arrupir-se]]; -- [[brumir]]; -- [[brunzir]]; -- [[consumir]], [[resumir]], [[presumir]] (not [[sumir]], [[assumir]], [[subsumir]], which are regular) -- [[mentir]], [[desmentir]] -- [[percudir]]; cf. also [[acudir]], which to some extent has separate conjugations per meaning -- [[consentir]] match = match_against_verbs("ir", {"arrup", "brum", "brunz", "consum", "^resum", "presum", "ment", "percud", "consent"}), forms = { eix_infix = {"+", "-"}, } }, -- [[cenyir]]: -- non-inchoative or inchoative in Balearics, inchoative elsewhere { -- [[cobrir]], [[descobrir]], [[encobrir]], [[recobrir]], [[redescobrir]] match = "cobrir", forms = { pp = "cobert", irreg = true, } }, { -- [[collir]], [[acollir]], [[escollir]], [[recollir]] match = "collir", forms = { stressed_stem = "culli", eix_infix = "-", irreg = true, } }, { -- [[complir]], [[acomplir]], [[incomplir]] match = "complir", forms = { pp = {"complert", "complid"}, irreg = true, } }, { -- [[cosir]], [[descosir]], [[recosir]] match = "cosir", forms = { stressed_stem = "cusi", pres_3s = "cús#", eix_infix = "-", irreg = true, } }, { -- [[eixir]], [[deseixir-se]]; not [[teixir]] or [[entreteixir]], and not [[reeixir]] or [[sobreeixir]], -- which have an ï in the stem-stressed forms match = match_against_verbs("eixir", {"^", "des"}), forms = { stressed_stem = "ixi", eix_infix = "-", irreg = true, } }, { -- [[reeixir]], [[sobreeixir]] match = match_against_verbs("eixir", {"^re", "sobre"}), forms = { stressed_stem = "ïxi", eix_infix = "-", irreg = true, } }, -- [[engolir]]: -- non-inchoative in Valencia, inchoative elsewhere { -- [[escopir]] match = "escopir", forms = { stressed_stem = "escupi", eix_infix = "-", irreg = true, } }, { -- [[establir]], [[preestablir]], [[restablir]] match = "establir", forms = { pp = {"establert", "establid"}, irreg = true, } }, -- [[ferir]]: -- non-inchoative in Balearics, inchoative elsewhere -- [[fregir]]: -- non-inchoative in Valencia, inchoative elsewhere { -- [[fugir]], [[confugir]], [[defugir]], [[enfugir-se]]; pres sing ''fujo, fuges, fuig'' handled by -- combine_stem_ending(); can't be handled by rule above that lists many non-inchoative verbs because the -- prefix would be 'fug' and the front-back alternation code doesn't apply to prefixes. match = "fugir", forms = { eix_infix = "-", } }, { -- [[imprimir]], [[reimprimir]], [[sobreimprimir]]; not any other verbs in -primir; write it this way so -- there's a prefix with a vowel to prevent against the accent in the pp from being removed while still -- removing it in the feminine. match = match_against_verbs("primir", {"im"}), forms = { pp = "près#", irreg = true, } }, -- [[llegir]]: -- non-inchoative in Valencia and Minorca, inchoative elsewhere { -- [[lluir]]: regular inchoative in the figurative meaning "to display (something), to be showy" also in the -- legal meaning "free from a pecuniary obligation, such as a land-based tax (emphyteusis)"; irregular in the -- literal meaning "to shine"; use <no_built_in> to get regular conjugation. In the regular conjugation, -- umlauts appear in the following forms: pres_1p/pres_sub_1p/imp_1p lluïm, pres_2p/pres_sub_2p/imp_2p lluïu, -- impf_1s/impf_3s lluïa, impf_2s lluïes, impf_3p lluïen, pret_2s lluïres, pret_3p lluïren, -- impf_sub_2s lluïssis, impf_sub_3p lluïssin, throughout the pp: lluït, lluïda, lluïts, lluïdes. IN the -- irregular conjugation, umlauts appear in the same places as well as elsewhere in the present subjunctive: -- pres_sub_1s/pres_sub_3s/imp_3s lluï, pres_sub_2s lluïs, pres_sub_3p/imp_3p lluïn. Notably, they do *NOT* -- appear in the gerund lluint, the infinitive lluir, or anywhere in the future or conditional. Note that -- verbs.cat [https://www.verbs.cat/en/conjugation/899-lluir.html] lists additional irregular forms pres_1s -- lluu, and alternative impf_sub forms in -e- instead of -i- (lluïsses, lluíssem, lluísseu, lluïssen), but -- these are nonstandard or dialectal per both Routledge and DEIEC. match = "^lluir", forms = { eix_infix = "-", pres3s = {"lluu", "llu"}, -- generates pres_2s, imp_2s irreg = true, } }, { -- [[entrelluir]] "to be half-seen", [[relluir]] "to shine", [[traslluir-se]] "to be translucent"; either -- inchoative or non-inchoative, not distinguished by meaning; note, [[deslluir]] and [[enlluir]] are regular -- inchoative verbs. match = match_against_verbs("lluir", {"entre", "^re", "tras"}), forms = { eix_infix = {"+", "-"}, pres3s = {"llueix", "lluu", "llú"}, -- generates pres_2s, imp_2s; note, pres_2s will end in -es due to -- combine_stem_ending() irreg = true, } }, { -- [[morir]], [[premorir]]; but not [[atemorir]] match = match_against_verbs("morir", {"^", "pre"}), forms = { eix_infix = "-", pp = "mort", irreg = true, } }, { -- [[obrir]], [[entreobrir]], [[reobrir]]; not [[cobrir]] and derivatives, not [[empobrir]], so we have to list -- them individually match = match_against_verbs("obrir", {"^", "entre", "^re"}), forms = { eix_infix = "-", pp = "obert", irreg = true, } }, { -- [[oferir]]; but not [[proferir]] match = "^oferir", forms = { pp = {"ofert", "oferid"}, irreg = true, } }, -- [[oir]], [[desoir]], [[entreoir]]: -- per Routledge, non-inchoative or inchoative normally but only -- non-inchoative in Valencian; but all dictionaries disagree and say it is a regular inchoative-only verb. -- It has the same umlauts as lluir (and [[corroir]], another regular inchoative verb). { -- [[omplir]], [[desomplir-se]], [[reomplir]]; not [[complir]] and derivatives, so we have to list them -- individually match = match_against_verbs("omplir", {"^", "des", "^re"}), forms = { eix_infix = "-", pp = {"omplert", "omplid"}, irreg = true, } }, -- [[penedir-se]]: -- non-inchoative in Balearics, inchoative elsewhere { -- [[pruir]] "to itch": same umlauts as in [[lluir]]. match = "^pruir", forms = { eix_infix = "-", pres3s = {"pruu", "pru"}, -- generates pres_2s, imp_2s irreg = true, } }, { -- [[reblir]] match = "^reblir", forms = { pp = {"reblert", "reblid"}, irreg = true, } }, -- [[renyir]]: -- non-inchoative in Valencia, inchoative elsewhere { -- [[sofrir]] match = "^sofrir", forms = { pp = {"sofert", "sofrid"}, irreg = true, } }, { -- [[sortir]], [[ressortir]], [[sobresortir]]; but not [[assortir]], which is regular inchoative match = match_against_verbs("sortir", {"^", "^res", "sobre"}), forms = { stressed_stem = "surti", eix_infix = "-", irreg = true, } }, { -- [[suplir]] match = "^suplir", forms = { pp = {"suplert", "suplid"}, irreg = true, } }, -- [[teixir]], [[entreteixir]]: -- non-inchoative in Valencia, inchoative elsewhere { -- [[tenir]] but not any compounds; highly irregular match = "^tenir", forms = { fut = "tindr", pres_stressed = "ten", pres_3s = "té", imp_2s = {"té", "ten", "tingues"}, imp_2p = {"teniu", "tingueu"}, g_infix = "ting", } }, { -- [[abstenir-se]], [[atenir-se]], [[captenir-se]], [[cartenir]], [[contenir]], [[detenir]], [[entretenir]], -- [[mantenir]], [[menystenir]], [[obtenir]], [[retenir]], [[sostenir]], [[viltenir]]; highly irregular match = "tenir", forms = { fut = "tindr", pres_stressed = "ten", pres_3s = "té", imp_2s = {"tén", "tingues"}, imp_2p = {"teniu", "tingueu"}, g_infix = "ting", } }, { -- [[tindre]]: variant of [[tenir]] match = "tindre", like = "tenir", }, -- [[tenyir]], [[destenyir]]: -- non-inchoative in Valencia, but [[retenyir]] inchoative or non-inchoative in -- Valencia? (per Routledge); regular inchoative elsewhere { -- [[tossir]] "to cough" match = "^tossir", forms = { stressed_stem = "tussi", -- pres_2s gets 'tusses' pres_3s = "tus", -- note, pres_3s (a single form override) not pres3s (a stem override, which also affects -- pres_2s; but imp_2s is physically copied from pres_3s, so imp_2s correctly gets 'tus') eix_infix = "-", irreg = true, } }, { -- [[venir]] but not any compounds; highly irregular match = "^venir", forms = { fut = "vindr", pres_stressed = "ven", pres_3s = "ve", imp_2s = "vine", g_infix = "ving", } }, { -- compounds of [[venir]]: [[advenir]], [[avenir]], [[contravenir]], [[convenir]], [[desavenir-se]], -- [[desconvenir]], [[entrevenir]], [[esdevenir]], [[intervenir]], [[obvenir]], [[pervenir]], [[prevenir]], -- [[provenir]], [[reconvenir]], [[revenir]], [[sobrevenir]], [[subvenir]]; but not [[enjovenir]] or -- [[rejovenir]]; highly irregular match = match_against_verbs("venir", {"^ad", "^a", "contra", "con", "desa", "entre", "esde", "inter", "ob", "per", "pre", "pro", "^re", "sobre", "sub"}), forms = { fut = "vindr", pres_stressed = "ven", pres_3s = "vé", imp_2s = "vén", g_infix = "ving", } }, { -- [[vindre]]: variant of [[venir]] match = "vindre", like = "venir", }, -- [[vestir]], [[desvestir]], [[revestir]], maybe [[transvestir]]: non-inchoative in Valencia, inchoative or -- non-inchoative in the Balearics; regular inchoative elsewhere; but not [[envestir]] or [[investir]], which are -- regular inchoative everywhere { -- [[fer]], [[contrafer]], [[desfer]], [[estrafer]], [[perfer]], [[refer]], [[satisfer]]; highly irregular match = "fer", forms = { fut = "far", pres_1s = "faj", -- will be converted to 'faig'; 'faig' gets converted to 'faic' pres_2s = "fàs#", pres_3s = "fà#", pres_3p = "fan", pres_unstressed = "fe", impf1 = "fei", impf2 = "fèi", pres_sub_stressed = "faci", pres_sub_unstressed = "fe", pret = "fé", pret_1s = "fiu", pret_3s = "feu", impf_sub_1s = "fés#", -- regular except for base form [[fes]], lacking an accent impf_sub_3s = "fés#", -- same imp_2s = "fés#", pp = "fet", irreg = true, } }, { -- [[dir]], [[adir-se]], [[contradir]], [[desdir]], [[entredir]], [[interdir]], [[maldir]], [[predir]], [[redir]]; -- behaves like an -er/-re verb match = match_against_verbs("dir", {"^", "^a", "contra", "des", "entre", "inter", "mal", "pre", "^re"}), forms = { stem = "die", g_infix = "+", imp_2s = "digues", imp_2p = "digueu", pp = "dit", } }, { -- [[dur]], [[endur-se]]; behaves like an -er/-re verb match = "dur", forms = { stem = "due", g_infix = "+", pres3s = {"duu", "du"}, -- generates pres_2s, imp_2s impf1 = "dui", impf2 = "dúi", pp = "dut", } }, { -- [[ser]]; highly irregular match = "^ser", forms = { pres_1s = "soc", pres_2s = "ets", pres_3s = "és", pres_1p = "som", pres_2p = "sou", pres_3p = "són", impf1 = "er", impf2 = "ér", pres_sub_stressed = "sigui", pres_sub_unstressed = "sigue", pret = "fó", pret_1s = "fui", pret_3s = "fou", impf_sub_1s = "fos", -- regular except for lack of accent impf_sub_3s = "fos", -- same cond = {"serí", "fór"}, imp_2s = "sigues", imp_2p = "sigueu", pp = {"estad", "sigud"}, gerund = {"sent", "essent"}, irreg = true, } }, { -- [[ésser]]; variant of [[ser]] match = "^ésser", like = "ser", }, { -- [[haver]] as auxiliary; highly irregular match = "^haver", var = "aux", forms = { pres_1s = "he", pres_2s = "has", pres_3s = "ha", pres_1p = "hem", pres_2p = "heu", pres_3p = "han", fut = "haur", cond = {"haurí", "haguér"}, pres_sub_stressed = "hagi", pres_sub_unstressed = "hàgi", noimp = true, g_infix = "+", } }, { -- [[haver]] as full verb; highly irregular match = "^haver", var = "full", forms = { pres_1s = {"hec", "hac"}, pres_stressed = {"heu", "hau"}, fut = "haur", pres_sub_stressed = "hegui", g_infix = "+", } }, { -- [[heure]]; variant of full verb [[haver]] match = "^heure", like = "haver", likevar = "full", }, { -- [[haure]]; variant of full verb [[haver]] match = "^haure", like = "haver", likevar = "full", }, } local function skip_slot(base, slot, allow_overrides) if not allow_overrides and (base.basic_overrides[slot] or base.refl and base.basic_reflexive_only_overrides[slot]) then -- Skip any slots for which there are overrides. return true end if base.only3s and (slot:find("^pp_f") or slot:find("^pp_mp")) then -- diluviar, atardecer, neviscar; impersonal verbs have only masc sing pp return true end if not slot:find("[123]") then -- Don't skip non-personal slots. return false end if base.nofinite then return true end if (base.only3s or base.only3sp or base.only3p) and (slot:find("^imp_") or slot:find("^neg_imp_")) then return true end if base.only3s and not slot:find("3s") then -- diluviar, atardecer, neviscar return true end if base.only3sp and not slot:find("3[sp]") then -- atañer, concernir return true end if base.only3p and not slot:find("3p") then -- [[caer cuatro gotas]], [[caer chuzos de punta]], [[entrarle los siete males]] return true end return false end local function add_stem_ending(stem, ending) if ending == "" then return stem end if stem:find("#$") then -- remove final accent when adding a suffix stem = com.remove_accents((stem:gsub("#$", "")), "final syllable only") end return stem .. ending end local function process_stem(stem, fn) if stem:find("#$") then local stem_no_pound_sign = stem:match("^(.*)#$") return fn(stem_no_pound_sign) .. "#" else return fn(stem) end end -- Add the `stem` to the `ending` and apply any phonetic modifications. `is_full_word` indicates that we're creating -- a "full word" not a stem, and turns on devoicing of final consonants. `dont_include_prefix` is used when creating -- stems and indicates not to prepend the prefix in `base.prefix` to the result. `is_pres_sub_stressed` is used when -- creating the pres_sub_stressed stem, to correctly handle both [[desaiguar]] and [[argüir]], whose respective -- interactions between ü and i/ï are very tricky. -- -- WARNING: This function is written very carefully; changes to it can easily have unintended consequences. local function combine_stem_ending(base, stem, ending, is_full_word, dont_include_prefix, is_pres_sub_stressed) -- Include the prefix in the stem unless dont_include_prefix is given (used in construct_stems()), or the value of -- `stem` comes from a user-specified stem or form override. if not dont_include_prefix and not stem:find(IS_USER_STEM_OVERRIDE) and not stem:find(IS_USER_FORM_OVERRIDE) then stem = base.prefix .. stem end -- A * at the beginning of the ending is a signal to remove a stressed accent from the stem. This may feed any of -- the following rules. if ending:find("^%*") then ending = ending:gsub("^%*", "") stem = com.remove_accents(stem, "final syllable only") end -- If ending begins with s and stem ends in a sibilant, we need an e in between; cf. pres_2s 'apareixes' of -- [[aparèixer]], pres_2s 'torces' of [[tòrcer]], pres_2s 'fuges' of [[fugir]], pres_2s 'brunzes' of [[brunzir]]. -- This may feed the next rule. if ending:find("^s") and rfind(stem, "[çjsxz]$") then ending = "e" .. ending end -- By default, stems are in their "back" (standalone) form. Before a front vowel, convert the final consonant to -- its "front" form so the pronunciation doesn't change. if rfind(ending, "^" .. front_vowel_c) then -- adequar -> adeqües -- enaiguar -> enaigües -- pegar -> pegues -- arranjar -> arranges -- marcar -> marques -- abraçar -> abraces stem = com.back_to_front(stem) end -- Ending beginning in -i after diphthong ending in V + i compresses the two i's into one (cf. pret_1s 'desmaí' and -- pres_sub_1s 'desmaï' of [[desmaiar]]). This rule doesn't apply after pseudo-vowel u in gu/qu; cf. pret_1s 'guií' -- of [[guiar]] and contrast pret_1s 'cruí' of [[cruiar]]. This may feed the next rule. if rfind(ending, "^[iíï]") and rfind(stem, V .. "i$") and not rfind(stem, "[gq][uü]i$") then stem = stem:gsub("i$", "") end -- If ending begins with i (not í), it must get a diaeresis after a true vowel (not gu/qu, cf. pres_1p 'delinquim' -- of [[delinquir]], not '#delinquïm'; also not a diphthong ending in u, cf. pres_sub_1s 'apreui' of [[apreuar]] -- not '#apreuï') to prevent the two merging into a diphthong. Note that ü -> u before ï, but to simplify things -- we leave the double umlauts in place and remove the first one during postprocessing, in fix_double_umlauts(). -- Cf.: -- * impf_1s 'raïa' of [[raure]]; -- * pres_sub_1s 'creï' of [[crear]]; -- * pres_sub_1s 'associï' of [[associar]]; -- * impf_1s 'cloïa' of [[cloure]]; -- * pres_1p 'lluïm' of [[lluir]]; -- * pres_1p 'arguïm' of [[argüir]]. if ending:find("^i") and rfind(stem, "[aeiouü]$") and not stem:find("[aeiogq]u$") and -- Unstressed subjunctive endings of [[enaiguar]] remain without umlaut: enaigüi/enaigüis/enaigüin; -- but stressed endings of [[argüir]] that begin with 'i' do get an umlaut: arguït, impf. arguïa, including -- stressed subjunctive endings arguïm/arguïu. In both cases the ending is '-i' as part of the creation of -- the respective stems. There seems no way of distinguishing the two cases other than with a special flag. not (rfind(stem, "[gq]ü$") and ending == "i" and is_pres_sub_stressed) then ending = ending:gsub("^i", "ï") end local retval = add_stem_ending(stem, ending) if retval:find("#$") then -- remove final accent if no vowels in prefix retval = retval:gsub("#$", "") if not rfind(base.prefix, V) then retval = com.remove_accents(retval, "final syllable only") end end if is_full_word then local saw_is_user_form_override retval, saw_is_user_form_override = rsubb(retval, IS_USER_FORM_OVERRIDE, "") retval = retval:gsub(IS_USER_STEM_OVERRIDE, "") if not saw_is_user_form_override then -- Devoice final voiced obstruent (cf. pres_2s 'caps', pres_3s 'cap' of [[cabre]]). But not after a -- consonant (cf. pres_2s 'perds', pres_3s 'perd' of [[perdre]]), except for g -> c, which operates -- even after a consonant (pres_1s 'resolc' of [[resoldre]], pres_1s 'tinc' of [[tenir]]). retval = retval:gsub("g(s?)$", "c%1") retval = rsub(retval, "(" .. V .. ")([bdj])(s?)$", function(before, voiced, after) local devoice = { b = "p", d = "t", j = "ig", -- pres_3s 'fuj' of [[fugir]] -> 'fuig' } return before .. devoice[voiced] .. after end) end end return retval end local function add3(base, slot, stems, endings, footnotes, allow_overrides) if skip_slot(base, slot, allow_overrides) then return end local function do_combine_stem_ending(stem, ending) return combine_stem_ending(base, stem, ending, "is full word") end iut.add_forms(base.forms, slot, stems, endings, do_combine_stem_ending, nil, nil, footnotes) end local function insert_form(base, slot, form) if not skip_slot(base, slot) then iut.insert_form(base.forms, slot, form) end end local function insert_forms(base, slot, forms) if not skip_slot(base, slot) then iut.insert_forms(base.forms, slot, forms) end end local function add_single_stem_tense(base, slot_pref, stems, s1, s2, s3, p1, p2, p3) local function addit(slot, ending) add3(base, slot_pref .. "_" .. slot, stems, ending) end addit("1s", s1) addit("2s", s2) addit("3s", s3) addit("1p", p1) addit("2p", p2) addit("3p", p3) end local function map_general(stemforms, fn) return iut.map_forms(iut.convert_to_general_list_form(stemforms), fn) end local function flatmap_general(stemforms, fn) return iut.flatmap_forms(iut.convert_to_general_list_form(stemforms), fn) end -- Given a stem ending in a conjugation vowel -a/-e/-i/-ï, split into stem base and conjugation vowel, converting the -- stem base to "back" form if the conjugation vowel is front (hence 'torce' of [[tòrcer]] splits into 'torç' and 'e', -- and 'fugi' of [[fugir]] splits into 'fuj' and 'i'). local function split_conj_vowel(stem) local stem_base, conj_vowel = rmatch(stem, "^(.*)([aeiï])$") if not stem_base then error(("Internal error: Stem '%s' doesn't end in conjugation vowel a/e/i"):format(stem)) end if conj_vowel == "ï" then -- To simplify handling of ï, convert to i. It will be converted back to ï as necessary in -- combine_stem_ending(). conj_vowel = "i" end if rfind(conj_vowel, front_vowel_c) then stem_base = com.front_to_back(stem_base) end return stem_base, conj_vowel end local function construct_stems(base) base.output_stems = {} local stems = base.output_stems local bst = base.input_stems -- YUCK, see combine_stem_ending() for the necessity of is_pres_sub_stressed. local function combine(stem, ending, is_pres_sub_stressed) return combine_stem_ending(base, stem, ending, false, "dont include prefix", is_pres_sub_stressed) end stems.irreg = bst.irreg or bst.g_infix -- NOTE: Some stems end in a conjugation or similar vowel, specifically: -- * `stem` (ends in conjugation vowel -a/-e/-i); -- * `stressed_stem` (likewise); -- * `unstressed_stem` (likewise); -- * `pres_unstressed` (which assumes the form of the gerund minus the -nt; note that `pres_stressed` does *NOT* -- end in a conjugation vowel, but assumes the stem form; the value of pres_3s will be derived by adding -a for -- -ar verbs and otherwise adding an -e prop vowel when required, as in [[cobrir]], and otherwise adding no -- vowel); -- * `pres_sub_stressed` (which assumes the form of pres_sub_3s and hence usually ends in -i, occasionally -a); -- * `pres_sub_unstressed` (which assumes the form of pres_sub_1p minus the -m, hence ends in -e or -i). -- Save stem for use in add_categories_and_annotation() for determining the conjugation class. stems.stem = bst.stem or base.stem local eix_infix_stem if base.conj_vowel == "i" then -- Save eix_infix value for use in add_categories_and_annotation() for determining whether consonant -- alternations exist. stems.eix_infix = bst.eix_infix or bst.g_infix and "-" or "+" eix_infix_stem = flatmap_general(stems.eix_infix, function(form) if form == "+" then return map_general(stems.stem, function(form) local stem_base, conj_vowel = split_conj_vowel(form) return combine(stem_base, "eixe") end) elseif form == "-" then return stems.stem else return form end end) end local stressed_stem = bst.stressed_stem or eix_infix_stem or stems.stem local unstressed_stem = bst.unstressed_stem or stems.stem -- Add the 'g' that is characteristic of g-infix verbs. We remove a stem-final v, e.g. [[beure]] with stem 'beve' -- becomes 'beg'. local function add_g(stemforms) return map_general(stemforms, function(form) local stem_base, conj_vowel = split_conj_vowel(form) stem_base = stem_base:gsub("v$", "") return combine(stem_base, "g") end) end -- Add the 'u' of the pres_3s that is characteristic of g-infix verbs (and conjugation vowel 'e', later removed). -- We remove a stem-final v, as well as i as part of a diphthong, e.g. [[beure]] with stem 'beve' becomes 'beue' -- and [[veure]] with stem 'veie' becomes 'veue' (but [[riure]] with stem 'rie' becomes 'riue' not '#rue'). We -- don't add -u after a consonant, e.g. [[doldre]] with stem 'dole' becomes 'dole' not '#dolue'. local function add_u(stemforms) return map_general(stemforms, function(form) local stem_base, conj_vowel = split_conj_vowel(form) if stem_base:find("v$") then stem_base = stem_base:gsub("v$", "") else stem_base = rsub(stem_base, "(" .. V .. ")i$", "%1") end -- Add u after vowel but not after another u, so we get pres_3p 'duen' of [[dur]] not '#duuen'. if rfind(stem_base, V .. "$") and not stem_base:find("u$") then return combine(stem_base, "u") else return stem_base end end) end local stressed_g_infix, unstressed_g_infix, g_infix_pres_stressed if bst.g_infix then local function flatmap_g_infix(default) return flatmap_general(bst.g_infix, function(form) if form == "+" then return default else return form end end) end stressed_g_infix = flatmap_g_infix(add_g(stressed_stem)) unstressed_g_infix = flatmap_g_infix(add_g(unstressed_stem)) g_infix_pres_stressed = add_u(stressed_stem) end stems.pres_unstressed = bst.pres_unstressed or unstressed_stem stems.pres_stressed = -- If no_pres_stressed given, pres_stressed stem should be empty so no forms are generated. base.no_pres_stressed and {} or bst.pres_stressed or g_infix_pres_stressed or map_general(stressed_stem, function(form) local stem_base, conj_vowel = split_conj_vowel(form) return stem_base end) stems.pres1s = -- If no_pres_stressed given, pres1s stem should be empty so no forms are generated. base.no_pres_stressed and {} or stressed_g_infix or map_general(stems.pres_stressed, function(form) return combine(form, "o") end) stems.pres3s = -- If no_pres_stressed given, pres3s stem should be empty so no forms are generated. base.no_pres_stressed and {} or bst.pres3s or map_general(stems.pres_stressed, function(form) if base.conj_vowel == "a" then return combine(form, "a") elseif rfind(form, C .. "[lr]$") and not rfind(form, V .. "ll$") then return combine(form, "e") else return form end end) stems.pres3p = -- If no_pres_stressed given, pres3p stem should be empty so no forms are generated. base.no_pres_stressed and {} or map_general(stems.pres_stressed, function(form) return combine(form, "en") end) local function compute_impf_stem(with_accent) return map_general(stems.pres_unstressed, function(form) local stem_base, conj_vowel = split_conj_vowel(form) if conj_vowel == "a" then return combine(stem_base, with_accent and "àv" or "av") elseif stem_base:find("i#?$") then form = form:gsub("i#?$", "") return combine(rmatch(stem_base, "^(.-)" .. V .. "*$"), with_accent and "èi" or "ei") else return combine(stem_base, with_accent and "í" or "i") -- i -> ï after a vowel end end) end stems.impf1 = bst.impf1 or compute_impf_stem(false) stems.impf2 = bst.impf2 or compute_impf_stem(true) stems.pret = bst.pret or unstressed_g_infix and map_general(unstressed_g_infix, function(form) return combine(form, "é") end ) or map_general(unstressed_stem, function(form) local accent_conj_vowel = { a = "à", e = "é", i = "í", } local stem_base, conj_vowel = split_conj_vowel(form) return combine(stem_base, accent_conj_vowel[conj_vowel]) end) stems.fut = bst.fut or base.inf_stem stems.cond = bst.cond or map_general(stems.fut, function(form) return combine(form, "í") end) stems.pres_sub_stressed = bst.pres_sub_stressed or stressed_g_infix and map_general(stressed_g_infix, function(form) return combine(form, "i") end) or map_general(stressed_stem, function(form) local stem_base, conj_vowel = split_conj_vowel(form) return combine(stem_base, "i", "is pres_sub_stressed") end) stems.pres_sub_unstressed = bst.pres_sub_unstressed or unstressed_g_infix and map_general(unstressed_g_infix, function(form) return combine(form, "e") end) or map_general(unstressed_stem, function(form) local stem_base, conj_vowel = split_conj_vowel(form) return combine(stem_base, conj_vowel == "i" and conj_vowel or "e") end) stems.impf_sub = bst.impf_sub or map_general(stems.pret, function(form) local stem_base = rmatch(form, "^(.*)à$") -- already in "back" form, no need to convert if stem_base then return combine(stem_base, "é") else return form end end) stems.pp = bst.pp or unstressed_g_infix and map_general(unstressed_g_infix, function(form) return combine(form, "ud") end ) or map_general(unstressed_stem, function(form) local stem_base, conj_vowel = split_conj_vowel(form) -- use combine() so we get 'abduïd' from 'abdu-' of [[abduir]], 'seguid' from 'seg-' from [[seguir]], etc. return combine(stem_base, (conj_vowel == "e" and "u" or conj_vowel) .. "d") end) end local function a_to_e(base, stems, suffix) return map_general(stems, function(form) local stem_base = form:match("^(.-)a$") if stem_base then suffix = "e" .. suffix else stem_base = form end return combine_stem_ending(base, stem_base, suffix, "is full word") end) end local function add_present_indic(base) local stems = base.output_stems local function addit(slot, stems, ending) add3(base, "pres_" .. slot, stems, ending) end addit("1s", stems.pres1s, "") insert_forms(base, "pres_2s", a_to_e(base, stems.pres3s, "s")) addit("3s", stems.pres3s, "") insert_forms(base, "pres_1p", a_to_e(base, stems.pres_unstressed, "m")) insert_forms(base, "pres_2p", a_to_e(base, stems.pres_unstressed, "u")) addit("3p", stems.pres3p, "") end local function add_present_subj(base) local stems = base.output_stems local function addit(slot, stems, ending) add3(base, "pres_sub_" .. slot, stems, ending) end -- Regular -ar verb: [[amar]]: ami, amis, ami, amem, ameu, amin -- Regular -re verb: [[batre]]: bati, batis, bati, batem, bateu, batin (same as -ar verb) -- Regular -ir verb, no -eix- infix: [[dormir]]: dormi, dormis, dormi, dormim, dormiu, dormin -- Regular -ir verb, -eix- infix: [[imprimir]]: imprimeixi, imprimeixis, imprimeixi, imprimim, imprimiu, imprimeixin -- Stem changing in 123s/3p vs. 12p: -- * -eix- infix (-eix- in all stressed forms: 123s/3p of pres ind/sub, 2s imp) -- * [[collir]]: culli, cullis, culli, collim, colliu, cullin (cull- in all stressed forms) -- * [[cabre]]: càpiga, càpigues, càpiga, capiguem, capigueu, càpiguen (also different endings) addit("1s", stems.pres_sub_stressed, "") insert_forms(base, "pres_sub_2s", a_to_e(base, stems.pres_sub_stressed, "s")) addit("3s", stems.pres_sub_stressed, "") addit("1p", stems.pres_sub_unstressed, "m") addit("2p", stems.pres_sub_unstressed, "u") insert_forms(base, "pres_sub_3p", a_to_e(base, stems.pres_sub_stressed, "n")) end local function add_finite_non_present(base) local stems = base.output_stems local function add_tense(slot, stem, s1, s2, s3, p1, p2, p3) add_single_stem_tense(base, slot, stem, s1, s2, s3, p1, p2, p3) end add_tense("impf", stems.impf1, "a", "es", "a", nil, nil, "en") add_tense("impf", stems.impf2, nil, nil, nil, "em", "eu", nil) -- pret_1s ends in -í regardless of the normal vowel of the stem. insert_forms(base, "pret_1s", map_general(stems.pret, function(form) local stem_base, conj_vowel = rmatch(form, "^(.*)(" .. V .. ")$") if not stem_base then error(("Internal error: Preterite stem '%s' doesn't end in vowel"):format(form)) end if rfind(conj_vowel, front_vowel_c) then stem_base = com.front_to_back(stem_base) end -- Use combine_stem_ending() to handle back-to-front conversions, e.g. pegà -> peguí for [[pegar]] and ensure -- that the prefix gets added. return combine_stem_ending(base, stem_base, "í", "is full word") end)) -- * at the beginning of the ending means to remove an accent from the last vowel of the preterite stem. add_tense("pret", stems.pret, nil, "*res", "", "rem", "reu", "*ren") -- * at the beginning of the ending means to remove an accent from the last vowel of the imperfect subjunctive stem. add_tense("impf_sub", stems.impf_sub, "s", "*ssis", "s", "ssim", "ssiu", "*ssin") add_tense("fut", stems.fut, "é", "às", "à", "em", "eu", "an") add_tense("cond", stems.cond, "*a", "*es", "*a", "em", "eu", "*en") end local function add_non_finite_forms(base) local stems = base.output_stems local function addit(slot, stems, ending, footnotes) add3(base, slot, stems, ending, footnotes) end insert_form(base, "infinitive", {form = base.orig_verb}) -- Also insert "infinitive + reflexive pronoun" combinations if we're handling a reflexive verb. See comment below -- for "gerund + reflexive pronoun" combinations. if base.refl then for _, persnum in ipairs(person_number_list) do insert_form(base, "infinitive_" .. persnum, {form = base.orig_verb}) end end -- Gerunds don't have an umlaut over the i in cases like 'abduint' of 'abduir' (not '#abduïnt'). local pres_unstressed_no_umlaut = map_general(stems.pres_unstressed, function(form) return rsub(form, "ï$", "i") end) addit("gerund", pres_unstressed_no_umlaut, "nt") -- Also insert "gerund + reflexive pronoun" combinations if we're handling a reflexive verb. We insert exactly the -- same form as for the bare gerund; later on in add_reflexive_or_fixed_clitic_to_forms(), we add the appropriate -- clitic pronouns. It's important not to do this for non-reflexive verbs, because in that case, the clitic -- pronouns won't be added, and {{ca-verb form of}} will wrongly consider all these combinations as possible -- inflections of the bare gerund. Thanks to [[User:JeffDoozan]] for this bug fix. if base.refl then for _, persnum in ipairs(person_number_list) do addit("gerund_" .. persnum, pres_unstressed_no_umlaut, "nt") end end addit("pp_ms", stems.pp, "") if not base.pp_inv then addit("pp_fs", stems.pp, "a") -- make_plural() handles the complexities of e.g. 'vist' of [[veure]] -> 'vistos'/'vists' and 'romàs' of -- [[romandre]] -> 'romasos'. We need to use flatmap_general() because make_plural() may return more than one -- plural, and we need to use map_general() on the result, applying combine_stem_ending(), to ensure that -- prefixes get properly added and plurals like 'amads' of stem 'amad' of [[amar]] get converted to 'amats'. insert_forms(base, "pp_mp", map_general(flatmap_general(stems.pp, function(form) -- Remove any # indicating that an accent will be dropped; it will be dropped in any case by make_plural(). form = form:gsub("#$", "") return com.make_plural(form, "m") end), function(form) return combine_stem_ending(base, form, "", "is full word") end)) addit("pp_fp", stems.pp, "es") end end local function add_imperatives(base) if base.noimp then return end -- Copy pres3s to imperative since they are almost always the same. insert_forms(base, "imp_2s", iut.map_forms(base.forms.pres_3s, function(form) return form end)) -- Copy pres2p to imperative plural since they are almost always the same. insert_forms(base, "imp_2p", iut.map_forms(base.forms.pres_2p, function(form) return form end)) -- Copy subjunctives to imperatives. for _, persnum in ipairs({"3s", "1p", "3p"}) do local from = "pres_sub_" .. persnum local to = "imp_" .. persnum insert_forms(base, to, iut.map_forms(base.forms[from], function(form) return form end)) end end local function fix_double_umlauts(base) for slot, forms in pairs(base.forms) do for _, form in ipairs(forms) do form.form = form.form:gsub("üï", "uï") end end end local function process_slot_overrides(base, filter_slot, reflexive_only) local overrides = reflexive_only and base.basic_reflexive_only_overrides or base.basic_overrides for slot, forms in pairs(overrides) do if not filter_slot or filter_slot(slot) then add3(base, slot, forms, "", nil, "allow overrides") end end end local function link_clitic(clitic) return (clitic:gsub("([^ %-]+)", "[[%1]]")) end -- Prefix `form` with `clitic`, adding fixed text `between` between them. Add links as appropriate unless the user -- requested no links. Check whether form already has brackets (as will be the case if the form has a fixed clitic). local function prefix_clitic_to_form(base, clitic, between, form) if base.alternant_multiword_spec.args.noautolinkverb then return clitic .. between .. form else local clitic_pref = link_clitic(clitic) .. between if form:find("%[%[") then return clitic_pref .. form else return clitic_pref .. "[[" .. form .. "]]" end end end -- Suffix `form` with `clitic`. Add links as appropriate unless the user requested no links. Check whether form already -- has brackets (as will be the case if the form has a fixed clitic). local function suffix_clitic_to_form(base, clitic, form) local autolink = not base.alternant_multiword_spec.args.noautolinkverb if base.alternant_multiword_spec.args.noautolinkverb then return form .. clitic else local clitic_suf = link_clitic(clitic) if form:find("%[%[") then return form .. clitic_suf else return "[[" .. form .. "]]" .. clitic_suf end end end -- Add a reflexive pronoun or fixed clitic (FIXME: not working), as appropriate to the base forms that were generated. -- `do_joined` means to do only the forms where the pronoun is joined to the end of the form; otherwise, do only the -- forms where it is not joined and precedes the form. local function add_reflexive_or_fixed_clitic_to_forms(base, do_reflexive, do_joined) for _, slotaccel in ipairs(base.alternant_multiword_spec.verb_slots_basic) do local slot, accel = unpack(slotaccel) local persnum if slot:find("[123]") then persnum = slot:match("^.*_(.-)$") else persnum = "3s" end local function get_proclitic(form) --if not do_reflexive then -- return base.clitic if form:find("^[aeiouh]") then return proclitic_elided_person_number_to_reflexive_pronoun[persnum] else return proclitic_non_elided_person_number_to_reflexive_pronoun[persnum] end end local function get_enclitic(form) --if not do_reflexive then -- return base.clitic if rfind(form, C .. "$") or rfind(form, V .. "[iu]$") and not form:find("[gq]ui$") then return enclitic_non_elided_person_number_to_reflexive_pronoun[persnum] else return enclitic_elided_person_number_to_reflexive_pronoun[persnum] end end if base.forms[slot] then if do_reflexive and slot:find("^pp_") or slot == "infinitive_linked" then -- do nothing with reflexive past participles or with infinitive linked (handled at the end) elseif slot:find("^neg_imp_") then error("Internal error: Should not have forms set for negative imperative at this stage") else local slot_has_suffixed_clitic = slot:find("infinitive") or slot:find("gerund") or slot:find("^imp_") -- Maybe generate non-reflexive parts and separated syntactic variants for use in -- {{ca-verb form of}}. See comment in add_slots() above `need_special_verb_form_of_slots`. -- Check for do_joined so we only run this code once. if do_reflexive and do_joined and base.alternant_multiword_spec.source_template == "ca-verb form of" and -- Skip personal variants of infinitives and gerunds so we don't think [[arrependendo]] is a -- non-reflexive equivalent of [[arrependendo-me]]. not slot:find("infinitive_") and not slot:find("gerund_") then -- Clone the forms because we will be destructively modifying them just below, adding the reflexive -- pronoun. insert_forms(base, slot .. "_non_reflexive", mw.clone(base.forms[slot])) if slot_has_suffixed_clitic then insert_forms(base, slot .. "_variant", iut.map_forms(base.forms[slot], function(form) return prefix_clitic_to_form(base, get_proclitic(form), "... ", form) end)) end end if slot_has_suffixed_clitic then if do_joined then -- Add clitic after form. for _, form in ipairs(base.forms[slot]) do form.form = suffix_clitic_to_form(base, get_enclitic(form.form), form.form) end end elseif not do_joined then -- Add clitic before form. for _, form in ipairs(base.forms[slot]) do form.form = prefix_clitic_to_form(base, get_proclitic(form.form), "", form.form) end end end end end end local function handle_infinitive_linked(base) -- Compute linked versions of potential lemma slots, for use in {{ca-verb}}. -- We substitute the original lemma (before removing links) for forms that -- are the same as the lemma, if the original lemma has links. for _, slot in ipairs({"infinitive"}) do insert_forms(base, slot .. "_linked", iut.map_forms(base.forms[slot], function(form) if form == base.lemma and rfind(base.linked_lemma, "%[%[") then return base.linked_lemma else return form end end)) end end local function generate_negative_imperatives(base) if base.noimp then return end -- Copy subjunctives to negative imperatives, preceded by "no". for _, persnum in ipairs(neg_imp_person_number_list) do local from = "pres_sub_" .. persnum local to = "neg_imp_" .. persnum insert_forms(base, to, iut.map_forms(base.forms[from], function(form) if base.alternant_multiword_spec.args.noautolinkverb then return "no " .. form elseif form:find("%[%[") then -- already linked, e.g. when reflexive return "[[no]] " .. form else return "[[no]] [[" .. form .. "]]" end end)) end end -- Process specs given by the user using 'addnote[SLOTSPEC][FOOTNOTE][FOOTNOTE][...]'. local function process_addnote_specs(base) for _, spec in ipairs(base.addnote_specs) do for _, slot_spec in ipairs(spec.slot_specs) do slot_spec = "^" .. slot_spec .. "$" for slot, forms in pairs(base.forms) do if rfind(slot, slot_spec) then -- To save on memory, side-effect the existing forms. for _, form in ipairs(forms) do form.footnotes = iut.combine_footnotes(form.footnotes, spec.footnotes) end end end end end end local function add_missing_links_to_forms(base) -- Any forms without links should get them now. Redundant ones will be stripped later. for slot, forms in pairs(base.forms) do for _, form in ipairs(forms) do if not form.form:find("%[%[") then form.form = "[[" .. form.form .. "]]" end end end end local function conjugate_verb(base) construct_stems(base) add_present_indic(base) add_present_subj(base) add_finite_non_present(base) add_non_finite_forms(base) fix_double_umlauts(base) -- do non-reflexive non-imperative slot overrides process_slot_overrides(base, function(slot) return not slot:find("^imp_") and not slot:find("^neg_imp_") end) -- This should happen after process_slot_overrides() in case a derived slot is based on an override -- (as with the imp_3s of [[dar]], [[estar]]). add_imperatives(base) -- do non-reflexive positive imperative slot overrides process_slot_overrides(base, function(slot) return slot:find("^imp_") end) -- We need to add joined reflexives, then joined and non-joined clitics, then non-joined reflexives, so we get -- [[arrepéndete]] but [[no]] [[te]] [[arrependas]]. if base.refl then add_reflexive_or_fixed_clitic_to_forms(base, "do reflexive", "do joined") process_slot_overrides(base, nil, "do reflexive") -- do reflexive-only slot overrides add_reflexive_or_fixed_clitic_to_forms(base, "do reflexive", false) end -- This should happen after add_reflexive_or_fixed_clitic_to_forms() so negative imperatives get the reflexive pronoun -- and clitic in them. generate_negative_imperatives(base) -- do non-reflexive negative imperative slot overrides -- FIXME: What about reflexive negative imperatives? process_slot_overrides(base, function(slot) return slot:find("^neg_imp_") end) -- This should happen before add_missing_links_to_forms() so that the comparison `form == base.lemma` -- in handle_infinitive_linked() works correctly and compares unlinked forms to unlinked forms. handle_infinitive_linked(base) process_addnote_specs(base) if not base.alternant_multiword_spec.args.noautolinkverb then add_missing_links_to_forms(base) end end local function parse_indicator_spec(angle_bracket_spec) -- Store the original angle bracket spec so we can reconstruct the overall conj spec with the lemma(s) in them. local base = { angle_bracket_spec = angle_bracket_spec, user_basic_overrides = {}, user_stems = {}, addnote_specs = {}, } local function parse_err(msg) error(msg .. ": " .. angle_bracket_spec) end local function fetch_footnotes(separated_group) local footnotes for j = 2, #separated_group - 1, 2 do if separated_group[j + 1] ~= "" then parse_err("Extraneous text after bracketed footnotes: '" .. table.concat(separated_group) .. "'") end if not footnotes then footnotes = {} end table.insert(footnotes, separated_group[j]) end return footnotes end local inside = angle_bracket_spec:match("^<(.*)>$") assert(inside) if inside == "" then return base end local segments = put.parse_balanced_segment_run(inside, "[", "]") local dot_separated_groups = put.split_alternating_runs(segments, "%.") for i, dot_separated_group in ipairs(dot_separated_groups) do local first_element = dot_separated_group[1] if first_element == "addnote" then local spec_and_footnotes = fetch_footnotes(dot_separated_group) if #spec_and_footnotes < 2 then parse_err("Spec with 'addnote' should be of the form 'addnote[SLOTSPEC][FOOTNOTE][FOOTNOTE][...]'") end local slot_spec = table.remove(spec_and_footnotes, 1) local slot_spec_inside = rmatch(slot_spec, "^%[(.*)%]$") if not slot_spec_inside then parse_err("Internal error: slot_spec " .. slot_spec .. " should be surrounded with brackets") end local slot_specs = rsplit(slot_spec_inside, ",") -- FIXME: Here, [[Module:it-verb]] called strip_spaces(). Generally we don't do this. Should we? table.insert(base.addnote_specs, {slot_specs = slot_specs, footnotes = spec_and_footnotes}) elseif indicator_flags[first_element] then if #dot_separated_group > 1 then parse_err("No footnotes allowed with '" .. first_element .. "' spec") end if base[first_element] then parse_err("Spec '" .. first_element .. "' specified twice") end base[first_element] = true elseif first_element:find("^var:") then if #dot_separated_group > 1 then parse_err(("Can't attach footnotes to 'var:' spec '%s'"):format(first_element)) end base.var = first_element:match("^var:(.*)$") elseif first_element:find(":") then local colon_separated_groups = put.split_alternating_runs(dot_separated_group, "%s*:%s*") local first_element = colon_separated_groups[1][1] if #colon_separated_groups[1] > 1 then parse_err("Can't attach footnotes directly to '" .. first_element .. "' spec; attach them to the " .. "colon-separated values following the initial colon") end if overridable_stems[first_element] then if base.user_stems[first_element] then parse_err("Overridable stem '" .. first_element .. "' specified twice") end table.remove(colon_separated_groups, 1) base.user_stems[first_element] = overridable_stems[first_element](colon_separated_groups, {prefix = first_element, base = base, parse_err = parse_err, fetch_footnotes = fetch_footnotes}) else -- assume a basic override; we validate further later when the possible slots are available if base.user_basic_overrides[first_element] then parse_err("Basic override '" .. first_element .. "' specified twice") end table.remove(colon_separated_groups, 1) base.user_basic_overrides[first_element] = allow_multiple_values_for_override(colon_separated_groups, {prefix = first_element, base = base, parse_err = parse_err, fetch_footnotes = fetch_footnotes}, "is form override") end else parse_err("Unrecognized spec '" .. first_element .. "'") end end return base end -- Normalize all lemmas, substituting the pagename for blank lemmas and adding links to multiword lemmas. local function normalize_all_lemmas(alternant_multiword_spec, head) -- (1) Add links to all before and after text. Remember the original text so we can reconstruct the verb spec later. if not alternant_multiword_spec.args.noautolinktext then iut.add_links_to_before_and_after_text(alternant_multiword_spec, "remember original") end -- (2) Remove any links from the lemma, but remember the original form so we can use it below in the 'lemma_linked' -- form. iut.map_word_specs(alternant_multiword_spec, function(base) if base.lemma == "" then base.lemma = head end base.user_specified_lemma = base.lemma base.lemma = m_links.remove_links(base.lemma) local refl_verb = base.lemma local verb, refl = rmatch(refl_verb, "^(.-)%-(se)$") if not verb then verb, refl = rmatch(refl_verb, "^(.-)('s)$") end if not verb then verb, refl = refl_verb, nil end base.user_specified_verb = verb base.refl = refl base.verb = base.user_specified_verb local linked_lemma if alternant_multiword_spec.args.noautolinkverb or base.user_specified_lemma:find("%[%[") then linked_lemma = base.user_specified_lemma elseif base.refl then -- Reconstruct the linked lemma with separate links around base verb, reflexive pronoun and clitic. linked_lemma = base.user_specified_verb == base.verb and "[[" .. base.user_specified_verb .. "]]" or "[[" .. base.verb .. "|" .. base.user_specified_verb .. "]]" linked_lemma = linked_lemma .. (refl and "-[[" .. refl .. "]]" or "") else -- Add links to the lemma so the user doesn't specifically need to, since we preserve links in multiword -- lemmas and include links in non-lemma forms rather than allowing the entire form to be a link. linked_lemma = iut.add_links(base.user_specified_lemma) end base.linked_lemma = linked_lemma end) end local function detect_indicator_spec(base) if (base.only3s and 1 or 0) + (base.only3sp and 1 or 0) + (base.only3p and 1 or 0) > 1 then error("Only one of 'only3s', 'only3sp' and 'only3p' can be specified") end base.forms = {} base.input_stems = {} base.basic_overrides = {} base.basic_reflexive_only_overrides = {} base.orig_verb = base.verb -- in case of a 'like = "..."' redirect if not base.no_built_in then local function match_built_in_spec(verb, built_in_spec) local prefix, non_prefixed_verb if type(built_in_spec.match) == "function" then prefix, non_prefixed_verb = built_in_spec.match(verb) elseif built_in_spec.match:find("^%^") and rsub(built_in_spec.match, "^%^", "") == verb then -- begins with ^, for exact match, and matches prefix, non_prefixed_verb = "", verb else prefix, non_prefixed_verb = rmatch(verb, "^(.*)(" .. built_in_spec.match .. ")$") end return prefix, non_prefixed_verb end local function find_built_in(verb, var) for _, built_in_spec in ipairs(built_in_conjugations) do local prefix, non_prefixed_verb = match_built_in_spec(verb, built_in_spec) if prefix then if not built_in_spec.var then if var then error(("Can't specify a variant spec 'var:%s' with verb '%s'"):format(var, verb)) end return prefix, non_prefixed_verb, built_in_spec elseif not var then local possible_vars = {} for _, built_in_spec in ipairs(built_in_conjugations) do local prefix, non_prefixed_verb = match_built_in_spec(verb, built_in_spec) if prefix then table.insert(possible_vars, built_in_spec.var) end end error(("For verb '%s', must specify a variant using 'var:...'; possible values are %s"):format( verb, table.concat(possible_vars, ", "))) elseif built_in_spec.var == var then return prefix, non_prefixed_verb, built_in_spec end end end return nil end local prefix, non_prefixed_verb, built_in_spec = find_built_in(base.verb, base.var) if prefix then -- we found a built-in verb if built_in_spec.like then -- we found a redirect to another verb that has the same conjugation, just a different infinitive base.verb = prefix .. built_in_spec.like local new_prefix, new_non_prefixed_verb, new_built_in_spec = find_built_in(base.verb, built_in_spec.likevar) if new_prefix then -- redirected to another built-in verb base.prefix = new_prefix base.non_prefixed_verb = new_non_prefixed_verb built_in_spec = new_built_in_spec else built_in_spec = nil end else base.prefix = prefix base.non_prefixed_verb = non_prefixed_verb end end if built_in_spec then -- we found a built-in verb, possibly redirecting to another built-in verb for stem, forms in pairs(built_in_spec.forms) do if type(forms) == "function" then forms = forms(base, base.prefix) end if stem:find("^refl_") then stem = stem:gsub("^refl_", "") if not base.alternant_multiword_spec.verb_slots_basic_map[stem] then error("Internal error: setting for 'refl_" .. stem .. "' does not refer to a basic verb slot") end base.basic_reflexive_only_overrides[stem] = forms elseif base.alternant_multiword_spec.verb_slots_basic_map[stem] then -- an individual form override of a basic form base.basic_overrides[stem] = forms else base.input_stems[stem] = forms end end end end -- Override built-in-verb stems and overrides with user-specified ones. for stem, values in pairs(base.user_stems) do base.input_stems[stem] = values end for override, values in pairs(base.user_basic_overrides) do if not base.alternant_multiword_spec.verb_slots_basic_map[override] then error("Unrecognized override '" .. override .. "': " .. base.angle_bracket_spec) end base.basic_overrides[override] = values end base.prefix = base.prefix or "" base.non_prefixed_verb = base.non_prefixed_verb or base.verb local inf_stem, suffix = rmatch(base.non_prefixed_verb, "^(.*)(re)$") if not inf_stem then inf_stem, suffix = rmatch(base.non_prefixed_verb, "^(.*)([aeiu]r)$") end if not inf_stem then error("Unrecognized infinitive: " .. base.verb) end -- Remove accents from e.g. [[parèixer]], [[córrer]]. inf_stem = com.remove_accents(inf_stem) -- Save full infinitive stem for use in future and conditional. base.inf_stem = (inf_stem .. suffix):gsub("e$", "") local stem = inf_stem if suffix == "re" then -- verbs in -ldre, -ndre have stem without the d stem = stem:gsub("([ln])d$", "%1") elseif suffix == "ur" then stem = stem .. "u" end base.conj_vowel = (suffix == "re" or suffix == "ur") and "e" or suffix:gsub("r$", "") -- If the stem is followed by a front vowel, convert it to its "back" form before calling combine_stem_ending(), -- which expects the "back" form of the stem and may convert it back to the "front" form. Don't do this conversion -- for ï so we leave [[arguïr]] (underlyingly 'argüïr') as 'argu' ("back" form), which becomes 'argü' ("front" form) -- before front vowel ï and we end up with base.stem containing the underlying form 'argüï'. We remove the first of -- two umlauts in a row in a postprocessing step (fix_double_umlauts()). if rfind(suffix, "^[ei]") then stem = com.front_to_back(stem) end -- Use combine_stem_ending() so we get ï if necessary. base.stem = combine_stem_ending(base, stem, base.conj_vowel, false, "dont include prefix") -- Propagate built-in-verb indicator flags to `base` and combine with user-specified flags. for indicator_flag, _ in pairs(indicator_flags) do base[indicator_flag] = base[indicator_flag] or base.input_stems[indicator_flag] end end local function detect_all_indicator_specs(alternant_multiword_spec) -- Propagate some settings up; some are used internally, others by [[Module:pt-headword]]. iut.map_word_specs(alternant_multiword_spec, function(base) -- Internal indicator flags. Do these before calling detect_indicator_spec() because add_slots() uses them. for _, prop in ipairs { "refl", "clitic" } do if base[prop] then alternant_multiword_spec[prop] = true end end base.alternant_multiword_spec = alternant_multiword_spec end) add_slots(alternant_multiword_spec) iut.map_word_specs(alternant_multiword_spec, function(base) detect_indicator_spec(base) -- User-specified indicator flags. Do these after calling detect_indicator_spec() because the latter may set these -- indicators for built-in verbs. for prop, _ in pairs(indicator_flags) do if base[prop] then alternant_multiword_spec[prop] = true end end end) end local function add_categories_and_annotation(alternant_multiword_spec, base, multiword_lemma) local function insert_ann(anntype, value) m_table.insertIfNot(alternant_multiword_spec.annotation[anntype], value) end local function insert_cat(cat, also_when_multiword) -- Don't place multiword terms in categories like 'Catalan verbs ending in -ar' to avoid spamming the -- categories with such terms. if also_when_multiword or not multiword_lemma then m_table.insertIfNot(alternant_multiword_spec.categories, "カタルーニャ語 " .. cat) end end if check_for_red_links and alternant_multiword_spec.source_template == "ca-conj" and multiword_lemma then for _, slot_and_accel in ipairs(alternant_multiword_spec.all_verb_slots) do local slot = slot_and_accel[1] local forms = base.forms[slot] local must_break = false if forms then for _, form in ipairs(forms) do if not form.form:find("%[%[") then local title = mw.title.new(form.form) if title and not title.exists then insert_cat("活用表に赤リンクを含む動詞") must_break = true break end end end end if must_break then break end end end map_general(base.output_stems.stem, function(stem) local stem_base, conj_vowel = split_conj_vowel(stem) local need_no_eix_infix = true if conj_vowel ~= base.conj_vowel then insert_ann("conj", "[[付録:カタルーニャ語の動詞#不規則動詞|混合活用]]") elseif conj_vowel == "a" then insert_ann("conj", "[[付録:カタルーニャ語の動詞#第一変化動詞|第一変化]]") insert_cat("第一変化動詞") elseif conj_vowel == "e" then insert_ann("conj", "[[付録:カタルーニャ語の動詞#第二変化動詞|第二変化]]") insert_cat("第二変化動詞") elseif conj_vowel == "i" then insert_ann("conj", "[[付録:カタルーニャ語の動詞#第三変化動詞|第三変化]]") insert_cat("第三変化動詞") need_no_eix_infix = false map_general(base.output_stems.eix_infix, function(form) if form == "+" then insert_ann("eix_infix", "接中辞-eix-有り") insert_cat("-eix-を含む第三変化動詞") elseif form == "-" then insert_ann("eix_infix", "接中辞-eix-無し") insert_cat("-eix-を含まない第三変化動詞") end end) else error(("Internal error: Stem '%s' doesn't end in conjugation vowel a/e/i and split_conj_vowel() didn't catch it" ):format(stem)) end if need_no_eix_infix then insert_ann("eix_infix", "接中辞無し") end end) if base.input_stems.g_infix then insert_ann("g_infix", "軟口蓋接中辞有り") insert_cat("軟口蓋接中辞を含む動詞") else insert_ann("g_infix", "no infix") end if base.output_stems.irreg then insert_ann("irreg", "不規則") insert_cat("不規則動詞") else insert_ann("irreg", "regular") end if base.only3s then insert_ann("defective", "非人称") insert_cat("非人称動詞") elseif base.only3sp then insert_ann("defective", "第三人称のみ") insert_cat("第三人称動詞") elseif base.only3p then insert_ann("defective", "第三人称複数のみ") insert_cat("第三人称複数動詞") elseif base.no_pres_stressed then insert_ann("defective", "欠如") insert_cat("欠如動詞") else insert_ann("defective", "regular") end --if base.clitic then -- insert_cat("verbs with lexical clitics") --end if base.refl then insert_cat("再帰動詞") end local stem_base, conj_vowel = split_conj_vowel(base.stem) local cons_alt if conj_vowel == "i" and base.output_stems.eix_infix == "+" then -- no alternations in verbs like [[afligir]] because all endings are front elseif stem_base:find("ç$") then cons_alt = "ç-c" elseif stem_base:find("c$") then cons_alt = "c-qu" elseif stem_base:find("g$") then cons_alt = "g-gu" elseif stem_base:find("gu$") then cons_alt = "gu-gü" elseif stem_base:find("j$") then cons_alt = "j-g" elseif stem_base:find("qu$") then cons_alt = "qu-qü" end if cons_alt then local desc = cons_alt .. " alternation" insert_ann("cons_alt", desc) insert_cat(desc .. "交替の動詞") else insert_ann("cons_alt", "non-alternating") end end -- Compute the categories to add the verb to, as well as the annotation to display in the -- conjugation title bar. We combine the code to do these functions as both categories and -- title bar contain similar information. local function compute_categories_and_annotation(alternant_multiword_spec) alternant_multiword_spec.categories = {} local ann = {} alternant_multiword_spec.annotation = ann ann.conj = {} ann.g_infix = {} ann.eix_infix = {} ann.irreg = {} ann.defective = {} ann.cons_alt = {} local multiword_lemma = false for _, form in ipairs(alternant_multiword_spec.forms.infinitive) do if form.form:find(" ") then multiword_lemma = true break end end iut.map_word_specs(alternant_multiword_spec, function(base) add_categories_and_annotation(alternant_multiword_spec, base, multiword_lemma) end) local ann_parts = {} local conj = table.concat(ann.conj, " or ") if conj ~= "" then table.insert(ann_parts, conj) end local eix_infix = table.concat(ann.eix_infix, " or ") if eix_infix ~= "" and eix_infix ~= "no infix" then table.insert(ann_parts, eix_infix) end local irreg = table.concat(ann.irreg, " or ") if irreg ~= "" and irreg ~= "regular" then table.insert(ann_parts, irreg) end local g_infix = table.concat(ann.g_infix, " or ") if g_infix ~= "" and g_infix ~= "no infix" then table.insert(ann_parts, g_infix) end local defective = table.concat(ann.defective, " or ") if defective ~= "" and defective ~= "regular" then table.insert(ann_parts, defective) end local cons_alt = table.concat(ann.cons_alt, " or ") if cons_alt ~= "" and cons_alt ~= "non-alternating" then table.insert(ann_parts, cons_alt) end alternant_multiword_spec.annotation = table.concat(ann_parts, ", ") end local function show_forms(alternant_multiword_spec) local lemmas = alternant_multiword_spec.forms.infinitive alternant_multiword_spec.lemmas = lemmas -- save for later use in make_table() local reconstructed_verb_spec = iut.reconstruct_original_spec(alternant_multiword_spec) local function transform_accel_obj(slot, formobj, accel_obj) -- No accelerators for negative imperatives, which are always multiword and derived directly from the -- present subjunctive. if slot:find("^neg_imp") then return nil end if accel_obj then accel_obj.form = "verb-form-" .. reconstructed_verb_spec end return accel_obj end local props = { lang = lang, lemmas = lemmas, transform_accel_obj = transform_accel_obj, slot_list = alternant_multiword_spec.verb_slots_basic, } iut.show_forms(alternant_multiword_spec.forms, props) alternant_multiword_spec.footnote_basic = alternant_multiword_spec.forms.footnote end local notes_template = [=[ <div class="roa-footnote-outer-div" style="width:100%;"> <div class="roa-footnote-inner-div"> {footnote} </div></div> ]=] local basic_table = [=[ {description}<div class="NavFrame"> <div class="NavHead">&nbsp; &nbsp; {title} の活用</div> <div class="NavContent"> {\op}| class="roa-inflection-table" data-toggle-category="inflection" |- ! colspan="3" class="roa-nonfinite-header" | <span title="infinitiu">不定詞</span> | colspan="5" | {infinitive} |- ! colspan="3" class="roa-nonfinite-header" | <span title="gerundi">現在分詞</span> | colspan="5" | {gerund} |- ! rowspan="3" colspan="2" class="roa-nonfinite-header" | <span title="participi passat">過去分詞</span> | colspan="2" class="roa-nonfinite-header" | ! colspan="2" class="roa-nonfinite-header" | 男性 ! colspan="2" class="roa-nonfinite-header" | 女性 |- ! colspan="2" class="roa-nonfinite-header" | 単数 | colspan="2" | {pp_ms} | colspan="2" | {pp_fs} |- ! colspan="2" class="roa-nonfinite-header" | 複数 | colspan="2" | {pp_mp} | colspan="2" | {pp_fp} |- ! colspan="2" rowspan="2" class="roa-person-number-header" | 人称 ! colspan="3" class="roa-person-number-header" | 単数 ! colspan="3" class="roa-person-number-header" | 複数 |- ! class="roa-person-number-header" style="width:12.5%;" | 第一人称 ! class="roa-person-number-header" style="width:12.5%;" | 第二人称 ! class="roa-person-number-header" style="width:12.5%;" | 第三人称 ! class="roa-person-number-header" style="width:12.5%;" | 第一人称 ! class="roa-person-number-header" style="width:12.5%;" | 第二人称 ! class="roa-person-number-header" style="width:12.5%;" | 第三人称 |- ! rowspan="6" class="roa-indicative-left-rail" | <span title="indicatiu">直説法</span> ! class="roa-indicative-left-rail" | ! class="roa-indicative-left-rail" | <<jo>> ! class="roa-indicative-left-rail" | <<tu>> ! class="roa-indicative-left-rail" | <<ell>>/<<ella>><br /><<vostè>> ! class="roa-indicative-left-rail" | <<nosaltres>><br /><<nós>> ! class="roa-indicative-left-rail" | <<vosaltres>><br /><<vós>> ! class="roa-indicative-left-rail" | <<ells>>/<<elles>><br /><<vostès>> |- ! class="roa-indicative-left-rail" style="height:3em;" | <span title="present">現在</span> | {pres_1s} | {pres_2s} | {pres_3s} | {pres_1p} | {pres_2p} | {pres_3p} |- ! class="roa-indicative-left-rail" style="height:3em;" | <span title="imperfet">不完了過去</span> | {impf_1s} | {impf_2s} | {impf_3s} | {impf_1p} | {impf_2p} | {impf_3p} |- ! class="roa-indicative-left-rail" style="height:3em;" | <span title="futur">未来</span> | {fut_1s} | {fut_2s} | {fut_3s} | {fut_1p} | {fut_2p} | {fut_3p} |- ! class="roa-indicative-left-rail" style="height:3em;" | <span title="passat">完了過去</span> | {pret_1s} | {pret_2s} | {pret_3s} | {pret_1p} | {pret_2p} | {pret_3p} |- ! class="roa-indicative-left-rail" style="height:3em;" | <span title="condicional">可能法</span> | {cond_1s} | {cond_2s} | {cond_3s} | {cond_1p} | {cond_2p} | {cond_3p} |- ! class="roa-subjunctive-left-rail" rowspan="3" | <span title="subjuntiu">接続法</span> ! class="roa-subjunctive-left-rail" | ! class="roa-subjunctive-left-rail" | <<jo>> ! class="roa-subjunctive-left-rail" | <<tu>> ! class="roa-subjunctive-left-rail" | <<ell>>/<<ella>><br /><<vostè>> ! class="roa-subjunctive-left-rail" | <<nosaltres>><br /><<nós>> ! class="roa-subjunctive-left-rail" | <<vosaltres>><br /><<vós>> ! class="roa-subjunctive-left-rail" | <<ells>>/<<elles>><br /><<vostès>> |- ! class="roa-subjunctive-left-rail" style="height:3em;" | <span title="present">現在</span> | {pres_sub_1s} | {pres_sub_2s} | {pres_sub_3s} | {pres_sub_1p} | {pres_sub_2p} | {pres_sub_3p} |- ! class="roa-subjunctive-left-rail" style="height:3em;" rowspan="1" | <span title="imperfet">過去</span> | {impf_sub_1s} | {impf_sub_2s} | {impf_sub_3s} | {impf_sub_1p} | {impf_sub_2p} | {impf_sub_3p} |- ! rowspan="3" class="roa-imperative-left-rail" style="height:3em;" | <span title="imperatiu">命令法</span> ! class="roa-imperative-left-rail" | ! class="roa-imperative-left-rail" | &mdash; ! class="roa-imperative-left-rail" | <<tu>> ! class="roa-imperative-left-rail" | <<vostè>> ! class="roa-imperative-left-rail" | <<nosaltres>> ! class="roa-imperative-left-rail" | <<vosaltres>><br /><<vós>> ! class="roa-imperative-left-rail" | <<vostès>> |- ! class="roa-imperative-left-rail" style="height:3em;" | <span title="afirmatiu">-</span> | &mdash; | {imp_2s} | {imp_3s} | {imp_1p} | {imp_2p} | {imp_3p} |- ! class="roa-imperative-left-rail" style="height:3em;" | <span title="negatiu">禁止</span> (<<no>>) | &mdash; | {neg_imp_2s} | {neg_imp_3s} | {neg_imp_1p} | {neg_imp_2p} | {neg_imp_3p} |{\cl}{notes_clause}</div></div>]=] local function make_table(alternant_multiword_spec) local forms = alternant_multiword_spec.forms forms.title = link_term(alternant_multiword_spec.lemmas[1].form, nil, "term") local ann_parts = {} if alternant_multiword_spec.annotation ~= "" then table.insert(ann_parts, alternant_multiword_spec.annotation) end if alternant_multiword_spec.args.titlenote then table.insert(ann_parts, alternant_multiword_spec.args.titlenote) end local annotation = table.concat(ann_parts, ", ") if annotation ~= "" then forms.title = forms.title .. " (" .. annotation .. ")" end forms.description = "" -- Format the table. forms.footnote = alternant_multiword_spec.footnote_basic forms.notes_clause = forms.footnote ~= "" and m_string_utilities.format(notes_template, forms) or "" local table_with_pronouns = rsub(basic_table, "<<([^<>|]-)|([^<>|]-)>>", link_term) local table_with_pronouns = rsub(table_with_pronouns, "<<(.-)>>", link_term) return require("Module:TemplateStyles")("Module:roa-verb/style.css") .. m_string_utilities.format(table_with_pronouns, forms) end -- Externally callable function to parse and conjugate a verb given user-specified arguments. -- Return value is WORD_SPEC, an object where the conjugated forms are in `WORD_SPEC.forms` -- for each slot. If there are no values for a slot, the slot key will be missing. The value -- for a given slot is a list of objects {form=FORM, footnotes=FOOTNOTES}. function export.do_generate_forms(args, source_template, headword_head) local PAGENAME = mw.loadData("Module:headword/data").pagename local function in_template_space() return mw.title.getCurrentTitle().nsText == "テンプレート" end -- Determine the verb spec we're being asked to generate the conjugation of. This may be taken from the -- current page title or the value of |pagename=; but not when called from {{ca-verb form of}}, where the -- page title is a non-lemma form. Note that the verb spec may omit the infinitive; e.g. it may be "<i-e>". -- For this reason, we use the value of `pagename` computed here down below, when calling normalize_all_lemmas(). local pagename = source_template ~= "ca-verb form of" and args.pagename or PAGENAME local head = headword_head or pagename local arg1 = args[1] if not arg1 then if (pagename == "ca-conj" or pagename == "ca-verb" or pagename == "ca-verb form of" or pagename == "ca-conjug") and in_template_space() then arg1 = "amar<>" else arg1 = "<>" end end -- When called from {{ca-verb form of}}, determine the non-lemma form whose inflections we're being asked to -- determine. This normally comes from the page title or the value of |pagename=. local verb_form_of_form if source_template == "ca-verb form of" then verb_form_of_form = args.pagename if not verb_form_of_form then if PAGENAME == "ca-verb form of" and in_template_space() then verb_form_of_form = "ami" else verb_form_of_form = PAGENAME end end end local incorporated_headword_head_into_lemma = false if arg1:find("^<.*>$") then -- missing lemma if head:find(" ") then -- If multiword lemma, try to add arg spec after the first word. -- Try to preserve the brackets in the part after the verb, but don't do it -- if there aren't the same number of left and right brackets in the verb -- (which means the verb was linked as part of a larger expression). local refl_clitic_verb, post = rmatch(head, "^(.-)( .*)$") local left_brackets = rsub(refl_clitic_verb, "[^%[]", "") local right_brackets = rsub(refl_clitic_verb, "[^%]]", "") if #left_brackets == #right_brackets then arg1 = iut.remove_redundant_links(refl_clitic_verb) .. arg1 .. post incorporated_headword_head_into_lemma = true else -- Try again using the form without links. local linkless_head = m_links.remove_links(head) if linkless_head:find(" ") then refl_clitic_verb, post = rmatch(linkless_head, "^(.-)( .*)$") arg1 = refl_clitic_verb .. arg1 .. post else error("Unable to incorporate <...> spec into explicit head due to a multiword linked verb or " .. "unbalanced brackets; please include <> explicitly: " .. arg1) end end else -- Will be incorporated through `head` below in the call to normalize_all_lemmas(). incorporated_headword_head_into_lemma = true end end local function split_bracketed_runs_into_words(bracketed_runs) return put.split_alternating_runs(bracketed_runs, " ", "preserve splitchar") end local parse_props = { parse_indicator_spec = parse_indicator_spec, -- Split words only on spaces, not on hyphens, because that messes up reflexive verb parsing. split_bracketed_runs_into_words = split_bracketed_runs_into_words, allow_default_indicator = true, allow_blank_lemma = true, } local alternant_multiword_spec = iut.parse_inflected_text(arg1, parse_props) alternant_multiword_spec.pos = pos or "verbs" alternant_multiword_spec.args = args alternant_multiword_spec.source_template = source_template alternant_multiword_spec.verb_form_of_form = verb_form_of_form alternant_multiword_spec.incorporated_headword_head_into_lemma = incorporated_headword_head_into_lemma normalize_all_lemmas(alternant_multiword_spec, head) detect_all_indicator_specs(alternant_multiword_spec) local inflect_props = { slot_list = alternant_multiword_spec.all_verb_slots, inflect_word_spec = conjugate_verb, -- We add links around the generated verbal forms rather than allow the entire multiword -- expression to be a link, so ensure that user-specified links get included as well. include_user_specified_links = true, } iut.inflect_multiword_or_alternant_multiword_spec(alternant_multiword_spec, inflect_props) -- Remove redundant brackets around entire forms. for slot, forms in pairs(alternant_multiword_spec.forms) do for _, form in ipairs(forms) do form.form = iut.remove_redundant_links(form.form) end end compute_categories_and_annotation(alternant_multiword_spec) if args.json and source_template == "ca-conj" then return require("Module:JSON").toJSON(alternant_multiword_spec.forms) end return alternant_multiword_spec end -- Entry point for {{ca-conj}}. Template-callable function to parse and conjugate a verb given -- user-specified arguments and generate a displayable table of the conjugated forms. function export.show(frame) local parent_args = frame:getParent().args local params = { [1] = {}, ["titlenote"] = {}, ["noautolinktext"] = {type = "boolean"}, ["noautolinkverb"] = {type = "boolean"}, ["pagename"] = {}, -- for testing/documentation pages ["json"] = {type = "boolean"}, -- for bot use } local args = require("Module:parameters").process(parent_args, params) local alternant_multiword_spec = export.do_generate_forms(args, "ca-conj") if type(alternant_multiword_spec) == "string" then -- JSON return value return alternant_multiword_spec end show_forms(alternant_multiword_spec) return make_table(alternant_multiword_spec) .. require("Module:utilities").format_categories(alternant_multiword_spec.categories, lang, nil, nil, force_cat) end return export lb3o5u4k1f2lrfgte08b7b2cpnjfhue 2313426 2313425 2026-08-09T09:48:26Z Kuroco2k 84207 だめそう...。 2313426 Scribunto text/plain --[=[ This module contains functions for creating inflection tables for Catalan verbs. Notice: The bot [[User:MewBot]] uses this module to automatically create entries for verb forms. If you change how this module works, please notify the bot owner so the bot can be updated! ]=]-- local m_utilities = require("モジュール:utilities") local com = require("モジュール:ca-common") local export = {} local lang = require("モジュール:languages").getByCode("ca") -- The main entry point. -- This is the only function that can be invoked from a template. function export.show(frame) local conj_type = frame.args[1] or error("活用の種類が指定されていません。モジュールの呼び出しにパラメータ1を与えて下さい。") local args = frame:getParent().args PAGENAME = mw.title.getCurrentTitle().text NAMESPACE = mw.title.getCurrentTitle().nsText local forms, title, categories if conj_type == "ar" then forms, title, categories = conj_1(args) elseif conj_type == "re" or conj_type == "er" then forms, title, categories = conj_2(args) elseif conj_type == "dre" or conj_type == "ure_ïa" then forms, title, categories = conj_2_velar(args) elseif conj_type == "ir_eix" then forms, title, categories = conj_3(args, true) elseif conj_type == "ir_no_eix" then forms, title, categories = conj_3(args, false) else error("Unknown conjugation type '" .. conj_type .. "'") end if args["bot"] or "" ~= "" then return make_bot_list(forms, sep ~= "") else return make_table(forms, title) .. m_utilities.format_categories(categories, lang) end end -- Conjugate a first conjugation verb (-ar) function conj_1(args) local forms = {} local categories = {"カタルーニャ語 第一変化動詞"} local title = "[[付録:カタルーニャ語 動詞#第一変化動詞|第一変化]]" local stems = {} stems.back = args[1] or (NAMESPACE == "テンプレート" and "-") or error("The first parameter is missing") make_stems(stems, "a") forms["infinitive"] = stems.back .. "ar" forms["pres_part"] = stems.back .. "ant" forms["past_part"] = stems.back .. "at" make_pres_1(forms, stems) make_impf(forms, stems, "a") make_futr_cond(forms, stems.back .. "a") make_pret(forms, stems, "a") make_pres_sub(forms, stems, "a") make_impf_sub(forms, stems, "a") -- The verb "donar" gets accents on two of the forms, -- to distinguish them from the noun "dona". if stems.back == "don" then forms["pres_ind_2sg"] = "dónes" forms["pres_ind_3sg"] = "dóna" forms["impr_2sg"] = "dóna" end return forms, title, categories end -- Conjugate a second conjugation verb in -re or unstressed -er function conj_2(args) local forms = {} local categories = {"カタルーニャ語 第二変化動詞"} local title = "[[付録:カタルーニャ語 動詞#第二変化動詞|第二変化]]" local stems = {} stems.front_stressedA = args[1] or (NAMESPACE == "テンプレート" and "-") or error("The first parameter is missing") stems.front = args[2]; if stems.front == "" then stems.front = nil end if stems.front then title = title .. ", 強勢がある時語幹が変化" table.insert(categories, "カタルーニャ語 語幹が変化する第二変化動詞") end make_stems(stems, "e") if stems.front:find("[cmxs]$") or stems.front:find("ny$") or stems.front:find("rr$") then forms["infinitive"] = stems.front_stressedA .. "er" make_futr_cond(forms, stems.front .. "e") elseif stems.front:find("[ln]$") then forms["infinitive"] = stems.back_stressed .. "dre" make_futr_cond(forms, stems.back .. "d") else forms["infinitive"] = stems.back_stressed .. "re" make_futr_cond(forms, stems.back) end forms["pres_part"] = stems.front .. "ent" forms["past_part"] = stems.back .. "ut" make_pres_23(forms, stems, "e") make_impf(forms, stems, "e") make_pret(forms, stems, "e") make_pres_sub(forms, stems, "e") make_impf_sub(forms, stems, "e") local past_part = args["past_part"] or "" if past_part ~= "" then forms["past_part"] = past_part title = title .. ", 不規則過去分詞" table.insert(categories, "カタルーニャ語 不規則過去分詞の第二変化動詞") end return forms, title, categories end -- Conjugate a second conjugation verb (-re) with velar infix function conj_2_velar(args) local forms = {} local categories = {"カタルーニャ語 第二変化動詞"} local title = "[[付録:カタルーニャ語 動詞#Velar-infix stems|second conjugation with velar infix]]" local stems = {} stems.front_stressedA = args[1] or (NAMESPACE == "テンプレート" and "-n") or error("The first parameter is missing") stems.front = args[2]; if stems.front == "" then stems.front = nil end make_stems(stems, "e") local velar_stems = {} velar_stems.back_stressedA = stems.back_stressedA:gsub("v$", "") .. "g" velar_stems.back = stems.back:gsub("v$", "") .. "g" make_stems(velar_stems, "e") if stems.back_stressed:find("[aeiouv]$") then forms["infinitive"] = stems.back_stressed:gsub("v$", "") .. "ure" make_futr_cond(forms, stems.back:gsub("v$", "") .. "u") elseif stems.back_stressed:find("[ln]$") then forms["infinitive"] = stems.back_stressed .. "dre" make_futr_cond(forms, stems.back .. "d") else error("Invalid stem") end forms["pres_part"] = stems.front .. "ent" forms["past_part"] = velar_stems.back .. "ut" make_pres_23(forms, stems, "e"); forms["pres_ind_1sg"] = velar_stems.final_stressed make_impf(forms, stems, "e") make_pret(forms, velar_stems, "e") make_pres_sub(forms, velar_stems, "e") make_impf_sub(forms, velar_stems, "e") local past_part = args["past_part"] or "" if past_part ~= "" then forms["past_part"] = past_part title = title .. ", 不規則過去分詞" table.insert(categories, "カタルーニャ語 不規則過去分詞の第二変化動詞") end return forms, title, categories end -- Conjugate a third conjugation verb (-ir) function conj_3(args, eix) local forms = {} local categories = {"カタルーニャ語 第三変化動詞"} local title local stems = {} stems.front = args[1] or (NAMESPACE == "テンプレート" and "-") or error("The first parameter is missing") if eix then table.insert(categories, "カタルーニャ語 -eix-を含む第三変化動詞") title = "[[付録:カタルーニャ語 動詞#-eix-有り|第三変化動詞(接中辞-eix-有り)]]" stems.front_stressedA = stems.front .. "eix" else table.insert(categories, "カタルーニャ語 -eix-を含まない第三変化動詞") title = "[[付録:カタルーニャ語 動詞#-eix-無し|第三変化動詞(接中辞-eix-無し)]]" stems.front_stressedA = args[2]; if stems.front_stressedA == "" then stems.front_stressedA = nil end if stems.front_stressedA then title = title .. ", 強勢がある時語幹が変化" table.insert(categories, "カタルーニャ語 語幹が変化する第三変化動詞") end end make_stems(stems, "i") forms["infinitive"] = stems.front .. "ir" forms["pres_part"] = stems.front .. "int" forms["past_part"] = stems.front_i .. "t" make_pres_23(forms, stems, "i") make_impf(forms, stems, "i") make_futr_cond(forms, stems.front .. "i") make_pret(forms, stems, "i") make_pres_sub(forms, stems, "i") make_impf_sub(forms, stems, "i") local past_part = args["past_part"] or "" if past_part ~= "" then forms["past_part"] = past_part title = title .. ", 不規則過去分詞" table.insert(categories, "カタルーニャ語 不規則過去分詞の第三変化動詞") end return forms, title, categories end -- Create the various base stems that endings are attached to. function make_stems(stems) if stems.back or stems.back_stressedA then stems.back_stressedA = stems.back_stressedA or stems.back stems.front_stressedA = com.back_to_front(stems.back_stressedA) stems.back_stressed = com.remove_accents(stems.back_stressedA) stems.front_stressed = com.remove_accents(stems.front_stressedA) stems.back = stems.back or stems.back_stressed stems.front = com.back_to_front(stems.back) elseif stems.front or stems.front_stressedA then stems.front_stressedA = stems.front_stressedA or stems.front stems.back_stressedA = com.front_to_back(stems.front_stressedA) stems.front_stressed = com.remove_accents(stems.front_stressedA) stems.back_stressed = com.remove_accents(stems.back_stressedA) stems.front = stems.front or stems.front_stressed stems.back = com.front_to_back(stems.front) else error("語幹が与えられていません。") end -- Does this verb need a diaeresis when endings with -i are attached? -- Verbs in -aiar, -eiar etc. lose the final -i of the stem -- when another -i is attached. local diaeresis = (stems.back:find("[aeiou]$") and not stems.back:find("[aeiou]u$")) local diaeresis_stressed = (stems.back_stressed:find("[aeiou]$") and not stems.back_stressed:find("[aeiou]u$")) stems.front_no_i = stems.front:gsub("([aeiou])i$", "%1") stems.front_stressed_no_i = stems.front_stressed:gsub("([aeiou])i$", "%1") stems.front_i = stems.front_no_i:gsub("ü$", "u") .. (diaeresis and "ï" or "i") stems.front_stressed_i = stems.front_stressed_no_i:gsub("ü$", "u") .. (diaeresis_stressed and "ï" or "i") -- Stems that are used with no following syllable, which have final devoicing. if stems.back_stressed:find("s$") or stems.back_stressed:find("[ei]n$") then if stems.back_stressedA:find("[aeiou]") then stems.final_stressedA = stems.back_stressedA:gsub("ss$", "s") else stems.final_stressedA = stems.back_stressed:gsub("ss$", "s") end -- l and r can't stand between a consonant and the end or another consonant, -- so an epenthetic vowel is inserted. elseif stems.back_stressed:find("[bpdtgc][lr]$") then stems.final_stressedA = stems.front_stressed .. "e" elseif stems.back_stressed:find("[aeiou][bd]$") then stems.final_stressedA = stems.back_stressed:gsub("b$", "p"):gsub("d$", "t") else stems.final_stressedA = stems.back_stressed:gsub("g$", "c"):gsub("j$", "ig") end stems.final_stressed = com.remove_accents(stems.final_stressedA) end function make_pres_1(forms, stems) forms["pres_ind_1sg"] = stems.back_stressed .. "o" forms["pres_ind_2sg"] = stems.front_stressed .. "es" forms["pres_ind_3sg"] = stems.back_stressed .. "a" forms["pres_ind_1pl"] = stems.front .. "em" forms["pres_ind_2pl"] = stems.front .. "eu" forms["pres_ind_3pl"] = stems.front_stressed .. "en" forms["impr_2sg"] = forms["pres_ind_3sg"] forms["impr_2pl"] = forms["pres_ind_2pl"] end function make_pres_23(forms, stems, vowel) forms["pres_ind_1sg"] = stems.back_stressed .. "o" forms["pres_ind_3pl"] = stems.front_stressed .. "en" -- The 2nd and 3rd person singular present forms have special forms because -- of the way sounds are combined in them. forms["pres_ind_2sg"] = stems.final_stressed .. "s" forms["pres_ind_3sg"] = stems.final_stressedA -- Verbs ending in a sibilant consonant get an epenthetic vowel -- in the 2nd person singular. if stems.front_stressed:find("[cgsx]$") then forms["pres_ind_2sg"] = stems.front_stressed .. "es" -- Verbs ending in a vowel add -u in some forms. elseif stems.back_stressed:find("u$") then forms["pres_ind_2sg"] = stems.front_stressed .. "us" forms["pres_ind_3sg"] = stems.front_stressed .. "u" elseif stems.back_stressed:find("[aeiov]$") then forms["pres_ind_2sg"] = stems.front_stressed:gsub("v$", "") .. "us" forms["pres_ind_3sg"] = stems.front_stressed:gsub("v$", "") .. "u" forms["pres_ind_3pl"] = stems.front_stressed:gsub("v$", "") .. "uen" end if vowel == "i" then forms["pres_ind_1pl"] = stems.front_i .. "m" forms["pres_ind_2pl"] = stems.front_i .. "u" else forms["pres_ind_1pl"] = stems.front .. "em" forms["pres_ind_2pl"] = stems.front .. "eu" end forms["impr_2sg"] = forms["pres_ind_3sg"] forms["impr_2pl"] = forms["pres_ind_2pl"] end function make_impf(forms, stems, vowel) local stem = stems.back .. "av" local stemA = stems.back .. "àv" if vowel ~= "a" then stem = stems.front_i stemA = stems.front .. "í" end forms["impf_ind_1sg"] = stem .. "a" forms["impf_ind_2sg"] = stem .. "es" forms["impf_ind_3sg"] = stem .. "a" forms["impf_ind_1pl"] = stemA .. "em" forms["impf_ind_2pl"] = stemA .. "eu" forms["impf_ind_3pl"] = stem .. "en" end function make_pret(forms, stems, vowel) local stem = stems.back .. "a" local stemA = stems.back .. "à" if vowel == "e" then stem = stems.front .. "e" stemA = stems.front .. "é" elseif vowel == "i" then stem = stems.front_i stemA = stems.front .. "í" end forms["pret_ind_1sg"] = stems.front_no_i .. "í" forms["pret_ind_2sg"] = stem .. "res" forms["pret_ind_3sg"] = stemA forms["pret_ind_1pl"] = stemA .. "rem" forms["pret_ind_2pl"] = stemA .. "reu" forms["pret_ind_3pl"] = stem .. "ren" end function make_futr_cond(forms, stem) forms["futr_ind_1sg"] = stem .. "ré" forms["futr_ind_2sg"] = stem .. "ràs" forms["futr_ind_3sg"] = stem .. "rà" forms["futr_ind_1pl"] = stem .. "rem" forms["futr_ind_2pl"] = stem .. "reu" forms["futr_ind_3pl"] = stem .. "ran" forms["cond_1sg"] = stem .. "ria" forms["cond_2sg"] = stem .. "ries" forms["cond_3sg"] = stem .. "ria" forms["cond_1pl"] = stem .. "ríem" forms["cond_2pl"] = stem .. "ríeu" forms["cond_3pl"] = stem .. "rien" end function make_pres_sub(forms, stems, vowel) forms["pres_sub_1sg"] = stems.front_stressed_i forms["pres_sub_2sg"] = stems.front_stressed_i .. "s" forms["pres_sub_3sg"] = stems.front_stressed_i if vowel == "i" then forms["pres_sub_1pl"] = stems.front_i .. "m" forms["pres_sub_2pl"] = stems.front_i .. "u" else forms["pres_sub_1pl"] = stems.front .. "em" forms["pres_sub_2pl"] = stems.front .. "eu" end forms["pres_sub_3pl"] = stems.front_stressed_i .. "n" forms["impr_3sg"] = forms["pres_sub_3sg"] forms["impr_1pl"] = forms["pres_sub_1pl"] forms["impr_3pl"] = forms["pres_sub_3pl"] end function make_impf_sub(forms, stems, vowel) local stem = stems.front .. "e" local stemA = stems.front .. "é" if vowel == "i" then stem = stems.front_i stemA = stems.front .. "í" end forms["impf_sub_1sg"] = stemA .. "s" forms["impf_sub_2sg"] = stem .. "ssis" forms["impf_sub_3sg"] = stemA .. "s" forms["impf_sub_1pl"] = stemA .. "ssim" forms["impf_sub_2pl"] = stemA .. "ssiu" forms["impf_sub_3pl"] = stem .. "ssin" end -- Make the table function make_table(forms, title) -- Make links out of all forms for key, form in pairs(forms) do forms[key] = com.link_form(form) end return [=[ <div class="NavFrame"> <div class="NavHead" style="text-align: left">'']=] .. forms["infinitive"] .. "''の活用" .. (title and " (" .. title .. ")" or "") .. [=[</div> <div class="NavContent"> {| style="width:100%;background:#F0F0F0;;padding:.3em" |- ! colspan="3" style="background:#e2e4c0;" | 不定詞 | colspan="5" style=";"| ]=] .. forms["infinitive"] .. [=[ |- ! colspan="3" style="background:#e2e4c0;" | 現在分詞 | colspan="5" style=";"| ]=] .. forms["pres_part"] .. [=[ |- ! colspan="3" style="background:#e2e4c0;" | 過去分詞 | colspan="5" style=";"| ]=] .. forms["past_part"] .. [=[ |- ! colspan="2" rowspan="2" style="background:#e2e4cb;" | 人称 ! colspan="3" style="background:#e2e4cb;" | 単数 ! colspan="3" style="background:#e2e4cb;" | 複数 |- ! style="background:#e2e4cb;;width:12.5%" | 一人称 ! style="background:#e2e4cb;;width:12.5%" | 二人称 ! style="background:#e2e4cb;;width:12.5%" | 三人称 ! style="background:#e2e4cb;;width:12.5%" | 一人称 ! style="background:#e2e4cb;;width:12.5%" | 二人称 ! style="background:#e2e4cb;;width:12.5%" | 三人称 |- ! rowspan="6" style="background:#c0cfe4;" | 直説法 ! style="background:#c0cfe4;" | ! style="background:#c0cfe4;" | [[jo]] ! style="background:#c0cfe4;" | [[tu]] ! style="background:#c0cfe4;" | [[ell]]/[[ella]]<br />[[vostè]] ! style="background:#c0cfe4;" | [[nosaltres]]<br />[[nós]] ! style="background:#c0cfe4;" | [[vosaltres]]<br />[[vós]] ! style="background:#c0cfe4;" | [[ells]]/[[elles]]<br />[[vostès]] |- ! style="height:3em;background:#c0cfe4;" | 現在 | style=";" | ]=] .. forms["pres_ind_1sg"] .. [=[ | style=";" | ]=] .. forms["pres_ind_2sg"] .. [=[ | style=";" | ]=] .. forms["pres_ind_3sg"] .. [=[ | style=";" | ]=] .. forms["pres_ind_1pl"] .. [=[ | style=";" | ]=] .. forms["pres_ind_2pl"] .. [=[ | style=";" | ]=] .. forms["pres_ind_3pl"] .. [=[ |- ! style="height:3em;background:#c0cfe4;" | 不完了過去 | style=";" | ]=] .. forms["impf_ind_1sg"] .. [=[ | style=";" | ]=] .. forms["impf_ind_2sg"] .. [=[ | style=";" | ]=] .. forms["impf_ind_3sg"] .. [=[ | style=";" | ]=] .. forms["impf_ind_1pl"] .. [=[ | style=";" | ]=] .. forms["impf_ind_2pl"] .. [=[ | style=";" | ]=] .. forms["impf_ind_3pl"] .. [=[ |- ! style="height:3em;background:#c0cfe4;" | 未来 | style=";" | ]=] .. forms["futr_ind_1sg"] .. [=[ | style=";" | ]=] .. forms["futr_ind_2sg"] .. [=[ | style=";" | ]=] .. forms["futr_ind_3sg"] .. [=[ | style=";" | ]=] .. forms["futr_ind_1pl"] .. [=[ | style=";" | ]=] .. forms["futr_ind_2pl"] .. [=[ | style=";" | ]=] .. forms["futr_ind_3pl"] .. [=[ |- ! style="height:3em;background:#c0cfe4;" | 完了過去 | style=";" | ]=] .. forms["pret_ind_1sg"] .. [=[ | style=";" | ]=] .. forms["pret_ind_2sg"] .. [=[ | style=";" | ]=] .. forms["pret_ind_3sg"] .. [=[ | style=";" | ]=] .. forms["pret_ind_1pl"] .. [=[ | style=";" | ]=] .. forms["pret_ind_2pl"] .. [=[ | style=";" | ]=] .. forms["pret_ind_3pl"] .. [=[ |- ! style="height:3em;background:#c0cfe4;" | 過去未来・可能法 | style=";" | ]=] .. forms["cond_1sg"] .. [=[ | style=";" | ]=] .. forms["cond_2sg"] .. [=[ | style=";" | ]=] .. forms["cond_3sg"] .. [=[ | style=";" | ]=] .. forms["cond_1pl"] .. [=[ | style=";" | ]=] .. forms["cond_2pl"] .. [=[ | style=";" | ]=] .. forms["cond_3pl"] .. [=[ |- ! style="background:#c0e4c0;" rowspan="3" | 接続法 ! style="background:#c0e4c0;" | ! style="background:#c0e4c0;" | jo ! style="background:#c0e4c0;" | tu ! style="background:#c0e4c0;" | ell/ella<br />vostè ! style="background:#c0e4c0;" | nosaltres<br />nós ! style="background:#c0e4c0;" | vosaltres<br />vós ! style="background:#c0e4c0;" | ells/elles<br />vostès |- ! style="height:3em;background:#c0e4c0;" | 現在 | style=";" | ]=] .. forms["pres_sub_1sg"] .. [=[ | style=";" | ]=] .. forms["pres_sub_2sg"] .. [=[ | style=";" | ]=] .. forms["pres_sub_3sg"] .. [=[ | style=";" | ]=] .. forms["pres_sub_1pl"] .. [=[ | style=";" | ]=] .. forms["pres_sub_2pl"] .. [=[ | style=";" | ]=] .. forms["pres_sub_3pl"] .. [=[ |- ! style="height:3em;background:#c0e4c0;" rowspan="1" | 過去 | style=";" | ]=] .. forms["impf_sub_1sg"] .. [=[ | style=";" | ]=] .. forms["impf_sub_2sg"] .. [=[ | style=";" | ]=] .. forms["impf_sub_3sg"] .. [=[ | style=";" | ]=] .. forms["impf_sub_1pl"] .. [=[ | style=";" | ]=] .. forms["impf_sub_2pl"] .. [=[ | style=";" | ]=] .. forms["impf_sub_3pl"] .. [=[ |- ! colspan="2" rowspan="2" style="height:3em;background:#e4d4c0;" | 命令法 ! style="background:#e4d4c0;" | &mdash; ! style="background:#e4d4c0;" | tu ! style="background:#e4d4c0;" | vostè ! style="background:#e4d4c0;" | nosaltres ! style="background:#e4d4c0;" | vosaltres<br />vós ! style="background:#e4d4c0;" | vostès |- | &mdash; | style=";" | ]=] .. forms["impr_2sg"] .. [=[ | style=";" | ]=] .. forms["impr_3sg"] .. [=[ | style=";" | ]=] .. forms["impr_1pl"] .. [=[ | style=";" | ]=] .. forms["impr_2pl"] .. [=[ | style=";" | ]=] .. forms["impr_3pl"] .. [=[ |}</div></div>]=] end -- This generates machine-readable output, which allows formbots to easily -- parse the output of the module. function make_bot_list(forms) local ret = "" for key, form in pairs(forms) do ret = ret .. "* " .. key .. "=" .. form .. "\n" end return ret end return export fmly1loex8jsc0wg2x3hxkad4629mf0 モジュール:ca-common 828 121396 2313407 2286434 2026-08-09T09:00:12Z Kuroco2k 84207 [[:en:Module:ca-common]] 2313407 Scribunto text/plain local export = {} local romut_module = "Module:romance utilities" local unaccented_vowel = "aeiouïü" local accented_vowel = "àèéíòóú" local vowel = unaccented_vowel .. accented_vowel local rfind = mw.ustring.find local rmatch = mw.ustring.match local rsubn = mw.ustring.gsub local usub = mw.ustring.sub -- version of rsubn() that discards all but the first return value function export.rsub(term, foo, bar) local retval = rsubn(term, foo, bar) return retval end local rsub = export.rsub export.V = "[" .. vowel .. "]" export.UV = "[" .. unaccented_vowel .. "]" export.AV = "[" .. accented_vowel .. "]" export.C = "[^" .. vowel .. "]" local V = export.V local UV = export.UV local AV = export.AV local C = export.C -- Used when forming the feminine of adjectives in -i. Those with the stressed vowel 'e' or 'o' always seem to have è, ò. local accent_vowel = { ["a"] = "à", ["e"] = "è", ["i"] = "í", ["o"] = "ò", ["u"] = "ú", } local prepositions = { -- a + optional article (including salat) "al?s? ", -- de + optional article (including salat) "del?s? ", "d'", -- ca + optional article (including salat and [[en]]) "can? ", "cal?s? ", -- per + optional article "per ", "pels? ", -- others "en ", "amb ", "cap ", "com ", "entre ", "sense ", "sobre ", } -- Make a link out of a form, or show a dash if empty. function export.link_form(form, tag) if not PAGENAME then PAGENAME = mw.loadData("Module:headword/data").pagename end if type(form) == "table" then for n, subform in pairs(form) do form[n] = export.link_form(subform, tag) end return table.concat(form, ", ") else if form ~= "" then return "<" .. (tag or "span") .. " lang=\"ca\">[[" .. form .. (form ~= PAGENAME and "#カタルーニャ語|" .. form or "") .. "]]</" .. (tag or "span") .. ">" else return "&mdash;" end end end -- Remove accents from any of the vowels in a word. -- If an accented í follows another vowel, a diaeresis is added following -- normal Catalan spelling rules. function export.remove_accents(word, final_syllable_only) word = rsub( word, "(.?.?)([àèéíòóú])(" .. (final_syllable_only and export.C .. "*" or ".*") .. ")$", function (preceding, vowel, after) if vowel == "í" then if preceding:find("^[gq]u$") then return preceding .. "i" .. after elseif rfind(preceding, "[aeiouü]$") then return preceding .. "ï" .. after end end -- Decompose the accented vowel to an unaccented vowel (a, e, i, o, u) -- plus an acute or grave; return the unaccented vowel. return preceding .. mw.ustring.toNFD(vowel):sub(1, 1) .. after end) return word end -- Apply alternation of the final consonant of a stem, converting the form used before a back vowel into the form used -- before a front vowel. function export.back_to_front(stem) return (stem :gsub("qu$", "qü") -- adequar -> adeqües :gsub("c$", "qu") -- marcar -> marques :gsub("ç$", "c") -- abraçar -> abraces :gsub("gu$", "gü") -- enaiguar -> enaigües :gsub("g$", "gu") -- pegar -> pegues :gsub("j$", "g") -- arranjar -> arranges ) end -- Apply alternation of the final consonant of a stem, converting the form used before a front vowel into the form used -- before a back vowel. function export.front_to_back(stem) return (stem :gsub("c$", "ç") -- torcer -> torço :gsub("qu$", "c") :gsub("qü$", "qu") :gsub("g$", "j") -- fugir -> fujo :gsub("gu$", "g") :gsub("gü$", "gu") ) end ----------------------------------------------------------------------------------------- -- Inflection functions -- ----------------------------------------------------------------------------------------- -- Given a term `term`, if the term is multiword (either through spaces or hyphens), handle inflection of the term by -- calling handle_multiword() in [[Module:romance utilities]]. `special` indicates which parts of the multiword term to -- inflect, and `inflect` is a function of one argument to inflect the individual parts of the term. As an optimization, -- if the term is not multiword and `special` is not given, do nothing. local function call_handle_multiword(term, special, inflect, allow_multiple) if not special and not term:find("[ %-]") then return nil end local retval = require(romut_module).handle_multiword(term, special, inflect, prepositions) if retval and #retval > 0 then if allow_multiple then return retval end if #retval ~= 1 then error("Internal error: Should have only one return value from inflection function: " .. table.concat(retval, ",")) end return retval[1] end return nil end function export.make_feminine(base, special) local retval = call_handle_multiword(base, special, export.make_feminine) if retval then return retval end -- special cases -- -able, -ible, -uble if base:find("ble$") or -- stressed -al/-ar in a multisyllabic word (not [[gal]], [[anòmal]], or [[car]], [[clar]], [[rar]], [[var]], -- [[isòbar]], [[èuscar]], [[búlgar]], [[tàrtar]]/[[tàtar]], [[càtar]], [[àvar]]) (rfind(base, V .. "[^ ]*a[lr]$") and not rfind(base, AV .. "[^ ]*a[lr]$")) or -- -ant in a multisyllabic word (not [[mant]], [[tant]], also [[quant]] but that needs manual handling) -- -ent in a multisyllabic word (not [[lent]]; some other words in -lent have feminine in -a but not all) rfind(base, V .. "[^ ]*[ae]nt$") or -- Words in -aç, -iç, -oç (not [[descalç]], [[dolç]], [[agredolç]]; [[balbuç]] has -a and needs manual handling) rfind(base, V .. "ç$") or -- Words in -il including when non-stressed ([[hàbil]], [[dèbil]], [[mòbil]], [[fàcil]], [[símil]], [[tàmil]], -- etc.); but not words in -òfil, -èfil, etc. base:find("[^f]il$") then return base end -- final vowel -> -a if base:find("a$") then return base end if base:find("o$") then return (base:gsub("o$", "a")) end if base:find("e$") then return export.front_to_back(base:gsub("e$", "")) .. "a" end -- -u -> -va if base:find(UV .. "u$") then return (base:gsub("u$", "v") .. "a") end -- accented vowel -> -na if rfind(base, AV .. "$") then return export.remove_accents(base) .. "na" end -- accented vowel + -s -> -sa if rfind(base, AV .. "s$") then return export.remove_accents(base) .. "a" end -- vowel + consonant(s) + i -> accent the first vowel, add -a local prev, first_vowel, cons = rmatch(base, "^(.*)([aeo])i(" .. C .. "+)i$") if first_vowel then -- At least [[malaisi]] return prev .. accent_vowel[first_vowel] .. "i" .. cons .. "ia" end local prev, first_vowel, cons = rmatch(base, "^(.*)(" .. UV .. ")(" .. C .. "+)i$") if first_vowel then return prev .. accent_vowel[first_vowel] .. cons .. "ia" end -- multisyllabic -at/-it/-ut (also -ït/-üt) with stress on the final vowel -> -ada/-ida/-uda local mod_base = rsub(base, "([gq])u(" .. UV .. ")", "%1w%2") -- hack so we don't treat the u in qu/gu as a vowel if (rfind(mod_base, V .. "[^ ]*[aiu]t$") and not rfind(mod_base, AV .. "[^ ]*[aiu]t$") and not rfind(mod_base, "[aeo][iu]t$")) or rfind(mod_base, "[ïü]t$") then return rsub(base, "t$", "da") end return base .. "a" end function export.make_plural(base, gender, special) local retval = call_handle_multiword(base, special, function(term) return export.make_plural(term, gender) end, "allow multiple") if retval then return retval end -- a -> es if base:find("a$") then return {export.back_to_front(base:gsub("a$", "")) .. "es"} end -- accented vowel -> -ns if rfind(base, AV .. "$") then return {export.remove_accents(base) .. "ns"} end if gender == "m" then if rfind(base, AV .. "s$") then return {export.remove_accents(base) .. "os"} end if rfind(base, "[sçxz]$") then return {base .. "os"} end if base:find("sc$") or base:find("[sx]t$") then return {base .. "s", base .. "os"} end end if gender == "f" then if base:find("s$") then return {base} end if base:find("sc$") or base:find("[sx]t$") then return {base .. "s", base .. "es"} end end if base:find("eig$") then return {base .. "s", rsub(base, "ig$", "jos")} end return {base .. "s"} end return export l28rwfli5x3mz2fv8ms9csfbnyxeqxy ветер 0 131022 2313219 2241575 2026-08-08T23:23:32Z Kuroco2k 84207 wikify 2313219 wikitext text/x-wiki =={{mk}}== ==={{etym}}=== {{proto|Slavic|větrъ}} < {{proto|Indo-European|h₂weh₁-}} ==={{pron}}=== *{{IPA|ˈvɛtɛr}} ==={{noun}}=== {{head|mk|noun|g=m|tr=veter}} [[Category:{{mk}}_気象]] #{{ふりがな|風|かぜ}} ===={{drv}}==== *{{l|mk|ветер во магла|sc=Cyrl}} ==={{seealso}}=== *{{l|mk|ветар|sc=Cyrl}} =={{ru}}== ==={{etym}}=== {{proto|Slavic|větrъ}} < {{proto|Indo-European|h₂weh₁-}} ==={{pron}}=== *{{IPA1|ˈvʲetʲɪr}} *発音 :[[File:Ru-ветер.ogg]] ==={{noun}}=== {{head|ru|noun|head=ве́тер|tr=véter|g=m|不活動体}} [[Category:{{ru}}_気象]] [[Category:{{ru}}_身体症状]] #{{ふりがな|風|かぜ}} # (''複数形'' - ве́тры)[[鼓腸]] {{ru-decl-noun|ве́тер|ве́тры, ветра́|ве́тра, ве́тру|ве́тров, ветро́в|ве́тру|ве́трам, ветра́м|ве́тер|ве́тры, ветра́|ве́тром|ве́трами, ветра́ми|о ве́тре|о ве́трах, о ветра́х|на ветру́|}} ===={{rel}}==== *{{l|ru|ветерок}} *{{l|ru|ветреный}} *{{l|ru|ветряк}} *{{l|ru|ветрянка}} *{{l|ru|звёздный ветер}} *{{l|ru|поветрие}} *{{l|ru|солнечный ветер}} 7irz0xhgiafa4fh4ymngs4i8pfbvc1z писать 0 147633 2313472 2312148 2026-08-09T11:58:40Z Kuroco2k 84207 2313472 wikitext text/x-wiki =={{L|ru}}== ==={{etym}}1=== {{etyl|cu|ru}} [[пьсати]] < {{etyl|sla-pro|ru}} {{recons|pьsati|lang=sla-pro}}, {{recons|pisati|lang=sla-pro}} < {{etyl|ine-pro|ru}} {{recons|peyk-|lang=ine-pro}} ===={{pron}}==== *{{IPA|lang=ru|pʲɪˈsatʲ}} :[[File:Ru-писать.ogg]] ===={{verb}}==== {{head|ru|verb|head=писа́ть|tr=pisátʹ|不完了体||完了体:|[[написать|написа́ть]]}} #{{おくりがな2|書|か|く|かく}}。 ====={{conjug}}===== {{ru-conj|impf|6c+p|писа́ть}} {{ru-conj|impf|6c+p|писа́ть|old=1}} ====={{rel}}===== {{top}} *{{l|ru|вписать}} *{{l|ru|писаться}} *{{l|ru|написаться}} *{{l|ru|вписаться}} *{{l|ru|выписать}} *{{l|ru|выписаться}} *{{l|ru|выписка}} *{{l|ru|дописать}} *{{l|ru|живопись}} *{{l|ru|записать}} *{{l|ru|записаться}} *{{l|ru|записка}} *{{l|ru|запись}} *{{l|ru|надписать}} *{{l|ru|описать}} *{{l|ru|описка}} *{{l|ru|отписать}} *{{l|ru|отписка}} *{{l|ru|переписать}} *{{l|ru|переписываться}} *{{l|ru|переписка}} *{{l|ru|перепись}} *{{l|ru|подписать}} *{{l|ru|подписаться}} *{{l|ru|подпись}} *{{l|ru|писанина}} *{{l|ru|писатель}} *{{l|ru|письмо}} *{{l|ru|предписать}} *{{l|ru|предписание}} *{{l|ru|приписать}} *{{l|ru|приписка}} *{{l|ru|прописать}} *{{l|ru|прописаться}} *{{l|ru|прописка}} *{{l|ru|пропись}} *{{l|ru|расписать}} *{{l|ru|расписаться}} *{{l|ru|расписка}} *{{l|ru|списать}} *{{l|ru|список}} {{bottom}} ==={{etym}}2=== {{etyl|de|ru}} ''[[pissen]]'' < {{etyl|fro|ru}} ''[[pissier]]'' < {{etyl|VL.|ru}} {{recons|pissio|pissiō|lang=la}} ===={{pron}}==== *{{IPA|lang=ru|ˈpʲisətʲ}} ===={{verb}}==== {{head|ru|verb|head=пи́сать|tr=písatʹ|不完了体||完了体:|[[пописать|попи́сать]]}} [[Category:{{ru}}_卑語]] [[Category:{{ru}}_蔑称]] #[[小便]]をする。 #(卑語)[[性的]]に[[欲情]]する。 ====={{conjug}}===== {{ru-conj|impf-intr|1a|пи́сать}} ====={{rel}}===== *{{l|ru|писька}} *{{l|ru|описать}} *{{l|ru|описаться}} bwl85ddcbgqc3h5tngcapqavc57abxg 突入 0 148332 2313121 1740999 2026-08-08T14:11:13Z M-30722 1202 2313121 wikitext text/x-wiki {{kana-DEFAULTSORT|とつにゅう}} =={{L|ja}}== {{ja-kanjitab|とつ|にゅう|yomi=o}} ==={{pron}}=== {{ja-pron|とつにゅう|acc=0}} {{ja-accent-common|region=京阪|h||とつにゅー}} ==={{noun}}=== {{ja-noun-suru|とつにゅう}} [[Category:{{ja}}_軍事]] # [[いきなり]]押し入ること。いきおいよく入ること。[[危険]]のある中へ[[注意]]や[[覚悟]]をもって進むこと。 #* 大気圏'''突入''' # [[重大]]な[[局面]]に入ること。 ==={{verb}}=== {{ja-verb-suru|とつにゅう}} # いきなり押し入る。いきおいよく入る。危険のある中へ注意や覚悟をもって進む。 #* 警官隊が'''突入'''した。 # 重大な局面に入る。(大袈裟に)[[時期]]に入る。 #* ストライキに'''突入'''した。 #* この番組もついに五年目に'''突入'''しました。 {{日本語サ変活用}} =={{L|ko}}== ==={{noun}}=== {{ko-head|noun|돌입|cat2=軍事}} #(日本語に同じ) =={{L|vi}}== ==={{verb}}=== {{vi-head|verb|đột|nhập}} #突入する。 0wltedif34jslbj02kj4c9p55mbl7cv 柏树 0 153597 2313360 1198597 2026-08-09T05:05:48Z Jiba1219 100610 2313360 wikitext text/x-wiki {{DEFAULTSORT:bai3shu4}} =={{L|zh}}== {{wikipedia|lang=zh}} ==={{pron}}=== {{cmn-pron|bǎishù|bóshù|z=n}} {{yue-pron|paak3 syu6|h=n}} {{nan-pron|qz:peh-chhiū}} {{hak-pron|h=bag shu˖}} {{wuu-pron|sh:7paq zy}} {{gan-pron|'bah6 xy5}} ==={{noun}}=== {{zhchars|t=柏樹}} #{{wikipedia-s|コノテガシワ}}。 ===={{syn}}==== *[[侧柏]]/[[側柏]] {{zh-cat|bai3shu4|名詞|木|hsk=丙}} {{yue-cat|paak3syu6|名詞|木}} {{nan-cat|peh4chhiu7|名詞|木}} {{wuu-cat|pah4zy3|名詞|木}} {{gan-cat|bah6xy5|名詞|木}} qy5hphto4og19xfydu1wunvgpmr8o0u 柏樹 0 153599 2313359 2212940 2026-08-09T05:04:22Z Jiba1219 100610 /* {{L|zh}} */ 2313359 wikitext text/x-wiki {{kana-DEFAULTSORT|はくじゅ}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[はくじゅ]]}} #{{タグ|ja|木}}{{ふりがな|榧|かや}}。 #{{タグ|ja|木}}{{ふりがな|児手柏|このてがしわ}}。 #{{タグ|ja|木}}[[柏槇]]。 =={{L|zh}}== {{wikipedia|lang=zh}} ==={{pron}}=== {{cmn-pron|bǎishù|bóshù}} {{yue-pron|paak3 syu6}} {{nan-pron|qz:peh-chhiū}} {{hak-pron|pak-su|h=bag shu˖}} {{wuu-pron|sh:7paq zy}} {{gan-pron|'bah6 xy5}} ==={{noun}}=== {{zhchars|s=柏树}} #[[コノテガシワ]]。 ===={{syn}}==== *{{zh-l|侧柏}} {{zh-cat|bai3shu4|名詞|木}} {{yue-cat|paak3syu6|名詞|木}} {{nan-cat|peh4chhiu7|名詞|木}} {{hak-cat|pak5su4|名詞|木}} {{wuu-cat|pah4zy3|名詞|木}} {{gan-cat|bah6xy5|名詞|木}} dy4nwivslfh7ntog6lc9orrz6vw2v04 chi 0 162607 2313198 2189527 2026-08-08T23:01:00Z Kuroco2k 84207 2313198 wikitext text/x-wiki {{also|Chi|chì|chí|chỉ|chị|Ch'i}} =={{symb}}== ==={{code}}=== '''{{PAGENAME}}''' #{{ISO 639|2B|zh}} =={{L|atc}}== ==={{noun}}=== {{head|atc|noun}} #{{ふりがな|火|ひ}}。 =={{L|amu}}== ==={{noun}}=== {{head|amu|noun}} #{{タグ|amu|家族}}[[祖父]]、[[おじいさん]]。 ==={{adverb}}=== {{head|amu|adverb}} #〜でない。 =={{L|it}}== ==={{pron}}=== {{it-pr|chi*<audio:It-chi.ogg>}} ==={{etym}}=== {{etyl|la|it}} {{m|la|quis}} < {{etyl|ine-pro|it}} {{m|ine-pro|*kʷís|*kʷís, *kʷos}} ==={{pronoun}}=== {{head|it|pronoun|不変化}} #{{タグ|it|疑問詞}}[[だれ|誰]]。 #[[だれでも|誰でも]]。 #:{{syn|it|chiunque}} ===={{trans}}==== {{trans-see|語義1|だれ}} {{trans-see|語義2|誰でも}} ===={{rel}}==== * {{l|it|che}}, {{l|it|cui}}, {{l|it|il quale}} ====={{drv}}===== ;{{pronoun}}: * [[chiunque]] ===参考文献=== * ''Dizionario Garzanti Inglese: Italiano Inglese/Inglese Italiano''. Milano: [[w:it:Garzanti_Editore|Garzanti Editore]], 1972 =={{L|cy}}== ==={{pron}}=== * {{IPA|lang=cy|χiː}} * {{rhymes|lang=cy|iː|s=1}} * {{homophones|lang=cy|’chi}} ==={{etym}}1=== {{etyl|wlm|cy}} {{m|wlm|chwi}} < {{etyl|cel-pro|cy}} {{m|cel-pro|*swīs}} < {{etyl|ine-pro|cy}} {{m|ine-pro|*wos}} ===={{alter}}==== * {{l|cy|chwi}} (文章語) ===={{pronoun}}==== {{head|cy|pronoun}} #[[あなたたち]]。 ==={{etym}}2=== ===={{noun}}==== {{head|cy|noun form|g=m}} #{{l|cy|ci}}の帯気音化。 {{cy-mut-auto|ci}} =={{L|en}}== {{wikipedia|Chi|lang=en}} ==={{etym}}1=== ===={{pron}}==== * {{IPA|lang=en|kaɪ}} ===={{noun}}==== {{en-noun|s|-}} # [[ギリシア文字]]の第[[二十二|22]]番目。[[Χ]]、[[χ]]。 ==={{etym}}2=== * {{etyl|zh|en}} {{m|zh|氣}}より。 ===={{alter}}==== * {{l|en|ch'i}}, {{l|en|qi}} ===={{pron}}==== * {{IPA|lang=en|t͡ʃiː}} ===={{noun}}==== {{en-noun|!}} #{{タグ|en|伝統中国医学}}[[鍼灸術]]などの[[東洋医学]]における「[[気]]」の概念。 ===参考文献=== * {{書誌・ランダムハウス2}} * 井上永幸・他 編『ウィズダム英和辞典 第2版』三省堂、2007年。ISBN 4-385-10569-3 =={{L|nl}}== ==={{etym}}=== {{bor|nl|grc|χεῖ}} ==={{pron}}=== * {{IPA|lang=nl|xi}} * {{音声|nl|Nl-chi.ogg|IPA=[χij]}} ==={{noun}}=== {{nl-noun|g=m|g2=f|chi's|chi'tje}} #(ギリシア文字)[[Χ]]、[[χ]]。 =={{L|grt}}== ==={{alter}}=== * {{l|grt|চি}} ==={{etym}}=== {{etyl|tbq-bdq-pro|grt}} {{m|tbq-bdg-pro|*tɯi¹}} < {{etyl|sit-pro|grt}} {{m|sit-pro|*s-turʔ}} ==={{noun}}=== {{head|grt|noun}} #{{ふりがな|水|みず}}。 ===={{drv}}==== {{col|lang=grt|chibatram|chibima|chibol|chidari|chidek|chiga|chigitok|chiganduri|chijima|chiklok|chimik|chipek|chirama|chiret|chiriking|chiring|chisam|chisikwilwilgip|chitingkilok|kramchi|mikchi}} =={{L|kw}}== ==={{alter}}=== * {{alter+|kw|chy||標準}} * {{alter+|kw|chei||RLC}} ==={{etym}}=== {{etyl|cel-bry-pro|kw}} {{m|cel-bry-pro|*tɨɣ}} < {{etyl|cel-pro|kw}} {{m|cel-pro|*tegos}} < {{etyl|ine-pro|kw}} {{m|ine-pro|*(s)teg-}} ==={{pron}}=== * {{IPA|lang=kw|[tʃiː]|a=RMC}} ==={{noun}}=== {{kw-noun|m|r}} #{{タグ|kw|建物}}{{ふりがな|家|いえ}}。 ===={{drv}}==== {{col4|lang=kw|kigti|popti|asklotti|gwerthji|chanjya chi|Chi an Arydhi|chi dolli|chi golyow|chi gweder|chi gwedhen|chi gwynn|chi tiek|chi unnik|chi unnleur|chi-ladha|gwrys y'n chi|ordenor chi|abatti|Chi an Gemmynyon|batti|bosti|klavji|folji|bragji|pronterji|golowji|hwelji|arbrovji|leti|lenji|managhti|rannji|gwiskti|diwotti|gevelji|jynnji|skolji|koskti|ska'ti,skathti|leughti|yerji|manerji|Chiow an Senedh|chilader,chiladores|chiladrans|golghti|arghanti|pennti|bowji|dyji|greunji|gwaraji|gwariji|gwesti|gwithti|horji|kanatti|karrji|keunji|kleghti|koffiji|kolji|krowji|latti|lyverji|marghti|melinji|meneghiji|merji|porthorji|pusketti|souderji|spisti|sterji}} ==={{adverb}}=== {{head|kw|adverb}} #家で。 {{kw-mut}} =={{L|trp}}== ==={{numeral}}=== {{head|trp|numeral}} #[[十]]。 =={{L|sdc}}== ==={{etym}}=== {{etyl|la|sdc}} {{m|la|quia}}, {{m|la|quod}} ==={{pron}}=== * {{IPA|lang=sdc|ki}} ==={{conjunction}}=== {{head|sdc|conjunction}} #~こと。 #~[[よりも]]〜。 ===={{drv}}==== * {{l|sdc|daghì}} ===={{rel}}==== * {{l|sdc|che}} ==={{pronoun}}=== {{head|sdc|pronoun}} #{{タグ|sdc|関係詞}}~である人・もの。 ==={{adjective}}=== {{head|sdc|adjective}} #(詠嘆){{おくりがな2|何|なん|て|なんて}}。 =={{L|sc}}== ==={{etym}}=== {{etyl|la|sc}} {{m|la|quid}} < {{etyl|itc-pro|sc}} {{m|itc-pro|*kʷid}} < {{etyl|ine-pro|sc}} {{m|ine-pro|*kʷid}} ==={{pron}}=== * {{IPA|lang=sc|ki}} ==={{conjunction}}=== {{head|sc|conjunction}} #{{タグ|sc|Limba Sarda Comuna}}~こと。 ==={{pronoun}}=== {{head|sc|pronoun}} #{{タグ|sc|関係詞|Limba Sarda Comuna}}~である人・もの。 =={{L|es}}== ==={{etym}}=== {{m|es|sí}} ==={{pron}}=== {{es-pr}} ==={{particle}}=== {{head|es|particle}} #{{タグ|es|幼児語}}{{l|es|sí}}に同じ。 #: {{ant|es|ño}} =={{L|zom}}== ==={{etym}}1=== {{etyl|tbq-kuk-pro|zom}} {{m|tbq-kuk-pro|*tsii}} < {{etyl|sit-pro|zom}} {{m|sit-pro|*dzəy}} ===={{pron}}==== * {{IPA|lang=zom|ci˧}} ===={{noun}}==== {{head|zom|noun}} #{{タグ|zom|植物学}}{{ふりがな|種|たね}}。 ==={{etym}}2=== {{etyl|tbq-kuk-pro|zom}} {{m|tbq-kuk-pro|*tsii}} < {{etyl|sit-pro|zom}} {{m|sit-pro|*m-tsji}} ===={{pron}}==== * {{IPA|lang=zom|ci˧˩}} ===={{noun}}==== {{head|zom|noun}} #{{タグ|zom|調味料}}{{ふりがな|塩|しお}}。 =={{L|nrf}}== ==={{pron}}=== * {{音声|nrf|Jer-chi.ogg|a=Jersey}} ==={{adjective}}=== {{nrf-adj|f=chiéthe|mp=chièrs}} #{{l|nrf|chièr}}の異形。 =={{L|vi}}== ==={{pron}}=== {{vi-pron}} * {{音声|vi|LL-Q9199 (vie)-Penn Zero MSSJ-chi.wav|a=Hanoi}} ==={{etym}}1=== 漢字 [[支]]より ===={{noun}}==== {{head|vi|noun|kanji=支|sort=chi1 chi}} #{{タグ|vi|分類学|sort=chi1 chi}}[[属]]。 #: {{syn|vi|giống}} ====={{drv}}===== {{col3|lang=vi|chi bộ|chi cục|chi đoàn|chi đội|chi hội|chi nhánh|chi uỷ}} ===={{verb}}==== {{head|vi|verb|sort=chi1 chi}} #[[支出]]する。 ====={{drv}}===== {{col3|lang=vi|bội chi|chi dùng|chi phí|chi tiêu|chi trả|dự chi|tạm chi|thu chi}} ==={{etym}}2=== 漢字 [[肢]]より ===={{noun}}==== {{head|vi|noun|kanji=肢|sort=chi1 chi}} #{{タグ|vi|formal|解剖学|sort=chi1 chi}}{{ふりがな|手足|てあし}}、[[四肢]]。 ====={{drv}}===== {{col3|lang=vi|tứ chi|chi trước|chi sau}} ==={{etym}}3=== {{etyl|mkh-vie-pro|vi}} {{m|mkh-vie-pro|*ciː}} ===={{pronoun}}==== {{head|vi|pronoun|kanji=之|sort=chi1 chi}} #{{タグ|vi|中部ベトナム|literary|elsewhere}}{{ふりがな|何|なに}}。 #: {{syn|vi|gì}} ====={{drv}}===== {{col3|lang=vi|không có chi|hèn chi|chưa chi|chi mô|huống chi|phải chi|can chi|hề chi|phương chi|chi bằng}} ===={{adverb}}==== {{head|vi|adverb|kanji=之|sort=chi1 chi}} #{{タグ|vi|中部ベトナム|南ベトナム}}何のために。 =={{L|yol}}== ==={{etym}}=== {{etyl|enm|yol}} {{m|enm|chaye}} ==={{pron}}=== * {{IPA|lang=yol|t͡ʃai̯}} ==={{noun}}=== {{head|yol|noun}} #[[少量]]。 #: {{syn|yol|smaddereen}} =={{L|lld}}== ==={{etym}}=== {{etyl|la|lld}} {{m|la|quis}} < {{etyl|ine-pro|lld}} {{m|ine-pro|*kʷís}} ==={{pronoun}}=== {{head|lld|pronoun}} #{{タグ|lld|疑問詞}}{{ふりがな|誰|だれ}}。 #{{おくりがな2|誰|だれ|でも|だれでも}}。 =={{L|lmo}}== ==={{pronoun}}=== {{head|lmo|pronoun}} #{{タグ|lmo|疑問詞}}{{ふりがな|誰|だれ}}。 2k3qbgre57laa9fwhm46fsb6cg9sun5 córrer 0 174680 2313415 1652848 2026-08-09T09:33:07Z Kuroco2k 84207 2313415 wikitext text/x-wiki {{DEFAULTSORT:correr córrer}} =={{L|oc}}== ==={{etym}}=== {{etyl|pro|oc}} < {{etyl|la|oc}} ''[[currere]]'' ==={{verb}}=== {{oc-verb|córr|er}} #{{おくりがな2|走|はし|る|はしる}}。 ---- =={{L|ca}}== ==={{etym}}=== {{etyl|pro|ca}} < {{etyl|la|ca}} ''[[currere]]'' ==={{pron}}=== * {{rhymes|ore(ɾ)}} ==={{verb}}=== {{ca-verb|pres_1_sg=corro|past_part=corregut}} #{{おくりがな2|走|はし|る|はしる}}。 ==={{conjug}}==== [[témer]]のように活用するが、完了過去及び接続法過去では語幹''correg-'' 、現在第三人称単数形及び命令法第二人称では''-e'' が付く。 {{ca-conj}} ===={{rel}}==== * [[correguda]] {{f}} * [[correguera]] {{f}} * [[corrent]] ''形容詞'', {{m}} * [[correntia]] {{f}} * [[corrents]] ''副詞'' * [[recórrer]] ''動詞'' lfy9knwkq1obdtoznt59xfstvpqjaen 2313422 2313415 2026-08-09T09:42:07Z Kuroco2k 84207 /* {{conjug}}= */ 2313422 wikitext text/x-wiki {{DEFAULTSORT:correr córrer}} =={{L|oc}}== ==={{etym}}=== {{etyl|pro|oc}} < {{etyl|la|oc}} ''[[currere]]'' ==={{verb}}=== {{oc-verb|córr|er}} #{{おくりがな2|走|はし|る|はしる}}。 ---- =={{L|ca}}== ==={{etym}}=== {{etyl|pro|ca}} < {{etyl|la|ca}} ''[[currere]]'' ==={{pron}}=== * {{rhymes|ore(ɾ)}} ==={{verb}}=== {{ca-verb|pres_1_sg=corro|past_part=corregut}} #{{おくりがな2|走|はし|る|はしる}}。 ===={{conjug}}==== [[témer]]のように活用するが、完了過去及び接続法過去では語幹''correg-'' 、現在第三人称単数形及び命令法第二人称では''-e'' が付く。 {{ca-conjug}} ===={{rel}}==== * [[correguda]] {{f}} * [[correguera]] {{f}} * [[corrent]] ''形容詞'', {{m}} * [[correntia]] {{f}} * [[corrents]] ''副詞'' * [[recórrer]] ''動詞'' lho4b0xltsqrtz05viz7jwypbfd4ois 2313427 2313422 2026-08-09T09:48:51Z Kuroco2k 84207 2313427 wikitext text/x-wiki {{DEFAULTSORT:correr córrer}} =={{L|oc}}== ==={{etym}}=== {{etyl|pro|oc}} < {{etyl|la|oc}} ''[[currere]]'' ==={{verb}}=== {{oc-verb|córr|er}} #{{おくりがな2|走|はし|る|はしる}}。 ---- =={{L|ca}}== ==={{etym}}=== {{etyl|pro|ca}} < {{etyl|la|ca}} ''[[currere]]'' ==={{pron}}=== * {{rhymes|ore(ɾ)}} ==={{verb}}=== {{ca-verb|pres_1_sg=corro|past_part=corregut}} #{{おくりがな2|走|はし|る|はしる}}。 [[témer]]のように活用するが完了過去及び接続法過去では語幹''correg-'' 、現在第三人称単数形及び命令法第二人称では''-e'' が付く。 {{ca-conj-er2|corr|infinitive=córrer<!-- -->|past_part=corregut<!-- -->|pres_ind_2_sg=corres<!-- -->|pres_ind_3_sg=corre<!-- -->|pret_ind_stem=corregu<!-- -->|pres_sub_1_pl2=correguem<!-- -->|pres_sub_2_pl2=corregueu<!-- -->|impf_sub_stem=corregu<!-- -->}} ===={{rel}}==== * [[correguda]] {{f}} * [[correguera]] {{f}} * [[corrent]] ''形容詞'', {{m}} * [[correntia]] {{f}} * [[corrents]] ''副詞'' * [[recórrer]] ''動詞'' m7d7mgtx40y6iu0h935h6r9fp6efyx5 ѕвезда 0 175672 2313218 1540720 2026-08-08T23:23:32Z Kuroco2k 84207 wikify 2313218 wikitext text/x-wiki =={{mk}}== ==={{etym}}=== {{etyl|sla-pro|mk}} {{recons|gvězda|lang=sla-pro}} ==={{pron}}=== *{{IPA|ˈd͡zvɛzda}} ==={{noun}}=== {{head|mk|noun|cat2=天体|g=f|tr=dzvezda}} #{{ふりがな|星|ほし}}。[[恒星]]。 {{mk-decl-noun-f|ѕвезд}} ===={{drv}}==== *{{l|mk|ѕвезден}} *{{l|mk|ѕвездест}} b1649h3l938nqe3z4gi0ix8e0x7rr1k sov 0 189445 2313140 1547335 2026-08-08T22:38:12Z Kuroco2k 84207 2313140 wikitext text/x-wiki ==記号== ==={{code}}=== '''{{PAGENAME}}''' #{{ISO 639|3|sov}} ---- == {{nb}} == [[category: {{nb}} ]] === {{verb}} === [[category: {{nb}} {{verb}} 定形]] '''sov''' # [[sove]]の現在形。 # [[sove]]の命令形。 {{stub|他}} gslfy2jreneml57sze1q8kwebktonnv баба 0 196570 2313220 1388129 2026-08-08T23:23:31Z Kuroco2k 84207 wikify 2313220 wikitext text/x-wiki =={{av}}== ==={{alter}}=== *{{l|av|буба|sc=Cyrl}} ==={{noun}}=== {{head|av|noun}} # {{ふりがな|母|はは}}。 ===={{seealso}}==== *{{l|av|эбел|sc=Cyrl}} =={{uk}}== ==={{pron}}=== *音声 :[[File:uk-баба.ogg]] ==={{noun}}=== {{head|uk|noun|g=f|{{animate}}|属格 {{l|uk|ба́би|sc=Cyrl}}| 主格複数 {{l|uk|баби́|sc=Cyrl}}}} # [[祖母]]、[[おばあさん]]。 # 焼き菓子の一種、[[w:ババ (菓子)|ババ]]。 # [[魔女]]。 # [[あばずれ]](恋人又は妻)。 ===={{syn}}==== 語義2 *{{l|uk|бабка|sc=Cyrl}} ===={{decl}}==== {{uk-decl-noun|ба́ба|баби́|ба́би|баб, бабі́в|ба́бі|баба́м|ба́бу|баб, бабі́в|ба́бою|баба́ми|ба́бі|баба́х|ба́бо|баби́}} =={{cu}}== ==={{noun}}=== {{head|cu|noun|g=f}}(グラゴール文字: {{l|cu|ⰱⰰⰱⰰ}}) # [[祖母]]、[[おばあさん]]。 # [[産婆]]、[[助産婦]]。 # {{ふりがな|乳母|うば}}。 =={{orv}}== ==={{noun}}=== {{head|orv|noun|g=f}} # [[既婚]][[婦人]]。 # [[産婆]]、[[助産婦]]。 # [[予言者]]。 # {{context|lang=orv|複数形で}} [[女性]]。 ===={{desc}}==== *{{ru}}: {{l|ru|баба|ба́ба|sc=Cyrl}} *{{uk}}: {{l|uk|баба|ба́ба|sc=Cyrl}} =={{sh}}== ==={{pron}}=== *{{IPA|bâba|lang=sh}} ==={{noun}}=== {{sh-noun|g=f|head=ба̏ба|c|baba|bȁba}} # [[祖母]]、[[おばあさん]]。 # {{context|lang=sh|通常は|pejorative}} [[老婆]]、[[おばあさん]]。 # {{context|lang=sh|pejorative}} [[婦人]]。 ===={{decl}}==== {{sh-decl-noun|sc=Cyrl |ба̏ба|бабе |бабе|ба̑ба̄ |баби|бабама |бабу|бабе |бабо|бабе |баби|бабама |бабом|бабама }} ===={{syn}}==== 語義1 *{{l|sh|sc=Cyrl|ба́ка}}, {{l|sh|sc=Cyrl|нена}} =={{bg}}== ==={{pron}}=== *{{IPA|ˈbabə|lang=bg}} ==={{noun}}=== {{head|bg|noun|head=баба|sc=Cyrl|tr=bába|g=f}} # [[祖母]]、[[おばあさん]]。 # [[老婆]]、[[おばあさん]]。 # [[義母]] (妻の母)。 # [[産婆]]、[[助産婦]]。 # [[魔女]]。 # [[婦人]]、[[ご婦人]]。 # {{ふりがな|猿|さる}} ===={{decl}}==== {{bg-noun-f-a1|баб}} =={{mk}}== ==={{pron}}=== *{{IPA|ˈbaba|lang=mk}} ==={{noun}}=== {{head|mk|noun|g=f|複数形:{{l|mk|баби|sc=Cyrl}}}} # [[祖母]]、[[おばあさん]]。 # [[老婆]]、[[おばあさん]]。 # [[義母]] (妻の母)。 # [[産婆]]、[[助産婦]]。 <!-- ===={{decl}}==== {{mk-decl-noun-f|баб}} --> =={{ru}}== ==={{pron}}=== *{{IPA0|[ˈbabə]}} :[[File:ru-баба.ogg]] ==={{noun}}=== {{ru-noun|head=ба́ба|tr=bába|g=f}} # {{context|lang=ru|pejorative}} [[婦人]]、[[女性]]。 #* {{unicode|Все ба́бы — [[дура|ду́ры]]; все [[мужик|мужики́]] — [[сволочь|сво́лочи]]|''}} #*:女はみんなおろかで、男はみんなろくでなしだ。 # {{context|lang=ru|幼児語:{{l|ru|бабушка|sc=Cyrl}}の略}} [[おばあさん]]、[[おばあちゃん]]。 #* {{unicode|[[мама|Ма́ма]], [[а]] [[где]] '''ба́ба'''?}} #*:ママ、おばあちゃんはどこ? # {{context|lang=ru|informal|又は|archaic|{{l|ru|бабушка|sc=Cyrl}}の略}} [[老婆]]。 #* {{unicode|Жи́ли-бы́ли [[дед]] [[да]] '''ба́ба'''}} #*:昔々、おじいさんとおばあさんが住んでいました。 # {{context|lang=ru|colloquial|slang|pejorative}} [[ばばあ]]。 #* {{unicode|Кто [[э́та]] '''ба́ба'''?}} #*:あのばばあは誰だ。 # {{context|lang=ru|obsolete}} [[義母]]。 # (技術) くい打ちの落としづち。 # {{context|lang=ru|cooking}} 焼き菓子の一種、[[w:ババ (菓子)|ババ]]。 #* {{unicode|ро́мовая ба́ба}} #*:ラムケーキ ===={{decl}}==== {{ru-noun-table|ба́ба|a=ai}} ===={{rel}}==== *{{l|ru|ба́бушка|sc=Cyrl}}, {{l|ru|бабёнка|sc=Cyrl}} *{{l|ru|Ба́ба-Яга́|sc=Cyrl}}, {{l|ru|Бабий Яр|sc=Cyrl}} *{{l|ru|бабу́ся|sc=Cyrl}}, {{l|ru|ба́бка|sc=Cyrl}}, {{l|ru|ба́бник|sc=Cyrl}}, {{l|ru|бабство|sc=Cyrl}} *{{l|ru|ба́бий|sc=Cyrl}}, {{l|ru|бабский|sc=Cyrl}} *{{l|ru|сне́жная ба́ба|sc=Cyrl}} *{{l|ru|ка́менная ба́ба|sc=Cyrl}} casmc4d1p33wkzlexz1v2kdkdlty5b1 ほそぼそ 0 203449 2313087 1927771 2026-08-08T12:26:19Z うーむ 129171 /* 副詞 */ 2313087 wikitext text/x-wiki {{kana-DEFAULTSORT}} {{also|ぼそぼそ}} =={{ja}}== ==={{pron}}=== {{ja-pron|acc=3}} ==={{adverb}}=== {{head|ja|adverb}}【[[細細]]】<br> (「と」を伴うことがある。) #[[非常]]に[[ほそい|細い]]さま。 #*或薄ら寒い秋の日の暮、彼は一本の唐黍(からきび)に忽(たちまち)この画家を思ひ出した。丈の高い唐黍は荒あらしい葉をよろつたまま、盛り土の上には神経のやうに'''細ぼそ'''と根を露あらはしてゐた。(芥川龍之介『或阿呆の一生』「二十二 或画家」昭和2年) #[[かろうじて|辛うじて]][[つづく|続い]]ているさま。 s96krgn73ef3khk520xpdok6q3609j1 こうばん 0 209850 2313123 2218052 2026-08-08T14:38:59Z 鍼灸 112313 2313123 wikitext text/x-wiki {{kana-DEFAULTSORT}} {{also|こうはん|ごうはん|ごうばん}} =={{ja}}== ==={{kangokana}}=== {{ja-kangokana|h=y}} * 【[[交番]]】[[警察]][[組織]]で、[[市街地]]などに[[警察官]]が[[勤務]]する[[詰め所]]。 * 【[[降板]]】[[担当]]していた[[役割]]を[[やめる|辞める]]こと。 * 【[[香盤]]】1:[[香道]]に[[つかう|使われる]][[盤]]。2:[[劇場]]の[[座席]][[表]]。 020brkjqmsjv49ehh924eukro4424cc くとう 0 210986 2313277 1880607 2026-08-09T00:17:54Z 鍼灸 112313 2313277 wikitext text/x-wiki {{also|くどう|ぐとう|ぐどう}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana|h=y}} *【[[苦闘]]】[[くるしみ|苦しみ]]を[[こらえる|堪え]]ながら[[たたかう|戦う]]こと。 *【[[句読]]】①[[文章]]中の[[きれめ|切れ目]]。②[[漢文]]の[[よむ|読み]]方。[[素読]]。 *【[[句頭]]】①[[語句]]の[[冒頭]]。②[[雅楽]]で、[[うた|歌]]の冒頭を[[独唱]]する人。 *【[[口頭]]】[[文書]]に{{スル|対|し}}て、[[くち|口]]で[[いう|言う]]こと。 *【[[狗盗]]】[[こそどろ]]。 *【[[九島]]】九つの島。 *【[[九等]]】第九位。 *【[[九頭]]】(動物が)九匹。 cepabn0oksh1kc0zewm0getqncjovpc nog 0 215088 2313149 994303 2026-08-08T22:38:15Z Kuroco2k 84207 2313149 wikitext text/x-wiki ==記号== ==={{code}}=== '''{{PAGENAME}}''' #{{ISO 639|2&3|nog}} {{stub|他}} dvc2n09t8iaovwdg2a1wat7mlsibpd8 arz 0 215095 2313141 994325 2026-08-08T22:38:12Z Kuroco2k 84207 2313141 wikitext text/x-wiki ==記号== ==={{code}}=== '''{{PAGENAME}}''' #{{ISO 639|3|arz}} {{stub|他}} jr3wcxi1n2sp6txijfhnvw2fy11nhlx bla 0 215097 2313188 994338 2026-08-08T22:48:39Z Kuroco2k 84207 2313188 wikitext text/x-wiki ==記号== ==={{code}}=== '''{{PAGENAME}}''' #{{ISO 639|2&3|bla}} {{stub|他}} luxgjd7trx3ks378ajx54h98ozvfx8l bul 0 215099 2313142 994341 2026-08-08T22:38:13Z Kuroco2k 84207 2313142 wikitext text/x-wiki ==記号== ==={{code}}=== '''{{PAGENAME}}''' #{{ISO 639|2&3|bg}} {{stub|他}} a0uzvvnb3zqur4ar8bsqj968vqp0hsg caa 0 215100 2313171 994342 2026-08-08T22:48:34Z Kuroco2k 84207 2313171 wikitext text/x-wiki ==記号== ==={{code}}=== '''{{PAGENAME}}''' #{{ISO 639|3|caa}} {{stub|他}} jorua5hv9hmw5gocg7xdtinw52q3rez arn 0 215101 2313187 994324 2026-08-08T22:48:39Z Kuroco2k 84207 2313187 wikitext text/x-wiki ==記号== ==={{code}}=== '''{{PAGENAME}}''' #{{ISO 639|2&3|arn}} {{stub|他}} j5b4cu2gy4cahic7eonrqrxzvu2uy64 tib 0 215106 2313196 2203522 2026-08-08T23:01:00Z Kuroco2k 84207 2313196 wikitext text/x-wiki {{also|TiB}} ==記号== ==={{code}}=== '''{{PAGENAME}}''' #{{ISO 639|2B|bo}} ===={{rel}}==== *[[bod]] =={{L|uz}}== {{uz-variant|c=тиб}} ==={{etym}}=== {{etyl|chg|uz}} {{m|chg|طب}} < {{etyl|ar|uz}} {{m|ar|طِبّ}} ==={{noun}}=== {{uz-noun}} #{{タグ|uz|医学|label=no|sort=*}}[[医学]]。 ===={{rel}}==== * {{l|uz|tibbiy}} =={{L|kmr}}== ==={{etym}}=== {{etyl|ar|kmr}} {{m|ar|طِبّ}} ==={{noun}}=== {{kmr-noun|f}} #{{タグ|kmr|医学|label=no|sort=*}}[[医学]]。 {{kmr-decl-noun|f}} ===={{rel}}==== * {{l|kmr|tebîb}} * {{l|kmr|tibî}} =={{L|zpw}}== ==={{numeral}}=== {{head|zpw|numeral}} #[[一]]。 =={{L|ztl}}== ==={{numeral}}=== {{head|ztl|numeral}} #[[一]]。 =={{L|jbo}}== ===Rafsi=== {{jbo-rafsi}} #{{l|jbo|tinbe}}のrafsi。 {{stub|他}} mubx2sz6h4mbnlr56rnebqwa8tg6xt1 cac 0 215107 2313144 994343 2026-08-08T22:38:14Z Kuroco2k 84207 2313144 wikitext text/x-wiki ==記号== ==={{code}}=== '''{{PAGENAME}}''' #{{ISO 639|3|cac}} {{stub|他}} qkvz0b24f6b91g8z4bq3og2cvxljepa cdo 0 215108 2313175 1359826 2026-08-08T22:48:35Z Kuroco2k 84207 2313175 wikitext text/x-wiki {{also|CDO}} ==記号== ==={{code}}=== '''{{PAGENAME}}''' #{{ISO 639|3|cdo}} qliop7oqxx82gcu6xp4rud7c7d3av9r ceb 0 215110 2313161 994345 2026-08-08T22:48:30Z Kuroco2k 84207 2313161 wikitext text/x-wiki ==記号== ==={{code}}=== '''{{PAGENAME}}''' #{{ISO 639|2&3|ceb}} {{stub|他}} mm1v1ozr0c8a3sw0uq78h8yza089so9 ces 0 215111 2313152 994346 2026-08-08T22:38:16Z Kuroco2k 84207 2313152 wikitext text/x-wiki ==記号== ==={{code}}=== '''{{PAGENAME}}''' #{{ISO 639|2&3|cs}} ===={{rel}}==== *[[cze]] {{stub|他}} g71u60jalctudicnineighd886j2w5p cze 0 215112 2313195 2170937 2026-08-08T23:01:00Z Kuroco2k 84207 2313195 wikitext text/x-wiki {{also|CZE}} ==記号== ==={{code}}=== '''{{PAGENAME}}''' #{{ISO 639|2B|cs}} ===={{rel}}==== *[[ces]] eea4rh6k5e040sf74rioam59j0pdwga chm 0 215114 2313177 994348 2026-08-08T22:48:35Z Kuroco2k 84207 2313177 wikitext text/x-wiki ==記号== ==={{code}}=== '''{{PAGENAME}}''' #{{ISO 639|2&3|chm}} {{stub|他}} cj9rd2hf5174fbc3dr5m23r33ul62lt chr 0 215115 2313183 994436 2026-08-08T22:48:37Z Kuroco2k 84207 2313183 wikitext text/x-wiki ==記号== ==={{code}}=== '''{{PAGENAME}}''' #{{ISO 639|2&3|chr}} {{stub|他}} nsrh2l2j4o0k7srceernygls52qyf1v cmn 0 215117 2313189 994351 2026-08-08T22:48:39Z Kuroco2k 84207 2313189 wikitext text/x-wiki ==記号== ==={{code}}=== '''{{PAGENAME}}''' #{{ISO 639|3|cmn}} jfk9o9xovn6lf08k2753y6s11h5430i crh 0 215120 2313163 994355 2026-08-08T22:48:31Z Kuroco2k 84207 2313163 wikitext text/x-wiki ==記号== ==={{code}}=== '''{{PAGENAME}}''' #{{ISO 639|2&3|crh}} as69orp72hp05cvux0ifr02v0mrikbz csb 0 215121 2313180 994356 2026-08-08T22:48:36Z Kuroco2k 84207 2313180 wikitext text/x-wiki ==記号== ==={{code}}=== '''{{PAGENAME}}''' #{{ISO 639|2&3|csb}} i3amsg48c01kjo2qejm7mvcpvua0vzy wel 0 215123 2313194 2087530 2026-08-08T23:00:59Z Kuroco2k 84207 2313194 wikitext text/x-wiki ==記号== ==={{code}}=== '''{{PAGENAME}}''' #{{ISO 639|2B|cy}} {{stub|他}} tcn6mycgifx1hoi4s4nqsog8t7n1djv ger 0 215128 2313193 2203504 2026-08-08T23:00:59Z Kuroco2k 84207 2313193 wikitext text/x-wiki ==記号== ==={{code}}=== '''{{PAGENAME}}''' #{{ISO 639|2B|de}} ===={{rel}}==== *[[deu]] =={{L|jbo}}== ===Rafsi=== {{jbo-rafsi}} #{{l|jbo|gerku}}のrafsi。 {{stub|他}} 7g4343j5a5zz9db13o3gsjtfa9h3s00 dlm 0 215131 2313168 994437 2026-08-08T22:48:33Z Kuroco2k 84207 2313168 wikitext text/x-wiki ==記号== ==={{code}}=== '''{{PAGENAME}}''' #{{ISO 639|3|dlm}} {{stub|他}} jyv2fbw20qhomjgkksf0y558zvfigju dsb 0 215132 2313137 994438 2026-08-08T22:38:11Z Kuroco2k 84207 2313137 wikitext text/x-wiki ==記号== ==={{code}}=== '''{{PAGENAME}}''' #{{ISO 639|2&3|dsb}} ewtsvy950ztwgxsx4e1ckgldafuoodp fas 0 215137 2313148 994444 2026-08-08T22:38:15Z Kuroco2k 84207 2313148 wikitext text/x-wiki ==記号== ==={{code}}=== '''{{PAGENAME}}''' #{{ISO 639|2T&3|fa}} {{stub|他}} 57o7qqx0h8h1mnelfguufcynfyc2atb fro 0 215141 2313146 1988088 2026-08-08T22:38:14Z Kuroco2k 84207 2313146 wikitext text/x-wiki ==記号== ==={{code}}=== '''{{PAGENAME}}''' #{{ISO 639|2&3|fro}} {{stub|他}} =={{en}}== ==={{preposition}}=== #「[[from]]」に同じ。 #*In watching its pendulum swing to and fro, many hours had he spent while a boy. #**彼(老翁)は子どものころ、何時間もずっとそれ(大時計)の振り子があっちに振れたり、こっちに振れたりするのを見ていたものだ。(Henry Clay Work, 1876 "My Grandfather's Clock") mfzouhi2ke4i4652yjl1bvtj9yvtjrr frr 0 215142 2313139 994450 2026-08-08T22:38:12Z Kuroco2k 84207 2313139 wikitext text/x-wiki ==記号== ==={{code}}=== '''{{PAGENAME}}''' #{{ISO 639|2&3|frr}} qa3p3oreqy6wpgip9xxec2jlpt6um04 stq 0 215144 2313136 994452 2026-08-08T22:38:11Z Kuroco2k 84207 2313136 wikitext text/x-wiki ==記号== ==={{code}}=== '''{{PAGENAME}}''' #{{ISO 639|3|stq}} 6iqifk4bjwos1qwoimwk6649fwf62v6 glg 0 215145 2313178 994458 2026-08-08T22:48:36Z Kuroco2k 84207 2313178 wikitext text/x-wiki ==記号== ==={{code}}=== '''{{PAGENAME}}''' #{{ISO 639|2&3|gl}} {{stub|他}} gwlj6cnw7r8uew22o4yw0yn5xr5oxgc gil 0 215146 2313143 994459 2026-08-08T22:38:13Z Kuroco2k 84207 2313143 wikitext text/x-wiki ==記号== ==={{code}}=== '''{{PAGENAME}}''' #{{ISO 639|2&3|gil}} {{stub|他}} 3rx5bxylwr0fbf2eaasxda40q98aek6 grc 0 215149 2313162 994463 2026-08-08T22:48:30Z Kuroco2k 84207 2313162 wikitext text/x-wiki ==記号== ==={{code}}=== '''{{PAGENAME}}''' #{{ISO 639|2&3|grc}} 9qsgkc2p8trdbcmr81qbef1oqexzboe heb 0 215150 2313147 994468 2026-08-08T22:38:15Z Kuroco2k 84207 2313147 wikitext text/x-wiki ==記号== ==={{code}}=== '''{{PAGENAME}}''' #{{ISO 639|2&3|he}} {{stub|他}} a7wk6aum7x6o1imsqni3q2ep37tibsp huq 0 215153 2313182 994472 2026-08-08T22:48:37Z Kuroco2k 84207 2313182 wikitext text/x-wiki ==記号== ==={{code}}=== '''{{PAGENAME}}''' #{{ISO 639|3|huq}} {{stub|他}} mpexiedf474u2xffqjz6kjrk19jn59i ind 0 215154 2313145 994475 2026-08-08T22:38:14Z Kuroco2k 84207 2313145 wikitext text/x-wiki ==記号== ==={{code}}=== '''{{PAGENAME}}''' #{{ISO 639|2&3|id}} {{stub|他}} 5n80144mz57v0jm65anhxxcn132lj3d ita 0 215155 2313154 1881975 2026-08-08T22:38:17Z Kuroco2k 84207 2313154 wikitext text/x-wiki {{also|ĩta}} ==記号== ==={{code}}=== '''{{PAGENAME}}''' #{{ISO 639|2&3|it}} {{stub|他}} ---- =={{L|ain}}== {{ain-kana}} ==={{pron}}=== * {{ain-IPA}} ==={{etym}}=== {{bor|ain|ja|いた|板}} ==={{noun}}=== {{head|ain|noun}} # {{ふりがな|板|いた}}。{{ふりがな|床板|とこいた}}。{{ふりがな|盆|ぼん}}。{{ふりがな|台|だい}}。 #* {{quote|ain|ポロ ス アニ スパ ワ '''イタ''' チキㇱマ イサㇺ カネ ノ イコイプンパ。|大きな鍋で煮て、掴む場所がないほど'''お盆'''にのせ、私達に差し出した。|tr=[[poro]] [[su]] [[ani]] [[supa]] [[wa]] '''[[ita]]''' [[ci=]][[kisma]] [[isam]] [[kane]] [[no]] [[i=]][[koypunpa]].|ref=<ref>{{citation|author=平賀さだも|title=10-1 ウエペケㇾ「オタサムン カムイ ヘカッタㇻ」(オタサㇺのカムイの子ども達)|publisher=文化庁 アイヌ語の保存・継承に必要なアーカイブ化に関する調査研究事業|journal=第2年次調査研究報告書2/3|year=1969|publication-date=2015年3月}}</ref>}} #* {{quote|ain|オラ フイペ オㇿ エムㇱ クㇱパレパ ワ '''イタ''' チキㇱマ イサㇺ カネ|それから肝臓に刃物を通して、'''お盆'''に持つところが無いほど山盛りにして|tr=[[ora]] [[huype]] [[or]] [[emus]] [[kusparepa]] [[wa]] '''[[ita]]''' [[cikisma]] [[isam]] [[kane]]|ref=<ref>{{citation|author=貝澤とぅるしの|title=6-1 ウエペケㇾ「ヌサコㇿカムイ イカオピューキ」(祭壇を司る神さまが私 を助けた)|publisher=文化庁 アイヌ語の保存・継承に必要なアーカイブ化に関する調査研究事業|journal=第2年次調査研究報告書1/3|year=1969|publication-date=2015年3月}}</ref>}} ===出典=== {{Reflist}} ---- =={{L|ki}}== ===語源1=== ===={{pron|ki}}==== * {{IPA|ita}} ====動詞==== {{head|ki|verb}}(不定形: {{l|ki|gũita}}) # [[しめる|絞める]]<ref name="lea1940">{{R:ki:Armstrong|p=361}}</ref><ref name="tgb">{{R:Benson1964|entry=ita|p=191}}</ref>。 =====派生語===== 名詞: * {{l|ki|mũita-thũa|g=c3}} ===語源2=== ===={{pron|ki}}==== * {{IPA|ita}} ====動詞==== {{head|ki|verb}}(不定形: {{l|ki|gũita}}) # [[そそぐ|注ぐ]]<ref name="lea1940" />。 # [[もれる|漏れる]]<ref name="tgb" />。[[こぼれる]]。 =====派生語===== 動詞: * {{l|ki|itanga|gũitanga}} 名詞: * {{l|ki|mũiti|g=c1}} 成句: * {{l|ki|kĩiniĩ gĩtaita}} ===語源3=== ===={{pron|ki}}==== * {{IPA|ìtǎ}} : {{ki-tonal classes|-|2|Benson=no}} *〔キアンブ方言〕 **〔リムル方言〕{{IPA|ìtǎꜜ}} :: {{ki-アクセントの型|昇型}} ====名詞==== {{ki-noun|10}} あるいは {{ki-noun|5}} # [[侵略]]あるいは[[略奪]][[行為]]のために[[組織]]された[[軍団]]<ref name="tgb" />。 =====参照===== * {{l|ki|mbirarũ}}, {{l|ki|mbũtũ}} ===脚注=== <references /> rm8emhdrf1jj218wiy0lxnfjxa2wtw3 kjh 0 215162 2313184 994488 2026-08-08T22:48:38Z Kuroco2k 84207 2313184 wikitext text/x-wiki ==記号== ==={{code}}=== '''{{PAGENAME}}''' #{{ISO 639|3|kjh}} e9651a806i2cjk8edbs3iqok7bredjw koi 0 215163 2313150 994490 2026-08-08T22:38:15Z Kuroco2k 84207 2313150 wikitext text/x-wiki ==記号== ==={{code}}=== '''{{PAGENAME}}''' #{{ISO 639|3|koi}} {{stub|他}} rktx7is5nzx7sd815d2hggwsx4ncld6 kpv 0 215164 2313185 994492 2026-08-08T22:48:38Z Kuroco2k 84207 2313185 wikitext text/x-wiki ==記号== ==={{code}}=== '''{{PAGENAME}}''' #{{ISO 639|3|kpv}} ht2vcehrfhqkd30olwlxs272issirn4 xmf 0 215170 2313176 994505 2026-08-08T22:48:35Z Kuroco2k 84207 2313176 wikitext text/x-wiki ==記号== ==={{code}}=== '''{{PAGENAME}}''' #{{ISO 639|3|xmf}} 97r0tc2ymlv61ywpgm5m9tuiy0umenf wym 0 215171 2313165 994508 2026-08-08T22:48:32Z Kuroco2k 84207 2313165 wikitext text/x-wiki ==記号== ==={{code}}=== '''{{PAGENAME}}''' #{{ISO 639|3|wym}} s90z3gr0i8yf9i927c38hgf0fjjt9ih ukr 0 215172 2313169 994510 2026-08-08T22:48:33Z Kuroco2k 84207 2313169 wikitext text/x-wiki ==記号== ==={{code}}=== '''{{PAGENAME}}''' #{{ISO 639|2&3|uk}} i4ujny5wassjlibh3qi27ckz8gnmjza uzn 0 215180 2313190 994522 2026-08-08T22:48:40Z Kuroco2k 84207 2313190 wikitext text/x-wiki ==記号== ==={{code}}=== '''{{PAGENAME}}''' #{{ISO 639|3|uzn}} czd9cggrve3kec9og7i3buu2wmgpd5i uzs 0 215181 2313186 994523 2026-08-08T22:48:39Z Kuroco2k 84207 2313186 wikitext text/x-wiki ==記号== ==={{code}}=== '''{{PAGENAME}}''' #{{ISO 639|3|uzs}} anpe1y9pb1d9ympadyq610dfyi96xo0 udm 0 215184 2313166 994528 2026-08-08T22:48:32Z Kuroco2k 84207 2313166 wikitext text/x-wiki ==記号== ==={{code}}=== '''{{PAGENAME}}''' #{{ISO 639|2&3|udm}} su9f0cec3j1ny55bssxvu8mical5bzs tyv 0 215189 2313181 994534 2026-08-08T22:48:37Z Kuroco2k 84207 2313181 wikitext text/x-wiki ==記号== ==={{code}}=== '''{{PAGENAME}}''' #{{ISO 639|2&3|tyv}} {{stub|他}} jtu19vv21ss3eww0oqj51buq6hz006m tvl 0 215190 2313164 994535 2026-08-08T22:48:31Z Kuroco2k 84207 2313164 wikitext text/x-wiki ==記号== ==={{code}}=== '''{{PAGENAME}}''' #{{ISO 639|2&3|tvl}} 5n3o28axmbh6kb7zls8530934dfykpv trv 0 215193 2313179 994539 2026-08-08T22:48:36Z Kuroco2k 84207 2313179 wikitext text/x-wiki ==記号== ==={{code}}=== '''{{PAGENAME}}''' #{{ISO 639|3|trv}} kv9827yox6ovno7i39jy95oa01ut3vq tpi 0 215216 2313138 994563 2026-08-08T22:38:12Z Kuroco2k 84207 2313138 wikitext text/x-wiki ==記号== ==={{code}}=== '''{{PAGENAME}}''' #{{ISO 639|2&3|tpi}} {{stub|他}} nhzo9xvg8pzpwfz0obfpk3uvzvuwtim toj 0 215282 2313174 994682 2026-08-08T22:48:34Z Kuroco2k 84207 2313174 wikitext text/x-wiki ==記号== ==={{code}}=== '''{{PAGENAME}}''' #{{ISO 639|3|toj}} {{stub|他}} 2v3j4fdjhj7jexk1ywaehtqm8jbfdhn mdf 0 215292 2313167 994700 2026-08-08T22:48:32Z Kuroco2k 84207 2313167 wikitext text/x-wiki ==記号== ==={{code}}=== '''{{PAGENAME}}''' #{{ISO 639|2&3|mdf}} {{stub|他}} 05nv05xj8gnjfyl1ssk36xgbi2ezb07 slk 0 215296 2313173 994714 2026-08-08T22:48:34Z Kuroco2k 84207 2313173 wikitext text/x-wiki ==記号== ==={{code}}=== '''{{PAGENAME}}''' #{{ISO 639|2T&3|sk}} ===={{rel}}==== *[[slo]] j3v0m7p9affwk97lkhfmy3hqe6bl1kk slo 0 215297 2313172 2170902 2026-08-08T22:48:34Z Kuroco2k 84207 2313172 wikitext text/x-wiki ==記号== ==={{code}}=== '''{{PAGENAME}}''' #{{ISO 639|2B|sk}} =={{L|jbo}}== ===Rafsi=== {{jbo-rafsi}} #{{l|jbo|solji}}のrafsi。 {{stub|他}} 8alv2raprqn6gr79b1o9ev4wskxiov5 ラバ 0 237683 2313224 1757399 2026-08-08T23:25:59Z Kuroco2k 84207 2313224 wikitext text/x-wiki {{also|らば|ラバー}}{{DEFAULTSORT:らは らば}} =={{ja}}== [[Category:{{ja}}]] ==={{noun}}:動物=== {{wikipedia}} [[Category:{{ja}}_{{noun}}]] [[Category:{{ja}}_ウマ科]] '''ラバ'''【[[騾馬]]】 #(学術的表記){{ふりがな|雄|おす}}の[[ロバ]]と{{ふりがな|雌馬|めうま}}の交雑種。[[ミュール]]。 ===={{rel}}==== *[[ケッテイ]] ===={{trans}}==== {{trans-top}} *[[{{am}}]]<!--* Amharic-->: {{t|am|በቅሎ}} *[[{{an}}]]<!--* Aragonese-->: {{t|an|mula|f}} *[[{{ar}}]]<!--* Arabic-->: {{t|ar|بَغَل|m}} **[[{{arz}}]]<!--*Egyptian Arabic-->: {{t|arz|بغل|m|tr=baḡl}} (集合名詞), {{t|arz|بغلة|f|tr=baḡla}} (単数形) *[[{{ast}}]]<!--* Asturian-->: {{t+|ast|mulu|m}}, {{t+|ast|mula|f}}, {{t+|ast|burreñu|m}}, {{t+|ast|burreña|f}} *[[{{az}}]]<!--* Azerbaijani-->: {{t+|az|qatır}} *[[{{be}}]]<!--* Belarusian-->: {{t|be|мул|m|sc=Cyrl}} *[[{{bg}}]]<!--* Bulgarian-->: {{t+|bg|муле|n|sc=Cyrl}} *[[{{bn}}]]<!--* Bengali-->: {{t+|bn|খচ্চর}} *[[{{bo}}]]<!--* Tibetan-->: {{t|bo|དྲེལ}} *[[{{ca}}]]<!--* Catalan-->: {{t+|ca|mul|m}}, {{t+|ca|mula|f}}, {{t+|ca|matxo|m}} *[[{{chr}}]]<!--* Cherokee-->: {{t|chr|ᏗᎦᎵᏰᏅᎯᏓ|sc=Cher}} *[[{{cop}}]]<!--* Coptic-->: {{t|cop|ⲧⲉⲙⲑⲁⲙ|m}}, {{t|cop|ⲙⲁⲥⲫⲟⲣⲕ|m}} *[[{{cs}}]]<!--* Czech-->: {{t+|cs|mula|f}} *[[{{cy}}]]<!--* Welsh-->: {{t+|cy|mul|m}} *[[{{da}}]]<!--* Danish-->: {{t|da|muldyr|n}} *[[{{de}}]]<!--* German-->: {{t+|de|Maultier|n}}, {{t+|de|Muli|n}}(ドイツ南部、オーストリア) *[[{{dsb}}]]<!--*Lower Sorbian-->: {{t|dsb|mul|m}}, {{t|dsb|mula|f}} *[[{{el}}]]<!--* Greek-->: {{t+|el|μουλάρι|n|sc=Grek}}, {{t+|el|ημίονος|m|sc=Grek}} *:[[{{grc}}]]: {{t|grc|ἡμίονος|m|sc=Grek}}, {{t|grc|ὀρεύς|m|sc=Grek}} *[[{{en}}]]: {{t+|en|mule}} *:[[{{ang}}]]<!--* Old English-->: {{t|ang|mūl|m}} *:[[{{enm}}]]<!--* Middle English-->: {{t|enm|mule}} *[[{{eo}}]]<!--* Esperanto-->: {{t+|eo|mulo}} *[[{{es}}]]<!--* Spanish-->: {{t+|es|mulo|m}}, {{t+|es|mula|f}} *[[{{et}}]]<!--* Estonian-->: {{t+|et|muul}} *[[{{eu}}]]<!--* Basque-->: {{t|eu|mando}} *[[{{fa}}]]<!--* Persian-->: {{t+|fa|قاطر|tr=qâter}} *[[{{fi}}]]<!--* Finnish-->: {{t+|fi|muuli}} *[[{{fr}}]]<!--* French-->: {{t+|fr|mule|f}}, {{t+|fr|mulet|m}} *[[{{ga}}]]<!--* Irish-->: {{t|ga|miúil|f}} *[[{{gl}}]]<!--* Galician-->: {{t|gl|mulo|m}}, {{t|gl|mula|f}}, {{t+|gl|macho|m}} *[[{{he}}]]<!--* Hebrew-->: {{t+|he|פֶּרֶד|m|tr=péred}}, {{t+|he|פִּרְדָּה|f|tr=pirdá}} *[[{{hi}}]]<!--* Hindi-->: {{t+|hi|खच्चर|m}} *[[{{hu}}]]<!--* Hungarian-->: {{t+|hu|öszvér}} *[[{{hy}}]]<!--* Armenian-->: {{t+|hy|ջորի}} *[[{{id}}]]<!--* Indonesian-->: {{t+|id|bagal}} *[[{{io}}]]<!--* Ido-->: {{t+|io|mulo}} *[[{{is}}]]<!--* Icelandic-->: {{t|is|múldýr|n}}, {{t+|is|múlasni|m}} *[[{{it}}]]<!--* Italian-->: {{t+|it|mulo|m}} *[[{{ka}}]]<!--* Georgian-->: {{t|ka|ჯორი}} *[[{{kk}}]]<!--* Kazakh-->: {{t|kk|қашыр|sc=Cyrl}} *[[{{km}}]]<!--* Khmer-->: {{t+|km|លា}} *[[{{ko}}]]<!--* Korean-->: {{t+|ko|노새}} *[[{{ku}}]]<!--* Kurdish-->: *:{{ckb}}:{{t+|ckb|ھێستر}} *:{{kmr}}:{{t+|kmr|hêstir|m|f}}, {{t+|kmr|qantir|m|f}} *[[{{ky}}]]<!--* Kyrgyz-->: {{t|ky|качыр|sc=Cyrl}} *[[{{la}}]]<!--* Latin-->: {{t+|la|mulus|alt=mūlus|m}} *[[{{lo}}]]<!--* Lao-->: {{t|lo|ລໍ}}, {{t|lo|ລວາ}} *[[{{lt}}]]<!--* Lithuanian-->: {{t|lt|mulas|m}} *[[{{lv}}]]<!--* Latvian-->: {{t|lv|mūlis|m}} *[[{{mk}}]]<!--* Macedonian-->: {{t|mk|му́ле|n|sc=Cyrl}} *[[{{mi}}]]<!--* Maori-->: {{t|mi|miūru}} *[[{{mn}}]]<!--* Mongolian-->: {{t+|mn|луус|sc=Cyrl}} *[[{{mnc}}]]<!--* Manchu-->: {{t|mnc|ᠯᠣᡵᡳᠨ}}, {{t|mnc|ᠯᠣᠰᠠ}} *[[{{ms}}]]<!--* Malay-->: {{t|ms|baghal}} *[[{{my}}]]<!--* Burmese-->: {{t+|my|လား}} *[[{{nl}}]]<!--* Dutch-->: {{t+|nl|muildier|n}} *[[{{no}}]]<!--* Norwegian-->: *:[[{{nb}}]]<!--*Bokmål-->: {{t|nb|muldyr|n}} *:[[{{nn}}]]<!--*Nynorsk-->: {{t|nn|muldyr|n}} *[[{{nv}}]]<!--* Navajo-->: {{t|nv|dzaanééz}} *[[{{oc}}]]<!--* Occitan-->: {{t+|oc|mul|m}} *[[{{oj}}]]<!--* Ojibwe-->: {{t|oj|memāngišens|sc=Cans}} *[[{{om}}]]<!--* Oromo-->: {{t|om|gaangee}} *[[{{ood}}]]<!--* O'odham-->: {{t|ood|muhla}} *[[{{or}}]]<!--* Oriya-->: {{t+|or|ଖଚ୍ଚର}} *[[{{pa}}]]<!--* Punjabi-->: {{t|pa|ਖੱਚਰ}} *[[{{pl}}]]<!--* Polish-->: {{t+|pl|muł|m}} *[[{{ps}}]]<!--* Pashto-->: {{t|ps|کچره|f|tr=kačǝ́ra}} *[[{{pt}}]]<!--* Portuguese-->: {{t+|pt|mulo|m}}, {{t+|pt|mula|f}} *[[{{ro}}]]<!--* Romanian-->: {{t+|ro|catâr|m}}, {{t+|ro|mul|m}} *[[{{ru}}]]<!--* Russian-->: {{t+|ru|мул|m|sc=Cyrl}} *[[{{scn}}]]<!--* Sicilian-->: {{t+|scn|mulu|?}} *[[{{sei}}]]<!--* Seri-->: {{t|sei|moːrɑ}}, {{t|sei|ʔɑmóːrɑ}} *[[{{sh}}]]<!--* Serbo-Croatian-->:{{t|sh|мазга|sc=Cyrl}}/{{t+|sh|mazga|f}}, {{t|sh|мула|sc=Cyrl}}/{{t+|sh|mula|f}}, *[[{{shn}}]]<!--* Shan-->: {{t+|shn|လႃး}} *[[{{sk}}]]<!--* Slovak-->: {{t|sk|mul|m}} *[[{{sl}}]]<!--* Slovene-->: {{t+|sl|mula|f}} *[[{{sq}}]]<!--* Albanian-->: {{t+|sq|mushkë|f}} *[[{{sv}}]]<!--* Swedish-->: {{t+|sv|mula|c}}, {{t+|sv|mulåsna|c}} *[[{{sva}}]]<!--* Svan-->: {{t|sva|ჰუ̈ლ}} *[[{{sw}}]]<!--* Swahili-->: {{t+|sw|nyumbu}}, {{t|sw|baghala}} *[[{{te}}]]<!--* Telugu-->: {{t+|te|కంచరగాడిద}} *[[{{tg}}]]<!--* Tajik-->: {{t|tg|хачир|sc=Cyrl}} *[[{{th}}]]<!--* Thai-->: {{t+|th|ล่อ}}, {{t+|th|ฬ่อ}} *[[{{tk}}]]<!--* Turkmen-->: {{t|tk|gatyr}} *[[{{tl}}]]<!--* Tagalog-->: {{t|tl|mula}} *[[{{tr}}]]<!--* Turkish-->: {{t+|tr|katır}} *[[{{tt}}]]<!--* Tatar-->: {{t+|tt|качыр|sc=Cyrl}} *[[{{twf}}]]<!--* Taos-->: {{t|twf|mùlo’óna}} *[[{{ug}}]]<!--* Uyghur-->: {{t|ug|قېچىر}} *[[{{uk}}]]<!--* Ukrainian-->: {{t|uk|мул|m|sc=Cyrl}} *[[{{ur}}]]<!--* Urdu-->: {{t|ur|خچر|m|tr=xaccar}} *[[{{uz}}]]<!--* Uzbek-->: {{t+|uz|xachir}} *[[{{vec}}]]<!--* Venetian-->: {{t+|vec|mus}} *[[{{vi}}]]<!--* Vietnamese-->: {{t+|vi|la}} *[[{{vo}}]]<!--* Volapük-->: {{t+|vo|mulud}} *[[{{wa}}]]<!--* Walloon-->: {{t+|wa|moulet|m}}, {{t+|wa|moule|f}} *[[{{wo}}]]<!--* Wolof-->: {{t-|wo|berkelle bi}} *[[{{zh}}]]<!--* Chinese-->:[[骡子]]/[[騾子]], [[马骡]]/[[馬騾]] {{trans-bottom}} ==={{noun}}:地質学=== '''ラバ''' #({{etyl|it|ja}}:[[lava]]の音写)[[溶岩]]、特に[[溶岩流]]。 ==={{noun}}:俗語=== '''ラバ''' #({{etyl|en|ja}}:[[lover]]の音写)「恋人」の戦前における俗語。 #*私の'''ラバ'''さん酋長の娘([[w:石田一松|石田一松]]作詞『[[w:酋長の娘|酋長の娘]]』) ==={{name}}=== [[Category:{{ja}}_{{name}}]] '''ラバ''' #(英:Rabbahなど)[[ヨルダン]]の首都[[アンマン]]の古名。聖書において登場する。ラバト。 #*春になって、王たちが戦いに出るに及んで、ダビデはヨアブおよび自分と共にいる家来たち、並びに[[イスラエル]]の全軍をつかわした。彼らはアンモンの人々を滅ぼし、'''ラバ'''を包囲した。しかしダビデは[[エルサレム]]にとどまっていた。(『旧約聖書・サムエル記下』第11章 - [[s:口語旧約聖書|口語旧約聖書]](1955年)) 8c5kgmkqt68wscsomdy2epv6an1cb4o 八頭 0 237885 2313260 1929058 2026-08-08T23:59:54Z 鍼灸 112313 2313260 wikitext text/x-wiki {{kana-DEFAULTSORT|はちがしら}} {{wikipedia|八部}} =={{ja}}== ==={{noun}}=== {{ja-kanjitab|はち|かしら|k2=がしら|yomi=j}} [[Category:漢字 部首]] {{ja-noun|はちがしら|[[はっとう]]}} # (はちがしら)[[漢字]]の[[部首]]「[[⼋]]」の[[呼称]]の一つ。 # (はっとう)([[動物]]が)八匹。 ==={{wago}}=== {{ja-kanjitab|やつ|かしら|k2=がしら|yomi=k}} {{ja-wagokanji|やつがしら}} # {{wagokanji of|やつがしら}} rgk2bz3xz8q4lu0wgyw3qypyye6ss3g 2313262 2313260 2026-08-09T00:02:13Z 鍼灸 112313 2313262 wikitext text/x-wiki {{kana-DEFAULTSORT|はちがしら}} {{wikipedia|八部}} =={{ja}}== ==={{noun}}=== {{ja-kanjitab|はち|かしら|k2=がしら|yomi=j}} [[Category:漢字 部首]] {{ja-noun|はちがしら|[[はっとう]]}} # (はちがしら)[[漢字]]の[[部首]]「[[⼋]]」の[[呼称]]の一つ。 # (はっとう)([[動物]]が)八匹。 # (はっとう)八つの[[頭部]]。 # (はっとう)八人の[[頭首]]。 ==={{wago}}=== {{ja-kanjitab|やつ|かしら|k2=がしら|yomi=k}} {{ja-wagokanji|やつがしら}} # {{wagokanji of|やつがしら}} akr6yzs1p7r8ksfne6609i60syqfvwk 2313264 2313262 2026-08-09T00:03:19Z 鍼灸 112313 2313264 wikitext text/x-wiki {{kana-DEFAULTSORT|はちがしら}} {{wikipedia|八部}} =={{ja}}== ==={{noun}}=== {{ja-kanjitab|はち|かしら|k2=がしら|yomi=j}} {{ja-kanjitab|はっ|とう|yomi=o,o}} [[Category:漢字 部首]] {{ja-noun|はちがしら|[[はっとう]]}} # (はちがしら)[[漢字]]の[[部首]]「[[⼋]]」の[[呼称]]の一つ。 # (はっとう)([[動物]]が)八匹。 # (はっとう)八つの[[頭部]]。 # (はっとう)八人の[[頭首]]。 ==={{wago}}=== {{ja-kanjitab|やつ|かしら|k2=がしら|yomi=k}} {{ja-wagokanji|やつがしら}} # {{wagokanji of|やつがしら}} jkyepd20ayimqstnudn8ym2dmacoypf 들어오다 0 245181 2313342 1738373 2026-08-09T02:58:30Z Jiba1219 100610 2313342 wikitext text/x-wiki =={{L|ko}}== ==={{etym}}=== +1449年、[[w:ko:월인천강지곡|月印千江之曲]]で{{etyl|okm|ko}} {{m|okm|드러오다}} (tulewota)として初出。 *{{m|ko|들다}} + {{m|ko|오다}} ==={{pron}}=== {{ko-IPA}} ==={{intrverb}}=== {{head|ko|自動詞}} #{{おくりがな2|入|はい|る|はいる}}。入って来る。 #* {{ko-ex|어서 '''들어와'''.||どうぞ、入って。}} #(団体・組織などに){{おくりがな2|加|くわ|わる|くわわる}}。 #[[敷設]]される。 psjippfnfami1bei2g15n6nc87mlnau epo 0 251390 2313170 1078675 2026-08-08T22:48:33Z Kuroco2k 84207 2313170 wikitext text/x-wiki ==記号== ==={{code}}=== '''{{PAGENAME}}''' #{{ISO 639|2&3|eo}} b3yfst28o04fpktun2bn7o2io0ck0es poder 0 251869 2313416 2286489 2026-08-09T09:33:07Z Kuroco2k 84207 2313416 wikitext text/x-wiki {{also|põder}} =={{L|ast}}== ==={{etym}}=== {{etyl|VL.|ast}} {{m|la|*potēre}} < {{etyl|la|ast}} ''[[potens]]'' (''[[posse]]'' の現在分詞) ==={{noun}}=== {{ast-noun|m|poderes}} #{{ふりがな|力|ちから}}。 ==={{verb}}=== {{ast-verb}} #~[[できる]]。 {{ast-conj-poder}} ---- =={{L|an}}== ==={{etym}}=== {{etyl|VL.|an}} {{m|la|*potēre}} < {{etyl|la|an}} ''[[potens]]'' (''[[posse]]'' の現在分詞) ==={{verb}}=== {{head|an|verb}} #~[[できる]]。 ---- =={{L|oc}}== ==={{etym}}=== {{etyl|pro|oc}} ''poder'' < {{etyl|VL.|oc}} {{m|la|*potēre}} < {{etyl|la|oc}} ''[[potens]]'' (''[[posse]]'' の現在分詞) ==={{verb}}=== {{head|oc|verb}} #~[[できる]]。 {{oc-conj-table |poder |poder |podent |pogut |pòdi |pòdes |pòt |podèm |podètz |pòdon |podiái |podiás |podiá |podiam |podiatz |podián |poirai |poiràs |poirà |poirem |poiretz |poiràn |poguèri |poguères |poguèt |poguèrem |poguèretz |poguèron |poiriái |poiriás |poiriá |poiriam |poiriatz |poirián |pòsca |pòscas |pòsca |poscam |poscatz |pòscan |poguèsse |poguèsses |poguèsse |poguèssem |poguèssetz |poguèsson |pòsca |poscam |poscatz }} ---- =={{L|ca}}== ==={{etym}}=== {{etyl|pro|ct}} ''poder'' < {{etyl|VL.|ca}} {{m|la|*potēre}} < {{etyl|la|ca}} ''[[potens]]'' (''[[posse]]'' の現在分詞) ==={{pron}}=== * {{ca-IPA|ê}} ==={{verb}}=== {{ca-verb|pres_1_sg=puc|past_part=pogut}} #~[[できる]]。 #~してもよい。 ===={{conjug}}==== {{ca-conj}} ==={{noun}}=== {{ca-noun|m}} #{{ふりがな|力|ちから}}、[[能力]]。 ---- =={{L|gl}}== ==={{etym}}=== {{etyl|VL.|gl}} {{m|la|*potēre}} < {{etyl|la|gl}} ''[[potens]]'' (''[[posse]]'' の現在分詞) ==={{verb}}=== {{gl-verb|pod|er|pret=puiden}} #~[[できる]]。 ===={{conjug}}==== {{gl-conj}} ---- =={{L|pro}}== ==={{alter}}=== * {{l|pro|poer}} ==={{etym}}=== {{etyl|VL.|pro}} {{m|la|*potēre}} < {{etyl|la|pro}} ''[[potens]]'' (''[[posse]]'' の現在分詞) ==={{noun}}=== {{pro-noun|m}} #{{ふりがな|力|ちから}}、[[能力]]。 ==={{verb}}=== {{head|pro|verb}} #~[[できる]]。 ===={{desc}}==== *{{desc|oc|poder}} *{{desc|ca|poder}} ---- =={{L|es}}== ==={{etym}}=== {{etyl|VL.|es}} {{m|la|*potēre}} < {{etyl|la|es}} ''[[potens]]'' (''[[posse]]'' の現在分詞) ==={{pron}}=== * {{es-IPA}} ==={{noun}}=== {{es-noun|m|poderes}} #{{ふりがな|力|ちから}}、[[権力]]。 #[[委任状]]。 ==={{verb}}=== {{es-verb|pod|er|pres=puedo|pret=pude}} #~[[できる]]。 #{{context|El Salvador|colloquial|reflexive|lang=es}}~に{{おくりがな2|詳|くわ|しい|くわしい}}。 ===={{conjug}}==== {{es-conj}} ===={{rel}}==== * {{l|es|a más no poder}} * {{l|es|apoderado}} * {{l|es|poder con}} * {{l|es|poderoso}} * {{l|es|potencia}} * {{l|es|potencial}} * {{l|es|potentado}} * {{l|es|potente}} * {{l|es|pudiente}} ---- =={{L|pt}}== ==={{etym}}=== {{etyl|roa-opt|pt}} ''poder'' < {{etyl|VL.|pt}} {{b}} < {{etyl|la|pt}} ''[[potens]]'' (''[[posse]]'' の現在分詞) ==={{pron}}=== 名詞: * {{a|PT}} {{IPA|lang=pt|/pu.ˈdeɾ/|[pu.ˈðeɾ]}} * {{a|Brazil}} {{IPA|lang=pt|po.ˈdeʁ}} ** {{a|Paulista}} {{IPA|lang=pt|[po.ˈdeɹ]|[po.ˈdeɾ]}} 動詞: * {{a|PT}} {{IPA|lang=pt|/pu.ˈdeɾ/|[pu.ˈðeɾ]}} * {{a|Brazil}} {{IPA|lang=pt|po.ˈde(ʁ)|pu.ˈde(ʁ)}} ** {{a|Paulista}} {{IPA|lang=pt|[po.ˈde(ɹ)]|[po.ˈde(ɾ)]|[pu-]|[-dɛ-]}} ==={{noun}}=== {{pt-noun|m|es}} #{{ふりがな|力|ちから}}、[[権力]]、[[支配]]力。 #([[em poder de]]の形で)[[所有]]、[[所持]]。 ===={{syn}}==== * {{l|pt|potência}} * {{l|pt|posse}} * {{l|pt|virtude}} * {{l|pt|superpoder}} ==={{verb}}=== {{pt-verb||poder}} #{{context|auxiliary|lang=pt}}~[[できる]]。 #{{context|auxiliary|lang=pt}}~してもよい。 #{{context|auxiliary|lang=pt}}{{おくりがな3|有|あ|り|得|う|る|ありうる}}。 ===={{conjug}}==== {{pt-conj}} ===={{syn}}==== * {{l|pt|conseguir}} cudz9h4znkfc9w4j304zx2gainuh1jh 2313423 2313416 2026-08-09T09:42:07Z Kuroco2k 84207 /* {{conjug}} */ 2313423 wikitext text/x-wiki {{also|põder}} =={{L|ast}}== ==={{etym}}=== {{etyl|VL.|ast}} {{m|la|*potēre}} < {{etyl|la|ast}} ''[[potens]]'' (''[[posse]]'' の現在分詞) ==={{noun}}=== {{ast-noun|m|poderes}} #{{ふりがな|力|ちから}}。 ==={{verb}}=== {{ast-verb}} #~[[できる]]。 {{ast-conj-poder}} ---- =={{L|an}}== ==={{etym}}=== {{etyl|VL.|an}} {{m|la|*potēre}} < {{etyl|la|an}} ''[[potens]]'' (''[[posse]]'' の現在分詞) ==={{verb}}=== {{head|an|verb}} #~[[できる]]。 ---- =={{L|oc}}== ==={{etym}}=== {{etyl|pro|oc}} ''poder'' < {{etyl|VL.|oc}} {{m|la|*potēre}} < {{etyl|la|oc}} ''[[potens]]'' (''[[posse]]'' の現在分詞) ==={{verb}}=== {{head|oc|verb}} #~[[できる]]。 {{oc-conj-table |poder |poder |podent |pogut |pòdi |pòdes |pòt |podèm |podètz |pòdon |podiái |podiás |podiá |podiam |podiatz |podián |poirai |poiràs |poirà |poirem |poiretz |poiràn |poguèri |poguères |poguèt |poguèrem |poguèretz |poguèron |poiriái |poiriás |poiriá |poiriam |poiriatz |poirián |pòsca |pòscas |pòsca |poscam |poscatz |pòscan |poguèsse |poguèsses |poguèsse |poguèssem |poguèssetz |poguèsson |pòsca |poscam |poscatz }} ---- =={{L|ca}}== ==={{etym}}=== {{etyl|pro|ct}} ''poder'' < {{etyl|VL.|ca}} {{m|la|*potēre}} < {{etyl|la|ca}} ''[[potens]]'' (''[[posse]]'' の現在分詞) ==={{pron}}=== * {{ca-IPA|ê}} ==={{verb}}=== {{ca-verb|pres_1_sg=puc|past_part=pogut}} #~[[できる]]。 #~してもよい。 ===={{conjug}}==== {{ca-conjug}} ==={{noun}}=== {{ca-noun|m}} #{{ふりがな|力|ちから}}、[[能力]]。 ---- =={{L|gl}}== ==={{etym}}=== {{etyl|VL.|gl}} {{m|la|*potēre}} < {{etyl|la|gl}} ''[[potens]]'' (''[[posse]]'' の現在分詞) ==={{verb}}=== {{gl-verb|pod|er|pret=puiden}} #~[[できる]]。 ===={{conjug}}==== {{gl-conj}} ---- =={{L|pro}}== ==={{alter}}=== * {{l|pro|poer}} ==={{etym}}=== {{etyl|VL.|pro}} {{m|la|*potēre}} < {{etyl|la|pro}} ''[[potens]]'' (''[[posse]]'' の現在分詞) ==={{noun}}=== {{pro-noun|m}} #{{ふりがな|力|ちから}}、[[能力]]。 ==={{verb}}=== {{head|pro|verb}} #~[[できる]]。 ===={{desc}}==== *{{desc|oc|poder}} *{{desc|ca|poder}} ---- =={{L|es}}== ==={{etym}}=== {{etyl|VL.|es}} {{m|la|*potēre}} < {{etyl|la|es}} ''[[potens]]'' (''[[posse]]'' の現在分詞) ==={{pron}}=== * {{es-IPA}} ==={{noun}}=== {{es-noun|m|poderes}} #{{ふりがな|力|ちから}}、[[権力]]。 #[[委任状]]。 ==={{verb}}=== {{es-verb|pod|er|pres=puedo|pret=pude}} #~[[できる]]。 #{{context|El Salvador|colloquial|reflexive|lang=es}}~に{{おくりがな2|詳|くわ|しい|くわしい}}。 ===={{conjug}}==== {{es-conj}} ===={{rel}}==== * {{l|es|a más no poder}} * {{l|es|apoderado}} * {{l|es|poder con}} * {{l|es|poderoso}} * {{l|es|potencia}} * {{l|es|potencial}} * {{l|es|potentado}} * {{l|es|potente}} * {{l|es|pudiente}} ---- =={{L|pt}}== ==={{etym}}=== {{etyl|roa-opt|pt}} ''poder'' < {{etyl|VL.|pt}} {{b}} < {{etyl|la|pt}} ''[[potens]]'' (''[[posse]]'' の現在分詞) ==={{pron}}=== 名詞: * {{a|PT}} {{IPA|lang=pt|/pu.ˈdeɾ/|[pu.ˈðeɾ]}} * {{a|Brazil}} {{IPA|lang=pt|po.ˈdeʁ}} ** {{a|Paulista}} {{IPA|lang=pt|[po.ˈdeɹ]|[po.ˈdeɾ]}} 動詞: * {{a|PT}} {{IPA|lang=pt|/pu.ˈdeɾ/|[pu.ˈðeɾ]}} * {{a|Brazil}} {{IPA|lang=pt|po.ˈde(ʁ)|pu.ˈde(ʁ)}} ** {{a|Paulista}} {{IPA|lang=pt|[po.ˈde(ɹ)]|[po.ˈde(ɾ)]|[pu-]|[-dɛ-]}} ==={{noun}}=== {{pt-noun|m|es}} #{{ふりがな|力|ちから}}、[[権力]]、[[支配]]力。 #([[em poder de]]の形で)[[所有]]、[[所持]]。 ===={{syn}}==== * {{l|pt|potência}} * {{l|pt|posse}} * {{l|pt|virtude}} * {{l|pt|superpoder}} ==={{verb}}=== {{pt-verb||poder}} #{{context|auxiliary|lang=pt}}~[[できる]]。 #{{context|auxiliary|lang=pt}}~してもよい。 #{{context|auxiliary|lang=pt}}{{おくりがな3|有|あ|り|得|う|る|ありうる}}。 ===={{conjug}}==== {{pt-conj}} ===={{syn}}==== * {{l|pt|conseguir}} fuj1isml4t9h2fgmgpf26wsuw98g0dz 2313429 2313423 2026-08-09T09:48:51Z Kuroco2k 84207 2313429 wikitext text/x-wiki {{also|põder}} =={{L|ast}}== ==={{etym}}=== {{etyl|VL.|ast}} {{m|la|*potēre}} < {{etyl|la|ast}} ''[[potens]]'' (''[[posse]]'' の現在分詞) ==={{noun}}=== {{ast-noun|m|poderes}} #{{ふりがな|力|ちから}}。 ==={{verb}}=== {{ast-verb}} #~[[できる]]。 {{ast-conj-poder}} ---- =={{L|an}}== ==={{etym}}=== {{etyl|VL.|an}} {{m|la|*potēre}} < {{etyl|la|an}} ''[[potens]]'' (''[[posse]]'' の現在分詞) ==={{verb}}=== {{head|an|verb}} #~[[できる]]。 ---- =={{L|oc}}== ==={{etym}}=== {{etyl|pro|oc}} ''poder'' < {{etyl|VL.|oc}} {{m|la|*potēre}} < {{etyl|la|oc}} ''[[potens]]'' (''[[posse]]'' の現在分詞) ==={{verb}}=== {{head|oc|verb}} #~[[できる]]。 {{oc-conj-table |poder |poder |podent |pogut |pòdi |pòdes |pòt |podèm |podètz |pòdon |podiái |podiás |podiá |podiam |podiatz |podián |poirai |poiràs |poirà |poirem |poiretz |poiràn |poguèri |poguères |poguèt |poguèrem |poguèretz |poguèron |poiriái |poiriás |poiriá |poiriam |poiriatz |poirián |pòsca |pòscas |pòsca |poscam |poscatz |pòscan |poguèsse |poguèsses |poguèsse |poguèssem |poguèssetz |poguèsson |pòsca |poscam |poscatz }} ---- =={{L|ca}}== ==={{etym}}=== {{etyl|pro|ct}} ''poder'' < {{etyl|VL.|ca}} {{m|la|*potēre}} < {{etyl|la|ca}} ''[[potens]]'' (''[[posse]]'' の現在分詞) ==={{pron}}=== * {{ca-IPA|ê}} ==={{verb}}=== {{ca-verb|pres_1_sg=puc|past_part=pogut}} #~[[できる]]。 #~してもよい。 {{ca-conj-re2|pod<!-- -->|infinitive=poder<!-- -->|past_part=pogut<!-- -->|past_part_f=poguda<!-- -->|past_part_mpl=poguts<!-- -->|past_part_fpl=pogudes<!-- -->|pres_ind_1_sg=puc<!-- -->|pres_ind_2_sg=pots<!-- -->|pres_ind_3_sg=pot<!-- -->|pret_ind_stem=pogu<!-- -->|pres_sub_stem=pugu<!-- -->|impf_sub_stem=pogu<!-- -->|impr_2_sg=pugues<!-- -->|impr_2_pl=pugueu<!-- -->}} ==={{noun}}=== {{ca-noun|m}} #{{ふりがな|力|ちから}}、[[能力]]。 ---- =={{L|gl}}== ==={{etym}}=== {{etyl|VL.|gl}} {{m|la|*potēre}} < {{etyl|la|gl}} ''[[potens]]'' (''[[posse]]'' の現在分詞) ==={{verb}}=== {{gl-verb|pod|er|pret=puiden}} #~[[できる]]。 {{gl-conj (poder)}} ---- =={{L|pro}}== ==={{alter}}=== * {{l|pro|poer}} ==={{etym}}=== {{etyl|VL.|pro}} {{m|la|*potēre}} < {{etyl|la|pro}} ''[[potens]]'' (''[[posse]]'' の現在分詞) ==={{noun}}=== {{pro-noun|m}} #{{ふりがな|力|ちから}}、[[能力]]。 ==={{verb}}=== {{head|pro|verb}} #~[[できる]]。 ===={{desc}}==== *{{desc|oc|poder}} *{{desc|ca|poder}} ---- =={{L|es}}== ==={{etym}}=== {{etyl|VL.|es}} {{m|la|*potēre}} < {{etyl|la|es}} ''[[potens]]'' (''[[posse]]'' の現在分詞) ==={{pron}}=== * {{es-IPA}} ==={{noun}}=== {{es-noun|m|poderes}} #{{ふりがな|力|ちから}}、[[権力]]。 #[[委任状]]。 ==={{verb}}=== {{es-verb|pod|er|pres=puedo|pret=pude}} #~[[できる]]。 #{{context|El Salvador|colloquial|reflexive|lang=es}}~に{{おくりがな2|詳|くわ|しい|くわしい}}。 {{es-conj-er|p=poder|combined=1}} ===={{rel}}==== * {{l|es|a más no poder}} * {{l|es|apoderado}} * {{l|es|poder con}} * {{l|es|poderoso}} * {{l|es|potencia}} * {{l|es|potencial}} * {{l|es|potentado}} * {{l|es|potente}} * {{l|es|pudiente}} ---- =={{L|pt}}== ==={{etym}}=== {{etyl|roa-opt|pt}} ''poder'' < {{etyl|VL.|pt}} {{b}} < {{etyl|la|pt}} ''[[potens]]'' (''[[posse]]'' の現在分詞) ==={{pron}}=== 名詞: * {{a|PT}} {{IPA|lang=pt|/pu.ˈdeɾ/|[pu.ˈðeɾ]}} * {{a|Brazil}} {{IPA|lang=pt|po.ˈdeʁ}} ** {{a|Paulista}} {{IPA|lang=pt|[po.ˈdeɹ]|[po.ˈdeɾ]}} 動詞: * {{a|PT}} {{IPA|lang=pt|/pu.ˈdeɾ/|[pu.ˈðeɾ]}} * {{a|Brazil}} {{IPA|lang=pt|po.ˈde(ʁ)|pu.ˈde(ʁ)}} ** {{a|Paulista}} {{IPA|lang=pt|[po.ˈde(ɹ)]|[po.ˈde(ɾ)]|[pu-]|[-dɛ-]}} ==={{noun}}=== {{pt-noun|m|es}} #{{ふりがな|力|ちから}}、[[権力]]、[[支配]]力。 #([[em poder de]]の形で)[[所有]]、[[所持]]。 ===={{syn}}==== * {{l|pt|potência}} * {{l|pt|posse}} * {{l|pt|virtude}} * {{l|pt|superpoder}} ==={{verb}}=== {{pt-verb||poder}} #{{context|auxiliary|lang=pt}}~[[できる]]。 #{{context|auxiliary|lang=pt}}~してもよい。 #{{context|auxiliary|lang=pt}}{{おくりがな3|有|あ|り|得|う|る|ありうる}}。 ===={{conjug}}==== {{pt-conj}} ===={{syn}}==== * {{l|pt|conseguir}} r2796fplyceh33wp7py1minrp1ejlp6 六道 0 252528 2313301 2207743 2026-08-09T00:45:24Z うーむ 129171 /* 名詞 */ 2313301 wikitext text/x-wiki {{kana-DEFAULTSORT|ろくどう}} =={{L|ja}}== {{wikipedia}} ==={{pron}}=== {{ja-pron|ろくどう|acc=2|acc_ref=NHK16}} {{ja-pron|りくどう|acc=2}} ==={{noun}}=== {{ja-noun|[[ろくどう]]|[[りくどう]]}} #{{context|Buddhism|lang=ja}}[[衆生]]がその[[業]]によって[[輪廻]][[転生]]する六種の[[世界]]。[[天道]]・[[人間道]]・[[修羅道]]・[[畜生道]]・[[餓鬼道]]・[[地獄道]]。 ===={{syn}}==== *[[六趣]] *[[六界]] ===脚注=== {{Reflist}} =={{L|zh}}== {{zh-cat|liu4dao4|noun|仏教}} {{yue-cat|luk6dou6|noun|仏教}} {{hak-cat|liuk5tho4|noun|仏教}} ==={{pron}}=== {{cmn-pron|liùdào}} {{yue-pron|luk6 dou6}} {{hak-pron|liuk-tho}} ==={{noun}}=== {{zhchars}} #(日本語に同じ)六道。 =={{L|ko}}== ==={{noun}}=== {{ko-head|noun|육도|륙도|cat2=仏教}} #(日本語に同じ)六道。 =={{L|vi}}== ==={{noun}}=== {{vi-head|noun|lục|đạo|cat2=仏教}} #(日本語に同じ)六道。 cf5zko5hjdeq47p10gokjvlfy73lj1y простата 0 255301 2313217 1540727 2026-08-08T23:23:31Z Kuroco2k 84207 wikify 2313217 wikitext text/x-wiki =={{mk}}== ==={{noun}}=== {{mk-noun|f}} #{{context|anatomy|lang=mk}}[[前立腺]]。 {{mk-decl-noun-f|простат}} =={{ru}}== ==={{pron}}=== *{{ru-IPA|проста́та}} ==={{noun}}=== {{head|ru|noun|head=проста́та|tr=prostáta|g=f-in}} #{{context|anatomy|lang=ru}}[[前立腺]]。 {{ru-decl-noun|простата|простаты|простаты|простат|простате|простатам|простату|простаты|простатой|造格単数2=простатою|простатами|простате|простатах}} ===={{syn}}==== *{{l|ru|предстательная железа}}, {{l|ru|второе сердце мужчины}} csfsk99dlwpcyv68fxt48ze3uidpd8g enema 0 255781 2313110 2230642 2026-08-08T13:45:39Z M-30722 1202 2313110 wikitext text/x-wiki {{also|ènema|ę́nemą}} =={{L|en}}== ==={{etym}}=== {{etyl|grc}} {{m|grc|ἔνεμα}} < {{m|grc|ἐνίημι}} ==={{pron}}=== * {{a|UK|US}} {{IPA|lang=en|ˈɛn.ə.mə}} ==={{noun}}=== {{en-noun|s|pl2=enemata|irr=y}} #{{タグ|en|医療}}[[浣腸]]。 #浣腸剤。 ===={{syn}}==== * (語義2) {{l|en|clyster}} ===={{drv}}==== * {{l|en|enema queen}} * {{l|en|enematic}} ===アナグラム=== * {{anagrams|en|Ameen|Menae|Naeem|amene|meane}} =={{L|es}}== ==={{etym}}=== {{etyl|LL.|es}} ''enema'' < {{etyl|grc|es}} {{m|grc|ἔνεμα}} < {{m|grc|ἐνίημι}} < {{m|grc|ἐν}} + {{m|grc|ἵημι}} ==={{pron}}=== * {{es-IPA}} ==={{noun}}=== {{es-noun|m}} #{{タグ|es|医療}}[[浣腸]]。 #浣腸剤。 ===={{syn}}==== * {{l|es|clister}}, {{l|es|lavado}}, {{l|es|lavativa}} =={{L|pt}}== ==={{noun}}=== {{pt-noun|m|s}} #{{タグ|pt|医療}}[[浣腸]]。 #浣腸剤。 ===={{syn}}==== * {{l|pt|clister}} j56fywu6uvsle5z5ryzv8g1t2jgkd0n saber 0 262208 2313414 2287993 2026-08-09T09:33:07Z Kuroco2k 84207 2313414 wikitext text/x-wiki {{also|Saber}} =={{L|ast}}== ==={{etym}}=== {{etyl|VL.|ast}} {{m|la|*sapēre}} < {{etyl|la|ast}} ''[[sapere]]'' ==={{verb}}=== {{ast-verb}} #{{おくりがな2|知|し|っ|しる}}ている、{{おくりがな2|分|わ|かる|わかる}}。 ===={{rel}}==== * {{l|ast|sabor}} ---- =={{L|en}}== ==={{pron}}=== * {{a|US|Canada}} {{IPA|lang=en|ˈseɪ.bɚ}} * {{a|UK}} {{IPA|lang=en|ˈseɪ.bə(ɹ)}} * {{rhymes|eɪbə(ɹ)}} ==={{noun}}=== {{en-noun}} #[[sabre]]の異綴。 ==={{verb}}=== {{en-verb}} #[[sabre]]の異綴。 ===アナグラム=== * {{anagrams|en|a=abers|BSAer|Bares|Brase|Breas|bares|barse|baser|bears|besra|braes|rabes|sabre}} ---- =={{L|oc}}== ==={{alter}}=== * {{l|oc|saupre}} ==={{etym}}=== {{etyl|pro|oc}} ''saber'' < {{etyl|VL.|oc}} {{m|la|*sapēre}} < {{etyl|la|oc}} ''[[sapere]]'' ==={{verb}}=== {{oc-verb|sab|er}} #{{おくりがな2|知|し|っ|しる}}ている、{{おくりがな2|分|わ|かる|わかる}}。 {{oc-conj-table |saber |saber |[[sabent]]<!-- avoid line break which messes up formatting -->|[[sauput]]<!-- avoid line break which messes up formatting -->|[[sabi]], [[sai]] |[[sabes]], [[sas]] |[[sap]] |[[sabèm]] |[[sabètz]] |[[sabon]]<!-- avoid line break which messes up formatting -->|[[sabiái]] |[[sabiás]] |[[sabiá]] |[[sabiam]] |[[sabiatz]] |[[sabián]]<!-- avoid line break which messes up formatting -->|[[sauprai]] |[[saupràs]] |[[sauprà]] |[[sauprem]] |[[saupretz]] |[[saupràn]]<!-- avoid line break which messes up formatting -->|[[saupèri]] |[[saupères]] |[[saupèt]] |[[saupèrem]] |[[saupèretz]] |[[saupèron]]<!-- avoid line break which messes up formatting -->|[[saupriái]] |[[saupriás]] |[[saupriá]] |[[saupriam]] |[[saupriatz]] |[[sauprián]]<!-- avoid line break which messes up formatting -->|[[sàpia]] |[[sàpias]] |[[sàpia]] |[[sapiam]] |[[sapiatz]] |[[sàpian]]<!-- avoid line break which messes up formatting -->|[[saupèsse]] |[[saupèsses]] |[[saupèsse]] |[[saupèssem]] |[[saupèssetz]] |[[saupèsson]]<!-- avoid line break which messes up formatting -->|[[sap]] |[[sapiam]] |[[sabètz]]|bottom=}} ===={{rel}}==== * {{l|oc|sabor}} ---- =={{L|ca}}== ==={{etym}}=== {{etyl|pro|ca}} ''saber'' < {{etyl|VL.|ca}} {{m|la|*sapēre}} < {{etyl|la|ca}} ''[[sapere]]'' < {{etyl|ine-pro|ca}} {{m|ine-pro|*seh₁p-}} ==={{pron}}=== * {{ca-IPA|ê}} ==={{verb}}=== {{ca-verb|pres_1_sg=sé|past_part=sabut}} #{{おくりがな2|知|し|っ|しる}}ている、{{おくりがな2|分|わ|かる|わかる}}。 ===={{conjug}}==== {{ca-conj}} ===={{drv}}==== * {{l|ca|saber greu}} ===={{rel}}==== * {{l|ca|sabor}} ==={{noun}}=== {{ca-noun|m}} #[[知識]]。 ===={{seealso}}==== * {{l|ca|conèixer}} ---- =={{L|gl}}== ==={{etym}}=== {{etyl|roa-opt|gl}} ''saber'' < {{etyl|VL.|gl}} {{m|la|*sapēre}} < {{etyl|la|gl}} ''[[sapere]]'' ==={{verb}}=== {{gl-verb|sab|er|pres=sei|pret=souben}} #{{おくりがな2|知|し|っ|しる}}ている、{{おくりがな2|分|わ|かる|わかる}}。 ===={{conjug}}==== {{gl-conj}} ===={{rel}}==== * {{l|gl|sabor}} ==={{seealso}}=== * {{l|gl|coñecer}} ---- =={{L|pro}}== ==={{etym}}=== {{etyl|VL.|pro}} {{m|la|*sapēre}} < {{etyl|la|pro}} ''[[sapere]]'' ==={{verb}}=== {{head|pro|verb}} #~の{{ふりがな|味|あじ}}がする。 #{{おくりがな2|知|し|っ|しる}}ている、{{おくりがな2|分|わ|かる|わかる}}。 ==={{noun}}=== {{pro-noun|m}} #[[知識]]。 ===={{rel}}==== * {{l|pro|sabor}} ===={{desc}}==== *{{desc|oc|saber}} *{{desc|ca|saber}} ---- =={{L|es}}== ==={{etym}}=== {{etyl|VL.|spa}} {{m|la|*sapēre}} < {{etyl|la|es}} ''[[sapere]]'' < {{etyl|ine-pro|es}} {{m|ine-pro|*seh₁p-}} ==={{pron}}=== * {{IPA|lang=es|/saˈbeɾ/|[saˈβeɾ]}} ==={{verb}}=== {{es-verb|sab|er|pres=sé|pret=supe}} #{{おくりがな2|知|し|っ|しる}}ている、{{おくりがな2|分|わ|かる|わかる}}。 #~の{{ふりがな|味|あじ}}がする。 ===={{conjug}}==== {{es-conj}} ===={{rel}}==== * {{l|es|sabio}} * {{l|es|sabiondo}} * {{l|es|sabor}} ==={{noun}}=== {{es-noun|m|es}} #[[知識]]。 ==={{seealso}}=== * {{l|es|conocer}} * {{l|es|saborear}} ---- =={{L|pt}}== ==={{etym}}=== {{etyl|roa-opt|pt}} ''saber'' < {{etyl|VL.|pt}} {{m|la|*sapēre}} < {{etyl|la|pt}} {{m|la|sapere}} < {{etyl|ine-pro|pt}} {{m|ine-pro|*seh₁p-}} ==={{pron}}=== * {{a|Portugal}} {{IPA|lang=pt|/sɐ.ˈbeɾ/|[sɐ.ˈβeɾ]}} * {{a|Brazil}} {{IPA|lang=pt|sa.ˈbe(ʁ)}} ** {{a|Paulista}} {{IPA|lang=pt|[sa.ˈbe(ɾ)]|[sa.ˈbe(ɹ)]}} ==={{verb}}=== {{pt-verb||saber}} #{{おくりがな2|知|し|っ|しる}}ている、{{おくりがな2|分|わ|かる|わかる}}。 #{{context|Portugal|lang=por}}~の{{ふりがな|味|あじ}}がする。 ===={{conjug}}==== {{pt-conj}} ===={{syn}}==== * {{l|pt|conhecer}} * {{l|pt|conseguir}} * [[ter]] [[gosto]] [[de]] ==={{noun}}=== {{pt-noun|m|es}} #[[知識]]。 ===={{syn}}==== * {{l|pt|conhecimento}}, {{l|pt|sabedoria}} ===={{drv}}==== * {{l|pt|dar a saber}} * {{l|pt|sabe-tudo}} ===={{rel}}==== {{top}} * {{l|pt|sabedor}} * {{l|pt|sabedoria}} * {{l|pt|sabença}} * {{l|pt|sabichão}} * {{l|pt|sabidão}} * {{l|pt|sabido}} * {{l|pt|sábio}} * {{l|pt|sabir}} * {{l|pt|sabível}} * {{l|pt|sabor}} * {{l|pt|sapiência}} * {{l|pt|sapiente}} {{bottom}} eg1l2on7q4g01y6hz9lbk1htipz8fpg 2313424 2313414 2026-08-09T09:42:07Z Kuroco2k 84207 /* {{L|ca}} */ 2313424 wikitext text/x-wiki {{also|Saber}} =={{L|ast}}== ==={{etym}}=== {{etyl|VL.|ast}} {{m|la|*sapēre}} < {{etyl|la|ast}} ''[[sapere]]'' ==={{verb}}=== {{ast-verb}} #{{おくりがな2|知|し|っ|しる}}ている、{{おくりがな2|分|わ|かる|わかる}}。 ===={{rel}}==== * {{l|ast|sabor}} ---- =={{L|en}}== ==={{pron}}=== * {{a|US|Canada}} {{IPA|lang=en|ˈseɪ.bɚ}} * {{a|UK}} {{IPA|lang=en|ˈseɪ.bə(ɹ)}} * {{rhymes|eɪbə(ɹ)}} ==={{noun}}=== {{en-noun}} #[[sabre]]の異綴。 ==={{verb}}=== {{en-verb}} #[[sabre]]の異綴。 ===アナグラム=== * {{anagrams|en|a=abers|BSAer|Bares|Brase|Breas|bares|barse|baser|bears|besra|braes|rabes|sabre}} ---- =={{L|oc}}== ==={{alter}}=== * {{l|oc|saupre}} ==={{etym}}=== {{etyl|pro|oc}} ''saber'' < {{etyl|VL.|oc}} {{m|la|*sapēre}} < {{etyl|la|oc}} ''[[sapere]]'' ==={{verb}}=== {{oc-verb|sab|er}} #{{おくりがな2|知|し|っ|しる}}ている、{{おくりがな2|分|わ|かる|わかる}}。 {{oc-conj-table |saber |saber |[[sabent]]<!-- avoid line break which messes up formatting -->|[[sauput]]<!-- avoid line break which messes up formatting -->|[[sabi]], [[sai]] |[[sabes]], [[sas]] |[[sap]] |[[sabèm]] |[[sabètz]] |[[sabon]]<!-- avoid line break which messes up formatting -->|[[sabiái]] |[[sabiás]] |[[sabiá]] |[[sabiam]] |[[sabiatz]] |[[sabián]]<!-- avoid line break which messes up formatting -->|[[sauprai]] |[[saupràs]] |[[sauprà]] |[[sauprem]] |[[saupretz]] |[[saupràn]]<!-- avoid line break which messes up formatting -->|[[saupèri]] |[[saupères]] |[[saupèt]] |[[saupèrem]] |[[saupèretz]] |[[saupèron]]<!-- avoid line break which messes up formatting -->|[[saupriái]] |[[saupriás]] |[[saupriá]] |[[saupriam]] |[[saupriatz]] |[[sauprián]]<!-- avoid line break which messes up formatting -->|[[sàpia]] |[[sàpias]] |[[sàpia]] |[[sapiam]] |[[sapiatz]] |[[sàpian]]<!-- avoid line break which messes up formatting -->|[[saupèsse]] |[[saupèsses]] |[[saupèsse]] |[[saupèssem]] |[[saupèssetz]] |[[saupèsson]]<!-- avoid line break which messes up formatting -->|[[sap]] |[[sapiam]] |[[sabètz]]|bottom=}} ===={{rel}}==== * {{l|oc|sabor}} ---- =={{L|ca}}== ==={{etym}}=== {{etyl|pro|ca}} ''saber'' < {{etyl|VL.|ca}} {{m|la|*sapēre}} < {{etyl|la|ca}} ''[[sapere]]'' < {{etyl|ine-pro|ca}} {{m|ine-pro|*seh₁p-}} ==={{pron}}=== * {{ca-IPA|ê}} ==={{verb}}=== {{ca-verb|pres_1_sg=sé|past_part=sabut}} #{{おくりがな2|知|し|っ|しる}}ている、{{おくりがな2|分|わ|かる|わかる}}。 ===={{conjug}}==== {{ca-conjug}} ===={{drv}}==== * {{l|ca|saber greu}} ===={{rel}}==== * {{l|ca|sabor}} ==={{noun}}=== {{ca-noun|m}} #[[知識]]。 ===={{seealso}}==== * {{l|ca|conèixer}} ---- =={{L|gl}}== ==={{etym}}=== {{etyl|roa-opt|gl}} ''saber'' < {{etyl|VL.|gl}} {{m|la|*sapēre}} < {{etyl|la|gl}} ''[[sapere]]'' ==={{verb}}=== {{gl-verb|sab|er|pres=sei|pret=souben}} #{{おくりがな2|知|し|っ|しる}}ている、{{おくりがな2|分|わ|かる|わかる}}。 ===={{conjug}}==== {{gl-conj}} ===={{rel}}==== * {{l|gl|sabor}} ==={{seealso}}=== * {{l|gl|coñecer}} ---- =={{L|pro}}== ==={{etym}}=== {{etyl|VL.|pro}} {{m|la|*sapēre}} < {{etyl|la|pro}} ''[[sapere]]'' ==={{verb}}=== {{head|pro|verb}} #~の{{ふりがな|味|あじ}}がする。 #{{おくりがな2|知|し|っ|しる}}ている、{{おくりがな2|分|わ|かる|わかる}}。 ==={{noun}}=== {{pro-noun|m}} #[[知識]]。 ===={{rel}}==== * {{l|pro|sabor}} ===={{desc}}==== *{{desc|oc|saber}} *{{desc|ca|saber}} ---- =={{L|es}}== ==={{etym}}=== {{etyl|VL.|spa}} {{m|la|*sapēre}} < {{etyl|la|es}} ''[[sapere]]'' < {{etyl|ine-pro|es}} {{m|ine-pro|*seh₁p-}} ==={{pron}}=== * {{IPA|lang=es|/saˈbeɾ/|[saˈβeɾ]}} ==={{verb}}=== {{es-verb|sab|er|pres=sé|pret=supe}} #{{おくりがな2|知|し|っ|しる}}ている、{{おくりがな2|分|わ|かる|わかる}}。 #~の{{ふりがな|味|あじ}}がする。 ===={{conjug}}==== {{es-conj}} ===={{rel}}==== * {{l|es|sabio}} * {{l|es|sabiondo}} * {{l|es|sabor}} ==={{noun}}=== {{es-noun|m|es}} #[[知識]]。 ==={{seealso}}=== * {{l|es|conocer}} * {{l|es|saborear}} ---- =={{L|pt}}== ==={{etym}}=== {{etyl|roa-opt|pt}} ''saber'' < {{etyl|VL.|pt}} {{m|la|*sapēre}} < {{etyl|la|pt}} {{m|la|sapere}} < {{etyl|ine-pro|pt}} {{m|ine-pro|*seh₁p-}} ==={{pron}}=== * {{a|Portugal}} {{IPA|lang=pt|/sɐ.ˈbeɾ/|[sɐ.ˈβeɾ]}} * {{a|Brazil}} {{IPA|lang=pt|sa.ˈbe(ʁ)}} ** {{a|Paulista}} {{IPA|lang=pt|[sa.ˈbe(ɾ)]|[sa.ˈbe(ɹ)]}} ==={{verb}}=== {{pt-verb||saber}} #{{おくりがな2|知|し|っ|しる}}ている、{{おくりがな2|分|わ|かる|わかる}}。 #{{context|Portugal|lang=por}}~の{{ふりがな|味|あじ}}がする。 ===={{conjug}}==== {{pt-conj}} ===={{syn}}==== * {{l|pt|conhecer}} * {{l|pt|conseguir}} * [[ter]] [[gosto]] [[de]] ==={{noun}}=== {{pt-noun|m|es}} #[[知識]]。 ===={{syn}}==== * {{l|pt|conhecimento}}, {{l|pt|sabedoria}} ===={{drv}}==== * {{l|pt|dar a saber}} * {{l|pt|sabe-tudo}} ===={{rel}}==== {{top}} * {{l|pt|sabedor}} * {{l|pt|sabedoria}} * {{l|pt|sabença}} * {{l|pt|sabichão}} * {{l|pt|sabidão}} * {{l|pt|sabido}} * {{l|pt|sábio}} * {{l|pt|sabir}} * {{l|pt|sabível}} * {{l|pt|sabor}} * {{l|pt|sapiência}} * {{l|pt|sapiente}} {{bottom}} 5kpxlh0s1c9guwv13oc6k7uc1nob7au 2313428 2313424 2026-08-09T09:48:52Z Kuroco2k 84207 2313428 wikitext text/x-wiki {{also|Saber}} =={{L|ast}}== ==={{etym}}=== {{etyl|VL.|ast}} {{m|la|*sapēre}} < {{etyl|la|ast}} ''[[sapere]]'' ==={{verb}}=== {{ast-verb}} #{{おくりがな2|知|し|っ|しる}}ている、{{おくりがな2|分|わ|かる|わかる}}。 ===={{rel}}==== * {{l|ast|sabor}} ---- =={{L|en}}== ==={{pron}}=== * {{a|US|Canada}} {{IPA|lang=en|ˈseɪ.bɚ}} * {{a|UK}} {{IPA|lang=en|ˈseɪ.bə(ɹ)}} * {{rhymes|eɪbə(ɹ)}} ==={{noun}}=== {{en-noun}} #[[sabre]]の異綴。 ==={{verb}}=== {{en-verb}} #[[sabre]]の異綴。 ===アナグラム=== * {{anagrams|en|a=abers|BSAer|Bares|Brase|Breas|bares|barse|baser|bears|besra|braes|rabes|sabre}} ---- =={{L|oc}}== ==={{alter}}=== * {{l|oc|saupre}} ==={{etym}}=== {{etyl|pro|oc}} ''saber'' < {{etyl|VL.|oc}} {{m|la|*sapēre}} < {{etyl|la|oc}} ''[[sapere]]'' ==={{verb}}=== {{oc-verb|sab|er}} #{{おくりがな2|知|し|っ|しる}}ている、{{おくりがな2|分|わ|かる|わかる}}。 {{oc-conj-table |saber |saber |[[sabent]]<!-- avoid line break which messes up formatting -->|[[sauput]]<!-- avoid line break which messes up formatting -->|[[sabi]], [[sai]] |[[sabes]], [[sas]] |[[sap]] |[[sabèm]] |[[sabètz]] |[[sabon]]<!-- avoid line break which messes up formatting -->|[[sabiái]] |[[sabiás]] |[[sabiá]] |[[sabiam]] |[[sabiatz]] |[[sabián]]<!-- avoid line break which messes up formatting -->|[[sauprai]] |[[saupràs]] |[[sauprà]] |[[sauprem]] |[[saupretz]] |[[saupràn]]<!-- avoid line break which messes up formatting -->|[[saupèri]] |[[saupères]] |[[saupèt]] |[[saupèrem]] |[[saupèretz]] |[[saupèron]]<!-- avoid line break which messes up formatting -->|[[saupriái]] |[[saupriás]] |[[saupriá]] |[[saupriam]] |[[saupriatz]] |[[sauprián]]<!-- avoid line break which messes up formatting -->|[[sàpia]] |[[sàpias]] |[[sàpia]] |[[sapiam]] |[[sapiatz]] |[[sàpian]]<!-- avoid line break which messes up formatting -->|[[saupèsse]] |[[saupèsses]] |[[saupèsse]] |[[saupèssem]] |[[saupèssetz]] |[[saupèsson]]<!-- avoid line break which messes up formatting -->|[[sap]] |[[sapiam]] |[[sabètz]]|bottom=}} ===={{rel}}==== * {{l|oc|sabor}} ---- =={{L|ca}}== ==={{etym}}=== {{etyl|pro|ca}} ''saber'' < {{etyl|VL.|ca}} {{m|la|*sapēre}} < {{etyl|la|ca}} ''[[sapere]]'' < {{etyl|ine-pro|ca}} {{m|ine-pro|*seh₁p-}} ==={{pron}}=== * {{ca-IPA|ê}} ==={{verb}}=== {{ca-verb|pres_1_sg=sé|past_part=sabut}} #{{おくりがな2|知|し|っ|しる}}ている、{{おくりがな2|分|わ|かる|わかる}}。 {{ca-conj-re2|sab<!-- -->|infinitive=saber<!-- -->|pres_ind_1_sg=sé<!-- -->|pres_ind_2_sg=saps<!-- -->|pres_ind_3_sg=sap<!-- -->|pres_sub_1_sg=sàpiga<!-- -->|pres_sub_2_sg=sàpigues<!-- -->|pres_sub_3_sg=sàpiga<!-- -->|pres_sub_1_pl=sapiguem<!-- -->|pres_sub_2_pl=sapigueu<!-- -->|pres_sub_3_pl=sàpiguen<!-- -->|impr_2_sg=sàpigues<!-- -->|impr_2_pl=sapigueu<!-- -->}} ===={{drv}}==== * {{l|ca|saber greu}} ===={{rel}}==== * {{l|ca|sabor}} ==={{noun}}=== {{ca-noun|m}} #[[知識]]。 ===={{seealso}}==== * {{l|ca|conèixer}} ---- =={{L|gl}}== ==={{etym}}=== {{etyl|roa-opt|gl}} ''saber'' < {{etyl|VL.|gl}} {{m|la|*sapēre}} < {{etyl|la|gl}} ''[[sapere]]'' ==={{verb}}=== {{gl-verb|sab|er|pres=sei|pret=souben}} #{{おくりがな2|知|し|っ|しる}}ている、{{おくりがな2|分|わ|かる|わかる}}。 {{gl-conj (saber)}} ===={{rel}}==== * {{l|gl|sabor}} ==={{seealso}}=== * {{l|gl|coñecer}} ---- =={{L|pro}}== ==={{etym}}=== {{etyl|VL.|pro}} {{m|la|*sapēre}} < {{etyl|la|pro}} ''[[sapere]]'' ==={{verb}}=== {{head|pro|verb}} #~の{{ふりがな|味|あじ}}がする。 #{{おくりがな2|知|し|っ|しる}}ている、{{おくりがな2|分|わ|かる|わかる}}。 ==={{noun}}=== {{pro-noun|m}} #[[知識]]。 ===={{rel}}==== * {{l|pro|sabor}} ===={{desc}}==== *{{desc|oc|saber}} *{{desc|ca|saber}} ---- =={{L|es}}== ==={{etym}}=== {{etyl|VL.|spa}} {{m|la|*sapēre}} < {{etyl|la|es}} ''[[sapere]]'' < {{etyl|ine-pro|es}} {{m|ine-pro|*seh₁p-}} ==={{pron}}=== * {{IPA|lang=es|/saˈbeɾ/|[saˈβeɾ]}} ==={{verb}}=== {{es-verb|sab|er|pres=sé|pret=supe}} #{{おくりがな2|知|し|っ|しる}}ている、{{おくりがな2|分|わ|かる|わかる}}。 #~の{{ふりがな|味|あじ}}がする。 {{es-conj-er|p=saber||combined=1}} ===={{rel}}==== * {{l|es|sabio}} * {{l|es|sabiondo}} * {{l|es|sabor}} ==={{noun}}=== {{es-noun|m|es}} #[[知識]]。 ==={{seealso}}=== * {{l|es|conocer}} * {{l|es|saborear}} ---- =={{L|pt}}== ==={{etym}}=== {{etyl|roa-opt|pt}} ''saber'' < {{etyl|VL.|pt}} {{m|la|*sapēre}} < {{etyl|la|pt}} {{m|la|sapere}} < {{etyl|ine-pro|pt}} {{m|ine-pro|*seh₁p-}} ==={{pron}}=== * {{a|Portugal}} {{IPA|lang=pt|/sɐ.ˈbeɾ/|[sɐ.ˈβeɾ]}} * {{a|Brazil}} {{IPA|lang=pt|sa.ˈbe(ʁ)}} ** {{a|Paulista}} {{IPA|lang=pt|[sa.ˈbe(ɾ)]|[sa.ˈbe(ɹ)]}} ==={{verb}}=== {{pt-verb||saber}} #{{おくりがな2|知|し|っ|しる}}ている、{{おくりがな2|分|わ|かる|わかる}}。 #{{context|Portugal|lang=por}}~の{{ふりがな|味|あじ}}がする。 ===={{conjug}}==== {{pt-conj}} ===={{syn}}==== * {{l|pt|conhecer}} * {{l|pt|conseguir}} * [[ter]] [[gosto]] [[de]] ==={{noun}}=== {{pt-noun|m|es}} #[[知識]]。 ===={{syn}}==== * {{l|pt|conhecimento}}, {{l|pt|sabedoria}} ===={{drv}}==== * {{l|pt|dar a saber}} * {{l|pt|sabe-tudo}} ===={{rel}}==== {{top}} * {{l|pt|sabedor}} * {{l|pt|sabedoria}} * {{l|pt|sabença}} * {{l|pt|sabichão}} * {{l|pt|sabidão}} * {{l|pt|sabido}} * {{l|pt|sábio}} * {{l|pt|sabir}} * {{l|pt|sabível}} * {{l|pt|sabor}} * {{l|pt|sapiência}} * {{l|pt|sapiente}} {{bottom}} 1kkgbyeq67sgozuz43en2mp3tl39rtj make love 0 277415 2313461 1614200 2026-08-09T11:46:57Z M-30722 1202 2313461 wikitext text/x-wiki {{DEFAULTSORT:makelove}} =={{L|en}}== ==={{idiom}}=== {{en-idiom|verb}} #{{タグ|en|性行為}}[[セックス]]する。[[性行為]]をする。 ===={{drv}}==== * {{l|en|make love to}}, {{l|en|make love with}} k3jsoepu1389mhr86rskgye12619yq5 嫡妻 0 280318 2313379 1685680 2026-08-09T06:50:22Z Jiba1219 100610 2313379 wikitext text/x-wiki {{kana-DEFAULTSORT|ちゃくさい}} =={{L|ja}}== [[Category:{{ja}}]] ==={{pron|jpn}}=== ;ちゃ↗くさい ;て↗きさい ==={{noun}}=== [[Category:{{ja}}_{{noun}}]] [[Category:{{ja}}_家族]] [[Category:{{ja}}_和語の漢字表記|こなみ]] [[Category:熟字訓|こなみ]] {{jachars}}([[ちゃくさい]]、[[てきさい]] 熟字訓:[[こなみ]]、[[むかいめ]]) #[[正妻]]。[[本妻]]。[[嫡室]]。 =={{L|zh}}== {{wikipedia|lang=zh}} {{zh-cat|di2qi1|noun|家族}} {{yue-cat|dik1chai1|noun|家族}} {{nan-cat|tek4chhe1|noun|家族}} ==={{pron}}=== {{cmn-pron|díqī}} {{yue-pron|dik1 cai1}} {{nan-pron|xm,tw:tek-chhe}} ==={{noun}}=== {{zhchars}} #嫡妻。[[正妻]]。 #(一夫多妻制の)[[第一]][[婦人]]。 =={{L|ko}}== ==={{noun}}=== {{ko-head|noun|적처|cat2=家族}} #嫡妻。[[正妻]]。 ap7cfsf2r51vejlauxlw3ynk06mx62q навек 0 287744 2313216 2233234 2026-08-08T23:23:31Z Kuroco2k 84207 wikify 2313216 wikitext text/x-wiki =={{mk}}== ==={{adverb}}=== {{head|mk|adverb|head=навек|tr=navek}} #{{context|rare|lang=mk}} [[永遠]]に。 ===={{syn}}==== *{{l|mk|засекогаш}} (zasekogaš) =={{ru}}== {{also|навеки}} ==={{pron}}=== *{{IPA|nɐˈvʲek}} ==={{adverb}}=== {{head|ru|adverb|head=наве́к|tr=navék}} #[[永遠]]に。 ===={{syn}}==== *{{l|ru|навсегда|навсегда́}} (navsegdá) bcoaf6p4ar9fq1sc5dfots31sg70u4g совет 0 287805 2313215 2233243 2026-08-08T23:23:30Z Kuroco2k 84207 wikify 2313215 wikitext text/x-wiki {{also|совѣтъ}} =={{mk}}== ==={{etym}}=== {{etyl|sla-pro|mk}} {{recons|sъvětъ|lang=sla-pro}} < {{recons|větъ|lang=sla-pro}} ==={{pron}}=== *{{mk-IPA}} *{{audio|mk|LL-Q9296 (mkd)-Bjankuloski06-{{PAGENAME}}.wav|音声}} ==={{noun}}=== {{head|mk|noun|head=совет|tr=sovet|g=m}} #[[助言]]。[[アドバイス]]。 #[[会議]]。[[協議]]。[[審議]]。 =={{ru}}== ==={{etym}}=== *{{etyl|orv|ru}} {{l|orv|съвѣтъ}} (sŭvětŭ) < {{etyl|cu|orv}} {{l|cu|съвѣтъ}} (sŭvětŭ) < {{compound|со-|tr1=so-|вѣтъ|tr2=větŭ|lang=cu}} < {{etyl|sla-pro|cu}} {{recons|větъ|lang=sla-pro}} *ポーランド語 {{l|pl|witać}} と同語源語。 ==={{pron}}=== *{{IPA|sɐˈvʲet}} *{{audio|ru|Ru-{{PAGENAME}}.ogg|音声}} ==={{noun}}=== {{head|ru|noun|head=сове́т|tr=sovét|g=m-in}} #[[助言]]。[[アドバイス]]。 #[[協議会]]。[[委員会]]。 #{{context|ソ連|lang=ru}} [[w:ソビエト|ソビエト]]。 ===={{drv}}==== *{{l|ru|советник|сове́тник}} (sovétnik) *{{l|ru|советовать|сове́товать}} (sovétovatʹ) *{{l|ru|советский|сове́тский}} (sovétskij) *{{l|ru|советчик|сове́тчик}} (sovétčik) ===={{rel}}==== *{{l|ru|навет|наве́т}} (navét), {{l|ru|извет|изве́т}} (izvét), {{l|ru|ответ|отве́т}} (otvét), {{l|ru|привет|приве́т}} (privét), {{l|ru|обет|обе́т}} (obét), {{l|ru|вече|ве́че}} (véče), {{l|ru|отвечать|отвеча́ть}} (otvečátʹ), {{l|ru|ответить|отве́тить}} (otvétitʹ), {{l|ru|завещать|завеща́ть}} (zaveščátʹ), {{l|ru|совещаться|совеща́ться}} (soveščátʹsja) fs5tkwkz1zuwhargwst57i9qu79pr2f テンプレート:context/data 10 288560 2313125 2312966 2026-08-08T14:48:46Z 鍼灸 112313 2313125 wikitext text/x-wiki {{#switch:{{{1}}}<!-- -->|2ch|2ちゃんねる={{#switch:{{{2}}}|label=[[:w:2ちゃんねる (2ch.net)|2ちゃんねる]]|category=2ちゃんねるのスラング}}<!-- -->|and={{#switch:{{{2}}}|label=及び|category=}}<!-- -->|attributive={{#switch:{{{2}}}|label=形容詞的|category=}}<!-- -->|BDSM={{#switch:{{{2}}}|label=BDSM|category=性行為}}<!-- -->|by extension|par extension={{#switch:{{{2}}}|label=転じて|category=}}<!-- -->|Changchun Mandarin|Changchun={{#switch:{{{2}}}|label=長春|category=東北官話}}<!-- -->|Changtai Hokkien|Changtai={{#switch:{{{2}}}|label=長泰|category=方言}}<!-- -->|chiefly={{#switch:{{{2}}}|label=主に|category=}}<!-- -->|collectively={{#switch:{{{2}}}|label=集合的に|category=}}<!-- -->|comparable={{#switch:{{{2}}}|label=比較形有り|category=}}<!-- -->|Dalian Mandarin|Dalian={{#switch:{{{2}}}|label=大連|category=膠遼官話}}<!-- -->|definite={{#switch:{{{2}}}|label=限定|category=}}<!-- -->|disrespectful={{#switch:{{{2}}}|label=失礼|category=}}<!-- -->|especially|specifically|particularly={{#switch:{{{2}}}|label=特に|category=}}<!-- -->|exclamatory={{#switch:{{{2}}}|label=感嘆|category=}}<!-- -->|expressively={{#switch:{{{2}}}|label=意味ありげに|category=}}<!-- -->|extreme={{#switch:{{{2}}}|label=激しい|category=}}<!-- -->|extremely|exceedingly={{#switch:{{{2}}}|label=極めて|category=}}<!-- -->|familiar={{#switch:{{{2}}}|label=親しみを込めて|category=}}<!-- -->|figuratively={{#switch:{{{2}}}|label=比喩的に|category=}}<!-- -->|folksy={{#switch:{{{2}}}|label=気取らない表現|category=}}<!-- -->|form of address={{#switch:{{{2}}}|label=呼びかけ|category=}}<!-- -->|Guangxi Mandarin={{#switch:{{{2}}}|label=広西|category=西南官話}}<!-- -->|Guanzhong Mandarin|Guanzhong={{#switch:{{{2}}}|label=関中|category=中原官話}}<!-- -->|Guilin Mandarin={{#switch:{{{2}}}|label=桂林|category=西南官話}}<!-- -->|Guiliu Mandarin={{#switch:{{{2}}}|label=桂柳|category=西南官話}}<!-- -->|Guiyang Mandarin={{#switch:{{{2}}}|label=貴陽|category=西南官話}}<!-- -->|Harbin Mandarin|Harbin={{#switch:{{{2}}}|label=ハルビン|category=東北官話}}<!-- -->|Hefei Mandarin|Hefei={{#switch:{{{2}}}|label=合肥|category=江淮官話}}<!-- -->|Hsinchu Hokkien|Hsinchu={{#switch:{{{2}}}|label=新竹|category=台湾語}}<!-- -->|Hui'an Hokkien|Hui'an={{#switch:{{{2}}}|label=惠安|category=方言}}<!-- -->|hyperbolic|誇張|誇張表現={{#switch:{{{2}}}|label=誇張|category=誇張表現}}<!-- -->|in compounds={{#switch:{{{2}}}|label=複合語で|category=}}<!-- -->|Indonesian Hokkien|Indonesia Hokkien={{#switch:{{{2}}}|label=インドネシア|category=方言}}<!-- -->|in the plural|in plural={{#switch:{{{2}}}|label=[[複数形]]で|category=}}<!-- -->|in the singular|in singular={{#switch:{{{2}}}|label=[[単数形]]で|category=}}<!-- -->|Jinan Mandarin|Jinan={{#switch:{{{2}}}|label=済南|category=冀魯官話}}<!-- -->|Jinjiang Hokkien|Jinjiang={{#switch:{{{2}}}|label=晋江|category=方言}}<!-- -->|Kaohsiung Hokkien|Kaohsiung={{#switch:{{{2}}}|label=高雄|category=台湾語}}<!-- -->|Kinmenese Hokkien|Kinmen|Kinmen Hokkien|Kinmenese={{#switch:{{{2}}}|label=金門|category=台湾語}}<!-- -->|Kunming Mandarin|Kunming={{#switch:{{{2}}}|label=昆明|category=西南官話}}<!-- -->|Lanzhou Mandarin|Lanzhou={{#switch:{{{2}}}|label=蘭州|category=蘭銀官話}}<!-- -->|leet={{#switch:{{{2}}}|label=leet|category=leet}}<!-- -->|less formal={{#switch:{{{2}}}|label=くだけた表現|category=}}<!-- -->|LGBT={{#switch:{{{2}}}|label=[[LGBT]]|category=性的指向}}<!-- -->|Limba Sarda Comuna={{#switch:{{{2}}}|label=リンバ・サルダ・コムナ|category=}}<!-- -->|Liuzhou Mandarin={{#switch:{{{2}}}|label=柳州|category=西南官話}}<!-- -->|literally|literal={{#switch:{{{2}}}|label=逐語的に|category=}}<!-- -->|Loosely|loosely={{#switch:{{{2}}}|label=大まかに|category=}}<!-- -->|Lukang Hokkien|Lukang={{#switch:{{{2}}}|label=鹿港|category=台湾語}}<!-- -->|Luoyang Mandarin|Luoyang={{#switch:{{{2}}}|label=洛陽|category=中原官話}}<!-- -->|Magong Hokkien|Magong={{#switch:{{{2}}}|label=馬公|category=台湾語}}<!-- -->|middle|middle voice={{#switch:{{{2}}}|label=[[中動態]]|category=}}<!-- -->|mildly={{#switch:{{{2}}}|label=控えめに|category=}}<!-- -->|mostly={{#switch:{{{2}}}|label=概ね|category=}}<!-- -->|Muping Mandarin|Muping={{#switch:{{{2}}}|label=牟平|category=膠遼官話}}<!-- -->|Nanjing Mandarin|Nanjing|Nanjingese|Nanjingnese={{#switch:{{{2}}}|label=[[:w:南京官話|南京]]|category=江淮官話}}<!-- -->|North America={{#switch:{{{2}}}|label=[[北米]]|category=カナダ英語|category2=米語}}<!-- -->|North American={{#switch:{{{2}}}|label=[[北米]]|category=カナダ{{language|{{{lang}}}}}|category2=アメリカ{{language|{{{lang}}}}}}}<!-- -->|not comparable|uncomparable={{#switch:{{{2}}}|label=比較形無し|category=}}<!-- -->|now={{#switch:{{{2}}}|label=現在では|category=}}<!-- -->|often={{#switch:{{{2}}}|label=しばしば|category=}}<!-- -->|or={{#switch:{{{2}}}|label=または|category=}}<!-- -->|ORB|orb|orbl={{#switch:{{{2}}}|label=ORB|category=ORB}}<!-- -->|originally={{#switch:{{{2}}}|label=元々は|category=}}<!-- -->|otherwise={{#switch:{{{2}}}|label=あるいは|category=}}<!-- -->|Oxford British English={{#switch:{{{2}}}|label=[[:w:オクスフォード式綴り|オクスフォード式]]|category=オクスフォード式綴り}}<!-- -->|Penang Hokkien|Penang={{#switch:{{{2}}}|label=ペナン州|category=方言}}<!-- -->|perhaps|possibly={{#switch:{{{2}}}|label=恐らく|category=}}<!-- -->|predicative only={{#switch:{{{2}}}|label=叙述用法のみ|category=}}<!-- -->|Quanzhou Hokkien|Quanzhou={{#switch:{{{2}}}|label=泉州|category=方言}}<!-- -->|reciprocal={{#switch:{{{2}}}|label=お互いに|category=}}<!-- -->|restrictive only={{#switch:{{{2}}}|label=限定用法のみ|category=}}<!-- -->|Sanxia Hokkien|Sanxia={{#switch:{{{2}}}|label=三峽|category=方言}}<!-- -->|science fiction|scifi|SF|sf={{#switch:{{{2}}}|label=SF|category=SF}}<!-- -->|Shenyang Mandarin|Shenyang={{#switch:{{{2}}}|label=瀋陽|category=東北官話}}<!-- -->|slightly|somewhat={{#switch:{{{2}}}|label=やや|category=}}<!-- -->|sometimes={{#switch:{{{2}}}|label=時々|category=}}<!-- -->|southern Lakota={{#switch:{{{2}}}|label=[[:w:サウスダコタ州|サウスダコタ州]]|category=南部方言}}<!-- -->|strong={{#switch:{{{2}}}|label=強い|category=}}<!-- -->|Taichung Hokkien|Taichung={{#switch:{{{2}}}|label=台中|category=台湾語}}<!-- -->|Tainan Hokkien|Tainan={{#switch:{{{2}}}|label=台南|category=台湾語}}<!-- -->|Taipei Hokkien|Taipei={{#switch:{{{2}}}|label=台北|category=台湾語}}<!-- -->|Tianjin Mandarin|Tianjin|Tianjinese|Tianjinese Mandarin={{#switch:{{{2}}}|label=天津|category=冀魯官話}}<!-- -->|Tong'an Hokkien|Tong'an={{#switch:{{{2}}}|label=同安|category=方言}}<!-- -->|uncommon={{#switch:{{{2}}}|label=非標準|category=}}<!-- -->|Upper Silesia={{#switch:{{{2}}}|label=上シレジア|category=}}<!-- -->|used with se={{#switch:{{{2}}}|label=+ '''se''' で|category=}}<!-- -->|usually={{#switch:{{{2}}}|label=通常|category=}}<!-- -->|usually in plural|usually in the plural|usually plural={{#switch:{{{2}}}|label=通常複数形で|category=}}<!-- -->|very={{#switch:{{{2}}}|label=非常に|category=}}<!-- -->|western={{#switch:{{{2}}}|label=西部|category=}}<!-- -->|World Wide Web|world wide web|WWW|www={{#switch:{{{2}}}|label=[[ワールドワイドウェブ|World Wide Web]]|category=World Wide Web}}<!-- -->|Wuhan Mandarin|Hankou|Hankow|Wuhan={{#switch:{{{2}}}|label=武漢|category=西南官話}}<!-- -->|Xiamen Hokkien|Xiamen={{#switch:{{{2}}}|label=[[:w:廈門語|廈門]]|category=方言}}<!-- -->|Xichang Mandarin|Xichang={{#switch:{{{2}}}|label=西昌|category=西南官話}}<!-- -->|Xining Mandarin|Xining={{#switch:{{{2}}}|label=西寧|category=蘭銀官話}}<!-- -->|Xuzhou Mandarin|Xuzhou={{#switch:{{{2}}}|label=徐州|category=中原官話}}<!-- -->|Yangzhou Mandarin|Yangzhou={{#switch:{{{2}}}|label=揚州|category=江淮官話}}<!-- -->|Yilan Hokkien|Yilan={{#switch:{{{2}}}|label=宜蘭|category=台湾語}}<!-- -->|Yinchuan Mandarin|Yinchuan={{#switch:{{{2}}}|label=銀川|category=蘭銀官話}}<!-- -->|Yongchun Hokkien|Yongchun={{#switch:{{{2}}}|label=永春|category=台湾語}}<!-- -->|YouTube|Youtube|youtube={{#switch:{{{2}}}|label=[[:w:YouTube|YouTube]]|category=World Wide Web}}<!-- -->|Yunnan Mandarin={{#switch:{{{2}}}|label=雲南|category=西南官話}}<!-- -->|Zhangping Hokkien|Zhangping={{#switch:{{{2}}}|label=漳平|category=方言}}<!-- -->|Zhangzhou Hokkien|Zhangzhou|Changchew={{#switch:{{{2}}}|label=漳州|category=方言}}<!-- -->|Zhao'an Hokkien|Zhao'an={{#switch:{{{2}}}|label=詔安|category=方言}}<!-- -->|Ürümqi Mandarin|Urumqi|Urumqi Mandarin|Ürümqi={{#switch:{{{2}}}|label=ウルムチ|category=蘭銀官話}}<!-- -->|アーチェリー|archery={{#switch:{{{2}}}|label=アーチェリー|category=アーチェリー}}<!-- -->|アームレスリング|armwrestling={{#switch:{{{2}}}|label=アームレスリング|category=アームレスリング}}<!-- -->|アイオリス方言|アイオリス|Aeolic={{#switch:{{{2}}}|label=アイオリス方言|category=アイオリス方言}}<!-- -->|愛玩犬|toy dog={{#switch:{{{2}}}|label=愛玩犬|category=愛玩犬}}<!-- -->|合気道|aikido={{#switch:{{{2}}}|label=[[合気道]]|category=合気道}}<!-- -->|挨拶|greeting={{#switch:{{{2}}}|label=[[挨拶]]|category=挨拶}}<!-- -->|アイスクリーム|ice cream={{#switch:{{{2}}}|label=[[アイスクリーム]]|category=アイスクリーム}}<!-- -->|アイススケート|ice skating={{#switch:{{{2}}}|label=[[アイススケート]]|category=アイススケート}}<!-- -->|アイスホッケー|ice hockey={{#switch:{{{2}}}|label=[[アイスホッケー]]|category=アイスホッケー}}<!-- -->|アイルランド={{#switch:{{{2}}}|label=[[アイルランド]]|category=アイルランド}}<!-- -->|アイルランド英語|アイルランド変種|Ireland|Irish|IE={{#switch:{{{2}}}|label=アイルランド|category=アイルランド英語}}<!-- -->|アオイ科={{#switch:{{{2}}}|label=[[:w:アオイ科|アオイ科]]|category=アオイ科}}<!-- -->|アオイ目={{#switch:{{{2}}}|label=[[:w:アオイ目|アオイ目]]|category=アオイ目}}<!-- -->|アカクソチトラン|Acaxochitlán={{#switch:{{{2}}}|label=アカクソチトラン|category=アカクソチトラン方言}}<!-- -->|アカザ科={{#switch:{{{2}}}|label=[[:w:アカザ科|アカザ科]]|category=アカザ科}}<!-- -->|アカテツ科={{#switch:{{{2}}}|label=[[:w:アカテツ科|アカテツ科]]|category=アカテツ科}}<!-- -->|アカネ科={{#switch:{{{2}}}|label=[[:w:アカネ科|アカネ科]]|category=アカネ科}}<!-- -->|アカマンボウ目={{#switch:{{{2}}}|label=[[:w:アカマンボウ目|アカマンボウ目]]|category=アカマンボウ目}}<!-- -->|アカリア科={{#switch:{{{2}}}|label=[[:w:アカリア科|アカリア科]]|category=アカリア科}}<!-- -->|アサ科={{#switch:{{{2}}}|label=[[:w:アサ科|アサ科]]|category=アサ科}}<!-- -->|アジア|Asia={{#switch:{{{2}}}|label=[[アジア]]|category=アジア}}<!-- -->|アジア史={{#switch:{{{2}}}|label=[[:w:アジア史|アジア史]]|category=アジア史}}<!-- -->|アジアの国|アジアの国名={{#switch:{{{2}}}|label=アジアの国|category=アジアの国名}}<!-- -->|アステリズム={{#switch:{{{2}}}|label=[[アステリズム]]|category=アステリズム}}<!-- -->|アッティカ方言|アッティカ|Attic|att={{#switch:{{{2}}}|label=[[:w:アッティカ方言|アッティカ方言]]|category=アッティカ方言}}<!-- -->|アトリ科={{#switch:{{{2}}}|label=[[:w:アトリ科|アトリ科]]|category=アトリ科}}<!-- -->|アニメ|animation={{#switch:{{{2}}}|label=[[アニメ]]|category=アニメ}}<!-- -->|アブラナ科={{#switch:{{{2}}}|label=[[:w:アブラナ科|アブラナ科]]|category=アブラナ科}}<!-- -->|アブラナ目={{#switch:{{{2}}}|label=[[:w:アブラナ目|アブラナ目]]|category=アブラナ目}}<!-- -->|アフリカ|Africa={{#switch:{{{2}}}|label=[[アフリカ]]|category=アフリカ}}<!-- -->|アフリカ史={{#switch:{{{2}}}|label=[[:w:アフリカ史|アフリカ史]]|category=アフリカ史}}<!-- -->|アフリカの国|アフリカの国名={{#switch:{{{2}}}|label=アフリカの国|category=アフリカの国名}}<!-- -->|アフリカ変種={{#switch:{{{2}}}|label=アフリカ|category=アフリカ{{language|{{{lang}}}}}}}<!-- -->|アミノ酸|amino acid={{#switch:{{{2}}}|label=[[アミノ酸]]|category=アミノ酸}}<!-- -->|雨|rain={{#switch:{{{2}}}|label=[[あめ|雨]]|category=雨}}<!-- -->|アメカメカ|Amecameca={{#switch:{{{2}}}|label=アメカメカ|category=アメカメカ方言}}<!-- -->|アメリカ合衆国|United States|united states|United States of America|united states of America|USA|usania|US of A|U.S. of A.|usonia={{#switch:{{{2}}}|label=[[アメリカ合衆国]]|category=アメリカ合衆国}}<!-- -->|アメリカ合衆国の州={{#switch:{{{2}}}|label=アメリカ合衆国の州|category=アメリカ合衆国の州}}<!-- -->|アメリカ史={{#switch:{{{2}}}|label=[[:w:アメリカ史|アメリカ史]]|category=アメリカ史}}<!-- -->|アメリカ西部|米西部|Western US={{#switch:{{{2}}}|label=アメリカ西部|category=アメリカ西部方言}}<!-- -->|アメリカ南部|米南部|southern US|Southern US={{#switch:{{{2}}}|label=アメリカ南部|category=アメリカ南部}}<!-- -->|アメリカンフットボール|アメフト|American football={{#switch:{{{2}}}|label=[[アメリカンフットボール]]|category=アメリカンフットボール}}<!-- -->|アヤメ科={{#switch:{{{2}}}|label=[[:w:アヤメ科|アヤメ科]]|category=アヤメ科}}<!-- -->|アライグマ科|procyonid={{#switch:{{{2}}}|label=[[:w:アライグマ科|アライグマ科]]|category=アライグマ科}}<!-- -->|アラビア語|Arabic={{#switch:{{{2}}}|label=アラビア語関連|category=アラビア語に関連する語}}<!-- -->|アラビア神話|Arabian mythology={{#swtich:{{{2}}}|label=[[w:アラビア神話|アラビア神話]]|category=アラビア神話}}<!-- -->|蟻|ant={{#switch:{{{2}}}|label=[[あり|蟻]]|category=蟻}}<!-- -->|アルジェリア変種|Algeria={{#switch:{{{2}}}|label=アルジェリア|category=アルジェリア{{language|{{{lang}}}}}}}<!-- -->|アルスター|Ulster={{#switch:{{{2}}}|label=アルスター|category=アルスター方言}}<!-- -->|アルゼンチンスペイン語|アルゼンチン変種|Argentina={{#switch:{{{2}}}|label=アルゼンチン|category=アルゼンチンスペイン語}}<!-- -->|アルティメット|ultimate={{#switch:{{{2}}}|label=[[アルティメット]]|category=アルティメット}}<!-- -->|アングリア|Anglian={{#switch:{{{2}}}|label=アングリア|category=アングリア方言}}<!-- -->|アングロ・ノルマン|Anglo-Norman={{#switch:{{{2}}}|label=アングロ・ノルマン|category=アングロ・ノルマン語}}<!-- -->|安渓|Anxi Hokkien|Anxi={{#switch:{{{2}}}|label=安渓|category=方言}}<!-- -->|鮟鱇={{#switch:{{{2}}}|label=[[鮟鱇]]|category=鮟鱇}}<!-- -->|アンダルシア|Andalucía={{#switch:{{{2}}}|label=[[:w:アンダルシア方言|アンダルシア]]|category=アンダルシア方言}}<!-- -->|居合道|iaido={{#switch:{{{2}}}|label=[[居合道]]|category=居合道}}<!-- -->|イェ方言|Ijekavian={{#switch:{{{2}}}|label=イェ方言|category=イェ方言}}<!-- -->|イオニア方言|イオニア|Ionic|ion={{#switch:{{{2}}}|label=イオニア方言|category=イオニア方言}}<!-- -->|医学|medicine|Medical|medical={{#switch:{{{2}}}|label=[[医学]]|category=医学}}<!-- -->|怒り|anger={{#switch:{{{2}}}|label=怒り|category=怒り}}<!-- -->|イギリス|United Kingdom={{#switch:{{{2}}}|label=[[イギリス]]|category=イギリス}}<!-- -->|イギリス系パキスタン英語|イギリス系パキスタン|British Pakistani={{#switch:{{{2}}}|label=イギリス系パキスタン英語|category=イギリス系パキスタン{{language|{{{lang}}}}}}}<!-- -->|囲碁|go={{#switch:{{{2}}}|label=[[囲碁]]|category=囲碁}}<!-- -->|椅子|chair={{#switch:{{{2}}}|label=[[椅子]]|category=椅子}}<!-- -->|イスカテペク|Ixcatepec={{#switch:{{{2}}}|label=イスカテペク|category=イスカテペク方言}}<!-- -->|イスラエル変種|Israel={{#switch:{{{2}}}|label=イスラエル|category=イスラエル{{language|{{{lang}}}}}}}<!-- -->|イスラム教|Islam|islam={{#switch:{{{2}}}|label=[[イスラム教]]|category=イスラム教}}<!-- -->|位相空間論={{#switch:{{{2}}}|label=[[:w:位相空間論|位相空間論]]|category=位相空間論}}<!-- -->|イタチ科|mustelid={{#switch:{{{2}}}|label=[[:w:イタチ科|イタチ科]]|category=イタチ科}}<!-- -->|イタリア={{#switch:{{{2}}}|label=[[イタリア]]|category=イタリア}}<!-- -->|イタリア語={{#switch:{{{2}}}|label=イタリア語関連|category=イタリア語に関連する語}}<!-- -->|イタリア変種|Italian|Italy={{#switch:{{{2}}}|label=イタリア|category=イタリア{{language|{{{lang}}}}}}}<!-- -->|イデオロギー|ideology={{#switch:{{{2}}}|label=[[イデオロギー]]|category=イデオロギー}}<!-- -->|遺伝学|genetics|genetics+={{#switch:{{{2}}}|label=[[遺伝学]]|category=遺伝学}}<!-- -->|犬|dog={{#switch:{{{2}}}|label=[[いぬ|犬]]|category=犬}}<!-- -->|イヌ科|canid={{#switch:{{{2}}}|label=[[:w:イヌ科|イヌ科]]|category=イヌ科}}<!-- -->|イネ科={{#switch:{{{2}}}|label=[[:w:イネ科|イネ科]]|category=イネ科}}<!-- -->|イネ目={{#switch:{{{2}}}|label=[[:w:イネ目|イネ目]]|category=イネ目}}<!-- -->|イノシシ科={{#switch:{{{2}}}|label=[[:w:イノシシ科|イノシシ科]]|category=イノシシ科}}<!-- -->|イ方言|Ikavian={{#switch:{{{2}}}|label=イ方言|category=イ方言}}<!-- -->|イラン神話|Iranian mythology={{#switch:{{{2}}}|label=[[w:イラン神話|イラン神話]]|category:イラン神話}}<!-- -->|イラン方言|Iran={{#switch:{{{2}}}|label=イラン|category=イラン方言}}<!-- -->|医療|healthcare={{#switch:{{{2}}}|label=[[医療]]|category=医療}}<!-- -->|医療関連の職業|healthcare occupation={{#switch:{{{2}}}|label=医療関連の職業|category=医療関連の職業}}<!-- -->|医療機器|medical equipment={{#switch:{{{2}}}|label=医療機器|category=医療機器}}<!-- -->|衣類|clothing={{#switch:{{{2}}}|label=[[衣類]]|category=衣類}}<!-- -->|色|color={{#switch:{{{2}}}|label=[[いろ|色]]|category=色}}<!-- -->|イロン|Iron={{#switch:{{{2}}}|label=イロン方言|category=イロン方言}}<!-- -->|イングランド北部|英北部|North England|Northern England={{#switch:{{{2}}}|label=イングランド北部|category=イングランド北部方言}}<!-- -->|イングランド南部|英南部|South England|Southern England|Southern English={{#switch:{{{2}}}|label=イングランド南部|category=イングランド南部方言}}<!-- -->|隠語={{#switch:{{{2}}}|label=[[隠語]]|category=俗語}}<!-- -->|印刷|printing={{#switch:{{{2}}}|label=[[印刷]]|category=印刷}}<!-- -->|飲食|食事={{#switch:{{{2}}}|label=[[飲食]]|category=飲食}}<!-- -->|飲食店|restaurant={{#switch:{{{2}}}|label=[[飲食店]]|category=飲食店}}<!-- -->|インターネット|internet|Internet={{#switch:{{{2}}}|label=[[インターネット]]|category=インターネット}}<!-- -->|インターネットスラング|internet slang|Internet slang={{#switch:{{{2}}}|label=[[:w:インターネットスラング|インターネットスラング]]|category=インターネットスラング}}<!-- -->|インド|India={{#switch:{{{2}}}|label=[[インド]]|category=インド}}<!-- -->|インド英語|India={{#switch:{{{2}}}|label=[[:w:インド英語|印]]|category=インド英語}}<!-- -->|インド史={{#switch:{{{2}}}|label=[[:w:インド史|インド史]]|category=インド史}}<!-- -->|インド神話|インド神話|Hindu god|Hindu mythology={{#switch:{{{2}}}|label=[[:w:インド神話|インド神話]]|category=インド神話}}<!-- -->|インドタミル語|インドタミル語|Indian Tamil|Indian Tamil={{#switch:{{{2}}}|label=インド|category=インドタミル語}}<!-- -->|インド変種|Indian={{#switch:{{{2}}}|label=インド|category=インド{{language|{{{lang}}}}}}}<!-- -->|韻律|prosody={{#switch:{{{2}}}|label=[[韻律]]|category=韻律}}<!-- -->|飲料|beverage={{#switch:{{{2}}}|label=[[飲料]]|category=飲料}}<!-- -->|ヴァラダール|Vallader={{#switch:{{{2}}}|label=ヴァラダール|category=ヴァラダール}}<!-- -->|ウィーゼマン式綴り|ウィーゼマン式|ウィーゼマン|Wiesemann={{#switch:{{{2}}}|label=ウィーゼマン式綴り|category=ウィーゼマン式綴り}}<!-- -->|ヴィーディングハルデ|Wiedingharde={{#switch:{{{2}}}|label=ヴィーディングハルデ|category=ヴィーディングハルデ方言}}<!-- -->|ウィキ|wiki={{#switch:{{{2}}}|label=[[ウィキ]]|category=ウィキ}}<!-- -->|ウイルス|virus={{#switch:{{{2}}}|label=[[ウイルス]]|category=ウイルス}}<!-- -->|ウイルス学|virology={{#switch:{{{2}}}|label=[[ウイルス学]]|category=ウイルス学}}<!-- -->|ウイルス性疾患|viral disease|vital disease|vital diseases={{#switch:{{{2}}}|label=ウイルス性疾患|category=ウイルス性疾患}}<!-- -->|ウィンタースポーツ={{#switch:{{{2}}}|label=[[ウィンタースポーツ]]|category=ウィンタースポーツ}}<!-- -->|ウィンドサーフィン|windsurfing={{#switch:{{{2}}}|label=[[ウィンドサーフィン]]|category=ウィンドサーフィン}}<!-- -->|ウーリ語|ウーリ|Uri|Urseren={{#switch:{{{2}}}|label=ウーリ語|category=ウーリ語}}<!-- -->|ウェイクボード|wakeboarding={{#switch:{{{2}}}|label=[[ウェイクボード]]|category=ウェイクボード}}<!-- -->|ウェールズ北部|North Wales={{#switch:{{{2}}}|label=ウェールズ北部|category=ウェールズ北部方言}}<!-- -->|ウェールズ南部|South Wales={{#switch:{{{2}}}|label=ウェールズ南部|category=ウェールズ南部方言}}<!-- -->|ウェセックス|West Saxon={{#switch:{{{2}}}|label=ウェセックス方言|category=ウェセックス方言}}<!-- -->|ウォータースポーツ={{#switch:{{{2}}}|label=[[ウォータースポーツ]]|category=ウォータースポーツ}}<!-- -->|ウクライナ|Ukraine={{#switch:{{{2}}}|label=[[ウクライナ]]|category=ウクライナ}}<!-- -->|ウクライナ語|Ukranian={{#swithc:{{{2}}}|label=ウクライナ語関連|category=ウクライナ語に関連する語}}<!-- -->|ウクライナ変種={{#switch:{{{2}}}|label=ウクライナ|category=ウクライナ{{language|{{{lang}}}}}}}<!-- -->|ウクライナ史={{#switch:{{{2}}}|label=ウクライナ史|category=ウクライナ史}}<!-- -->|ウコギ科={{#switch:{{{2}}}|label=[[:w:ウコギ科|ウコギ科]]|category=ウコギ科}}<!-- -->|牛={{#switch:{{{2}}}|label=[[うし|牛]]|category=牛}}<!-- -->|ウシ科={{#switch:{{{2}}}|label=[[:w:ウシ科|ウシ科]]|category=ウシ科}}<!-- -->|宇宙船|spacecraft={{#switch:{{{2}}}|label=宇宙船|category=宇宙船}}<!-- -->|鰻|eel={{#switch:{{{2}}}|label=[[うなぎ|鰻]]|category=鰻}}<!-- -->|馬|horse={{#switch:{{{2}}}|label=[[うま|馬]]|category=馬}}<!-- -->|ウマ科={{#switch:{{{2}}}|label=[[:w:ウマ科|ウマ科]]|category=ウマ科}}<!-- -->|海鳥={{#switch:{{{2}}}|label=[[海鳥]]|category=海鳥}}<!-- -->|ウリ科={{#switch:{{{2}}}|label=[[:w:ウリ科|ウリ科]]|category=ウリ科}}<!-- -->|ウルグアイスペイン語|ウルグアイ変種|Uruguay={{#switch:{{{2}}}|label=ウルグアイ|category=ウルグアイスペイン語}}<!-- -->|ウルシ科={{#switch:{{{2}}}|label=[[:w:ウルシ科|ウルシ科]]|category=ウルシ科}}<!-- -->|運動|exercise={{#switch:{{{2}}}|label=[[運動]]|category=運動}}<!-- -->|運動選手|athlete={{#switch:{{{2}}}|label=運動選手|category=運動選手}}<!-- -->|映画|film={{#switch:{{{2}}}|label=[[映画]]|category=映画}}<!-- -->|英語|English={{#switch:{{{2}}}|label=英語関連|category=英語に関連する語}}<!-- -->|英国英語|British|British spelling|Britain|Commonwealth spelling|UK={{#switch:{{{2}}}|label=[[:w:イギリス英語|イギリス]]|category=英国英語}}<!-- -->|衛生|衛生学|hygiene|medical hygiene={{#switch:{{{2}}}|label=[[衛生]]|category=衛生}}<!-- -->|栄養|栄養学|nutrition={{#switch:{{{2}}}|label=[[栄養]]|category=栄養}}<!-- -->|英連邦|Commonwealth={{#switch:{{{2}}}|label=英連邦|category=英連邦英語}}<!-- -->|疫学|epidemiology={{#switch:{{{2}}}|label=[[疫学]]|category=疫学}}<!-- -->|エクアドルスペイン語|エクアドル変種|Ecuador={{#switch:{{{2}}}|label=エクアドル|category=エクアドルスペイン語}}<!-- -->|エジプト神話|エジプト神話|Egyptian god|Egyptian mythology={{#switch:{{{2}}}|label=[[:w:エジプト神話|エジプト神話]]|category=エジプト神話}}<!-- -->|エストニア南方言|South Estonian={{#switch:{{{2}}}|label=エストニア南方言|category=エストニア南方言}}<!-- -->|エネルギー|energy={{#switch:{{{2}}}|label=[[エネルギー]]|category=エネルギー}}<!-- -->|エピック方言|エピック|Epic|epi={{#switch:{{{2}}}|label=エピック方言|category=エピック方言}}<!-- -->|エ方言|Ekavian={{#switch:{{{2}}}|label=エ方言|category=エ方言}}<!-- -->|エマージェンシー・サービス={{#switch:{{{2}}}|label=エマージェンシー・サービス|category=エマージェンシー・サービス}}<!-- -->|エメギル|Emegir={{#switch:{{{2}}}|label=エメギル|category=エメギル}}<!-- -->|エメサル|Emesal={{#switch:{{{2}}}|label=エメサル|category=エメサル}}<!-- -->|エルサルバドルスペイン語|エルサルバドル変種|El Salvador={{#switch:{{{2}}}|label=エルサルバドル|category=エルサルバドルスペイン語}}<!-- -->|婉曲表現|婉曲|euphemism|euphemistic={{#switch:{{{2}}}|label=婉曲表現|category=婉曲表現}}<!-- -->|園芸|horticulture={{#switch:{{{2}}}|label=[[園芸]]|category=園芸}}<!-- -->|演劇|theater={{#switch:{{{2}}}|label=[[演劇]]|category=演劇}}<!-- -->|延辺方言|延辺|Yanbian={{#switch:{{{2}}}|label=延辺方言|category=延辺方言}}<!-- -->|オイペン|Eupen={{#switch:{{{2}}}|label=オイペン|category=オイペン方言}}<!-- -->|応用科学={{#switch:{{{2}}}|label=応用科学|category=応用科学}}<!-- -->|オーヴェルニュ|Auvergnat={{#switch:{{{2}}}|label=[[:w:オーヴェルニュ語|オーヴェルニュ]]|category=オーヴェルニュ語}}<!-- -->|狼|wolf={{#switch:{{{2}}}|label=[[おおかみ|狼]]|category=狼}}<!-- -->|オークニー|Orkney={{#switch:{{{2}}}|label=オークニー|category=オークニー方言}}<!-- -->|オーストラリア|Australia={{#switch:{{{2}}}|label=オーストラリア|category=オーストラリア}}<!-- -->|オーストラリア変種|AU|Australian={{#switch:{{{2}}}|label=オーストラリア|category=オーストラリア{{language|{{{lang}}}}}}}<!-- -->|オーストリア変種|Austria|Austrian={{#switch:{{{2}}}|label=オーストリア|category=オーストリア{{language|{{{lang}}}}}}}<!-- -->|オーストラリアンフットボール|Australian rules football={{#switch:{{{2}}}|label=[[:w:オーストラリアンフットボール|オーストラリアンフットボール]]|category=オーストラリアンフットボール}}<!-- -->|オートバイ|motorcycle={{#switch:{{{2}}}|label=[[オートバイ]]|category=オートバイ}}<!-- -->|オートバイ競技|motorcycle racing={{#switch:{{{2}}}|label=オートバイ競技|category=オートバイ競技}}<!-- -->|オカルト|occult={{#switch:{{{2}}}|label=[[オカルト]]|category=オカルト}}<!-- -->|オセロ={{#switch:{{{2}}}|label=[[オセロ]]|category=オセロ}}<!-- -->|オセアニア史={{#switch:{{{2}}}|label=オセアニア史|category=オセアニア史}}<!-- -->|オセアニアの国|オセアニアの国名={{#switch:{{{2}}}|label=オセアニアの国|category=オセアニアの国名}}<!-- -->|オタワ峡谷|Ottawa Valley={{#switch:{{{2}}}|label=オタワ峡谷|category=オタワ峡谷{{language|{{{lang}}}}}}}<!-- -->|オトギリソウ科={{#switch:{{{2}}}|label=[[:w:オトギリソウ科|オトギリソウ科]]|category=オトギリソウ科}}<!-- -->|斧道|onodo={{#switch:{{{2}}}|label=[[斧道]]|category=斧道}}<!-- -->|オノマトペ|onomatopée|onomatopoeia={{#switch:{{{2}}}|label=[[オノマトペ]]|category=オノマトペ}}<!-- -->|オランダ={{#switch:{{{2}}}|label=[[オランダ]]|category=オランダ}}<!-- -->|オランダ語|Dutch={{#switch:{{{2}}}|label=オランダ語関連|category=オランダ語に関連する語}}<!-- -->|オランダ変種|Netherland|Netherlands={{#switch:{{{2}}}|label=オランダ|category=オランダ{{language|{{{lang}}}}}}}<!-- -->|オルムルム|Ormulum={{#switch:{{{2}}}|label=[[:w:オルムルム|オルムルム]]|category=オルムルムの綴り}}<!-- -->|音韻論|phonology={{#switch:{{{2}}}|label=[[音韻論]]|category=音韻論}}<!-- -->|音楽|music={{#switch:{{{2}}}|label=[[音楽]]|category=音楽}}<!-- -->|音楽家|musician={{#switch:{{{2}}}|label=音楽家|category=音楽家}}<!-- -->|音声学|phonetics={{#switch:{{{2}}}|label=[[音声学]]|category=音声学}}<!-- -->|オンタリオ|Ontario={{#switch:{{{2}}}|label=オンタリオ|category=オンタリオ方言}}<!-- -->|陰陽道={{#switch:{{{2}}}|label=陰陽道|category=陰陽道}}<!-- -->|蛾|ガ={{#switch:{{{2}}}|label=ガ|category=ガ}}<!-- -->|カードゲーム|card game|card games|cards={{#switch:{{{2}}}|label=カードゲーム|category=カードゲーム}}<!-- -->|カーリング|curling={{#switch:{{{2}}}|label=カーリング|category=カーリング}}<!-- -->|ガーンジー|Guernsey={{#switch:{{{2}}}|label=ガーンジー|category=ガーンジー島語}}<!-- -->|海牛類={{#switch:{{{2}}}|label=海牛類|category=海牛類}}<!-- -->|会計|accounting={{#switch:{{{2}}}|label=会計|category=会計}}<!-- -->|外交={{#switch:{{{2}}}|label=外交|category=外交}}<!-- -->|外肛動物={{#switch:{{{2}}}|label=外肛動物|category=外肛動物}}<!-- -->|海事|nautical={{#switch:{{{2}}}|label=海事|category=海事}}<!-- -->|解析学|mathematical analysis={{#switch:{{{2}}}|label=解析学|category=解析学}}<!-- -->|解析力学|analytical mechanics={{#switch:{{{2}}}|label=解析力学|category=解析力学}}<!-- -->|カイピラ|Caipira={{#switch:{{{2}}}|label=カイピラ方言|category=方言}}<!-- -->|解剖学|anatomy={{#switch:{{{2}}}|label=解剖学|category=解剖学}}<!-- -->|カイ方言|Kajkavian={{#switch:{{{2}}}|label=カイ方言|category=カイ方言}}<!-- -->|海綿動物={{#switch:{{{2}}}|label=海綿動物|category=海綿動物}}<!-- -->|海洋学|oceanography={{#switch:{{{2}}}|label=海洋学|category=海洋学}}<!-- -->|海洋名|ocean|sea={{#switch:{{{2}}}|label=海洋名|category=海洋名}}<!-- -->|貝類学={{#switch:{{{2}}}|label=貝類学|category=貝類学}}<!-- -->|蛙|frog={{#switch:{{{2}}}|label=蛙|category=蛙}}<!-- -->|科学|science|sciences={{#switch:{{{2}}}|label=科学|category=科学}}<!-- -->|化学|chemistry={{#switch:{{{2}}}|label=化学|category=化学}}<!-- -->|雅楽={{#switch:{{{2}}}|label=雅楽|category=雅楽}}<!-- -->|科学技術={{#switch:{{{2}}}|label=科学技術|category=科学技術}}<!-- -->|科学者|scientist={{#switch:{{{2}}}|label=科学者|category=科学者}}<!-- -->|化学物質={{#switch:{{{2}}}|label=化学物質|category=化学物質}}<!-- -->|化学プロセス|chemical process|chemical processes={{#switch:{{{2}}}|label=化学プロセス|category=化学プロセス}}<!-- -->|火器|firearm|firearms={{#switch:{{{2}}}|label=火器|category=火器}}<!-- -->|カキノキ科={{#switch:{{{2}}}|label=カキノキ科|category=カキノキ科}}<!-- -->|蝸牛|snail={{#switch:{{{2}}}|label=蝸牛|category=蝸牛}}<!-- -->|格|case={{#switch:{{{2}}}|label=格|category=格}}<!-- -->|家具|furniture={{#switch:{{{2}}}|label=家具|category=家具}}<!-- -->|学位|academic degree|academic degrees={{#switch:{{{2}}}|label=学位|category=学位}}<!-- -->|格式ばった表現|格式|公式|formal={{#switch:{{{2}}}|label=格式ばった表現|category=格式ばった表現}}<!-- -->|格助詞={{#switch:{{{2}}}|label=格助詞|category=助詞 格助詞}}<!-- -->|革翅類={{#switch:{{{2}}}|label=革翅類|category=革翅類}}<!-- -->|格闘技={{#switch:{{{2}}}|label=格闘技|category=格闘技}}<!-- -->|核兵器|nuclear weapon|Nuclear weapon={{#switch:{{{2}}}|label=核兵器|category=核兵器}}<!-- -->|学名={{#switch:{{{2}}}|label=学名|category=学名}}<!-- -->|確率論={{#switch:{{{2}}}|label=確率論|category=確率論}}<!-- -->|蜉蝣={{#switch:{{{2}}}|label=蜉蝣|category=蜉蝣}}<!-- -->|カサレヴサ|katharevousa|Katharevousa={{#switch:{{{2}}}|label=カサレヴサ|category=カサレヴサ}}<!-- -->|火山学|volcanology|vulcanology={{#switch:{{{2}}}|label=火山学|category=火山学}}<!-- -->|可算名詞|可算|countable|countable+={{#switch:{{{2}}}|label=可算|category=可算名詞}}<!-- -->|菓子|sweets|dessert={{#switch:{{{2}}}|label=菓子|category=菓子}}<!-- -->|果実|fruit|fruits={{#switch:{{{2}}}|label=果実|category=果実}}<!-- -->|ガスコーニュ語|ガスコーニュ|Gascon|Gascony={{#switch:{{{2}}}|label=ガスコーニュ|category=ガスコーニュ語}}<!-- -->|風|wind={{#switch:{{{2}}}|label=風|category=風}}<!-- -->|河川名|河川|river={{#switch:{{{2}}}|label=河川名|category=河川名}}<!-- -->|家族|family={{#switch:{{{2}}}|label=家族|category=家族}}<!-- -->|カダヤシ目={{#switch:{{{2}}}|label=カダヤシ目|category=カダヤシ目}}<!-- -->|カタバミ科={{#switch:{{{2}}}|label=カタバミ科|category=カタバミ科}}<!-- -->|カタバミ目={{#switch:{{{2}}}|label=カタバミ目|category=カタバミ目}}<!-- -->|楽器|musical instrument={{#switch:{{{2}}}|label=楽器|category=楽器}}<!-- -->|学校|school={{#switch:{{{2}}}|label=学校|category=学校}}<!-- -->|活動体|animate={{#switch:{{{2}}}|label=活動体|category=活動体}}<!-- -->|活版印刷|typography={{#switch:{{{2}}}|label=活版印刷|category=活版印刷}}<!-- -->|ガッルーラ|Gallurese={{#switch:{{{2}}}|label=ガッルーラ|category=ガッルーラ・サルデーニャ語}}<!-- -->|カトリック|Catholicism|Catholic|katholiek|Roman Catholic={{#switch:{{{2}}}|label=カトリック|category=カトリック}}<!-- -->|カナダ|🇨🇦={{#switch:{{{2}}}|label=カナダ|category=カナダ}}<!-- -->|カナダ大西洋州|大西洋カナダ|Atlantic Canada={{#switch:{{{2}}}|label=カナダ大西洋州|category=大西洋カナダ{{language|{{{lang}}}}}}}<!-- -->|カナダ変種|Canada|Canadian|CA|CAN={{#switch:{{{2}}}|label=カナダ|category=カナダ{{language|{{{lang}}}}}}}<!-- -->|カナディアンフットボール|Canadian football={{#switch:{{{2}}}|label=カナディアンフットボール|category=カナディアンフットボール}}<!-- -->|カナリー諸島|Canarias={{#switch:{{{2}}}|label=カナリー諸島|category=カナリー諸島方言}}<!-- -->|蟹|crab={{#switch:{{{2}}}|label=蟹|category=蟹}}<!-- -->|カヌースポーツ|canoeing={{#switch:{{{2}}}|label=カヌースポーツ|category=カヌースポーツ}}<!-- -->|カバディ|kabaddi={{#switch:{{{2}}}|label=カバディ|category=カバディ}}<!-- -->|カバノキ科|kabaddi={{#switch:{{{2}}}|label=カバノキ科|category=カバノキ科}}<!-- -->|歌舞伎|kabuki={{#switch:{{{2}}}|label=歌舞伎|category=歌舞伎}}<!-- -->|被り物|帽子|headwear={{#switch:{{{2}}}|label=被り物|category=被り物}}<!-- -->|花粉学|palynology={{#switch:{{{2}}}|label=花粉学|category=花粉学}}<!-- -->|カポエイラ|capoeira={{#switch:{{{2}}}|label=カポエイラ|category=カポエイラ}}<!-- -->|紙|paper={{#switch:{{{2}}}|label=紙|category=紙}}<!-- -->|神|deity={{#switch:{{{2}}}|label=神|category=神}}<!-- -->|髪|hair={{#switch:{{{2}}}|label=髪|category=髪}}<!-- -->|亀|turtle={{#switch:{{{2}}}|label=亀|category=亀}}<!-- -->|カラス目={{#switch:{{{2}}}|label=カラス目|category=カラス目}}<!-- -->|空手道|空手|karate={{#switch:{{{2}}}|label=空手道|category=空手道}}<!-- -->|カランガ方言|カランガ|Karanga={{#switch:{{{2}}}|label=カランガ|category=カランガ方言}}<!-- -->|カルコーフォロ語|カルコーフォロ|Carcoforo={{#switch:{{{2}}}|label=カルコーフォロ語|category=カルコーフォロ語}}<!-- -->|カルボン酸|Carboxylic acid={{#switch:{{{2}}}|label=カルボン酸|category=カルボン酸}}<!-- -->|かわうそ={{#switch:{{{2}}}|label=かわうそ|category=かわうそ}}<!-- -->|眼科学|ophthalmology={{#switch:{{{2}}}|label=眼科学|category=眼科学}}<!-- -->|カンガルー|macropod|macropods={{#switch:{{{2}}}|label=カンガルー|category=カンガルー}}<!-- -->|環境|environment={{#switch:{{{2}}}|label=環境|category=環境}}<!-- -->|咸鏡|함경|Hamgyeong={{#switch:{{{2}}}|label=咸鏡|category=六鎮方言}}<!-- -->|玩具|おもちゃ|toy|toys={{#switch:{{{2}}}|label=玩具|category=玩具}}<!-- -->|環形動物={{#switch:{{{2}}}|label=環形動物|category=環形動物}}<!-- -->|看護学|nursing={{#switch:{{{2}}}|label=看護学|category=看護学}}<!-- -->|韓国={{#switch:{{{2}}}|label=韓国|category=韓国}}<!-- -->|韓国語|South Korea={{#switch:{{{2}}}|label=韓国語|category=韓国語}}<!-- -->|韓国の都市|city in South Korea={{#switch:{{{2}}}|label=韓国の都市|category=韓国の都市}}<!-- -->|関係詞|relative={{#switch:{{{2}}}|label=関係詞|category=関係詞}}<!-- -->|関数|function={{#switch:{{{2}}}|label=関数|category=関数}}|<!-- -->|関数解析学|関数解析|函数解析学|函数解析|位相解析学|位相解析|functional analysis={{#switch:{{{2}}}|label=関数解析学|category=関数解析学}}|<!-- -->|感情|emotion={{#switch:{{{2}}}|label=感情|category=感情}}<!-- -->|感情動詞={{#switch:{{{2}}}|label=感情動詞|category=感情動詞}}<!-- -->|岩石|rock={{#switch:{{{2}}}|label=岩石|category=岩石}}<!-- -->|岩石学|petrology={{#switch:{{{2}}}|label=岩石学|category=岩石学}}<!-- -->|間投詞句={{#switch:{{{2}}}|label=間投詞句|category=成句 間投詞句}}<!-- -->|咸南|咸鏡南道|함남|South Hamgyeong={{#switch:{{{2}}}|label=咸南|category=六鎮方言}}<!-- -->|カンピダーノ|Campidanese={{#switch:{{{2}}}|label=カンピダーノ|category=カンピダーノ・サルデーニャ語}}<!-- -->|漢文={{#switch:{{{2}}}|label=漢文|category=漢文}}<!-- -->|咸北|咸鏡北道|함북|North Hamgyeong={{#switch:{{{2}}}|label=咸北|category=六鎮方言}}<!-- -->|カンボジア変種|Cambodia={{#switch:{{{2}}}|label=カンボジア|category=カンボジア{{language|{{{lang}}}}}}}<!-- -->|換喩|metonymy|metonymic|metonymically={{#switch:{{{2}}}|label=[[換喩]]|category=換喩}}<!-- -->|慣用句={{#switch:{{{2}}}|label=慣用句|category=慣用句}}<!-- -->|慣用的表現|idiomatic={{#switch:{{{2}}}|label=慣用的表現|category=慣用的表現}}<!-- -->|カンラン科={{#switch:{{{2}}}|label=カンラン科|category=カンラン科}}<!-- -->|木|tree={{#switch:{{{2}}}|label=木|category=木}}<!-- -->|機械|machine={{#switch:{{{2}}}|label=機械|category=機械}}<!-- -->|機械工学|mechanical engineering={{#switch:{{{2}}}|label=機械工学|category=機械工学}}<!-- -->|幾何学|geometry={{#switch:{{{2}}}|label=幾何学|category=幾何学}}<!-- -->|器官|organ={{#switch:{{{2}}}|label=器官|category=器官}}<!-- -->|器官系|organ system={{#switch:{{{2}}}|label=器官系|category=器官系}}<!-- -->|鰭脚類={{#switch:{{{2}}}|label=鰭脚類|category=鰭脚類}}<!-- -->|キク科={{#switch:{{{2}}}|label=キク科|category=キク科}}<!-- -->|キク目={{#switch:{{{2}}}|label=キク目|category=キク目}}<!-- -->|季語|kigo={{#switch:{{{2}}}|label=季語|category=季語}}<!-- -->|季語 春|春={{#switch:{{{2}}}|label=春の季語|category=季語 春}}<!-- -->|季語 夏|夏={{#switch:{{{2}}}|label=夏の季語|category=季語 夏}}<!-- -->|季語 秋|秋={{#switch:{{{2}}}|label=秋の季語|category=季語 秋}}<!-- -->|季語 冬|冬={{#switch:{{{2}}}|label=冬の季語|category=季語 冬}}<!-- -->|季語 三春|三春={{#switch:{{{2}}}|label=三春の季語|category=季語 三春}}<!-- -->|季語 三夏|三夏={{#switch:{{{2}}}|label=三夏の季語|category=季語 三夏}}<!-- -->|季語 三秋|三秋={{#switch:{{{2}}}|label=三秋の季語|category=季語 三秋}}<!-- -->|季語 三冬|三冬={{#switch:{{{2}}}|label=三冬の季語|category=季語 三冬}}<!-- -->|季語 初春|初春={{#switch:{{{2}}}|label=初春の季語|category=季語 初春}}<!-- -->|季語 初夏|初夏={{#switch:{{{2}}}|label=初夏の季語|category=季語 初夏}}<!-- -->|季語 初秋|初秋={{#switch:{{{2}}}|label=初秋の季語|category=季語 初秋}}<!-- -->|季語 初冬|初冬={{#switch:{{{2}}}|label=初冬の季語|category=季語 初冬}}<!-- -->|季語 仲春|仲春={{#switch:{{{2}}}|label=仲春の季語|category=季語 仲春}}<!-- -->|季語 仲夏|仲夏={{#switch:{{{2}}}|label=仲夏の季語|category=季語 仲夏}}<!-- -->|季語 仲秋|仲秋={{#switch:{{{2}}}|label=仲秋の季語|category=季語 仲秋}}<!-- -->|季語 仲冬|仲冬={{#switch:{{{2}}}|label=仲冬の季語|category=季語 仲冬}}<!-- -->|季語 晩春|晩春={{#switch:{{{2}}}|label=晩春の季語|category=季語 晩春}}<!-- -->|季語 晩夏|晩夏={{#switch:{{{2}}}|label=晩夏の季語|category=季語 晩夏}}<!-- -->|季語 晩秋|晩秋={{#switch:{{{2}}}|label=晩秋の季語|category=季語 晩秋}}<!-- -->|季語 晩冬|晩冬={{#switch:{{{2}}}|label=晩冬の季語|category=季語 晩冬}}<!-- -->|季語 新年|新年|新春={{#switch:{{{2}}}|label=新年の季語|category=季語 新年}}<!-- -->|気候|気候学|climatology={{#switch:{{{2}}}|label=気候|category=気候}}<!-- -->|疑似科学|pseudoscience={{#switch:{{{2}}}|label=疑似科学|category=疑似科学}}<!-- -->|キジカクシ科={{#switch:{{{2}}}|label=キジカクシ科|category=キジカクシ科}}<!-- -->|キジカクシ目={{#switch:{{{2}}}|label=キジカクシ目|category=キジカクシ目}}<!-- -->|技術|technology={{#switch:{{{2}}}|label=技術|category=技術}}<!-- -->|気象|気象学|meteorology|weather={{#switch:{{{2}}}|label=気象|category=気象}}<!-- -->|基数|cardinal|cardinal number|cardinal numbers={{#switch:{{{2}}}|label=基数|category=基数}}<!-- -->|季節|season|seasons={{#switch:{{{2}}}|label=季節|category=季節}}<!-- -->|寄生虫学|parasitology={{#switch:{{{2}}}|label=寄生虫学|category=寄生虫学}}<!-- -->|北アイルランド|Northern Ireland={{#switch:{{{2}}}|label=北アイルランド|category=北アイルランド方言}}<!-- -->|北アゼルバイジャン|North Azerbaijani={{#switch:{{{2}}}|label=北アゼルバイジャン|category=北アゼルバイジャン語}}<!-- -->|北アメリカ={{#switch:{{{2}}}|label=北アメリカ|category=北アメリカ}}<!-- -->|北アメリカ史={{#switch:{{{2}}}|label=北アメリカ史|category=北アメリカ史}}<!-- -->|北ゲルマン|North Germanic={{#switch:{{{2}}}|label=北ゲルマン|category=北ゲルマン方言}}<!-- -->|北朝鮮={{#switch:{{{2}}}|label=北朝鮮|category=北朝鮮}}<!-- -->|北ベトナム|northern Vietnam|Northern Vietnam|North Vietnam ={{#switch:{{{2}}}|label=北ベトナム|category=北部方言}}<!-- -->|北ポタワトミ|northern Potawatomi={{#switch:{{{2}}}|label=北ポタワトミ|category=北ポタワトミ語}}<!-- -->|北ヨーロッパ史={{#switch:{{{2}}}|label=北ヨーロッパ史|category=北ヨーロッパ史}}<!-- -->|キックボクシング|kickboxing={{#switch:{{{2}}}|label=キックボクシング|category=キックボクシング}}<!-- -->|キッチン器具|kitchenware={{#switch:{{{2}}}|label=キッチン器具|category=キッチン器具}}<!-- -->|狐|fox={{#switch:{{{2}}}|label=狐|category=狐}}<!-- -->|奇蹄類|odd-toed ungulate={{#switch:{{{2}}}|label=奇蹄類|category=奇蹄類}}<!-- -->|記念日|observance={{#switch:{{{2}}}|label=記念日|category=記念日}}<!-- -->|疑問詞|interrogative={{#switch:{{{2}}}|label=疑問詞|category=疑問詞}}<!-- -->|逆成語|逆成|back form|back-form|backform={{#switch:{{{2}}}|label=逆成語|category=逆成語}}<!-- -->|球技|ball game={{#switch:{{{2}}}|label=球技|category=球技}}<!-- -->|救急医療={{#switch:{{{2}}}|label=救急医療|category=救急医療}}<!-- -->|旧国名={{#switch:{{{2}}}|label=旧国名|category=旧国名}}<!-- -->|弓術={{#switch:{{{2}}}|label=弓術|category=弓術}}<!-- -->|旧首都={{#switch:{{{2}}}|label=旧首都|category=旧首都}}<!-- -->|弓道|kyudo={{#switch:{{{2}}}|label=弓道|category=弓道}}<!-- -->|キューバスペイン語|キューバ変種|Cuba={{#switch:{{{2}}}|label=キューバ|category=キューバスペイン語}}<!-- -->|稀用|まれ|rare={{#switch:{{{2}}}|label=まれ|category=稀用}}<!-- -->|教育|education={{#switch:{{{2}}}|label=教育|category=教育}}<!-- -->|教会ラテン語|Ecclesiastical Latin|EL|EL.={{#switch:{{{2}}}|label=[[:w:教会ラテン語|教会ラテン語]]|category=教会ラテン語}}<!-- -->|鋏角類={{#switch:{{{2}}}|label=鋏角類|category=鋏角類}}<!-- -->|狂言|kyogen={{#switch:{{{2}}}|label=狂言|category=狂言}}<!-- -->|共産主義|communism={{#switch:{{{2}}}|label=共産主義|category=共産主義}}<!-- -->|行政|public administration={{#switch:{{{2}}}|label=行政|category=行政}}<!-- -->|キョウチクトウ科={{#switch:{{{2}}}|label=キョウチクトウ科|category=キョウチクトウ科}}<!-- -->|恐怖症|phobia={{#switch:{{{2}}}|label=恐怖症|category=恐怖症}}<!-- -->|恐竜={{#switch:{{{2}}}|label=恐竜|category=恐竜}}<!-- -->|棘皮動物|echinoderm={{#switch:{{{2}}}|label=棘皮動物|category=棘皮動物}}<!-- -->|極限|limit={{#switch:{{{2}}}|label=極限|category=極限}}<!-- -->|魚類学|ichthyology={{#switch:{{{2}}}|label=魚類学|category=魚類学}}<!-- -->|ギリシア|ギリシャ|Greece={{#switch:{{{2}}}|label=ギリシア|category=ギリシア}}<!-- -->|ギリシア語|ギリシャ語|Greek={{#switch:{{{2}}}|label=ギリシア語関連|category=ギリシア語に関連する語}}<!-- -->|ギリシア神話|ギリシャ神話|Greek god|Greek mythology={{#switch:{{{2}}}|label=ギリシア神話|category=ギリシア神話}}<!-- -->|ギリシア正教|ギリシャ正教|Greek Orthodoxy={{#switch:{{{2}}}|label=ギリシャ正教|category=キリスト教}}<!-- -->|キリスト教|Christ|Christian|Christianity={{#switch:{{{2}}}|label=キリスト教|category=キリスト教}}<!-- -->|冀魯官話|Jilu Mandarin|Ji-Lu|Ji-Lu Mandarin|Jilu={{#switch:{{{2}}}|label=冀魯官話|category=冀魯官話}}<!-- -->|禁忌語|禁忌表現|proscribed={{#switch:{{{2}}}|label=禁忌語|category=禁忌語}}<!-- -->|緊急自動車|emergency vehicle={{#switch:{{{2}}}|label=緊急自動車|category=緊急自動車}}<!-- -->|金魚={{#switch:{{{2}}}|label=金魚|category=金魚}}<!-- -->|銀行|bank={{#switch:{{{2}}}|label=銀行|category=銀行}}<!-- -->|近親相姦|incest={{#switch:{{{2}}}|label=近親相姦|category=近親相姦}}<!-- -->|金属|metal={{#switch:{{{2}}}|label=金属|category=金属}}<!-- -->|金属工学={{#switch:{{{2}}}|label=金属工学|category=金属工学}}<!-- -->|近代ラテン語|New Latin|lang:New Latin|NL|NL.={{#switch:{{{2}}}|label=近代ラテン語|category=近代ラテン語}}<!-- -->|キントラノオ目={{#switch:{{{2}}}|label=キントラノオ目|category=キントラノオ目}}<!-- -->|筋肉|muscle={{#switch:{{{2}}}|label=筋肉|category=筋肉}}<!-- -->|金融|finance={{#switch:{{{2}}}|label=金融|category=金融}}<!-- -->|菌類|fungi={{#switch:{{{2}}}|label=菌類|category=菌類}}<!-- -->|菌類学|mycology={{#switch:{{{2}}}|label=菌類学|category=菌類学}}<!-- -->|グアテマラスペイン語|グアテマラ変種|Guatemala={{#switch:{{{2}}}|label=グアテマラ|category=グアテマラスペイン語}}<!-- -->|空間|space={{#switch:{{{2}}}|label=空間|category=空間}}<!-- -->|草|grass={{#switch:{{{2}}}|label=草|category=草}}<!-- -->|クスノキ科={{#switch:{{{2}}}|label=クスノキ科|category=クスノキ科}}<!-- -->|クスノキ目={{#switch:{{{2}}}|label=クスノキ目|category=クスノキ目}}<!-- -->|句前置詞={{#switch:{{{2}}}|label=句前置詞|category=句前置詞}}<!-- -->|クマ科|ursid={{#switch:{{{2}}}|label=クマ科|category=クマ科}}<!-- -->|雲|cloud={{#switch:{{{2}}}|label=雲|category=雲}}<!-- -->|蜘蛛|spider={{#switch:{{{2}}}|label=蜘蛛|category=蜘蛛}}<!-- -->|蜘蛛形類={{#switch:{{{2}}}|label=蜘蛛形類|category=蜘蛛形類}}<!-- -->|クライミング|climbing={{#switch:{{{2}}}|label=クライミング|category=クライミング}}<!-- -->|グラフィカルユーザインタフェース|graphical user interface={{#switch:{{{2}}}|label=グラフィカルユーザインタフェース|category=グラフィカルユーザインタフェース}}<!-- -->|グラフ理論|graph theory={{#switch:{{{2}}}|label=グラフ理論|category=グラフ理論}}<!-- -->|クリケット|cricket={{#switch:{{{2}}}|label=クリケット|category=クリケット}}<!-- -->|クリスマス|christmas|Christmas|CHRISTMAS|xmas|Xmas={{#switch:{{{2}}}|label=クリスマス|category=クリスマス}}<!-- -->|クルミ科={{#switch:{{{2}}}|label=クルミ科|category=クルミ科}}<!-- -->|クレーフェルト|Krefeld={{#switch:{{{2}}}|label=クレーフェルト|category=クレーフェルト方言}}<!-- -->|グレッソネイ|Gressoney={{#switch:{{{2}}}|label=グレッソネイ語|category=グレッソネイ語}}<!-- -->|クロアチア語|Croatia|Croatian={{#switch:{{{2}}}|label=クロアチア|category=クロアチア語}}<!-- -->|クロウメモドキ科={{#switch:{{{2}}}|label=クロウメモドキ科|category=クロウメモドキ科}}<!-- -->|クロッケー|croquet={{#switch:{{{2}}}|label=クロッケー|category=クロッケー}}<!-- -->|クワ科={{#switch:{{{2}}}|label=クワ科|category=クワ科}}<!-- -->|軍艦={{#switch:{{{2}}}|label=軍艦|category=軍艦}}<!-- -->|軍事|military={{#switch:{{{2}}}|label=軍事|category=軍事}}<!-- -->|君主制|monarchy={{#switch:{{{2}}}|label=君主制|category=君主制}}<!-- -->|軍隊の階級|military rank={{#switch:{{{2}}}|label=軍隊の階級|category=軍隊の階級}}<!-- -->|軍用機={{#switch:{{{2}}}|label=軍用機|category=軍用機}}<!-- -->|軍用車両={{#switch:{{{2}}}|label=軍用車両|category=軍用車両}}<!-- -->|経営学|management={{#switch:{{{2}}}|label=経営学|category=経営学}}<!-- -->|京畿|京畿道|경기|Gyeonggi={{#switch:{{{2}}}|label=京畿|category=方言}}<!-- -->|鯨偶蹄類|鯨偶蹄目|even-toed ungulate={{#switch:{{{2}}}|label=鯨偶蹄類|category=鯨偶蹄類}}<!-- -->|敬語|honorific={{#switch:{{{2}}}|label=敬語|category=敬語}}<!-- -->|敬語 丁寧語|丁寧語={{#switch:{{{2}}}|label=丁寧語|category=敬語 丁寧語}}<!-- -->|敬語 尊敬語|尊敬語|reverential={{#switch:{{{2}}}|label=尊敬語|category=敬語 尊敬語}}<!-- -->|敬語 謙譲語|謙譲語|humble={{#switch:{{{2}}}|label=謙譲語|category=敬語 謙譲語}}<!-- -->|尊辞={{#switch:{{{2}}}|label=尊辞|category=敬語 尊辞}}<!-- -->|謙辞={{#switch:{{{2}}}|label=謙辞|category=敬語 謙辞}}<!-- -->|経済|経済学|economy|economics={{#switch:{{{2}}}|label=経済|category=経済}}<!-- -->|警察|police={{#switch:{{{2}}}|label=警察|category=警察}}<!-- -->|計算機科学|computer science={{#switch:{{{2}}}|label=計算機科学|category=計算機科学}}<!-- -->|計算言語学|computational linguistics={{#switch:{{{2}}}|label=計算言語学|category=計算言語学}}<!-- -->|計時|timekeeping={{#switch:{{{2}}}|label=計時|category=計時}}<!-- -->|形式科学|formal science={{#switch:{{{2}}}|label=形式科学|category=形式科学}}<!-- -->|芸術|art|arts={{#switch:{{{2}}}|label=芸術|category=芸術}}<!-- -->|芸術家|artist={{#switch:{{{2}}}|label=芸術家|category=芸術家}}<!-- -->|慶尚|Gyeongsang|경상={{#switch:{{{2}}}|label=慶尚|category=方言}}<!-- -->|計測機器|measuring instrument={{#switch:{{{2}}}|label=計測機器|category=計測機器}}<!-- -->|形態論={{#switch:{{{2}}}|label=形態論|category=形態論}}<!-- -->|慶南|경남={{#switch:{{{2}}}|label=慶南|category=方言}}<!-- -->|芸能={{#switch:{{{2}}}|label=芸能|category=芸能}}<!-- -->|競馬|horse racing={{#switch:{{{2}}}|label=競馬|category=競馬}}<!-- -->|ケイビング|caving={{#switch:{{{2}}}|label=ケイビング|category=ケイビング}}<!-- -->|軽侮語|pejorative={{#switch:{{{2}}}|label=軽侮語|category=軽侮語}}<!-- -->|慶北|경북={{#switch:{{{2}}}|label=慶北|category=方言}}<!-- -->|刑務所スラング|prison slang={{#switch:{{{2}}}|label=刑務所スラング|category=刑務所スラング}}<!-- -->|形容詞句={{#switch:{{{2}}}|label=形容詞句|category=成句 形容詞句}}<!-- -->|鯨類|cetacean={{#switch:{{{2}}}|label=鯨類|category=鯨類}}<!-- -->|ゲートボール|gateball={{#switch:{{{2}}}|label=ゲートボール|category=ゲートボール}}<!-- -->|ケープブレトン|ケープブレトン英語|Cape Breton={{#switch:{{{2}}}|label=ケープブレトン島|category=ケープブレトン{{language|{{{lang}}}}}}}<!-- -->|ゲーム|game={{#switch:{{{2}}}|label=ゲーム|category=ゲーム}}<!-- -->|ゲーム理論={{#switch:{{{2}}}|label=ゲーム理論|category=ゲーム理論}}<!-- -->|ゲーリックフットボール|Gaelic football={{#switch:{{{2}}}|label=ゲーリックフットボール|category=ゲーリックフットボール}}<!-- -->|外科学|surgery={{#switch:{{{2}}}|label=外科学|category=外科学}}<!-- -->|ゲグ方言|ゲグ|Gheg={{#switch:{{{2}}}|label=ゲグ方言|category=ゲグ方言}}<!-- -->|化粧品|cosmetic|cosmetics={{#switch:{{{2}}}|label=化粧品|category=化粧品}}<!-- -->|血液学|hematology={{#switch:{{{2}}}|label=血液学|category=血液学}}<!-- -->|結婚|marriage={{#switch:{{{2}}}|label=結婚|category=結婚}}<!-- -->|欠如動詞|defective={{#switch:{{{2}}}|label=欠如動詞|category=欠如動詞}}<!-- -->|齧歯類|rodent={{#switch:{{{2}}}|label=齧歯類|category=齧歯類}}<!-- -->|ケニア変種|Kenya|Kenyan={{#switch:{{{2}}}|label=ケニア|category=ケニア{{language|{{{lang}}}}}}}<!-- -->|ケベック|Quebec|Québec={{#switch:{{{2}}}|label=ケベック|category=ケベック{{language|{{{lang}}}}}}}<!-- -->|ケルクラーデ方言|ケルクラーデ|Kirchröadsj={{#switch:{{{2}}}|label=ケルクラーデ|category=ケルクラーデ方言}}<!-- -->|ケルト神話|ケルト神話|Celtic god|Celtic mythology={{#switch:{{{2}}}|label=ケルト神話|category=ケルト神話}}<!-- -->|ゲルマン神話|ゲルマン神話|Germanic god|Germanic mythology={{#switch:{{{2}}}|label=ゲルマン神話|category=ゲルマン神話}}<!-- -->|ケルン語|Kölsch={{#switch:{{{2}}}|label=ケルン語|category=ケルン語}}<!-- -->|言語学|linguistics|linguistique={{#switch:{{{2}}}|label=言語学|category=言語学}}<!-- -->|言語名|言語|langue|language|lang={{#switch:{{{2}}}|label=言語|category=言語名}}<!-- -->|元首|heads of state={{#switch:{{{2}}}|label=元首|category=元首}}<!-- -->|剣術={{#switch:{{{2}}}|label=剣術|category=剣術}}<!-- -->|原生生物|protist={{#switch:{{{2}}}|label=原生生物|category=原生生物}}<!-- -->|建設機械={{#switch:{{{2}}}|label=建設機械|category=建設機械}}<!-- -->|元素|chemical element={{#switch:{{{2}}}|label=元素|category=元素}}<!-- -->|元素記号={{#switch:{{{2}}}|label=元素記号|category=元素記号}}<!-- -->|建築|建築学|architecture={{#switch:{{{2}}}|label=建築|category=建築}}<!-- -->|ケント|Kentish={{#switch:{{{2}}}|label=ケント|category=ケント方言}}<!-- -->|剣道|kendo={{#switch:{{{2}}}|label=剣道|category=剣道}}<!-- -->|憲法|constitutional law={{#switch:{{{2}}}|label=憲法|category=憲法}}<!-- -->|コイ科={{#switch:{{{2}}}|label=コイ科|category=コイ科}}<!-- -->|コイ目={{#switch:{{{2}}}|label=コイ目|category=コイ目}}<!-- -->|コイネー|Koine|Koine Greek={{#switch:{{{2}}}|label=コイネー|category=コイネー}}<!-- -->|語彙論|lexicology={{#switch:{{{2}}}|label=語彙論|category=語彙論}}<!-- -->|黄海|黄海道|황해|Hwanghae={{#switch:{{{2}}}|label=黄海|category=方言}}<!-- -->|工学|engineering={{#switch:{{{2}}}|label=工学|category=工学}}<!-- -->|光学|optics|light source|light sources={{#switch:{{{2}}}|label=光学|category=光学}}<!-- -->|甲殻類|crustacean={{#switch:{{{2}}}|label=甲殻類|category=甲殻類}}<!-- -->|後期古典ラテン語|post-Classical Latin={{#switch:{{{2}}}|label=[[:w:古典ラテン語|後期古典ラテン語]]|category=後期古典ラテン語}}<!-- -->|後期中英語|late ME|Late ME|Late Middle English={{#switch:{{{2}}}|label=後期中英語|category=後期中英語}}<!-- -->|後期ラテン語|Late Latin|LL|LL.={{#switch:{{{2}}}|label=[[:w:ラテン語|後期ラテン語]]|category=後期ラテン語}}<!-- -->|高級語彙|改まった表現|higher register={{#switch:{{{2}}}|label=高級語彙|category=高級語彙}}<!-- -->|合金|alloy={{#switch:{{{2}}}|label=合金|category=合金}}<!-- -->|航空|aviation={{#switch:{{{2}}}|label=航空|category=航空}}<!-- -->|航空機|aircraft={{#switch:{{{2}}}|label=航空機|category=航空機}}<!-- -->|航空工学|aeronautics={{#switch:{{{2}}}|label=航空工学|category=航空工学}}<!-- -->|光源={{#switch:{{{2}}}|label=光源|category=光源}}<!-- -->|江原|Gangwon|강원={{#switch:{{{2}}}|label=江原|category=方言}}<!-- -->|口語|colloquial|informal={{#switch:{{{2}}}|label=口語|category=口語}}<!-- -->|考古学|archaeology={{#switch:{{{2}}}|label=考古学|category=考古学}}<!-- -->|江淮官話|Jianghuai Mandarin|Huai|Jiang-Huai|Jiang-Huai Mandarin|Jianghuai|Lower Yangtze Mandarin={{#switch:{{{2}}}|label=江淮官話|category=江淮官話}}<!-- -->|広翅類={{#switch:{{{2}}}|label=広翅類|category=広翅類}}<!-- -->|香辛料={{#switch:{{{2}}}|label=香辛料|category=香辛料}}<!-- -->|香水|perfume={{#switch:{{{2}}}|label=香水|category=香水}}<!-- -->|甲虫|beetle={{#switch:{{{2}}}|label=甲虫|category=甲虫}}<!-- -->|交通|transport={{#switch:{{{2}}}|label=交通|category=交通}}<!-- -->|肯定極性表現|肯定文で|positive polarity|in the positive={{#switch:{{{2}}}|label=[[付録:用語集#肯定極性|肯定極性]]表現で|category=肯定極性表現}}<!-- -->|鉱物学|鉱物|mineral|mineralogy={{#switch:{{{2}}}|label=鉱物学|category=鉱物学}}<!-- -->|膠遼官話|Jiaoliao Mandarin|Jiao-Liao|Jiao-Liao Mandarin|Jiaoliao={{#switch:{{{2}}}|label=膠遼官話|category=膠遼官話}}<!-- -->|コーヒー|coffee={{#switch:{{{2}}}|label=コーヒー|category=コーヒー}}<!-- -->|氷|ice={{#switch:{{{2}}}|label=氷|category=氷}}<!-- -->|コーンウォール|Cornwall={{#switch:{{{2}}}|label=コーンウォール|category=コーンウォール{{language|{{{lang}}}}}}}<!-- -->|語学={{#switch:{{{2}}}|label=語学|category=語学}}<!-- -->|誤記={{#switch:{{{2}}}|label=誤記|category=誤記}}<!-- -->|国際関係|International relation|international relation={{#switch:{{{2}}}|label=国際関係|category=国際関係}}<!-- -->|国際単位系|SI unit={{#switch:{{{2}}}|label=国際単位系|category=国際単位系}}<!-- -->|黒人英語|black en|AAVE|African-American Vernacular={{#switch:{{{2}}}|label=黒人英語|category=黒人英語}}<!-- -->|国民|国籍|nationality={{#switch:{{{2}}}|label=国民|category=国民}}<!-- -->|古語・廃語|古・廃|archaic={{#switch:{{{2}}}|label=古語・廃語|category=古語・廃語}}<!-- -->|呉語|Wu={{#switch:{{{2}}}|label=呉語関連|category=呉語に関連する語}}<!-- -->|心|mind={{#switch:{{{2}}}|label=心|Category=心}}<!-- -->|故事成語={{#switch:{{{2}}}|label=故事成語|category=故事成語}}<!-- -->|コスタリカスペイン語|コスタリカ変種|Costa Rica={{#switch:{{{2}}}|label=コスタリカ|category=コスタリカスペイン語}}<!-- -->|古生物学|paleontology={{#switch:{{{2}}}|label=古生物学|category=古生物学}}<!-- -->|骨格|skeleton={{#switch:{{{2}}}|label=骨格|category=骨格}}<!-- -->|コックニー押韻俗語|英押韻俗|Cockney rhyming slang={{#switch:{{{2}}}|label=コックニー押韻俗語|category=コックニー押韻俗語}}<!-- -->|滑稽|humorous|jocular={{#switch:{{{2}}}|label=滑稽|category=滑稽}}<!-- -->|古典力学={{#switch:{{{2}}}|label=古典力学|category=古典力学}}<!-- -->|古代エジプト|Ancient Egypt={{#switch:{{{2}}}|label=古代エジプト|category=地中海世界の歴史}}<!-- -->|古代ギリシア|古代ギリシャ|Ancient Greece={{#switch:{{{2}}}|label=古代ギリシア|category=地中海世界の歴史}}<!-- -->|古代ローマ|Ancient Rome={{#switch:{{{2}}}|label=古代ローマ|category=地中海世界の歴史}}<!-- -->|誇張表現|誇張|誇張的|誇張して|誇張した|exaggerated|Exaggerated={{#switch:{{{2}}}|label=誇張表現|category=誇張表現}}<!-- -->|古西ノルド語|Old West Norse={{#switch:{{{2}}}|label=古西ノルド語|category=古西ノルド語}}<!-- -->|古東ノルド語|Old East Norse={{#switch:{{{2}}}|label=古東ノルド語|category=古東ノルド語}}<!-- -->|誤読・誤用|誤読|誤用={{#switch:{{{2}}}|label=誤読・誤用|category=誤読・誤用}}<!-- -->|言葉遊び={{#switch:{{{2}}}|label=言葉遊び|category=言葉遊び}}<!-- -->|ことわざ|諺|proverb={{#switch:{{{2}}}|label=ことわざ|category=ことわざ}}<!-- -->|コノート|Connacht={{#switch:{{{2}}}|label=コノート|category=コノート方言}}<!-- -->|コピュラ|copula|copular={{#switch:{{{2}}}|label=コピュラ|category=コピュラ}}<!-- -->|古北部フランス語|Old Northern French={{#switch:{{{2}}}|label=古北部フランス語|category=古北部フランス語}}<!-- -->|コミカンソウ科={{#switch:{{{2}}}|label=コミカンソウ科|category=コミカンソウ科}}<!-- -->|古用法|古|dated={{#switch:{{{2}}}|label=古用法|category=古用法}}<!-- -->|語用論|pragmatics={{#switch:{{{2}}}|label=語用論|category=語用論}}<!-- -->|暦={{#switch:{{{2}}}|label=暦|category=暦}}<!-- -->|娯楽|entertainment={{#switch:{{{2}}}|label=娯楽|category=娯楽}}<!-- -->|ゴルフ|golf={{#switch:{{{2}}}|label=ゴルフ|category=ゴルフ}}<!-- -->|古ロンバルド語|古ロンバルド|Old Lombard={{#switch:{{{2}}}|label=古ロンバルド|category=古ロンバルド語}}<!-- -->|コロンビアスペイン語|コロンビア変種|Colombia={{#switch:{{{2}}}|label=コロンビア|category=コロンビアスペイン語}}<!-- -->|コンゴ変種|Congo|DRC={{#switch:{{{2}}}|label=コンゴ|category=コンゴ{{language|{{{lang}}}}}}}<!-- -->|昆虫|虫|insect={{#switch:{{{2}}}|label=昆虫|category=昆虫}}<!-- -->|昆虫学|entomology={{#switch:{{{2}}}|label=昆虫学|category=昆虫学}}<!-- -->|コンピューターゲーム|コンピュータゲーム|テレビゲーム|ビデオゲーム|computer game|video game|video games={{#switch:{{{2}}}|label=コンピューターゲーム|category=コンピューターゲーム}}<!-- -->|コンピュータグラフィックス|computer graphics={{#switch:{{{2}}}|label=コンピュータグラフィックス|category=コンピュータグラフィックス}}<!-- -->|サーク|Sark={{#switch:{{{2}}}|label=サーク|category=サーク島語}}<!-- -->|サーフィン|surfing={{#switch:{{{2}}}|label=サーフィン|category=サーフィン}}<!-- -->|サイード|Sahidic={{#switch:{{{2}}}|label=サイード|category=サイード方言}}<!-- -->|再帰代名詞się|reflexive-się={{#switch:{{{2}}}|label=再帰代名詞"się"を伴って|category=再帰動詞}}<!-- -->|再帰動詞|再帰|reflexive={{#switch:{{{2}}}|label=再帰動詞|category=再帰動詞}}<!-- -->|細菌学|bacteriology={{#switch:{{{2}}}|label=細菌学|category=細菌学}}<!-- -->|サイクリング|cycling={{#switch:{{{2}}}|label=サイクリング|category=サイクリング}}<!-- -->|在日朝鮮語|Japanese Korean={{#switch:{{{2}}}|label=在日|category=在日朝鮮語}}<!-- -->|細胞学|cytology={{#switch:{{{2}}}|label=細胞学|category=細胞学}}<!-- -->|材料科学|materials science={{#switch:{{{2}}}|label=材料科学|category=材料科学}}<!-- -->|サカティアングイス|Zacatianguis={{#switch:{{{2}}}|label=サカティアングイス|category=サカティアングイス方言}}<!-- -->|魚|fish={{#switch:{{{2}}}|label=魚|category=魚}}<!-- -->|サガリバナ科={{#switch:{{{2}}}|label=サガリバナ科|category=サガリバナ科}}<!-- -->|作品名|作品={{#switch:{{{2}}}|label=作品名|category=作品名}}<!-- -->|酒|beer={{#switch:{{{2}}}|label=酒|category=酒}}<!-- -->|鮭|salmon={{#switch:{{{2}}}|label=鮭|category=鮭}}<!-- -->|蠍={{#switch:{{{2}}}|label=蠍|category=蠍}}<!-- -->|作家={{#switch:{{{2}}}|label=作家|category=作家}}<!-- -->|サッカー|soccer|association football={{#switch:{{{2}}}|label=サッカー|category=サッカー}}<!-- -->|サッサリ|Sassarese={{#switch:{{{2}}}|label=サッサリ|category=サッサリ・サルデーニャ語}}<!-- -->|殺人|murder={{#switch:{{{2}}}|label=殺人|category=殺人}}<!-- -->|砂糖={{#switch:{{{2}}}|label=砂糖|category=砂糖}}<!-- -->|鮫|サメ|shark={{#switch:{{{2}}}|label=鮫|category=鮫}}<!-- -->|産科学|obstetrics|midwifery={{#switch:{{{2}}}|label=産科学|category=産科学}}<!-- -->|三角関数|三角比|trigonometric function={{#switch:{{{2}}}|label=三角関数|category=三角関数}}<!-- -->|産業機械={{#switch:{{{2}}}|label=産業機械|category=産業機械}}<!-- -->|サンスクリット|Sanskrit={{#switch:{{{2}}}|label=サンスクリット関連|category=サンスクリットに関連する語}}<!-- -->|サンドイッチ|sandwich={{#switch:{{{2}}}|label=サンドイッチ|category=サンドイッチ}}<!-- -->|ザンビア変種|Zambia={{#switch:{{{2}}}|label=ザンビア|category=ザンビア{{language|{{{lang}}}}}}}<!-- -->|サンボ|sambo={{#switch:{{{2}}}|label=サンボ|category=サンボ}}<!-- -->|詩|poetry={{#switch:{{{2}}}|label=詩|category=詩}}<!-- -->|ジェットスポーツ|jet sports={{#switch:{{{2}}}|label=ジェットスポーツ|category=ジェットスポーツ}}<!-- -->|シェットランド|Shetland={{#switch:{{{2}}}|label=シェットランド|category=シェットランド語}}<!-- -->|ジェンダー|gender={{#switch:{{{2}}}|label=ジェンダー|category=ジェンダー}}<!-- -->|シカ科|cervid={{#switch:{{{2}}}|label=シカ科|category=シカ科}}<!-- -->|歯学|dentistry={{#switch:{{{2}}}|label=歯学|category=歯学}}<!-- -->|視覚方言|eye dialect={{#switch:{{{2}}}|label=視覚方言|category=視覚方言}}<!-- -->|時間|time={{#switch:{{{2}}}|label=時間|category=時間}}<!-- -->|シク教|sikhism|Sikhism={{#switch:{{{2}}}|label=シク教|category=シク教}}<!-- -->|シクンシ科={{#switch:{{{2}}}|label=シクンシ科|category=シクンシ科}}<!-- -->|死刑|capital punishment={{#switch:{{{2}}}|label=死刑|category=死刑}}<!-- -->|死語|extinct language={{#switch:{{{2}}}|label=死語|category=死語名}}<!-- -->|四肢|limb={{#switch:{{{2}}}|label=四肢|category=四肢}}<!-- -->|辞書学|lexicography={{#switch:{{{2}}}|label=辞書学|category=辞書学}}<!-- -->|地震学|地震|seismology={{#switch:{{{2}}}|label=[[地震学]]|category=地震学}}<!-- -->|指数・対数|指数関数|対数関数|指数|対数|logarithm|exponent|exponential function={{#switch:{{{2}}}|label=[[指数]]・[[対数]]|category=指数・対数}}<!-- -->|自然|nature={{#switch:{{{2}}}|label=[[自然]]|category=自然}}<!-- -->|自然科学|natural science={{#switch:{{{2}}}|label=[[自然科学]]|category=自然科学}}<!-- -->|自然災害|災害={{#switch:{{{2}}}|label=[[自然災害]]|category=自然災害}}<!-- -->|シソ目={{#switch:{{{2}}}|label=シソ目|category=シソ目}}<!-- -->|シソ科={{#switch:{{{2}}}|label=シソ科|category=シソ科}}<!-- -->|下着|underwear={{#switch:{{{2}}}|label=下着|category=下着}}<!-- -->|自他動詞|ambitransitive={{#switch:{{{2}}}|label=[[付録:用語集#自他動詞|自他動詞]]|category=自他動詞}}<!-- -->|詩的表現|詩的|poetic={{#switch:{{{2}}}|label=詩的表現|category=詩的表現}}<!-- -->|自転車|bicycle|bike={{#switch:{{{2}}}|label=[[自転車]]|category=自転車}}<!-- -->|自転車競技|cycle racing|cycle sport|bicycle racing|bicycle sport={{#switch:{{{2}}}|label=[[自転車]][[競技]]|category=自転車競技}}<!-- -->|自動詞|intransitive|intransitive+={{#switch:{{{2}}}|label=[[付録:用語集#自動詞|自動詞]]|category=自動詞}}<!-- -->|自動車|automobile={{#switch:{{{2}}}|label=[[自動車]]|category=自動車}}<!-- -->|自動車機器|automotive={{#switch:{{{2}}}|label=[[自動車]][[機器]]|category=自動車機器}}<!-- -->|自動車技術|automotive technology={{#switch:{{{2}}}|label=[[自動車]][[技術]]|category=自動車技術}}<!-- -->|自動車工学|automotive engineering={{#switch:{{{2}}}|label=[[自動車]][[工学]]|category=自動車工学}}<!-- -->|自動車部品|auto part={{#switch:{{{2}}}|label=[[自動車]][[部品]]|category=自動車部品}}<!-- -->|自動車競技|auto racing|car racing|automobile racing={{#switch:{{{2}}}|label=[[自動車]][[競技]]|category=自動車競技}}<!-- -->|私年号={{#switch:{{{2}}}|label=私年号|category=私年号}}<!-- -->|耳鼻咽喉科学|otolaryngology|otorhinolaryngology={{#switch:{{{2}}}|label=[[耳鼻咽喉科学]]|category=耳鼻咽喉科学}}<!-- -->|司法={{#switch:{{{2}}}|label=[[司法]]|category=司法}}<!-- -->|脂肪酸|fatty acid={{#switch:{{{2}}}|label=[[脂肪酸]]|category=脂肪酸}}<!-- -->|刺胞動物|cnidarian={{#switch:{{{2}}}|label=刺胞動物|category=刺胞動物}}<!-- -->|資本主義|capitalism={{#switch:{{{2}}}|label=資本主義|category=資本主義}}<!-- -->|島|island={{#switch:{{{2}}}|label=島|category=島}}<!-- -->|事務用品={{#switch:{{{2}}}|label=事務用品|category=事務用品}}<!-- -->|ジャージー|Jersey={{#switch:{{{2}}}|label=ジャージー|category=ジャージー島語}}<!-- -->|ジャイナ教|jainism|Jainism={{#switch:{{{2}}}|label=ジャイナ教|category=ジャイナ教}}<!-- -->|社会|society={{#switch:{{{2}}}|label=社会|category=社会}}<!-- -->|社会科学|social science={{#switch:{{{2}}}|label=社会科学|category=社会科学}}<!-- -->|社会学|sociology={{#switch:{{{2}}}|label=社会学|category=社会学}}<!-- -->|社会言語学|sociolinguistics={{#switch:{{{2}}}|label=社会言語学|category=社会言語学}}<!-- -->|社会心理学|social psychology={{#switch:{{{2}}}|label=社会心理学|category=社会心理学}}<!-- -->|射撃競技={{#switch:{{{2}}}|label=射撃競技|category=射撃競技}}<!-- -->|写真|photography={{#switch:{{{2}}}|label=写真|category=写真}}<!-- -->|ジャマイカ変種|Jamaica={{#switch:{{{2}}}|label=ジャマイカ|category=ジャマイカ{{language|{{{lang}}}}}}}<!-- -->|車両={{#switch:{{{2}}}|label=車両|category=車両}}<!-- -->|シャンチー|象棋|xiangqi={{#switch:{{{2}}}|label=シャンチー|category=シャンチー}}<!-- -->|獣医学={{#switch:{{{2}}}|label=獣医学|category=獣医学}}<!-- -->|宗教|religion|religious={{#switch:{{{2}}}|label=宗教|category=宗教}}<!-- -->|銃剣道|jukendo={{#switch:{{{2}}}|label=銃剣道|category=銃剣道}}<!-- -->|集合名詞|collective={{#switch:{{{2}}}|label=集合名詞|category=集合名詞}}<!-- -->|集合論|set theory={{#switch:{{{2}}}|label=集合論|category=集合論}}<!-- -->|修辞学|rhetoric={{#switch:{{{2}}}|label=修辞学|category=修辞学}}<!-- -->|柔術|jujutsu={{#switch:{{{2}}}|label=柔術|category=柔術}}<!-- -->|終助詞={{#switch:{{{2}}}|label=終助詞|category=助詞 終助詞}}<!-- -->|柔道|judo={{#switch:{{{2}}}|label=柔道|category=柔道}}<!-- -->|重量挙げ|weightlifting={{#switch:{{{2}}}|label=重量挙げ|category=重量挙げ}}<!-- -->|儒教|Confucianism|confucianism={{#switch:{{{2}}}|label=儒教|category=儒教}}<!-- -->|祝日|holiday={{#switch:{{{2}}}|label=祝日|category=祝日}}<!-- -->|縮約形|縮約={{#switch:{{{2}}}|label=縮約形|category=縮約形}}<!-- -->|出版|publishing={{#switch:{{{2}}}|label=出版|category=出版}}<!-- -->|首都名|首都|capital={{#switch:{{{2}}}|label=首都|category=首都名}}<!-- -->|腫瘍学|oncology={{#switch:{{{2}}}|label=腫瘍学|category=腫瘍学}}<!-- -->|狩猟|狩り|hunting={{#switch:{{{2}}}|label=狩猟|category=狩猟}}<!-- -->|手話|sign language={{#switch:{{{2}}}|label=手話名|category=手話名}}<!-- -->|ショウガ科={{#switch:{{{2}}}|label=ショウガ科|category=ショウガ科}}<!-- -->|商学|commercial science={{#switch:{{{2}}}|label=商学|category=商学}}<!-- -->|正月={{#switch:{{{2}}}|label=正月|category=正月}}<!-- -->|ショウガ目={{#switch:{{{2}}}|label=ショウガ目|category=ショウガ目}}<!-- -->|将棋|shogi={{#switch:{{{2}}}|label=将棋|category=将棋}}<!-- -->|条鰭類={{#switch:{{{2}}}|label=条鰭類|category=条鰭類}}<!-- -->|渉禽類={{#switch:{{{2}}}|label=渉禽類|category=渉禽類}}<!-- -->|状態動詞|stative={{#switch:{{{2}}}|label=状態動詞|category=状態動詞}}<!-- -->|杖道|jodo={{#switch:{{{2}}}|label=杖道|category=杖道}}<!-- -->|情動|emotions={{#switch:{{{2}}}|label=情動|category=情動}}<!-- -->|商取引|trading={{#switch:{{{2}}}|label=商取引|category=商取引}}<!-- -->|商標の普通名称化|genericized trademark={{#switch:{{{2}}}|label=商標の普通名称化|category=商標の普通名称化}}<!-- -->|消防|firefighting={{#switch:{{{2}}}|label=消防|category=消防}}<!-- -->|情報科学={{#switch:{{{2}}}|label=情報科学|category=情報科学}}<!-- -->|情報学|information science={{#switch:{{{2}}}|label=情報学|category=情報学}}<!-- -->|情報技術|computing={{#switch:{{{2}}}|label=情報技術|category=情報技術}}<!-- -->|少林寺拳法|shourinjikempo={{#switch:{{{2}}}|label=少林寺拳法|category=少林寺拳法}}<!-- -->|初期中英語|Early ME|Early Middle English={{#switch:{{{2}}}|label=初期中英語|category=初期中英語}}<!-- -->|職業|occupation={{#switch:{{{2}}}|label=職業|category=職業}}<!-- -->|食肉類|carnivore={{#switch:{{{2}}}|label=食肉類|category=食肉類}}<!-- -->|職人|craftsman={{#switch:{{{2}}}|label=職人|category=職人}}<!-- -->|食品|飲食物|food={{#switch:{{{2}}}|label=食品|category=食品}}<!-- -->|植物|plant={{#switch:{{{2}}}|label=植物|category=植物}}<!-- -->|植物学|botany={{#switch:{{{2}}}|label=植物学|category=植物学}}<!-- -->|序数|ordinal|ordinal number|ordinal numbers={{#switch:{{{2}}}|label=序数|category=序数}}<!-- -->|助数詞={{#switch:{{{2}}}|label=助数詞|category=助数詞}}<!-- -->|初等関数|elementary function={{#switch:{{{2}}}|label=初等関数|category=初等関数}}<!-- -->|書物|book={{#switch:{{{2}}}|label=書物|category=書物}}<!-- -->|食器|cutlery={{#switch:{{{2}}}|label=食器|category=食器}}<!-- -->|書道={{#switch:{{{2}}}|label=書道|category=書道}}<!-- -->|助動詞|auxiliary={{#switch:{{{2}}}|label=[[付録:用語集#助動詞|助動詞]]|category=助動詞}}<!-- -->|叙法|modal={{#switch:{{{2}}}|label=叙法|category=叙法}}<!-- -->|神学|theology={{#switch:{{{2}}}|label=神学|category=神学}}<!-- -->|新顎類={{#switch:{{{2}}}|label=新顎類|category=新顎類}}<!-- -->|シンガポール英語|シンガポール変種|Singapore={{#switch:{{{2}}}|label=シンガポール|category=シンガポール英語}}<!-- -->|シンガポール華語|Singapore Mandarin|Singaporean Mandarin={{#switch:{{{2}}}|label=シンガポール|category=シンガポール華語}}<!-- -->|シンガポールタミル語|Singapore Tamil|Singapore Tamil={{#switch:{{{2}}}|label=シンガポール|category=シンガポールタミル語}}<!-- -->|シンガポール福建|シンガポール福建語|Singapore Hokkien|Singaporean Hokkien={{#switch:{{{2}}}|label=シンガポール|category=方言}}<!-- -->|新疆官話|Xinjiang Mandarin|Xinjiang={{#switch:{{{2}}}|label=新疆官話|category=新疆官話}}<!-- -->|神経解剖学|neuroanatomy={{#switch:{{{2}}}|label=神経解剖学|category=神経解剖学}}<!-- -->|神経科学|neuroscience={{#switch:{{{2}}}|label=神経科学|category=神経科学}}<!-- -->|神経学|neurology={{#switch:{{{2}}}|label=神経学|category=神経学}}<!-- -->|人口学|demography={{#switch:{{{2}}}|label=人口学|category=人口学}}<!-- -->|人工言語|artificial language|constructed language={{#switch:{{{2}}}|label=人工言語|category=人工言語名}}<!-- -->|信号処理|signal processing={{#switch:{{{2}}}|label=信号処理|category=信号処理}}<!-- -->|人工知能|artificial intelligence={{#switch:{{{2}}}|label=人工知能|category=人工知能}}<!-- -->|身体症状={{#switch:{{{2}}}|label=身体症状|category=身体症状}}<!-- -->|ジンチョウゲ科={{#switch:{{{2}}}|label=ジンチョウゲ科|category=ジンチョウゲ科}}<!-- -->|神道|shinto|Shinto={{#switch:{{{2}}}|label=神道|category=神道}}<!-- -->|ジンバブエ変種||Zimbabwe={{#switch:{{{2}}}|label=ジンバブエ|category=ジンバブエ{{language|{{{lang}}}}}}}<!-- -->|人物|of person={{#switch:{{{2}}}|label=人物|category=}}<!-- -->|新聞|newspaper={{#switch:{{{2}}}|label=新聞|category=新聞}}<!-- -->|人文科学|humanities={{#switch:{{{2}}}|label=人文科学|category=人文科学}}<!-- -->|人名={{#switch:{{{2}}}|label=人名|category=人名}}<!-- -->|心理学|psychology={{#switch:{{{2}}}|label=心理学|category=心理学}}<!-- -->|人類学={{#switch:{{{2}}}|label=人類学|category=人類学}}<!-- -->|神話|mythology={{#switch:{{{2}}}|label=神話|category=神話}}<!-- -->|神話・伝説の生物|mythological creature|mythological creatures={{#switch:{{{2}}}|label=神話・伝説の生物|category=神話・伝説の生物}}<!-- -->|水域|bodies of water={{#switch:{{{2}}}|label=水域|category=水域}}<!-- -->|水泳|swimming={{#switch:{{{2}}}|label=[[水泳]]|category=水泳}}<!-- -->|水球|water polo={{#switch:{{{2}}}|label=[[水球]]|category=水球}}<!-- -->|水上スキー|water skiing={{#switch:{{{2}}}|label=水上スキー|category=水上スキー}}<!-- -->|スイス変種|Swiss|Switzerland|Suisse={{#switch:{{{2}}}|label=スイス|category=スイス{{language|{{{lang}}}}}}}<!-- -->|睡眠|sleep={{#switch:{{{2}}}|label=睡眠|category=睡眠}}<!-- -->|睡眠生理学|sleep physiology={{#switch:{{{2}}}|label=睡眠生理学|category=睡眠生理学}}<!-- -->|水文学|hydrology={{#switch:{{{2}}}|label=水文学|category=水文学}}<!-- -->|数学|mathematics|math={{#switch:{{{2}}}|label=数学|category=数学}}<!-- -->|数学記号={{#switch:{{{2}}}|label=数学記号|category=数学記号}}<!-- -->|数値解析={{#switch:{{{2}}}|label=数値解析|category=数値解析}}<!-- -->|数列|numerical sequence={{#switch:{{{2}}}|label=[[数列]]|category=数列}}<!-- -->|数論|number theory={{#switch:{{{2}}}|label=[[数論]]|category=数論}}<!-- -->|スカイスポーツ|air sports|sky sports={{#switch:{{{2}}}|label=スカイスポーツ|category=スカイスポーツ}}<!-- -->|スカッシュ|squash={{#switch:{{{2}}}|label=スカッシュ|category=スカッシュ}}<!-- -->|スカンク科|mephitid={{#switch:{{{2}}}|label=スカンク科|category=スカンク科}}<!-- -->|スキー|skiing={{#switch:{{{2}}}|label=[[スキー]]|category=スキー}}<!-- -->|スキムボード|skimboarding={{#switch:{{{2}}}|label=[[スキムボード]]|category=スキムボード}}<!-- -->|図形|shape={{#switch:{{{2}}}|label=[[図形]]|category=図形}}<!-- -->|スケート|skating={{#switch:{{{2}}}|label=[[スケート]]|category=スケート}}<!-- -->|スケートボード|skateboarding={{#switch:{{{2}}}|label=スケートボード|category=スケートボード}}<!-- -->|スケルトン|スケルトン={{#switch:{{{2}}}|label=[[スケルトン]]|category=スケルトン}}<!-- -->|スコーネ|Scania={{#switch:{{{2}}}|label=スコーネ|category=スコーネ方言}}<!-- -->|スコットランド|Scot|Scotland|Scots={{#switch:{{{2}}}|label=スコットランド|category=スコットランド英語}}<!-- -->|スコットランド南部|South Scots={{#switch:{{{2}}}|label=スコットランド南部|category=スコットランド南部方言}}<!-- -->|寿司|sushi={{#switch:{{{2}}}|label=[[寿司]]|category=寿司}}<!-- -->|ストゥシルヴァン|Sutsilvan={{#switch:{{{2}}}|label=ストゥシルヴァン|category=ストゥシルヴァン}}<!-- -->|スヌーカー|snooker={{#switch:{{{2}}}|label=[[スヌーカー]]|category=スヌーカー}}<!-- -->|スノーボード|snowboarding={{#switch:{{{2}}}|label=[[スノーボード]]|category=スノーボード}}<!-- -->|スピードスケート|speed skating={{#switch:{{{2}}}|label=[[スピードスケート]]|category=スピードスケート}}<!-- -->|スペイン={{#switch:{{{2}}}|label=[[スペイン]]|category=スペイン}}<!-- -->|スペイン語|Spanish={{#switch:{{{2}}}|label=[[スペイン語]]関連|category=スペイン語に関連する語}}<!-- -->|スペイン変種|Spain={{#switch:{{{2}}}|label=[[:w:スペイン|スペイン]]|category=スペイン{{language|{{{lang}}}}}}}<!-- -->|スペキュレイティブ・フィクション={{#switch:{{{2}}}|labbel=スペキュレイティブ・フィクション|category=スペキュレイティブ・フィクション}}<!-- -->|スポーツ|sport|sports={{#switch:{{{2}}}|label=[[スポーツ]]|category=スポーツ}}<!-- -->|相撲|sumo={{#switch:{{{2}}}|label=[[相撲]]|category=相撲}}<!-- -->|スラヴ神話|スラヴ神話|Slavic god|Slavic mythology={{#switch:{{{2}}}|label=スラヴ神話|category=スラヴ神話}}<!-- -->|スリナム変種|Suriname={{#switch:{{{2}}}|label=[[スリナム]]|category=スリナム{{language|{{{lang}}}}}}}<!-- -->|スリランカタミル語|スリランカタミル語|Sri Lankan Tamil|Sri Lankan Tamil={{#switch:{{{2}}}|label=スリランカ|category=スリランカタミル語}}<!-- -->|スルシルヴァン|Sursilvan={{#switch:{{{2}}}|label=スルシルヴァン|category=スルシルヴァン}}<!-- -->|スルミラン|Surmiran={{#switch:{{{2}}}|label=スルミラン|category=スルミラン}}<!-- -->|性|sexuality={{#switch:{{{2}}}|label=[[性]]|category=性}}<!-- -->|姓|surname={{#switch:{{{2}}}|label=[[姓]]|category=姓}}<!-- -->|生化学|biochemistry={{#switch:{{{2}}}|label=[[生化学]]|category=生化学}}<!-- -->|性感染症={{#switch:{{{2}}}|label=[[性感染症]]|category=性感染症}}<!-- -->|制御理論|制御工学|control theory|control engineering={{#switch:{{{2}}}|label=[[制御理論]]|category=制御理論}}<!-- -->|性行為|sex={{#switch:{{{2}}}|label=[[性行為]]|category=性行為}}<!-- -->|星座|constellation={{#switch:{{{2}}}|label=[[星座]]|category=星座}}<!-- -->|政治|政治学|politics={{#switch:{{{2}}}|label=[[政治]]|category=政治}}<!-- -->|生殖器|genitalia={{#switch:{{{2}}}|label=[[生殖器]]|category=生殖器}}<!-- -->|聖書|Bible={{#switch:{{{2}}}|label=[[聖書]]|category=聖書}}<!-- -->|聖書ヘブライ語|hbo|HBO={{#switch:{{{2}}}|label=[[:w:聖書ヘブライ語|聖書ヘブライ語]]|category=聖書ヘブライ語}}<!-- -->|精神医学|psychiatry={{#switch:{{{2}}}|label=精神医学|category=精神医学}}<!-- -->|製造|manufacturing={{#switch:{{{2}}}|label=[[製造]]|category=製造}}<!-- -->|製造業={{#switch:{{{2}}}|label=[[製造業]]|category=製造業}}<!-- -->|政体|forms of government={{#switch:{{{2}}}|label=[[政体]]|category=政体}}<!-- -->|生態学|ecology={{#switch:{{{2}}}|label=[[生態学]]|category=生態学}}<!-- -->|生体物質|biomolecule={{#switch:{{{2}}}|label=[[生体物質]]|category=生体物質}}<!-- -->|性的指向|sexual orientation={{#switch:{{{2}}}|label=[[性的指向]]|category=性的指向}}<!-- -->|西南官話|Southwestern Mandarin|Southwest Mandarin|Upper Yangtze Mandarin|southwestern Mandarin={{#switch:{{{2}}}|label=[[:w:西南官話|西南官話]]|category=西南官話}}<!-- -->|政府|government={{#switch:{{{2}}}|label=[[政府]]|category=政府}}<!-- -->|生物学|biology={{#switch:{{{2}}}|label=[[生物学]]|category=生物学}}<!-- -->|生理学|physiology={{#switch:{{{2}}}|label=[[生理学]]|category=生理学}}<!-- -->|政令指定都市={{#switch:{{{2}}}|label=[[政令指定都市]]|category=政令指定都市}}<!-- -->|世界共通ロマ語アルファベット|International Standard={{#switch:{{{2}}}|label=世界共通ロマ語アルファベット|category=世界共通ロマ語アルファベット}}<!-- -->|脊索動物|chordate={{#switch:{{{2}}}|label=[[脊索動物]]|category=脊索動物}}<!-- -->|脊椎動物|vertebrate={{#switch:{{{2}}}|label=[[脊椎動物]]|category=脊椎動物}}<!-- -->|セキュリティ|security={{#switch:{{{2}}}|label=[[セキュリティ]]|category=セキュリティ}}<!-- -->|ゼズル方言|ゼズル|Zezuru={{#switch:{{{2}}}|label=ゼズル|category=ゼズル方言}}<!-- -->|接続詞句={{#switch:{{{2}}}|label=接続詞句|category=成句 接続詞句}}<!-- -->|接続助詞={{#switch:{{{2}}}|label=[[接続助詞]]|category=助詞 接続助詞}}<!-- -->|節足動物|arthropod={{#switch:{{{2}}}|label=[[節足動物]]|category=節足動物}}<!-- -->|絶対単数|singulare tantum|singularia tantum|singular only={{#switch:{{{2}}}|label=[[絶対単数]]|category=絶対単数}}<!-- -->|絶対複数|plurale tantum|pluralonly|plural only={{#switch:{{{2}}}|label=[[絶対複数]]|category=絶対複数}}<!-- -->|セッテ・コムーニ|Sette Comuni|7={{#switch:{{{2}}}|label=セッテ・コムーニ|category=セッテ・コムーニ方言}}<!-- -->|セパタクロー|sepak takraw={{#switch:{{{2}}}|label=[[セパタクロー]]|category=セパタクロー}}<!-- -->|セリ科={{#switch:{{{2}}}|label=[[:w:セリ科|セリ科]]|category=セリ科}}<!-- -->|セリ目={{#switch:{{{2}}}|label=[[:w:セリ目|セリ目]]|category=セリ目}}<!-- -->|セルビア={{#swithc:{{{2}}}|label=[[セルビア]]|category=セルビア}}<!-- -->|セルビア語|Serbia|Serbian={{#switch:{{{2}}}|label=[[セルビア語|セルビア]]|category=セルビア語}}<!-- -->|セルビア史={{#switch:{{{2}}}|label=セルビア史|category=セルビア史}}<!-- -->|セルリング|Sylt={{#switch:{{{2}}}|label=セルリング|category=セルリング方言}}<!-- -->|選挙|election={{#switch:{{{2}}}|label=[[選挙]]|category=選挙}}<!-- -->|線型代数学|線形代数学|線型代数|線形代数|linear algebra={{#switch:{{{2}}}|label=[[線型代数学]]|category=線型代数学}}<!-- -->|線形動物|nematode={{#switch:{{{2}}}|label=[[線形動物]]|category=線形動物}}<!-- -->|占星術|astrology={{#switch:{{{2}}}|label=[[占星術]]|category=占星術}}<!-- -->|戦争|war={{#switch:{{{2}}}|label=[[戦争]]|category=戦争}}<!-- -->|洗濯|laundry={{#switch:{{{2}}}|label=[[洗濯]]|category=洗濯}}<!-- -->|センダン科={{#switch:{{{2}}}|label=[[:w:センダン科|センダン科]]|category=センダン科}}<!-- -->|前置詞句={{#switch:{{{2}}}|label=前置詞句|category=成句 前置詞句}}<!-- -->|全南|全羅南道|전남|Jeonnam={{#switch:{{{2}}}|label=全南|category=方言}}<!-- -->|船舶|watercraft={{#switch:{{{2}}}|label=[[船舶]]|category=船舶}}<!-- -->|全北|전북|Jeonbuk={{#switch:{{{2}}}|label=全北|category=方言}}<!-- -->|全羅|전라|Jeolla={{#switch:{{{2}}}|label=全羅|category=方言}}<!-- -->|象|elephant={{#switch:{{{2}}}|label=[[象]]|category=象}}<!-- -->|双曲線関数|hyperbolic function={{#switch:{{{2}}}|label=[[双曲線関数]]|category=双曲線関数}}<!-- -->|走禽類={{#switch:{{{2}}}|label=[[走禽類]]|category=走禽類}}<!-- -->|造語|neologism={{#switch:{{{2}}}|label=[[造語]]|category=造語}}<!-- -->|槍術={{#switch:{{{2}}}|label=[[槍術]]|category=槍術}}<!-- -->|双翅類={{#switch:{{{2}}}|label=[[双翅類]]|category=双翅類}}<!-- -->|相対性理論|relativity={{#switch:{{{2}}}|label=[[相対性理論]]|category=相対性理論}}<!-- -->|槍道|soudo={{#switch:{{{2}}}|label=[[槍道]]|category=槍道}}<!-- -->|相場={{#switch:{{{2}}}|label=[[相場]]|category=相場}}<!-- -->|藻類|alga={{#switch:{{{2}}}|label=[[藻類]]|category=藻類}}<!-- -->|藻類学|phycology={{#switch:{{{2}}}|label=[[藻類学]]|category=藻類学}}<!-- -->|俗語|俗|slang={{#switch:{{{2}}}|label=[[俗語]]|category=俗語}}<!-- -->|俗ラテン語|Vulgar Latin|VL|VL.={{#switch:{{{2}}}|label=[[:w:俗ラテン語|俗ラテン語]]|category=俗ラテン語}}<!-- -->|ソビエト連邦|ソ連={{#switch:{{{2}}}|label=[[:w:ソビエト連邦|ソビエト連邦]]|category=ソビエト連邦}}<!-- -->|ソフトウェア|software={{#switch:{{{2}}}|label=[[ソフトウェア]]|category=ソフトウェア}}<!-- -->|ソフトボール|softball={{#switch:{{{2}}}|label=[[ソフトボール]]|category=ソフトボール}}<!-- -->|素粒子物理学|particle physics={{#switch:{{{2}}}|label=素粒子物理学|category=素粒子物理学}}<!-- -->|ゾロアスター教|zoroastrianism|Zoroastrianism={{#switch:{{{2}}}|label=[[ゾロアスター教]]|category=ゾロアスター教}}<!-- -->|ソーシャルメディア|social media={{#switch:{{{2}}}|label=[[ソーシャルメディア]]|category=ソーシャルメディア}}<!-- -->|ダーツ|darts={{#switch:{{{2}}}|label=[[ダーツ]]|category=ダーツ}}<!-- -->|第一次世界大戦|WW1|WWI={{#switch:{{{2}}}|label=[[:w:第一次世界大戦|第一次世界大戦]]|category=第一次世界大戦}}<!-- -->|第二次世界大戦|WW2|WWII={{#switch:{{{2}}}|label=[[:w:第二次世界大戦|第二次世界大戦]]|category=第二次世界大戦}}<!-- -->|タイ英語|Thai English|Thailand|TE={{#switch:{{{2}}}|label=タイ英語|category=タイ英語}}<!-- -->|タイ王国|Thailand={{#switch:{{{2}}}|label=タイ王国|category=タイ王国}}<!-- -->|タイ語|Thai={{#switch:{{{2}}}|label=タイ語関連|category=タイ語に関連する語}}<!-- -->|体液|bodily fluid={{#switch:{{{2}}}|label=[[体液]]|category=体液}}<!-- -->|大学|universities|university|college={{#switch:{{{2}}}|label=[[大学]]|category=大学}}<!-- -->|大工仕事|carpentry={{#switch:{{{2}}}|label=大工仕事|category=大工仕事}}<!-- -->|体系学={{#switch:{{{2}}}|label=[[体系学]]|category=体系学}}<!-- -->|大州={{#switch:{{{2}}}|label=大州|category=大州}}<!-- -->|代数学|algebra={{#switch:{{{2}}}|label=代数学|category=代数学}}<!-- -->|代数幾何学|algebraic geometry={{#switch:{{{2}}}|label=代数幾何学|category=代数幾何学}}<!-- -->|体操|体操競技|gymnastics={{#switch:{{{2}}}|label=体操|category=体操}}<!-- -->|躰道|taido={{#switch:{{{2}}}|label=躰道|category=躰道}}<!-- -->|大砲|artillery={{#switch:{{{2}}}|label=[[大砲]]|category=大砲}}<!-- -->|タイムトラベル|time travel={{#switch:{{{2}}}|label=[[タイムトラベル]]|category=タイムトラベル}}<!-- -->|代名詞的用法|代名詞的|pronominal={{#switch:{{{2}}}|label=代名詞的用法|category=代名詞的用法}}<!-- -->|大陸普通話|大陸|Mainland China={{#switch:{{{2}}}|label=大陸普通話|category=大陸普通話}}<!-- -->|台湾={{#switch:{{{2}}}|label=[[台湾]]|category=台湾}}<!-- -->|台湾語|Taiwanese Hokkien={{#switch:{{{2}}}|label=[[:w:台湾語|台湾語]]|category=台湾語}}<!-- -->|台湾国語={{#switch:{{{2}}}|label=[[台湾国語]]|category=台湾国語}}<!-- -->|台湾客家語|Taiwanese Hakka={{#switch:{{{2}}}|label=台湾客家語|category=台湾客家語}}<!-- -->|台湾史={{#switch:{{{2}}}|label=台湾史|category=台湾史}}<!-- -->|鷹狩|falconry={{#switch:{{{2}}}|label=[[たかがり|鷹狩]]|category=鷹狩}}<!-- -->|滝|waterfall={{#switch:{{{2}}}|label=[[たき|滝]]|category=滝}}<!-- -->|竹={{#switch:{{{2}}}|label=[[たけ|竹]]|category=竹}}<!-- -->|多足類|myriapod={{#switch:{{{2}}}|label=[[多足類]]|category=多足類}}<!-- -->|卓球|table tennis={{#switch:{{{2}}}|label=[[卓球]]|category=卓球}}<!-- -->|建物|建築物|building|buildings|buildings and structures={{#switch:{{{2}}}|label=[[たてもの|建物]]|category=建物}}<!-- -->|他動詞|transitive|transitive+={{#switch:{{{2}}}|label=[[付録:用語集#他動詞|他動詞]]|category=他動詞}}<!-- -->|だに|ダニ|壁蝨={{#switch:{{{2}}}|label=[[ダニ]]|category=壁蝨}}<!-- -->|多文化的ロンドン英語|MLE={{#switch:{{{2}}}|label=[[:en:Multicultural London English|多文化的ロンドン英語]]|category=多文化的ロンドン英語}}<!-- -->|タラシケヴィツァ|Taraškievica={{#switch:{{{2}}}|label=[[タラシケヴィツァ]]|category=タラシケヴィツァ}}<!-- -->|ダリー語|ダリー|Dari={{#switch:{{{2}}}|label=[[ダリー語]]|category=ダリー語}}<!-- -->|タロット|tarot={{#switch:{{{2}}}|label=[[タロット]]|category=タロット}}<!-- -->|単位|unit|units of measure={{#switch:{{{2}}}|label=[[単位]]|category=単位}}<!-- -->|短剣道|tankendo={{#switch:{{{2}}}|label=[[短剣道]]|category=短剣道}}<!-- -->|単孔類={{#switch:{{{2}}}|label=[[単孔類]]|category=単孔類}}<!-- -->|タンザニア変種|Tanzania={{#switch:{{{2}}}|label=[[タンザニア]]|category=タンザニア{{language|{{{lang}}}}}}}<!-- -->|ダンス|dance={{#switch:{{{2}}}|label=[[ダンス]]|category=ダンス}}<!-- -->|炭水化物|carbohydrate|carbohydrates={{#switch:{{{2}}}|label=[[炭水化物]]|category=炭水化物}}<!-- -->|タントユカ|Tantoyuca={{#switch:{{{2}}}|label=タントユカ|category=タントユカ方言}}<!-- -->|チアリーディング|cheerleading={{#switch:{{{2}}}|label=[[チアリーディング]]|category=チアリーディング}}<!-- -->|治安|public safety={{#switch:{{{2}}}|label=[[治安]]|category=治安}}<!-- -->|地域方言|地域|Regional|regional={{#switch:{{{2}}}|label=[[地域]]|category=地域方言}}<!-- -->|チーズ|cheese={{#switch:{{{2}}}|label=[[チーズ]]|category=チーズ}}<!-- -->|地衣類={{#switch:{{{2}}}|label=[[地衣類]]|category=地衣類}}<!-- -->|地衣類学|lichenology={{#switch:{{{2}}}|label=[[地衣類学]]|category=地衣類学}}<!-- -->|チェス|chess={{#switch:{{{2}}}|label=[[チェス]]|category=チェス}}<!-- -->|雉鴨類={{#switch:{{{2}}}|label=[[雉鴨類]]|category=雉鴨類}}<!-- -->|地球科学|Earth science|earth science={{#switch:{{{2}}}|label=[[地球科学]]|category=地球科学}}<!-- -->|逐次刊行物|periodical={{#switch:{{{2}}}|label=[[逐次刊行物]]|category=逐次刊行物}}<!-- -->|地形|landform={{#switch:{{{2}}}|label=[[地形]]|category=地形}}<!-- -->|チコナメル|Chiconamel={{#switch:{{{2}}}|label=チコナメル|category=チコナメル方言}}<!-- -->|チコンテペク|Chicontepec={{#switch:{{{2}}}|label=チコンテペク|category=チコンテペク方言}}<!-- -->|地質学|geology={{#switch:{{{2}}}|label=[[地質学]]|category=地質学}}<!-- -->|地図学|cartography={{#switch:{{{2}}}|label=[[地図学]]|category=地図学}}<!-- -->|地政学|geopolitics={{#switch:{{{2}}}|label=[[地政学]]|category=地政学}}<!-- -->|地中海世界|地中海世界の歴史={{#switch:{{{2}}}|label=地中海世界の歴史|category=地中海世界の歴史}}<!-- -->|地名|place|places|place name={{#switch:{{{2}}}|label=地名|category=地名}}<!-- -->|茶|tea={{#switch:{{{2}}}|label=[[茶]]|category=茶}}<!-- -->|チャ方言|Chakavian={{#switch:{{{2}}}|label=チャ方言|category=チャ方言}}<!-- -->|チャルマ|Chalma={{#switch:{{{2}}}|label=チャルマ|category=チャルマ方言}}<!-- -->|中央アジア史・北アジア史|中央アジア史|北アジア史={{#switch:{{{2}}}|label=中央アジア史・北アジア史|category=中央アジア史・北アジア史}}<!-- -->|中米の国|中米の国名|中央アメリカの国|中央アメリカの国名={{#switch:{{{2}}}|label=中米の国|category=中米の国名}}<!-- -->|中央アナトリア|中央アナトリア地方={{#switch:{{{2}}}|label=中央アナトリア方言|category=中央アナトリア方言}}<!-- -->|中央アメリカ史={{#switch:{{{2}}}|label=[[:w:中央アメリカ史|中央アメリカ史]]|category=中央アメリカ史}}<!-- -->|中原官話|Central Plains Mandarin|Central Plains|Zhongyuan Mandarin={{#switch:{{{2}}}|label=[[:w:中原官話|中原官話]]|category=中原官話}}<!-- -->|中国={{#switch:{{{2}}}|label=[[中国]]|category=中国}}<!-- -->|中国語|Chinese={{#switch:{{{2}}}|label=中国語関連|category=中国語に関連する語}}<!-- -->|中国史={{#switch:{{{2}}}|label=[[中国史]]|category=中国史}}<!-- -->|中国神話|Chinese mythology={{#switch:{{{2}}}|label=[[:w:中国神話|中国神話]]|category=中国神話}}<!-- -->|中国朝鮮語|Chinese Korean={{#switch:{{{2}}}|label=[[:w:中国朝鮮語|中国朝鮮語]]|category=中国朝鮮語}}<!-- -->|中世ポーランド語|Middle Polish={{#switch:{{{2}}}|label=[[:w:中世ポーランド語|中世ポーランド語]]|category=中世ポーランド語}}<!-- -->|中世ラテン語|Medieval Latin|ML|ML.={{#switch:{{{2}}}|label=[[:w:中世ラテン語|中世ラテン語]]|category=中世ラテン語}}<!-- -->|中部ベトナム|central Vietnam|Central Vietnam={{#switch:{{{2}}}|label=中部ベトナム|category=中部方言}}<!-- -->|中米|central America|Central America={{#switch:{{{2}}}|label=中米|category=中米スペイン語}}<!-- -->|忠南|Chungnam|충남={{#switch:{{{2}}}|label=[[:w:忠清南道|忠南]]|category=方言}}<!-- -->|忠清|Chungcheong|충청={{#switch:{{{2}}}|label=忠清|category=方言}}<!-- -->|忠北|Chungbuk|충북={{#switch:{{{2}}}|label=[[:w:忠清北道|忠北]]|category=方言}}<!-- -->|チュニジア変種|Tunisia={{#switch:{{{2}}}|label=チュニジア|category=チュニジア{{language|{{{lang}}}}}}}<!-- -->|超心理学|parapsychology={{#switch:{{{2}}}|label=超心理学|category=超心理学}}<!-- -->|朝鮮={{#switch:{{{2}}}|label=朝鮮|category=朝鮮}}<!-- -->|朝鮮語|Korean={{#switch:{{{2}}}|label=朝鮮語関連|category=朝鮮語に関連する語}}<!-- -->|朝鮮史={{#switch:{{{2}}}|label=朝鮮史|category=朝鮮史}}<!-- -->|朝鮮神話|Korean mythology={{#switch:{{{2}}}|label=[[:w:朝鮮神話|朝鮮神話]]|category=朝鮮神話}}<!-- -->|長鼻類={{#switch:{{{2}}}|label=長鼻類|category=長鼻類}}<!-- -->|調味料|seasoning={{#switch:{{{2}}}|label=調味料|category=調味料}}<!-- -->|調理|cooking={{#switch:{{{2}}}|label=調理|category=調理}}<!-- -->|鳥類学|ornithology={{#switch:{{{2}}}|label=鳥類学|category=鳥類学}}<!-- -->|直翅類={{#switch:{{{2}}}|label=直翅類|category=直翅類}}<!-- -->|直喩|simile={{#switch:{{{2}}}|label=直喩|category=直喩}}<!-- -->|チョコレート|chocolate={{#switch:{{{2}}}|label=チョコレート|category=チョコレート}}<!-- -->|著作権|copyright={{#switch:{{{2}}}|label=著作権|category=著作権}}<!-- -->|地理|地理学|geography={{#switch:{{{2}}}|label=地理|category=地理}}<!-- -->|チリスペイン語|チリ変種|Chile={{#switch:{{{2}}}|label=チリ|category=チリスペイン語}}<!-- -->|通貨|貨幣|currency|numismatics={{#switch:{{{2}}}|label=通貨|category=通貨}}<!-- -->|月名|month={{#switch:{{{2}}}|label=月名|category=月名}}<!-- -->|ツツジ科={{#switch:{{{2}}}|label=ツツジ科|category=ツツジ科}}<!-- -->|ツツジ目={{#switch:{{{2}}}|label=ツツジ目|category=ツツジ目}}<!-- -->|ツバキ科={{#switch:{{{2}}}|label=ツバキ科|category=ツバキ科}}<!-- -->|釣り|fishing={{#switch:{{{2}}}|label=釣り|category=釣り}}<!-- -->|ディゴル|Digor={{#switch:{{{2}}}|label=ディゴル方言|category=ディゴル方言}}<!-- -->|ディスクゴルフ|disc golf={{#switch:{{{2}}}|label=ディスクゴルフ|category=ディスクゴルフ}}<!-- -->|ティマウ|Timau={{#switch:{{{2}}}|label=ティマウ|category=ティマウ方言}}<!-- -->|テコンドー|taekwondo={{#switch:{{{2}}}|label=テコンドー|category=テコンドー}}<!-- -->|哲学|philosophy={{#switch:{{{2}}}|label=哲学|category=哲学}}<!-- -->|鉄道|railroad|rail transport={{#switch:{{{2}}}|label=鉄道|category=鉄道}}<!-- -->|テニス|tennis={{#switch:{{{2}}}|label=テニス|category=テニス}}<!-- -->|テペツィントラ|Tepetzintla={{#switch:{{{2}}}|label=テペツィントラ|category=テペツィントラ方言}}<!-- -->|テマパチェ|Temapache={{#switch:{{{2}}}|label=テマパチェ|category=テマパチェ方言}}<!-- -->|デモティキ|Demotic={{#switch:{{{2}}}|label=デモティキ|category=デモティキ}}<!-- -->|デモニム|demonym={{#switch:{{{2}}}|label=デモニム|category=デモニム}}<!-- -->|テレビ|television={{#switch:{{{2}}}|label=テレビ|category=テレビ}}<!-- -->|電化製品={{#switch:{{{2}}}|label=電化製品|category=電化製品}}<!-- -->|電気|electricity={{#switch:{{{2}}}|label=電気|category=電気}}<!-- -->|電気化学={{#switch:{{{2}}}|label=電気化学|category=電気化学}}<!-- -->|電気工学|電気回路|electrical engineering={{#switch:{{{2}}}|label=電気工学|category=電気工学}}<!-- -->|電磁気学|電気磁気学|electromagnetism={{#switch:{{{2}}}|label=電磁気学|category=電磁気学}}<!-- -->|電子工学|電子回路|electronics={{#switch:{{{2}}}|label=電子工学|category=電子工学}}<!-- -->|電子メール|Eメール|Email|E-MAIL|E-Mail|E-mail|email|e-Mail|e-mail={{#switch:{{{2}}}|label=電子メール|category=電子メール}}<!-- -->|伝統中国医学|traditional Chinese medicine={{#switch:{{{2}}}|label=伝統中国医学|category=伝統中国医学}}<!-- -->|天体|celestial body={{#switch:{{{2}}}|label=天体|category=天体}}<!-- -->|天体物理学|astrophysics={{#switch:{{{2}}}|label=天体物理学|category=天体物理学}}<!-- -->|天体力学|celestial mechanics={{#switch:{{{2}}}|label=天体力学|category=天体力学}}<!-- -->|天然素材={{#switch:{{{2}}}|label=天然素材|category=天然素材}}<!-- -->|店舗|店|shop={{#switch:{{{2}}}|label=店舗|category=店舗}}<!-- -->|天文学|astronomy={{#switch:{{{2}}}|label=天文学|category=天文学}}<!-- -->|電話|telephone={{#switch:{{{2}}}|label=電話|category=電話}}<!-- -->|ドイツ={{#switch:{{{2}}}|label=ドイツ|category=ドイツ}}<!-- -->|ドイツ語={{#switch:{{{2}}}|label=ドイツ語関連|category=ドイツ語に関連する語}}<!-- -->|ドイツ変種|German|Germany={{#switch:{{{2}}}|label=ドイツ|category=ドイツ{{language|{{{lang}}}}}}}<!-- -->|ドイツ南部|独南部|southern Germany|southern German|Southern Germany={{#switch:{{{2}}}|label=ドイツ南部|category=ドイツ南部方言}}<!-- -->|ドイツ北部|独北部|northern Germany|northern German|Northern Germany={{#switch:{{{2}}}|label=ドイツ北部|category=ドイツ北部方言}}<!-- -->|闘牛|bullfighting={{#switch:{{{2}}}|label=闘牛|category=闘牛}}<!-- -->|東京|Tokyo={{#switch:{{{2}}}|label=東京|category=東京}}<!-- -->|道教|taoism|Taoism={{#switch:{{{2}}}|label=道教|category=道教}}<!-- -->|道具|tool={{#switch:{{{2}}}|label=道具|category=道具}}<!-- -->|闘鶏|cockfighting={{#switch:{{{2}}}|label=闘鶏|category=闘鶏}}<!-- -->|統計学|statistics={{#switch:{{{2}}}|label=統計学|category=統計学}}<!-- -->|刀剣|sword={{#switch:{{{2}}}|label=刀剣|category=刀剣}}<!-- -->|倒語|back slang|back-slang|backslang={{#switch:{{{2}}}|label=倒語|category=倒語}}<!-- -->|動詞句={{#switch:{{{2}}}|label=動詞句|category=成句 動詞句}}<!-- -->|頭字語|頭文字|initialism={{#switch:{{{2}}}|label=頭字語|category=頭字語}}<!-- -->|等翅類={{#switch:{{{2}}}|label=等翅類|category=等翅類}}<!-- -->|同族目的語={{#switch:{{{2}}}|label=同族目的語|category=同族目的語}}<!-- -->|頭足類={{#switch:{{{2}}}|label=頭足類|category=頭足類}}<!-- -->|トウダイグサ科={{#switch:{{{2}}}|label=トウダイグサ科|category=トウダイグサ科}}<!-- -->|東北官話|Northeastern Mandarin|NE Mandarin|northeastern Mandarin={{#switch:{{{2}}}|label=[[:w:東北官話|東北官話]]|category=東北官話}}<!-- -->|東南アジア史={{#switch:{{{2}}}|label=東南アジア史|category=東南アジア史}}<!-- -->|動物|animal={{#switch:{{{2}}}|label=[[動物]]|category=動物}}<!-- -->|動物学|zoology={{#switch:{{{2}}}|label=[[動物学]]|category=動物学}}<!-- -->|動物競技={{#switch:{{{2}}}|label=動物競技|category=動物競技}}<!-- -->|糖類|sugar|sugars={{#switch:{{{2}}}|label=[[糖類]]|category=糖類}}<!-- -->|道路|road={{#switch:{{{2}}}|label=[[道路]]|category=道路}}<!-- -->|ドーリス方言|ドーリス|Doric={{#switch:{{{2}}}|label=ドーリス方言|category=ドーリス方言}}<!-- -->|蜥蜴|とかげ|トカゲ|lizard={{#switch:{{{2}}}|label=[[とかげ|蜥蜴]]|category=蜥蜴}}<!-- -->|尖鼠={{#switch:{{{2}}}|label=尖鼠|category=尖鼠}}<!-- -->|特殊関数|special functions={{#switch:{{{2}}}|label=特殊関数|category=特殊関数}}<!-- -->|毒物学|toxicology={{#switch:{{{2}}}|label=毒物学|category=毒物学}}<!-- -->|時計|clock={{#switch:{{{2}}}|label=時計|category=時計}}<!-- -->|トケイソウ科={{#switch:{{{2}}}|label=トケイソウ科|category=トケイソウ科}}<!-- -->|兎形類|lagomorph={{#switch:{{{2}}}|label=兎形類|category=兎形類}}<!-- -->|登山={{#switch:{{{2}}}|label=登山|category=登山}}<!-- -->|年|year={{#switch:{{{2}}}|label=年|category=年}}<!-- -->|都市名|都市|city={{#switch:{{{2}}}|label=都市|category=都市名}}<!-- -->|ドジョウ={{#switch:{{{2}}}|label=ドジョウ|category=ドジョウ}}<!-- -->|土壌学={{#switch:{{{2}}}|label=土壌学|category=土壌学}}<!-- -->|都道府県|prefectures of Japan={{#switch:{{{2}}}|label=[[都道府県]]|category=都道府県}}<!-- -->|トスカナ語|トスカナ|Tuscany|Tuscan={{#switch:{{{2}}}|label=トスカナ語|category=トスカナ語}}<!-- -->|トスク方言|トスク|Tosk={{#switch:{{{2}}}|label=トスク方言|category=トスク方言}}<!-- -->|ドッジボール|dodgeball={{#switch:{{{2}}}|label=ドッジボール|category=ドッジボール}}<!-- -->|ドミニカスペイン語|ドミニカ変種|Dominica|Dominican|Dominican Republic={{#switch:{{{2}}}|label=ドミニカ|category=ドミニカスペイン語}}<!-- -->|ドラマ|drama={{#switch:{{{2}}}|label=ドラマ|category=ドラマ}}<!-- -->|鳥|bird={{#switch:{{{2}}}|label=鳥|category=鳥}}<!-- -->|トレディチ・コムーニ|Tredici Comuni|Thirteen Communities|13={{#switch:{{{2}}}|label=トレディチ・コムーニ|category=トレディチ・コムーニ方言}}<!-- -->|トルコ|Turkey={{#switch:{{{2}}}|label=トルコ|category=トルコ}}<!-- -->|トルコ語|Turkish={{#switch:{{{2}}}|label=トルコ語関連|category=トルコ語に関連する語}}<!-- -->|蜻蛉={{#switch:{{{2}}}|label=蜻蛉|category=蜻蛉}}<!-- -->|内科学|internal medicine={{#switch:{{{2}}}|label=内科学|category=内科学}}<!-- -->|ナイジェリア変種|Nigeria={{#switch:{{{2}}}|label=ナイジェリア|category=ナイジェリア{{language|{{{lang}}}}}}}<!-- -->|ナイフ|knife={{#switch:{{{2}}}|label=ナイフ|category=ナイフ}}<!-- -->|ナウパン|Naupan={{#switch:{{{2}}}|label=ナウパン|category=ナウパン方言}}<!-- -->|長柄武器|polearm={{#switch:{{{2}}}|label=長柄武器|category=長柄武器}}<!-- -->|なぎなた|naginata={{#switch:{{{2}}}|label=なぎなた|category=なぎなた}}<!-- -->|ナス科={{#switch:{{{2}}}|label=ナス科|category=ナス科}}<!-- -->|ナチズム|Nazism={{#switch:{{{2}}}|label=ナチズム|category=ナチズム}}<!-- -->|ナッツ|nuts={{#switch:{{{2}}}|label=ナッツ|category=ナッツ}}<!-- -->|ナデシコ科={{#switch:{{{2}}}|label=ナデシコ科|category=ナデシコ科}}<!-- -->|ナデシコ目|Caryophyllales={{#switch:{{{2}}}|label=ナデシコ目|category=ナデシコ目}}<!-- -->|ナミビア変種|Namibia={{#switch:{{{2}}}|label=ナミビア|category=ナミビア{{language|{{{lang}}}}}}}<!-- -->|軟体動物|mollusc={{#switch:{{{2}}}|label=軟体動物|category=軟体動物}}<!-- -->|軟体動物学={{#switch:{{{2}}}|label=軟体動物学|category=軟体動物学}}<!-- -->|南中部ベトナム|South Central Vietnam={{#switch:{{{2}}}|label=南中部ベトナム|category=南中部方言}}<!-- -->|南部カレリア|South Karelian={{#switch:{{{2}}}|label=南部カレリア|category=南部カレリア方言}}<!-- -->|南米|South American Spanish={{#switch:{{{2}}}|label=南米|category=南米スペイン語}}<!-- -->|南米の国|南米の国名|南アメリカの国|南アメリカの国名={{#switch:{{{2}}}|label=南米の国|category=南米の国名}}<!-- -->|ニカラグアスペイン語|ニカラグア変種|Nicaragua={{#switch:{{{2}}}|label=ニカラグア|category=ニカラグアスペイン語}}<!-- -->|肉|meat={{#switch:{{{2}}}|label=肉|category=肉}}<!-- -->|ニクズク科={{#switch:{{{2}}}|label=ニクズク科|category=ニクズク科}}<!-- -->|西アジア史={{#switch:{{{2}}}|label=西アジア史|category=西アジア史}}<!-- -->|西アルメニア語|西アルメニア|Western Armenian|hy-W={{#switch:{{{2}}}|label=西アルメニア語|category=西アルメニア語}}<!-- -->|ニシキギ科={{#switch:{{{2}}}|label=ニシキギ科|category=ニシキギ科}}<!-- -->|西ゲルマン|West Germanic={{#switch:{{{2}}}|label=西ゲルマン|category=西ゲルマン方言}}<!-- -->|西チェロキー|Western Cherokee={{#switch:{{{2}}}|label=西チェロキー|category=西チェロキー語}}<!-- -->|西ヨーロッパ史={{#switch:{{{2}}}|label=西ヨーロッパ史|category=西ヨーロッパ史}}<!-- -->|西ロンバルド語|西ロンバルド|Western Lombard={{#switch:{{{2}}}|label=西ロンバルド|category=西ロンバルド語}}<!-- -->|ニシン目={{#switch:{{{2}}}|label=ニシン目|category=ニシン目}}<!-- -->|日本={{#switch:{{{2}}}|label=日本|category=日本}}<!-- -->|日本拳法|nipponkempo={{#switch:{{{2}}}|label=日本拳法|category=日本拳法}}<!-- -->|日本語|Japanese={{#switch:{{{2}}}|label=日本語関連|category=日本語に関連する語}}<!-- -->|日本語人名={{#switch:{{{2}}}|label=日本語人名|category=日本語人名}}<!-- -->|日本史={{#switch:{{{2}}}|label=日本史|category=日本史}}<!-- -->|日本史 官名|官名={{#switch:{{{2}}}|label=日本の官名|category=日本史 官名}}<!-- -->|日本史時代区分={{#switch:{{{2}}}|label=日本史時代区分|category=日本史時代区分}}<!-- -->|日本神話|Japanese mythology={{#switch:{{{2}}}|label=日本神話|category=日本神話}}<!-- -->|日本の旧国名={{#switch:{{{2}}}|label=日本の旧国名|category=日本の旧国名}}<!-- -->|日本の月名={{#switch:{{{2}}}|label=日本の月名|category=日本の月名}}<!-- -->|日本の都市|city in Japan|cities in Japan={{#switch:{{{2}}}|label=日本の都市|category=日本の都市}}<!-- -->|日本の歴史上の人物={{#switch:{{{2}}}|label=日本の歴史上の人物|category=日本の歴史上の人物}}<!-- -->|日本の歴史的地名={{#switch:{{{2}}}|label=日本の歴史的地名|category=日本の歴史的地名}}<!-- -->|二枚貝|bivalve={{#switch:{{{2}}}|label=二枚貝|category=二枚貝}}<!-- -->|ニューカッスル|Tyneside|Geordie={{#switch:{{{2}}}|label=ニューカッスル|category=ニューカッスル方言}}<!-- -->|ニューカレドニア変種|New Caledonia={{#switch:{{{2}}}|label=ニューカレドニア|category=ニューカレドニア{{language|{{{lang}}}}}}}<!-- -->|ニュージーランド変種|New Zealand|NewZealand|NZ={{#switch:{{{2}}}|label=ニュージーランド|category=ニュージーランド{{language|{{{lang}}}}}}}<!-- -->|ニューファンドランド|ニューファンドランド・ラブラドール州|ニューファンドランド変種|Newfoundland={{#switch:{{{2}}}|label=ニューファンドランド・ラブラドール州|category=ニューファンドランド{{language|{{{lang}}}}}}}<!-- -->|ニューブランズウィック|New Brunswick={{#switch:{{{2}}}|label=ニューブランズウィック|category=ニューブランズウィック方言}}<!-- -->|乳製品|dairy product={{#switch:{{{2}}}|label=乳製品|category=乳製品}}<!-- -->|女房詞|女房言葉={{#switch:{{{2}}}|label=女房詞|category=女房詞}}<!-- -->|人間|human={{#switch:{{{2}}}|label=人間|category=人間}}<!-- -->|人間の活動|human activity|human activities={{#switch:{{{2}}}|label=人間の活動|category=人間の活動}}<!-- -->|人間行動学|human behavior={{#switch:{{{2}}}|label=人間行動学|category=人間行動学}}<!-- -->|ヌーオロ|Nuorese={{#switch:{{{2}}}|label=ヌーオロ|category=ヌーオロ・サルデーニャ語}}<!-- -->|猫|cat={{#switch:{{{2}}}|label=猫|category=猫}}<!-- -->|ネコ科|felids={{#switch:{{{2}}}|label=ネコ科|category=ネコ科}}<!-- -->|熱化学|thermochemistry={{#switch:{{{2}}}|label=熱化学|category=熱化学}}<!-- -->|ネットボール|netball={{#switch:{{{2}}}|label=ネットボール|category=ネットボール}}<!-- -->|ネットワーク|network={{#switch:{{{2}}}|label=ネットワーク|category=ネットワーク}}<!-- -->|熱力学|thermodynamics={{#switch:{{{2}}}|label=熱力学|category=熱力学}}<!-- -->|燃焼|combustion={{#switch:{{{2}}}|label=燃焼|category=燃焼}}<!-- -->|年代学|chronology={{#switch:{{{2}}}|label=年代学|category=年代学}}<!-- -->|脳|brain={{#switch:{{{2}}}|label=脳|category=脳}}<!-- -->|能|noh={{#switch:{{{2}}}|label=能|category=能}}<!-- -->|農学|agricultural science|agriscience={{#switch:{{{2}}}|label=農学|category=農学}}<!-- -->|能楽={{#switch:{{{2}}}|label=能楽|category=能楽}}<!-- -->|能格動詞|ergative={{#switch:{{{2}}}|label=能格動詞|category=能格動詞}}<!-- -->|農業|agriculture={{#switch:{{{2}}}|label=農業|category=農業}}<!-- -->|農業機械={{#switch:{{{2}}}|label=農業機械|category=農業機械}}<!-- -->|ノーサンブリア|Northumbrian={{#switch:{{{2}}}|label=ノーサンブリア|category=ノーサンブリア方言}}<!-- -->|ノースダコタ|ノースダコタ州|northern Lakota={{#switch:{{{2}}}|label=ノースダコタ州|category=北部方言}}<!-- -->|ノウゼンカズラ科={{#switch:{{{2}}}|label=ノウゼンカズラ科|category=ノウゼンカズラ科}}<!-- -->|乗り物|vehicle={{#switch:{{{2}}}|label=乗り物|category=乗り物}}<!-- -->|ハードウェア|computer hardware|hardware={{#switch:{{{2}}}|label=ハードウェア|category=ハードウェア}}<!-- -->|バーミューダ|バーミューダ英語|Bermuda={{#switch:{{{2}}}|label=バーミューダ|category=バーミューダ{{language|{{{lang}}}}}}}<!-- -->|ハーリング|hurling={{#switch:{{{2}}}|label=ハーリング|category=ハーリング}}<!-- -->|バイアスロン|biathlon={{#switch:{{{2}}}|label=バイアスロン|category=バイアスロン}}<!-- -->|廃語|obsolete={{#switch:{{{2}}}|label=廃語|category=廃語}}<!-- -->|破格|nonstandard|non-standard={{#switch:{{{2}}}|label=破格|category=破格}}<!-- -->|パキスタン変種|Pakistan={{#switch:{{{2}}}|label=パキスタン|category=パキスタン{{language|{{{lang}}}}}}}<!-- -->|履物|footwear={{#switch:{{{2}}}|label=履物|category=履物}}<!-- -->|馬具|horse tack={{#switch:{{{2}}}|label=馬具|category=馬具}}<!-- -->|爆薬|explosive={{#switch:{{{2}}}|label=爆薬|category=爆薬}}<!-- -->|禿鷹|vulture={{#switch:{{{2}}}|label=禿鷹|category=禿鷹}}<!-- -->|橋={{#switch:{{{2}}}|label=橋|category=橋}}<!-- -->|バショウ科|equestrianism={{#switch:{{{2}}}|label=バショウ科|category=バショウ科}}<!-- -->|馬術|equestrianism={{#switch:{{{2}}}|label=馬術|category=馬術}}<!-- -->|バスク・ペロタ|Basque pelota={{#switch:{{{2}}}|label=バスク・ペロタ|category=バスク・ペロタ}}<!-- -->|バスケットボール|basketball={{#switch:{{{2}}}|label=バスケットボール|category=バスケットボール}}<!-- -->|旗|flag={{#switch:{{{2}}}|label=旗|category=旗}}<!-- -->|蜂|bee={{#switch:{{{2}}}|label=蜂|category=蜂}}<!-- -->|爬虫両生類学={{#switch:{{{2}}}|label=爬虫両生類学|category=爬虫両生類学}}<!-- -->|爬虫類|reptile={{#switch:{{{2}}}|label=爬虫類|category=爬虫類}}<!-- -->|バックギャモン|backgammon={{#switch:{{{2}}}|label=バックギャモン|category=バックギャモン}}<!-- -->|発生生物学|発生学|embryology={{#switch:{{{2}}}|label=発生生物学|category=発生生物学}}<!-- -->|バドミントン|badminton={{#switch:{{{2}}}|label=バドミントン|category=バドミントン}}<!-- -->|バトントワリング|baton twirling={{#switch:{{{2}}}|label=バトントワリング|category=バトントワリング}}<!-- -->|花|flower={{#switch:{{{2}}}|label=花|category=花}}<!-- -->|パナマスペイン語|パナマ変種|Panama={{#switch:{{{2}}}|label=パナマ|category=パナマスペイン語}}<!-- -->|隼|falconid={{#switch:{{{2}}}|label=隼|category=隼}}<!-- -->|バラ科={{#switch:{{{2}}}|label=バラ科|category=バラ科}}<!-- -->|バラ目={{#switch:{{{2}}}|label=バラ目|category=バラ目}}<!-- -->|バラモン教={{#switch:{{{2}}}|label=バラモン教|category=バラモン教}}<!-- -->|バレエ|ballet={{#switch:{{{2}}}|label=バレエ|category=バレエ}}<!-- -->|バレーボール|volleyball={{#switch:{{{2}}}|label=バレーボール|category=バレーボール}}<!-- -->|バレンシア|Valencia={{#switch:{{{2}}}|label=バレンシア|category=バレンシア方言}}<!-- -->|ハロウィン|Halloween={{#switch:{{{2}}}|label=ハロウィン|category=ハロウィン}}<!-- -->|パワーリフティング|powerlifting={{#switch:{{{2}}}|label=パワーリフティング|category=パワーリフティング}}<!-- -->|ハワイ神話|Hawaiian mythology={{#switch:{{{2}}}|label=[[w:ハワイ神話|ハワイ神話]]|category=ハワイ神話}}<!-- -->|パン|bread={{#switch:{{{2}}}|label=パン|category=パン}}<!-- -->|ハングル={{#switch:{{{2}}}|label=ハングル|category=ハングル}}<!-- -->|犯罪|crime={{#switch:{{{2}}}|label=犯罪|category=犯罪}}<!-- -->|犯罪学|criminology={{#switch:{{{2}}}|label=犯罪学|category=犯罪学}}<!-- -->|半翅類={{#switch:{{{2}}}|label=半翅類|category=半翅類}}<!-- -->|半島|peninsula={{#switch:{{{2}}}|label=半島|category=半島}}<!-- -->|ハンドボール|handball={{#switch:{{{2}}}|label=ハンドボール|category=ハンドボール}}<!-- -->|パン・ヴラックス法|Pan-Vlax={{#switch:{{{2}}}|label=パン・ヴラックス法|category=パン・ヴラックス法}}<!-- -->|火|fire={{#switch:{{{2}}}|label=火|category=火}}<!-- -->|東アジア史={{#switch:{{{2}}}|label=東アジア史|category=東アジア史}}<!-- -->|東アルメニア語|東アルメニア|Eastern Armenian|hy-E={{#switch:{{{2}}}|label=東アルメニア語|category=東アルメニア語}}<!-- -->|東ゲルマン|East Germanic={{#switch:{{{2}}}|label=東ゲルマン|category=東ゲルマン方言}}<!-- -->|東チェロキー|Eastern Cherokee={{#switch:{{{2}}}|label=東チェロキー|category=東チェロキー語}}<!-- -->|東バシキール|Eastern Bashkir={{#switch:{{{2}}}|label=東バシキール|category=東バシキール語}}<!-- -->|東ヨーロッパ史={{#switch:{{{2}}}|label=東ヨーロッパ史|category=東ヨーロッパ史}}<!-- -->|東ロンバルド語|東ロンバルド|Eastern Lombard={{#switch:{{{2}}}|label=東ロンバルド|category=東ロンバルド語}}<!-- -->|光|light={{#switch:{{{2}}}|label=光|category=光}}<!-- -->|卑語|vulgar={{#switch:{{{2}}}|label=卑語|category=卑語}}<!-- -->|ビザンツ|Byzantine={{#switch:{{{2}}}|label=ビザンツ|category=ビザンツ}}<!-- -->|ビジネス|business={{#switch:{{{2}}}|label=ビジネス|category=ビジネス}}<!-- -->|美術={{#switch:{{{2}}}|label=美術|category=美術}}<!-- -->|ヒジュラ暦|Hijra|hijra|Islamic months|islamic months|Islamic month={{#switch:{{{2}}}|label=ヒジュラ暦|category=ヒジュラ暦}}<!-- -->|微生物学|microbiology={{#switch:{{{2}}}|label=微生物学|category=微生物学}}<!-- -->|ヒタキ科|squirrel={{#switch:{{{2}}}|label=ヒタキ科|category=ヒタキ科}}<!-- -->|ビタミン|Vitamin|vitamin={{#switch:{{{2}}}|label=ビタミン|category=ビタミン}}<!-- -->|羊|sheep={{#switch:{{{2}}}|label=羊|category=羊}}<!-- -->|否定極性表現|否定形で|negative polarity|in the negative={{#switch:{{{2}}}|label=[[付録:用語集#否定極性|否定極性]]表現で|category=否定極性表現}}<!-- -->|ヒト科|hominid={{#switch:{{{2}}}|label=ヒト科|category=ヒト科}}<!-- -->|皮肉|sarcastic|sarcastically|ironic={{#switch:{{{2}}}|label=皮肉|category=皮肉}}<!-- -->|泌尿器科学|urology={{#switch:{{{2}}}|label=泌尿器科学|category=泌尿器科学}}<!-- -->|非人称|impersonal={{#switch:{{{2}}}|label=非人称|category=非人称動詞}}<!-- -->|ビバロ・アルピーネ語|ビバロ・アルピーネ|Vivaro-Alpine={{#switch:{{{2}}}|label=ビバロ・アルピーネ語|category=ビバロ・アルピーネ語}}<!-- -->|皮膚|skin={{#switch:{{{2}}}|label=[[皮膚]]|category=皮膚}}<!-- -->|皮膚科学|dermatology={{#switch:{{{2}}}|label=皮膚科学|category=皮膚科学}}<!-- -->|微分幾何学={{#switch:{{{2}}}|label=[[微分幾何学]]|category=微分幾何学}}<!-- -->|微分積分学|微積分学|微分積分|微積分|微分|積分|calculus|differentiation|integral={{#switch:{{{2}}}|label=[[微分積分学]]|category=微分積分学}}<!-- -->|ヒメハギ科={{#switch:{{{2}}}|label=ヒメハギ科|category=ヒメハギ科}}<!-- -->|ビャクダン科={{#switch:{{{2}}}|label=ビャクダン科|category=ビャクダン科}}<!-- -->|比喩|figurative={{#switch:{{{2}}}|label=[[比喩]]|category=比喩}}<!-- -->|ヒユ科|squirrel={{#switch:{{{2}}}|label=ヒユ科|category=ヒユ科}}<!-- -->|豹|ヒョウ属|panther={{#switch:{{{2}}}|label=ヒョウ属|category=豹}}<!-- -->|病気|disease={{#switch:{{{2}}}|label=[[病気]]|category=病気}}<!-- -->|標準アルバニア語|Standard Albanian={{#switch:{{{2}}}|label=標準アルバニア語|category=標準アルバニア語}}<!-- -->|標準バビロニア語|SBab|Standard Babylonian={{#switch:{{{2}}}|label=標準バビロニア語|category=標準バビロニア語}}<!-- -->|病理学|pathology={{#switch:{{{2}}}|label=[[病理学]]|category=病理学}}<!-- -->|平安道方言|平安道|Pyongan={{#switch:{{{2}}}|label=平安道方言|category=平安道方言}}<!-- -->|ビリヤード|billiards={{#switch:{{{2}}}|label=[[ビリヤード]]|category=ビリヤード}}<!-- -->|ヒルガオ科={{#switch:{{{2}}}|label=ヒルガオ科|category=ヒルガオ科}}<!-- -->|ビワモドキ科={{#switch:{{{2}}}|label=ビワモドキ科|category=ビワモドキ科}}<!-- -->|ビワモドキ目={{#switch:{{{2}}}|label=ビワモドキ目|category=ビワモドキ目}}<!-- -->|品詞|part of speech|parts of speech={{#switch:{{{2}}}|label=品詞|category=品詞}}<!-- -->|ヒンズー教|ヒンドゥー教|Hinduism={{#switch:{{{2}}}|label=ヒンズー教|category=ヒンズー教}}<!-- -->|ファイユーム|Fayyumic={{#switch:{{{2}}}|label=ファイユーム|category=ファイユーム方言}}<!-- -->|ファシズム|fascism={{#switch:{{{2}}}|label=ファシズム|category=ファシズム}}<!-- -->|ファッション|fashion={{#switch:{{{2}}}|label=ファッション|category=ファッション}}<!-- -->|フィールドホッケー|field hockey={{#switch:{{{2}}}|label=フィールドホッケー|category=フィールドホッケー}}<!-- -->|フィギュアスケート|figure skating={{#switch:{{{2}}}|label=フィギュアスケート|category=フィギュアスケート}}<!-- -->|ブードゥー教|voodoo={{#switch:{{{2}}}|label=ブードゥー教|category=ブードゥー教}}<!-- -->|プーター|Puter={{#switch:{{{2}}}|label=プーター|category=プーター}}<!-- -->|ファンタジー|fantasy={{#switch:{{{2}}}|label=ファンタジー|category=ファンタジー}}<!-- -->|フィクション|fiction={{#switch:{{{2}}}|label=フィクション|category=フィクション}}<!-- -->|フィリピン変種|Philippine|Philippines|フィリピン={{#switch:{{{2}}}|label=フィリピン|category=フィリピン{{language|{{{lang}}}}}}}<!-- -->|フウロソウ目={{#switch:{{{2}}}|label=フウロソウ目|category=フウロソウ目}}<!-- -->|フェミニズム|feminism={{#switch:{{{2}}}|label=フェミニズム|category=フェミニズム}}<!-- -->|フェリング・エームラング|Föhr-Amrum={{#switch:{{{2}}}|label=フェリング・エームラング|category=フェリング・エームラング方言}}<!-- -->|プエルトリコスペイン語|プエルトリコ変種|Puerto Rico={{#switch:{{{2}}}|label=プエルトリコ|category=プエルトリコスペイン語}}<!-- -->|フェンシング|fencing={{#switch:{{{2}}}|label=フェンシング|category=フェンシング}}<!-- -->|フォルマッツァ|Formazza={{#switch:{{{2}}}|label=フォルマッツァ語|category=フォルマッツァ語}}<!-- -->|フォント|font={{#switch:{{{2}}}|label=フォント|category=フォント}}<!-- -->|不可算名詞|不可算|uncountable|uncountable+={{#switch:{{{2}}}|label=不可算|category=不可算名詞}}<!-- -->|不活動体|inanimate={{#switch:{{{2}}}|label=不活動体|category=不活動体}}<!-- -->|武器|weapon={{#switch:{{{2}}}|label=武器|category=武器}}<!-- -->|フクギ科={{#switch:{{{2}}}|label=フクギ科|category=フクギ科}}<!-- -->|副詞句={{#switch:{{{2}}}|label=副詞句|category=成句 副詞句}}<!-- -->|複素解析|複素解析学|複素関数論|関数論|complex analysis={{#switch:{{{2}}}|label=複素解析学|category=複素解析}}<!-- -->|フグ目={{#switch:{{{2}}}|label=フグ目|category=フグ目}}<!-- -->|副助詞={{#switch:{{{2}}}|label=副助詞|category=助詞 副助詞}}<!-- -->|腹足類|gastropod={{#switch:{{{2}}}|label=腹足類|category=腹足類}}<!-- -->|袋|bag|bags={{#switch:{{{2}}}|label=袋|category=袋}}<!-- -->|梟|owl={{#switch:{{{2}}}|label=梟|category=梟}}<!-- -->|武術|martial art|martial arts={{#switch:{{{2}}}|label=武術|category=武術}}<!-- -->|武術家={{#switch:{{{2}}}|label=武術家|category=武術家}}<!-- -->|婦人科学|gynaecology={{#switch:{{{2}}}|label=婦人科学|category=婦人科学}}<!-- -->|豚|pig={{#switch:{{{2}}}|label=豚|category=豚}}<!-- -->|フタバガキ科={{#switch:{{{2}}}|label=フタバガキ科|category=フタバガキ科}}<!-- -->|復活祭|Easter={{#switch:{{{2}}}|label=復活祭|category=復活祭}}<!-- -->|仏教|Buddhism={{#switch:{{{2}}}|label=仏教|category=仏教}}<!-- -->|フットボール|football={{#switch:{{{2}}}|label=フットボール|category=フットボール}}<!-- -->|物理化学|physical chemistry={{#switch:{{{2}}}|label=物理化学|category=物理化学}}<!-- -->|物理学|物理|physics={{#switch:{{{2}}}|label=物理学|category=物理学}}<!-- -->|武道={{#switch:{{{2}}}|label=武道|category=武道}}<!-- -->|ブドウ科={{#switch:{{{2}}}|label=ブドウ科|category=ブドウ科}}<!-- -->|武道家={{#switch:{{{2}}}|label=武道家|category=武道家}}<!-- -->|不動産={{#switch:{{{2}}}|label=不動産|category=不動産}}<!-- -->|フトモモ科={{#switch:{{{2}}}|label=フトモモ科|category=フトモモ科}}<!-- -->|フトモモ目={{#switch:{{{2}}}|label=フトモモ目|category=フトモモ目}}<!-- -->|鮒={{#switch:{{{2}}}|label=鮒|category=鮒}}<!-- -->|ブナ科={{#switch:{{{2}}}|label=ブナ科|category=ブナ科}}<!-- -->|ブナ目={{#switch:{{{2}}}|label=ブナ目|category=ブナ目}}<!-- -->|プファルツ語|プファルツ|Palatine={{#switch:{{{2}}}|label=プファルツ語|category=プファルツ語}}<!-- -->|不変化名詞|不変化|indeclinable={{#switch:{{{2}}}|label=不変化名詞|category=不変化名詞}}<!-- -->|ブラジルポルトガル語|ブラジル変種|Brazil={{#switch:{{{2}}}|label=ブラジル|category=ブラジルポルトガル語}}<!-- -->|プラスチック|plastic={{#switch:{{{2}}}|label=プラスチック|category=プラスチック}}<!-- -->|フラマン語={{#switch:{{{2}}}||label=フラマン語|category=フラマン語}}<!-- -->|フラメンコ|flamenco={{#switch:{{{2}}}|label=フラメンコ|category=フラメンコ}}<!-- -->|フランス={{#switch:{{{2}}}|label=フランス|category=フランス}}<!-- -->|フランス語={{#switch:{{{2}}}||label=フランス語関連|category=フランス語に関連する語}}<!-- -->|フランス変種|France|French={{#switch:{{{2}}}|label=フランス|category=フランス{{language|{{{lang}}}}}}}<!-- -->|ブリッジ|bridge={{#switch:{{{2}}}|label=ブリッジ|category=ブリッジ}}<!-- -->|プロヴァンス語|プロヴァンス|Provençal={{#switch:{{{2}}}|label=プロヴァンス|category=プロヴァンス語}}<!-- -->|プログラミング|programming={{#switch:{{{2}}}|label=プログラミング|category=プログラミング}}<!-- -->|プロテスタント|Protestantism|Protestant={{#switch:{{{2}}}|label=プロテスタント|category=プロテスタント}}<!-- -->|文化|culture={{#switch:{{{2}}}|label=文化|category=文化}}<!-- -->|文化語|North Korea={{#switch:{{{2}}}|label=文化語|category=文化語}}<!-- -->|文学|literature={{#switch:{{{2}}}|label=文学|category=文学}}<!-- -->|文献={{#switch:{{{2}}}|label=文献|category=文献}}<!-- -->|文献学|philology={{#switch:{{{2}}}|label=文献学|category=文献学}}<!-- -->|文章語|文語|literary={{#switch:{{{2}}}|label=文章語|category=文章語}}<!-- -->|文法|grammar={{#switch:{{{2}}}|label=文法|category=文法}}<!-- -->|文房具|stationery={{#switch:{{{2}}}|label=文房具|category=文房具}}<!-- -->|分類学|taxonomy={{#switch:{{{2}}}|label=分類学|category=分類学}}<!-- -->|平安|평안|Pyeongan={{#switch:{{{2}}}|label=平安|category=平安道方言}}<!-- -->|米語|American spelling|US={{#switch:{{{2}}}|label=米語|category=米語}}<!-- -->|平南|平安南道|평남|South Pyeongan={{#switch:{{{2}}}|label=平南|category=平安道方言}}<!-- -->|平北|平安北道|평북|North Pyongan={{#switch:{{{2}}}|label=平北|category=平安道方言}}<!-- -->|ペイントボール|paitnball={{#switch:{{{2}}}|label=ペイントボール|category=ペイントボール}}<!-- -->|北京語|Beijing Mandarin|Beijing|Peking|Pekingese={{#switch:{{{2}}}|label=[[:w:北京語|北京語]]|category=北京語}}<!-- -->|ベクトル解析|ベクトル解析学|vector calculus={{#switch:{{{2}}}|label=[[:w:ベクトル解析|ベクトル解析]]|category=ベクトル解析}}<!-- -->|ペサパッロ|pesäpallo={{#switch:{{{2}}}|label=ペサパッロ|category=ペサパッロ}}<!-- -->|蔑称|derogatory|offensive={{#switch:{{{2}}}|label=[[蔑称]]|category=蔑称}}<!-- -->|ベトナム|Vietnam={{#switch:{{{2}}}|label=[[ベトナム]]|category=ベトナム}}<!-- -->|ベトナム語|Vietnamese={{#switch:{{{2}}}|label=ベトナム語関連|category=ベトナム語に関連する語}}<!-- -->|ベトナム史={{#switch:{{{2}}}|label=ベトナム史|category=ベトナム史}}<!-- -->|ベトナム変種={{#switch:{{{2}}}|label=ベトナム|category=ベトナム{{language|{{{lang}}}}}}}<!-- -->|ベナン変種|Benin={{#switch:{{{2}}}|label=ベナン|category=ベナン{{language|{{{lang}}}}}}}<!-- -->|ベネズエラスペイン語|ベネズエラ変種|Venezuela={{#switch:{{{2}}}|label=ベネズエラ|category=ベネズエラスペイン語}}<!-- -->|蛇|snake={{#switch:{{{2}}}|label=蛇|category=蛇}}<!-- -->|ヘブライ語={{#switch:{{{2}}}|label=ヘブライ語関連|category=ヘブライ語に関連する語}}<!-- -->|部屋|room={{#switch:{{{2}}}|label=部屋|category=部屋}}<!-- -->|ベラルーシ|Belarus={{#switch:{{{2}}}|label=ベラルーシ|category=ベラルーシ}}<!-- -->|ベラルーシ語|Belarusian={{#switch:{{{2}}}|label=ベラルーシ語関連|category=ベラルーシ語に関連する語}}<!-- -->|ベラルーシ史={{#switch:{{{2}}}|label=ベラルーシ史|category=ベラルーシ史}}<!-- -->|ベラルーシ変種={{#switch:{{{2}}}|label=ベラルーシ|category=ベラルーシ{{language|{{{lang}}}}}}}<!-- -->|ペルースペイン語|ペルー変種|Peru={{#switch:{{{2}}}|label=ペルー|category=ペルースペイン語}}<!-- -->|ベルギー変種|Belgian|België|Belgium|ベルギー={{#switch:{{{2}}}|label=ベルギー|category=ベルギー{{language|{{{lang}}}}}}}<!-- -->|ヘルゴラント|Helgoland={{#switch:{{{2}}}|label=ヘルゴラント|category=ヘルゴラント方言}}<!-- -->|ペルシア語|Persian={{#switch:{{{2}}}|label=ペルシア語関連|category=ペルシア語に関連する語}}<!-- -->|ペンギン|penguin={{#switch:{{{2}}}|label=ペンギン|category=ペンギン}}<!-- -->|ベンケイソウ科={{#switch:{{{2}}}|label=ベンケイソウ科|category=ベンケイソウ科}}<!-- -->|扁形動物|platyhelminth={{#switch:{{{2}}}|label=扁形動物|category=扁形動物}}<!-- -->|ペン回し|pen spinning={{#switch:{{{2}}}|label=ペン回し|category=ペン回し}}<!-- -->|方位|方角|compass point|direction={{#switch:{{{2}}}|label=方位|category=方位}}<!-- -->|貿易|trade={{#switch:{{{2}}}|label=貿易|category=貿易}}<!-- -->|法学|jurisprudence={{#switch:{{{2}}}|label=法学|category=法学}}<!-- -->|方言|dialect|dialectal={{#switch:{{{2}}}|label=方言|category=方言}}<!-- -->|法執行|law enforcement={{#switch:{{{2}}}|label=法執行|category=法執行}}<!-- -->|棒術={{#switch:{{{2}}}|label=棒術|category=棒術}}<!-- -->|宝飾|jewelry={{#switch:{{{2}}}|label=宝飾|category=宝飾}}<!-- -->|紡績|weaving={{#switch:{{{2}}}|label=紡績|category=紡績}}<!-- -->|放送={{#switch:{{{2}}}|label=放送|category=放送}}<!-- -->|法曹={{#switch:{{{2}}}|label=法曹|category=法曹}}<!-- -->|法律|law|legal={{#switch:{{{2}}}|label=法律|category=法律}}<!-- -->|ボウリング|bowling={{#switch:{{{2}}}|label=ボウリング|category=ボウリング}}<!-- -->|ポーカー|poker={{#switch:{{{2}}}|label=ポーカー|category=ポーカー}}<!-- -->|ボート競技|rowing={{#switch:{{{2}}}|label=ボート競技|category=ボート競技}}<!-- -->|ボードゲーム|board game|board games={{#switch:{{{2}}}|label=ボードゲーム|category=ボードゲーム}}<!-- -->|ポーランド={{#switch:{{{2}}}|label=ポーランド|category=ポーランド}}<!-- -->|ポーランド語|Polish={{#switch:{{{2}}}|label=ポーランド語関連|category=ポーランド語に関連する語}}<!-- -->|ポーランド変種|Poland={{#switch:{{{2}}}|label=ポーランド|category=ポーランド{{language|{{{lang}}}}}}}<!-- -->|簿記|bookkeeping={{#switch:{{{2}}}|label=簿記|category=簿記}}<!-- -->|北欧神話|Norse mythology={{#switch:{{{2}}}|label=北欧神話|category=北欧神話}}<!-- -->|ボクシング|boxing={{#switch:{{{2}}}|label=ボクシング|category=ボクシング}}<!-- -->|北西ゲルマン|Northwest Germanic={{#switch:{{{2}}}|label=北西ゲルマン|category=北西ゲルマン方言}}<!-- -->|北中部ベトナム|North Central Vietnam={{#switch:{{{2}}}|label=北中部ベトナム|category=北中部方言}}<!-- -->|北部カレリア|North Karelian={{#switch:{{{2}}}|label=北部カレリア|category=北部カレリア方言}}<!-- -->|北米の国|北米の国名|北アメリカの国|北アメリカの国名={{#switch:{{{2}}}|label=北米の国|category=北米の国名}}<!-- -->|保険|insurance={{#switch:{{{2}}}|label=保険|category=保険}}<!-- -->|補助動詞={{#switch:{{{2}}}|label=補助動詞|category=補助動詞}}<!-- -->|ボスニア語|Bosnia|Bosnian={{#switch:{{{2}}}|label=ボスニア|category=ボスニア語}}<!-- -->|北海道={{#switch:{{{2}}}|label=北海道|category=北海道}}<!-- -->|ホッケー|hockey={{#switch:{{{2}}}|label=ホッケー|category=ホッケー}}<!-- -->|ボディビル|bodybuilding={{#switch:{{{2}}}|label=ボディビル|category=ボディビル}}<!-- -->|哺乳類|mammal={{#switch:{{{2}}}|label=哺乳類|category=哺乳類}}<!-- -->|哺乳類学|mammalogy={{#switch:{{{2}}}|label=哺乳類学|category=哺乳類学}}<!-- -->|ボブスレー|bobsleigh={{#switch:{{{2}}}|label=ボブスレー|category=ボブスレー}}<!-- -->|ボハイラ|Bohairic={{#switch:{{{2}}}|label=ボハイラ|category=ボハイラ方言}}<!-- -->|ポリアモリー|polyamory={{#switch:{{{2}}}|label=ポリアモリー|category=ポリアモリー}}<!-- -->|ボリビアスペイン語|ボリビア変種|Bolivia={{#switch:{{{2}}}|label=ボリビア|category=ボリビアスペイン語}}<!-- -->|ポルトガル={{#switch:{{{2}}}|label=ポルトガル|category=ポルトガル}}<!-- -->|ポルトガル語|Portuguese={{#switch:{{{2}}}|label=ポルトガル語関連|category=ポルトガル語に関連する語}}<!-- -->|ポルトガル変種|イベリアポルトガル語|Portugal={{#switch:{{{2}}}|label=ポルトガル|category=イベリアポルトガル語}}<!-- -->|ホルトノキ科={{#switch:{{{2}}}|label=ホルトノキ科|category=ホルトノキ科}}<!-- -->|香港英語|Hong Kong={{#switch:{{{2}}}|label=香港|category=香港英語}}<!-- -->|香港語|Hong Kong Cantonese={{#switch:{{{2}}}|label=香港語|category=香港語}}<!-- -->|ホンジュラススペイン語|ホンジュラス変種|Honduras={{#switch:{{{2}}}|label=ホンジュラス|category=ホンジュラススペイン語}}<!-- -->|翻訳研究|translation studies={{#switch:{{{2}}}|label=翻訳研究|category=翻訳研究}}<!-- -->|マーケティング|marketing|Marketing={{#switch:{{{2}}}|label=マーケティング|category=マーケティング}}<!-- -->|マーシア|Mercian={{#switch:{{{2}}}|label=マーシア|category=マーシア方言}}<!-- -->|麻雀|mahjong={{#switch:{{{2}}}|label=麻雀|category=麻雀}}<!-- -->|埋葬={{#switch:{{{2}}}|label=埋葬|category=埋葬}}<!-- -->|膜翅類={{#switch:{{{2}}}|label=膜翅類|category=膜翅類}}<!-- -->|鮪|まぐろ|マグロ={{#switch:{{{2}}}|label=鮪|category=鮪}}<!-- -->|マスメディア|mass media={{#switch:{{{2}}}|label=マスメディア|category=マスメディア}}<!-- -->|マダガスカルマングース科={{#switch:{{{2}}}|label=マダガスカルマングース科|category=マダガスカルマングース科}}<!-- -->|マチン科={{#switch:{{{2}}}|label=マチン科|category=マチン科}}<!-- -->|マニカ|Manyika={{#switch:{{{2}}}|label=マニカ|category=マニカ方言}}<!-- -->|マメ科={{#switch:{{{2}}}|label=マメ科|category=マメ科}}<!-- -->|マメ目={{#switch:{{{2}}}|label=マメ目|category=マメ目}}<!-- -->|マレーシア華語|Malaysian Mandarin|Malaysia Mandarin={{#switch:{{{2}}}|label=[[:w:マレーシア華語|マレーシア]]|category=マレーシア華語}}<!-- -->|マレーシアタミル語|マレーシアタミル語|Malaysian Tamil={{#switch:{{{2}}}|label=マレーシア|category=マレーシアタミル語}}<!-- -->|マレーシア福建|マレーシア福建語|Malaysian Hokkien|Malaysia Hokkien={{#switch:{{{2}}}|label=マレーシア|category=方言}}<!-- -->|マレーシア変種|Malaysia|Malaysian={{#switch:{{{2}}}|label=マレーシア|category=マレーシア{{language|{{{lang}}}}}}}<!-- -->|マンスター|Munster={{#switch:{{{2}}}|label=マンスター|category=マンスター方言}}<!-- -->|マン島|マン島変種|Isle of Man|Manx={{#switch:{{{2}}}|label=マン島|category=マン島{{language|{{{lang}}}}}}}<!-- -->|ミカン科={{#switch:{{{2}}}|label=ミカン科|category=ミカン科}}<!-- -->|湖|lake={{#switch:{{{2}}}|label=湖|category=湖}}<!-- -->|ミストラル式綴り|ミストラル式|ミストラル|Mistralian={{#switch:{{{2}}}|label=ミストラル式綴り|category=ミストラル式綴り}}<!-- -->|ミソハギ科={{#switch:{{{2}}}|label=ミソハギ科|category=ミソハギ科}}<!-- -->|南アジア史={{#switch:{{{2}}}|label=南アジア史|category=南アジア史}}<!-- -->|南アゼルバイジャン|South Azerbaijani={{#switch:{{{2}}}|label=南アゼルバイジャン|category=南アゼルバイジャン語}}<!-- -->|南アフリカ英語|南アフリカ変種|South Africa|South African={{#switch:{{{2}}}|label=南アフリカ|category=南アフリカ英語}}<!-- -->|南アメリカ={{#switch:{{{2}}}|label=南アメリカ|category=南アメリカ}}<!-- -->|南アメリカ史={{#switch:{{{2}}}|label=南アメリカ史|category=南アメリカ史}}<!-- -->|南ベトナム|southern Vietnam|Southern Vietnam|South Vietnam={{#switch:{{{2}}}|label=南ベトナム|category=南部方言}}<!-- -->|南ヨーロッパ史={{#switch:{{{2}}}|label=南ヨーロッパ史|category=南ヨーロッパ史}}<!-- -->|脈翅類={{#switch:{{{2}}}|label=脈翅類|category=脈翅類}}<!-- -->|ミルパ・アルタ|Milpa Alta={{#switch:{{{2}}}|label=ミルパ・アルタ|category=ミルパ・アルタ方言}}<!-- -->|民主主義={{#switch:{{{2}}}|label=民主主義|category=民主主義}}<!-- -->|民族|ethnonym|ethnonyms={{#switch:{{{2}}}|label=民族|category=民族}}<!-- -->|民族差別|ethnic slur={{#switch:{{{2}}}|label=民族差別|category=民族差別}}<!-- -->|ムエタイ|Muay Thai={{#switch:{{{2}}}|label=ムエタイ|category=ムエタイ}}<!-- -->|無機化学|inorganic chemistry={{#switch:{{{2}}}|label=無機化学|category=無機化学}}<!-- -->|無機化合物|inorganic compound={{#switch:{{{2}}}|label=無機化合物|category=無機化合物}}<!-- -->|ムクロジ科={{#switch:{{{2}}}|label=ムクロジ科|category=ムクロジ科}}<!-- -->|ムクロジ目={{#switch:{{{2}}}|label=ムクロジ目|category=ムクロジ目}}<!-- -->|無脊椎動物|invertebrate={{#switch:{{{2}}}|label=無脊椎動物|category=無脊椎動物}}<!-- -->|ムラサキ科={{#switch:{{{2}}}|label=ムラサキ科|category=ムラサキ科}}<!-- -->|ムルシア方言|ムルシア|Murcia={{#switch:{{{2}}}|label=ムルシア|category=ムルシア方言}}<!-- -->|名詞句={{#switch:{{{2}}}|label=名詞句|category=成句 名詞句}}<!-- -->|メキシコスペイン語|メキシコ変種|Mexico={{#switch:{{{2}}}|label=メキシコ|category=メキシコスペイン語}}<!-- -->|メコンデルタ方言|メコンデルタ|Mekong Delta={{#switch:{{{2}}}|label=メコンデルタ|category=メコンデルタ方言}}<!-- -->|メディア={{#switch:{{{2}}}|label=メディア|category=メディア}}<!-- -->|メノルカ|Menorca={{#switch:{{{2}}}|label=メノルカ|category=メノルカ方言}}<!-- -->|免疫学|immunology={{#switch:{{{2}}}|label=免疫学|category=免疫学}}<!-- -->|棉蘭|Medan Hokkien|Medan={{#switch:{{{2}}}|label=棉蘭|category=方言}}<!-- -->|猛禽類={{#switch:{{{2}}}|label=猛禽類|category=猛禽類}}<!-- -->|網翅類={{#switch:{{{2}}}|label=網翅類|category=網翅類}}<!-- -->|モーゼル・フランケン|Moselle Franconian={{#switch:{{{2}}}|label=モーゼル・フランケン|category=モーゼル・フランケン方言}}<!-- -->|モータースポーツ|motor racing|motorsports={{#switch:{{{2}}}|label=モータースポーツ|category=モータースポーツ}}<!-- -->|モーターボート競走|motorboat racing={{#switch:{{{2}}}|label=モーターボート競走|category=モーターボート競走}}<!-- -->|モーリング|Mooring={{#switch:{{{2}}}|label=モーリング|category=モーリング方言}}<!-- -->|モクセイ科={{#switch:{{{2}}}|label=モクセイ科|category=モクセイ科}}<!-- -->|モクレン科={{#switch:{{{2}}}|label=モクレン科|category=モクレン科}}<!-- -->|モクレン目={{#switch:{{{2}}}|label=モクレン目|category=モクレン目}}<!-- -->|文字={{#switch:{{{2}}}|label=文字|category=文字}}<!-- -->|モトクロス|motocross={{#switch:{{{2}}}|label=モトクロス|category=モトクロス}}<!-- -->|モニミア科={{#switch:{{{2}}}|label=モニミア科|category=モニミア科}}<!-- -->|モルドヴァ語|モルドバ語|Moldova={{#switch:{{{2}}}|label=モルドバ|category=モルドヴァ語}}<!-- -->|モロッコ変種|Morocco={{#switch:{{{2}}}|label=モロッコ|category=モロッコ{{language|{{{lang}}}}}}}<!-- -->|モンゴル|Mongolia={{#switch:{{{2}}}|label=モンゴル|category=モンゴル}}<!-- -->|モンゴル語|Mongolian={{#switch:{{{2}}}|label=モンゴル語関連|category=モンゴル語に関連する語}}<!-- -->|モンゴル史={{#switch:{{{2}}}|label=モンゴル史|category=モンゴル史}}<!-- -->|紋章学|heraldry={{#switch:{{{2}}}|label=紋章学|category=紋章学}}<!-- -->|モンテネグロ={{#switch:{{{2}}}|label=モンテネグロ|category=モンテネグロ}} -->|モンテネグロ語|Montenegro|Montenegrin={{#switch:{{{2}}}|label=モンテネグロ|category=モンテネグロ語}}<!-- -->|モンテネグロ史={{#switch:{{{2}}}|label=モンテネグロ史|category=モンテネグロ史}}<!-- -->|山羊|goat={{#switch:{{{2}}}|label=山羊|category=山羊}}<!-- -->|ヤギ亜科={{#switch:{{{2}}}|label=ヤギ亜科|category=ヤギ亜科}}<!-- -->|野球|baseball={{#switch:{{{2}}}|label=野球|category=野球}}<!-- -->|薬学|pharmacy={{#switch:{{{2}}}|label=薬学|category=薬学}}<!-- -->|約物の名称|約物={{#switch:{{{2}}}|label=約物の名称|category=約物の名称}}<!-- -->|薬理学|pharmacology={{#switch:{{{2}}}|label=薬理学|category=薬理学}}<!-- -->|野菜|vegetable={{#switch:{{{2}}}|label=野菜|category=野菜}}<!-- -->|ヤシ科={{#switch:{{{2}}}|label=ヤシ科|category=ヤシ科}}<!-- -->|ヤシ目={{#switch:{{{2}}}|label=ヤシ目|category=ヤシ目}}<!-- -->|ヤツメウナギ={{#switch:{{{2}}}|label=ヤツメウナギ|category=ヤツメウナギ}}<!-- -->|ヤナギ科={{#switch:{{{2}}}|label=ヤナギ科|category=ヤナギ科}}<!-- -->|槍={{#switch:{{{2}}}|label=槍|category=槍}}<!-- -->|有機化学|organic chemistry={{#switch:{{{2}}}|label=有機化学|category=有機化学}}<!-- -->|有機化合物|organic compound={{#switch:{{{2}}}|label=有機化合物|category=有機化合物}}<!-- -->|有袋類|marsupial={{#switch:{{{2}}}|label=有袋類|category=有袋類}}<!-- -->|有尾目={{#switch:{{{2}}}|label=有尾目|category=有尾目}}<!-- -->|郵便={{#switch:{{{2}}}|label=郵便|category=郵便}}<!-- -->|有毛類={{#switch:{{{2}}}|label=有毛類|category=有毛類}}<!-- -->|雪|snow={{#switch:{{{2}}}|label=雪|category=雪}}<!-- -->|ユキノシタ目={{#switch:{{{2}}}|label=ユキノシタ目|category=ユキノシタ目}}<!-- -->|ユダヤ教|Judaea|Judaism={{#switch:{{{2}}}|label=ユダヤ教|category=ユダヤ教}}<!-- -->|弓矢|bow and arrow={{#switch:{{{2}}}|label=弓矢|category=弓矢}}<!-- -->|容器|container={{#switch:{{{2}}}|label=容器|category=容器}}<!-- -->|幼児語|childish={{#switch:{{{2}}}|label=幼児語|category=幼児語}}<!-- -->|曜日={{#switch:{{{2}}}|label=曜日|category=曜日}}<!-- -->|養蜂={{#switch:{{{2}}}|label=養蜂|category=養蜂}}<!-- -->|ヨークシャー|ヨークシャー英語|Yorkshire={{#switch:{{{2}}}|label=ヨークシャー|category=ヨークシャー{{language|{{{lang}}}}}}}<!-- -->|ヨーロッパ|Europe={{#switch:{{{2}}}|label=ヨーロッパ|category=ヨーロッパ}}<!-- -->|ヨーロッパ史={{#switch:{{{2}}}|label=ヨーロッパ史|category=ヨーロッパ史}}<!-- -->|ヨーロッパの国|ヨーロッパの国名={{#switch:{{{2}}}|label=ヨーロッパの国|category=ヨーロッパの国名}}<!-- -->|四字熟語={{#switch:{{{2}}}|label=四字熟語|category=四字熟語}}<!-- -->|ヨシノボリ={{#switch:{{{2}}}|label=ヨシノボリ|category=ヨシノボリ}}<!-- -->|ラオス変種|Laos={{#switch:{{{2}}}|label=ラオス|category=ラオス{{language|{{{lang}}}}}}}<!-- -->|落語={{#switch:{{{2}}}|label=落語|category=落語}}<!-- -->|駱駝={{#switch:{{{2}}}|label=駱駝|category=駱駝}}<!-- -->|ラクダ科|camelid={{#switch:{{{2}}}|label=ラクダ科|category=ラクダ科}}<!-- -->|ラグビー|rugby={{#switch:{{{2}}}|label=ラグビー|category=ラグビー}}<!-- -->|ラクロス|lacrosse={{#switch:{{{2}}}|label=ラクロス|category=ラクロス}}<!-- -->|ラジオ|radio={{#switch:{{{2}}}|label=ラジオ|category=ラジオ}}<!-- -->|ラテンアメリカ|Latin America|Latin American Spanish={{#switch:{{{2}}}|label=ラテンアメリカ|category=ラテンアメリカ{{language|{{{lang}}}}}}}<!-- -->|ラテン語|Latin={{#switch:{{{2}}}|label=ラテン語関連|category=ラテン語に関連する語}}<!-- -->|ラ・マンチャ|Castilla La Mancha={{#switch:{{{2}}}|label=ラ・マンチャ|category=ラ・マンチャ方言}}<!-- -->|蘭銀官話|Lanyin Mandarin|Lan-Yin Mandarin|Lanyin={{#switch:{{{2}}}|label=[[:w:蘭銀官話|蘭銀官話]]|category=蘭銀官話}}<!-- -->|ラングドック語|ラングドック|Langedoc|Languedoc|Languedocien|ラングドック={{#switch:{{{2}}}|label=ラングドック|category=ラングドック語}}<!-- -->|リオグランデ・ド・スル|Rio Grande do Sul={{#switch:{{{2}}}|label=リオグランデ・ド・スル|category=リオグランデ・ド・スル方言}}<!-- -->|リオプラテンセ|Rioplatense={{#switch:{{{2}}}|label=リオプラテンセ|category=リオプラテンセ{{language|{{{lang}}}}}}}<!-- -->|力学|mechanics={{#switch:{{{2}}}|label=力学|category=力学}}<!-- -->|陸上競技|athletics={{#switch:{{{2}}}|label=陸上競技|category=陸上競技}}<!-- -->|六鎮方言|六鎮|Yukjin={{#switch:{{{2}}}|label=六鎮方言|category=六鎮方言}}<!-- -->|リス科|squirrel={{#switch:{{{2}}}|label=リス科|category=リス科}}<!-- -->|理容|理髪|hairdressing|Hairdressing={{#switch:{{{2}}}|label=理髪|category=理髪}}<!-- -->|リヒテンシュタイン変種|Liechtenstein={{#switch:{{{2}}}|label=リヒテンシュタイン|category=リヒテンシュタイン{{language|{{{lang}}}}}}}<!-- -->|リプアーリ語|リプアーリ|Ripuarian={{#switch:{{{2}}}|label=リプアーリ語|category=リプアーリ語}}<!-- -->|リムーザン|Limousin={{#switch:{{{2}}}|label=リムーザン|category=リムーザン語}}<!-- -->|リメッラ語|リメッラ|Rimella={{#switch:{{{2}}}|label=リメッラ語|category=リメッラ語}}<!-- -->|略語|abbr|abbreviation={{#switch:{{{2}}}|label=略語|category=略語}}<!-- -->|略語 地名複合語|地名複合語={{#switch:{{{2}}}|label=地名複合語|category=略語 地名複合語}}<!-- -->|竜|龍|dragon={{#switch:{{{2}}}|label=竜|category=竜}}<!-- -->|リュージュ|luge={{#switch:{{{2}}}|label=リュージュ|category=リュージュ}}<!-- -->|流体力学|fluid dynamics={{#switch:{{{2}}}|label=流体力学|category=流体力学}}<!-- -->|量子力学|quantum mechanics|particles={{#switch:{{{2}}}|label=量子力学|category=量子力学}}<!-- -->|両生類|amphibian={{#switch:{{{2}}}|label=両生類|category=両生類}}<!-- -->|料理|cuisine={{#switch:{{{2}}}|label=料理|category=料理}}<!-- -->|旅行|travel={{#switch:{{{2}}}|label=旅行|category=旅行}}<!-- -->|林業|forestry={{#switch:{{{2}}}|label=林業|category=林業}}<!-- -->|臨時語|nonce word={{#switch:{{{2}}}|label=臨時語|category=臨時語}}<!-- -->|鱗翅類={{#switch:{{{2}}}|label=鱗翅類|category=鱗翅類}}<!-- -->|リンドウ目={{#switch:{{{2}}}|label=リンドウ目|category=リンドウ目}}<!-- -->|倫理学|ethics={{#switch:{{{2}}}|label=倫理学|category=倫理学}}<!-- -->|ルイジアナ|Louisiana={{#switch:{{{2}}}|label=ルイジアナ|category=ルイジアナ{{language|{{{lang}}}}}}}<!-- -->|ルーマニア|Romania={{#switch:{{{2}}}|label=ルーマニア|category=ルーマニア}}<!-- -->|ルーマニア語|Romanian={{#switch:{{{2}}}|label=ルーマニア語関連|category=ルーマニア語に関連する語}}<!-- -->|ルゼルナ|Luserna={{#switch:{{{2}}}|label=ルゼルナ|category=ルゼルナ方言}}<!-- -->|霊長類|primate={{#switch:{{{2}}}|label=霊長類|category=霊長類}}<!-- -->|霊長類学={{#switch:{{{2}}}|label=霊長類学|category=霊長類学}}<!-- -->|羚羊={{#switch:{{{2}}}|label=羚羊|category=羚羊}}<!-- -->|歴史|history|historical|Hx|hx={{#switch:{{{2}}}|label=歴史|category=歴史}}<!-- -->|歴史学|historiography={{#switch:{{{2}}}|label=歴史学|category=歴史学}}<!-- -->|歴史 官名|官名={{#switch:{{{2}}}|label=官名|category=歴史 官名}}<!-- -->|歴史上の人物={{#switch:{{{2}}}|label=歴史上の人物|category=歴史上の人物}}<!-- -->|レスリング|wrestling={{#switch:{{{2}}}|label=レスリング|category=レスリング}}<!-- -->|レトロニム={{#switch:{{{2}}}|label=レトロニム|category=レトロニム}}<!-- -->|レユニオン|Réunion={{#switch:{{{2}}}|label=レユニオン|category=レユニオンフランス語}}<!-- -->|恋愛|romantic orientation={{#switch:{{{2}}}|label=恋愛|category=恋愛}}<!-- -->|錬金術|Alchemy|alchemy={{#switch:{{{2}}}|label=錬金術|category=錬金術}}<!-- -->|労働|work|working|labor|travay={{#switch:{{{2}}}|label=労働|category=労働}}<!-- -->|老年学|gerontology={{#switch:{{{2}}}|label=老年学|category=老年学}}<!-- -->|ローマ神話|Roman god|Roman mythology={{#switch:{{{2}}}|label=ローマ神話|category=ローマ神話}}<!-- -->|ローラーダービー|roller derby={{#switch:{{{2}}}|label=ローラーダービー|category=ローラーダービー}}<!-- -->|ログドーロ|Logudorese={{#switch:{{{2}}}|label=ログドーロ|category=ログドーロ・サルデーニャ語}}<!-- -->|ロシア|Russia={{#switch:{{{2}}}|label=ロシア|category=ロシア}}<!-- -->|ロシア語={{#switch:{{{2}}}|label=ロシア語関連|category=ロシア語に関連する語}}<!-- -->|ロシア史={{#switch:{{{2}}}|label=ロシア史|category=ロシア史}}<!-- -->|ロシア西部|Western Russian={{#switch:{{{2}}}|label=ロシア西部|category=ロシア西部方言}}<!-- -->|ロシア南部|South Russia|Southern Russian={{#switch:{{{2}}}|label=ロシア南部|category=ロシア南部方言}}<!-- -->|ロマンシュ・グリシュン|Rumantsch Grischun={{#switch:{{{2}}}|label=ロマンシュ・グリシュン|category=ロマンシュ・グリシュン}}<!-- -->|論理学|logic={{#switch:{{{2}}}|label=論理学|category=論理学}}<!-- -->|ワウチナンゴ|Huauchinango={{#switch:{{{2}}}|label=ワウチナンゴ|category=ワウチナンゴ方言}}<!-- -->|鷲|eagle={{#switch:{{{2}}}|label=鷲|category=鷲}}<!-- -->|和製英語={{#switch:{{{2}}}|label=和製英語|category=和製英語}}<!-- -->|和船={{#switch:{{{2}}}|label=和船|category=船舶}}<!-- -->|鰐|alligator|crocodile={{#switch:{{{2}}}|label=鰐|category=鰐}}<!-- -->|上代語|上代={{#switch:{{{2}}}|label=上代語|category=上代語}}<!-- -->|上代東国方言|上代東国={{#switch:{{{2}}}|label=上代東国方言|category=上代東国方言}}<!-- -->|近世上方語|近世上方={{#switch:{{{2}}}|label=近世上方語|category=近世上方語}}<!-- -->|近世語|近世={{#switch:{{{2}}}|label=近世語|category=近世語}}<!-- -->|西日本方言={{#switch:{{{2}}}|label=西日本方言|category=西日本方言}}<!-- -->|岐阜・愛知方言={{#switch:{{{2}}}|label=岐阜・愛知方言|category=岐阜・愛知方言}}<!-- -->|名古屋弁={{#switch:{{{2}}}|label=名古屋弁|category=名古屋弁}}<!-- -->|飛騨弁={{#switch:{{{2}}}|label=飛騨弁|category=飛騨弁}}<!-- -->|三河弁={{#switch:{{{2}}}|label=三河弁|category=三河弁}}<!-- -->|美濃弁={{#switch:{{{2}}}|label=三河弁|category=美濃弁}}<!-- -->|近畿方言|関西弁={{#switch:{{{2}}}|label=近畿方言|category=近畿方言}}<!-- -->|淡路弁={{#switch:{{{2}}}|label=淡路弁|category=淡路弁}}<!-- -->|伊勢弁={{#switch:{{{2}}}|label=伊勢弁|category=伊勢弁}}<!-- -->|近江弁={{#switch:{{{2}}}|label=近江弁|category=近江弁}}<!-- -->|大阪弁={{#switch:{{{2}}}|label=大阪弁|category=大阪弁}}<!-- -->|紀州弁={{#switch:{{{2}}}|label=紀州弁|category=紀州弁}}<!-- -->|京言葉|京都弁={{#switch:{{{2}}}|label=京言葉|category=京言葉}}<!-- -->|志摩弁={{#switch:{{{2}}}|label=志摩弁|category=志摩弁}}<!-- -->|丹波方言={{#switch:{{{2}}}|label=丹波方言|category=丹波方言}}<!-- -->|播州弁={{#switch:{{{2}}}|label=播州弁|category=播州弁}}<!-- -->|中国方言={{#switch:{{{2}}}|label=中国方言|category=中国方言}}<!-- -->|中部方言={{#switch:{{{2}}}|label=中部方言|category=中部方言}}<!-- -->|出雲弁={{#switch:{{{2}}}|label=出雲弁|category=出雲弁}}<!-- -->|因州弁={{#switch:{{{2}}}|label=因州弁|category=因州弁}}<!-- -->|岡山弁|岡山方言={{#switch:{{{2}}}|label=岡山弁|category=岡山弁}}<!-- -->|但馬弁={{#switch:{{{2}}}|label=但馬弁|category=但馬弁}}<!-- -->|丹後弁={{#switch:{{{2}}}|label=丹後弁|category=丹後弁}}<!-- -->|広島弁={{#switch:{{{2}}}|label=広島弁|category=広島弁}}<!-- -->|備後弁={{#switch:{{{2}}}|label=備後弁|category=備後弁}}<!-- -->|山口弁={{#switch:{{{2}}}|label=山口弁|category=山口弁}}<!-- -->|四国方言|四国弁={{#switch:{{{2}}}|label=四国方言|category=四国方言}}<!-- -->|阿波弁|徳島方言={{#switch:{{{2}}}|label=阿波弁|category=阿波弁}}<!-- -->|伊予弁|愛媛方言={{#switch:{{{2}}}|label=伊予弁|category=伊予弁}}<!-- -->|宇和島弁={{#switch:{{{2}}}|label=宇和島弁|category=宇和島弁}}<!-- -->|讃岐弁|香川方言={{#switch:{{{2}}}|label=讃岐弁|category=讃岐弁}}<!-- -->|土佐弁|高知方言={{#switch:{{{2}}}|label=土佐弁|category=土佐弁}}<!-- -->|北陸方言={{#switch:{{{2}}}|label=北陸方言|category=北陸方言}}<!-- -->|加賀弁={{#switch:{{{2}}}|label=加賀弁|category=加賀弁}}<!-- -->|金沢弁={{#switch:{{{2}}}|label=金沢弁|category=金沢弁}}<!-- -->|富山弁={{#switch:{{{2}}}|label=富山弁|category=富山弁}}<!-- -->|能登弁={{#switch:{{{2}}}|label=能登弁|category=能登弁}}<!-- -->|福井弁={{#switch:{{{2}}}|label=福井弁|category=福井弁}}<!-- -->|嶺南方言={{#switch:{{{2}}}|label=嶺南方言|category=嶺南方言}}<!-- -->|東日本方言={{#switch:{{{2}}}|label=東日本方言|category=東日本方言}}<!-- -->|越後方言={{#switch:{{{2}}}|label=越後方言|category=越後方言}}<!-- -->|関東方言|関東弁={{#switch:{{{2}}}|label=関東方言|category=関東方言}}<!-- -->|茨城弁={{#switch:{{{2}}}|label=茨城弁|category=茨城弁}}<!-- -->|神奈川県方言|神奈川方言={{#switch:{{{2}}}|label=神奈川県方言|category=神奈川県方言}}<!-- -->|群馬弁={{#switch:{{{2}}}|label=群馬弁|category=群馬弁}}<!-- -->|埼玉弁={{#switch:{{{2}}}|label=埼玉弁|category=埼玉弁}}<!-- -->|千葉弁={{#switch:{{{2}}}|label=千葉弁|category=千葉弁}}<!-- -->|栃木弁={{#switch:{{{2}}}|label=栃木弁|category=栃木弁}}<!-- -->|東北方言|東北弁={{#switch:{{{2}}}|label=東北方言|category=東北方言}}<!-- -->|秋田弁={{#switch:{{{2}}}|label=秋田弁|category=秋田弁}}<!-- -->|仙台弁={{#switch:{{{2}}}|label=仙台弁|category=仙台弁}}<!-- -->|津軽弁={{#switch:{{{2}}}|label=津軽弁|category=津軽弁}}<!-- -->|南部弁={{#switch:{{{2}}}|label=南部弁|category=南部弁}}<!-- -->|福島弁={{#switch:{{{2}}}|label=福島弁|category=福島弁}}<!-- -->|山形弁={{#switch:{{{2}}}|label=山形弁|category=山形弁}}<!-- -->|置賜弁={{#switch:{{{2}}}|label=置賜弁|category=置賜弁}}<!-- -->|庄内弁={{#switch:{{{2}}}|label=庄内弁|category=庄内弁}}<!-- -->|新庄弁={{#switch:{{{2}}}|label=新庄弁|category=新庄弁}}<!-- -->|村山弁={{#switch:{{{2}}}|label=村山弁|category=村山弁}}<!-- -->|長野・山梨・静岡方言={{#switch:{{{2}}}|label=長野・山梨・静岡方言|category=長野・山梨・静岡方言}}<!-- -->|伊豆弁={{#switch:{{{2}}}|label=伊豆弁|category=伊豆弁}}<!-- -->|遠州弁={{#switch:{{{2}}}|label=遠州弁|category=遠州弁}}<!-- -->|郡内弁={{#switch:{{{2}}}|label=郡内弁|category=郡内弁}}<!-- -->|甲州弁={{#switch:{{{2}}}|label=甲州弁|category=甲州弁}}<!-- -->|静岡弁={{#switch:{{{2}}}|label=静岡弁|category=静岡弁}}<!-- -->|長野県方言|長野弁={{#switch:{{{2}}}|label=長野県方言|category=長野県方言}}<!-- -->|北海道方言|北海道弁={{#switch:{{{2}}}|label=北海道方言|category=北海道方言}}<!-- -->|九州方言|九州弁={{#switch:{{{2}}}|label=九州方言|category=九州方言}}<!-- -->|薩隅方言={{#switch:{{{2}}}|label=薩隅方言|category=薩隅方言}}<!-- -->|肥筑方言={{#switch:{{{2}}}|label=肥筑方言|category=肥筑方言}}<!-- -->|北九州弁={{#switch:{{{2}}}|label=北九州弁|category=北九州弁}}<!-- -->|博多弁={{#switch:{{{2}}}|label=博多弁|category=博多弁}}<!-- -->|熊本弁={{#switch:{{{2}}}|label=熊本弁|category=熊本弁}}<!-- -->|五島列島方言={{#switch:{{{2}}}|label=五島列島方言|category=五島列島方言}}<!-- -->|佐賀弁={{#switch:{{{2}}}|label=佐賀弁|category=佐賀弁}}<!-- -->|対馬方言={{#switch:{{{2}}}|label=対馬方言|category=対馬方言}}<!-- -->|豊日方言={{#switch:{{{2}}}|label=豊日方言|category=豊日方言}}<!-- -->|南勢={{#switch:{{{2}}}|label=南勢|category=南勢アミ語}}<!-- -->|秀姑巒={{#switch:{{{2}}}|label=秀姑巒|category=秀姑巒アミ語}}<!-- -->|海岸={{#switch:{{{2}}}|label=海岸|category=海岸アミ語}}<!-- -->|馬蘭={{#switch:{{{2}}}|label=馬蘭|category=馬蘭アミ語}}<!-- -->|恒春|恆春={{#switch:{{{2}}}|label=恒春|category=恒春アミ語}}<!-- -->|賽考利克={{#switch:{{{2}}}|label=賽考利克|category=賽考利克タイヤル語}}<!-- -->|澤敖利={{#switch:{{{2}}}|label=澤敖利|category=澤敖利タイヤル語}}<!-- -->|汶水={{#switch:{{{2}}}|label=汶水|category=汶水タイヤル語}}<!-- -->|万大|萬大={{#switch:{{{2}}}|label=万大|category=万大タイヤル語}}<!-- -->|四季={{#switch:{{{2}}}|label=四季|category=四季タイヤル語}}<!-- -->|宜蘭澤敖利={{#switch:{{{2}}}|label=宜蘭澤敖利|category=宜蘭澤敖利タイヤル語}}<!-- -->|卓群={{#switch:{{{2}}}|label=卓群|category=卓群ブヌン語}}<!-- -->|卡群={{#switch:{{{2}}}|label=卡群|category=卡群ブヌン語}}<!-- -->|丹群={{#switch:{{{2}}}|label=丹群|category=丹群ブヌン語}}<!-- -->|巒群={{#switch:{{{2}}}|label=巒群|category=巒群ブヌン語}}<!-- -->|郡群={{#switch:{{{2}}}|label=卓群|category=郡群ブヌン語}}<!-- -->|東パイワン={{#switch:{{{2}}}|label=東パイワン|category=東パイワン語}}<!-- -->|北パイワン={{#switch:{{{2}}}|label=北パイワン|category=北パイワン語}}<!-- -->|中パイワン={{#switch:{{{2}}}|label=中パイワン|category=中パイワン語}}<!-- -->|南パイワン={{#switch:{{{2}}}|label=南パイワン|category=南パイワン語}}<!-- -->|東ルカイ={{#switch:{{{2}}}|label=東ルカイ|category=東ルカイ語}}<!-- -->|霧台={{#switch:{{{2}}}|label=霧台|category=霧台ルカイ語}}<!-- -->|大武={{#switch:{{{2}}}|label=大武|category=大武ルカイ語}}<!-- -->|多納={{#switch:{{{2}}}|label=多納|category=多納ルカイ語}}<!-- -->|茂林={{#switch:{{{2}}}|label=茂林|category=茂林ルカイ語}}<!-- -->|万山={{#switch:{{{2}}}|label=万山|category=万山ルカイ語}}<!-- -->|南王={{#switch:{{{2}}}|label=南王|category=南王プユマ語}}<!-- -->|知本={{#switch:{{{2}}}|label=知本|category=知本プユマ語}}<!-- -->|初鹿={{#switch:{{{2}}}|label=初鹿|category=初鹿プユマ語}}<!-- -->|建和={{#switch:{{{2}}}|label=建和|category=建和プユマ語}}<!-- -->|都達={{#switch:{{{2}}}|label=都達|category=都達セデック語}}<!-- -->|德固達雅={{#switch:{{{2}}}|label=德固達雅|category=德固達雅セデック語}}<!-- -->|德路固={{#switch:{{{2}}}|label=德路固|category=德路固セデック語}}<!-- -->|太魯閣|タロコ={{#switch:{{{2}}}|label=太魯閣|category=タロコ方言}}<!-- -->|길림성|지린성={{#switch:{{{2}}}|label=[[:w:中国朝鮮語|吉林省]]|category=中国朝鮮語}}<!-- -->|헤이룽장성|흑룡강성={{#switch:{{{2}}}|label=[[:w:中国朝鮮語|黒竜江省]]|category=中国朝鮮語}}<!-- -->|요령성={{#switch:{{{2}}}|label=[[:w:中国朝鮮語|遼寧省]]|category=中国朝鮮語}}<!-- -->|#default={{#switch:{{{2}}}|label={{{1}}}|category=}}<!-- -->}}<noinclude>[[カテゴリ:内部テンプレート]]</noinclude> qpwr15hjkatfw0veui6gpy7derw6a8o ученичка 0 288569 2313214 1387362 2026-08-08T23:23:30Z Kuroco2k 84207 wikify 2313214 wikitext text/x-wiki =={{bg}}== ==={{pron}}=== *{{IPA|utʃɛˈnitʃkɤ}} ==={{noun}}=== {{head|bg|noun|head=учени́чка|tr=učeníčka|g=f}} (''男性'': {{l|bg|ученик|учени́к}}) #{{context|education|lang=bg}} [[生徒]]。[[学童]]。[[児童]]。 #{{おくりがな3|見|み||習|なら|い|みならい}}。 #[[弟子]]。[[支持者]]。 ===={{syn}}==== *{{l|bg|последователка|tr=posledovatelka}} =={{mk}}== ==={{noun}}=== {{head|mk|noun|head=ученичка|tr=učenička|g=f}} #{{context|education|lang=mk}} [[生徒]]。[[学童]]。[[児童]]。 fkvjma6tdmtm1ohkd04kpdkzann7mz7 волја 0 290238 2313213 1540733 2026-08-08T23:23:30Z Kuroco2k 84207 wikify 2313213 wikitext text/x-wiki =={{mk}}== ==={{etym}}=== {{etyl|sla-pro|mk}} ''{{recons|voľa|lang=sla-pro}}'' ==={{noun}}=== {{head|mk|noun|head=волја|tr=volja|g=f}} #[[意志]]。 {{mk-decl-noun-f-ј|вол}} tp8bpxkvo1n652lhr6098ak5s4mbqbz снима 0 290807 2313212 1540734 2026-08-08T23:23:29Z Kuroco2k 84207 wikify 2313212 wikitext text/x-wiki =={{mk}}== ==={{etym}}=== {{etyl|sla-pro|mk}} ''{{recons|sъnęti|lang=sla-pro}}'' ==={{verb}}=== {{head|mk|verb|tr=snima|不完了体}} #{{context|transitive+|lang=mk}} [[記録]]する。 {{mk-conj-а|impf|сним}} 6krgwzvsagvldfnh6ihiqv4s2wncmqt има 0 291270 2313207 2233470 2026-08-08T23:23:28Z Kuroco2k 84207 wikify 2313207 wikitext text/x-wiki {{also|имя|имѧ|ім'я}} =={{bg}}== ==={{pron}}=== *'''и́ма''': {{IPA|ˈimə}} *'''има́''': {{IPA|iˈma}} ==={{verb}}=== {{head|bg|verb|head=и́ма|tr=íma}} #"{{l|bg|имам|и́мам|tr=ímam}}" の現在三人称単数直説法活用形。 #[[ある|有る]]。 ==={{verb}}=== {{head|bg|verb|head=и́ма か има́|tr=íma か imá}} #"{{l|bg|имам|и́мам|tr=ímam}}" の二人称単数直説法活用形。 #"{{l|bg|имам|и́мам|tr=ímam}}" の三人称単数直説法活用形。 =={{mk}}== ==={{etym}}=== {{etyl|sla-pro|mk}} ''{{recons|jьmati|lang=sla-pro}}'' ==={{verb}}=== {{head|mk|verb|tr=ima}} <small>不完了体</small> #{{context|transitive+|lang=mk}} [[もつ|持つ]]。 #{{context|transitive+|lang=mk}} [[ある|有る]]。 {{mk-conj-а|impf|им}} 0vx3a0apd8fs1bi04zdl6aeu9q7sz0m винарство 0 291371 2313211 1540737 2026-08-08T23:23:29Z Kuroco2k 84207 wikify 2313211 wikitext text/x-wiki =={{mk}}== ==={{etym}}=== {{suffix+|винар|tr1=vinar|ство|tr2=stvo|lang=mk}} ==={{pron}}=== *{{IPA|ˈvinarstvɔ}} ==={{noun}}=== {{head|mk|noun|tr=vinarstvo|g=n}} #[[ワイン]][[醸造]]。 {{mk-decl-noun-n|винарств|n=sg}} hr0sykhpy9soc7pj3zdggrnpia82y2q քառասուն 0 292374 2313434 2312491 2026-08-09T10:09:20Z M-30722 1202 2313434 wikitext text/x-wiki =={{L|hy}}== ==={{etym}}=== {{etyl|xcl|hy}} քառասուն ==={{pron}}=== *{{a|hy-E}} {{IPA|lang=hy|kʰɑrɑˈsun}} ==={{numeral}}=== {{head|hy|numeral}} #{{context|cardinal|lang=hy}}[[四十]]。 ===={{drv}}==== *[[քառասուներորդ]] =={{L|xcl}}== ==={{etym}}=== {{etyl|ine-pro|xcl}} ''*kʷetwr̥̄ḱomt'' < {{m|ine-pro|*kʷétwr̥dḱomt}} ==={{numeral}}=== {{head|xcl|numeral}} #{{context|cardinal|lang=xcl}}[[四十]]。 {{xcl-noun-ի||քառասն|vow=on}} ===={{drv}}==== {{top3}} *{{l|xcl|քառասնաթիւ}} *{{l|xcl|քառասնահասկ}} *{{l|xcl|քառասնաղի}} *{{l|xcl|քառասնամեայ}} *{{l|xcl|քառասնամեան}} *{{l|xcl|քառասնամոլ}} *{{l|xcl|քառասնամութիւն}} *{{l|xcl|քառասնաշառաւեղ}} *{{l|xcl|քառասնաշառաւիղ}} *{{l|xcl|քառասնաշար}} *{{l|xcl|քառասնապահ}} *{{l|xcl|քառասնապսակ}} *{{l|xcl|քառասնաջահ}} *{{l|xcl|քառասնաջով}} *{{l|xcl|քառասնեակ}} *{{l|xcl|քառասնեայ}} *{{l|xcl|քառասնեկի}} *{{l|xcl|քառասնեկին}} *{{l|xcl|քառասներ}} *{{l|xcl|քառասներեակ}} *{{l|xcl|քառասներորդ}} *{{l|xcl|քառասնեքեան}} *{{l|xcl|քառասնեքին}} *{{l|xcl|քառասնոստ}} *{{l|xcl|քառասնորդ}} *{{l|xcl|քառասնօր}} *{{l|xcl|քառասնօրեայ}} *{{l|xcl|քառասունեւիննկանգնեան}} {{bottom}} ===={{desc}}==== *現代アルメニア語: {{l|hy|քառասուն}} frxv1wssamzop2yddcye0y5eb37exll 哀怨 0 297224 2313320 1520116 2026-08-09T01:48:42Z Jiba1219 100610 2313320 wikitext text/x-wiki =={{L|zh}}== {{zh-cat|ai1yuan4|adjective}} {{yue-cat|oi1yun3|adjective}} {{nan-cat|ai1oan3|adjective}} {{nan-tws-cat|ai1ueng3|adjective}} ==={{pron}}=== {{cmn-pron|āiyuàn}} {{yue-pron|oi1 jyun3}} {{nan-pron|ml,tw,sg:ai-oàn|t=ai1 uêng3}} ==={{adjective}}=== {{zhchars}} #{{おくりがな2|悲|かな|しみ|かなしむ}}{{おくりがな2|恨|うら|む|うらむ}}。 =={{L|ko}}== ==={{noun}}=== {{ko-head|noun|애원}} #{{おくりがな2|悲|かな|しみ|かなしむ}}{{おくりがな2|恨|うら|む|うらむ}}こと。 =={{L|vi}}== ==={{verb}}=== {{vi-head|verb|ai|oán}} #{{ふりがな|溜息|ためいき}}をつく。 mbclazd3v00x170fx5ktatzfu26kam4 се смее 0 299278 2313210 1540741 2026-08-08T23:23:29Z Kuroco2k 84207 wikify 2313210 wikitext text/x-wiki =={{mk}}== ==={{pron}}=== *{{IPA|sɛ ˈsmɛ.ɛ}} (慣用読み: 「セ '''スメ'''エ」) ==={{verb}}=== {{head|mk|verb|head={{l|mk|се}} {{l|mk|смее}}|tr=se smee}} #[[わらう|笑う]]。 #[[嘲笑]]する。 ===={{conjugation}}==== {{mk-conj-е-1|impf|сме|noap=1|ref=1}} ===={{seealso}}==== *{{l|mk|смее|tr=smee}} *{{l|mk|смеа|tr=smea}} *{{l|mk|смешен|tr=smešen}} *{{l|mk|засмева|tr=zasmeva}} *{{l|mk|насмева|tr=nasmeva}} *{{l|mk|се насмевнува|tr=se nasmevnuva}} *{{l|mk|се потсмева|tr=se potsmeva}} o2to5s7wvj6s6b0aevnvdfuhxdj8a4c смее 0 299279 2313221 1540742 2026-08-08T23:23:44Z Kuroco2k 84207 wikify 2313221 wikitext text/x-wiki =={{mk}}== ==={{verb}}=== {{head|mk|verb|tr=smee}} <small>不完了体</small> #{{context|intransitive+|lang=mk}} [[許容]]される。 ===={{conjugation}}==== {{mk-conj-е-1|impf|сме|noap=1}} ow6jg1qlh9thn1nt8i2685q1olhl0g6 засмева 0 299281 2313209 1540743 2026-08-08T23:23:29Z Kuroco2k 84207 wikify 2313209 wikitext text/x-wiki =={{mk}}== ==={{pron}}=== *{{IPA|ˈzasmɛva}} (慣用読み: 「'''ザ'''スメヴァ」) ==={{verb}}=== {{head|mk|verb|tr=zasmeva}} <small>不完了体</small> (''完了体'' {{l|mk|засмее}}) #{{context|transitive+|lang=mk}} [[わらわせる|笑わせる]]。 ===={{conjugation}}==== {{mk-conj-а|impf|засмев}} elr1v5m5f0uqjxc29iapvhh9nnk1bd5 литература 0 300542 2313208 1388223 2026-08-08T23:23:28Z Kuroco2k 84207 wikify 2313208 wikitext text/x-wiki {{also|література}} =={{sh}}== ==={{noun}}=== {{head|sh|noun|g=f|head=литерату́ра|ラテン文字|[[literatura|literatúra]]}} [[Category:{{sh}}_文学|*]] #[[文学]]。 {{sh-decl-noun|sc=Cyrl|литература|литературе|литературе|литература|литератури|литературама|литературу|литературе|литературо|литературе|литератури|литературама|литературом|литературама}} =={{bg}}== ==={{etym}}=== {{etyl|la|bg}} ''[[litteratura]]'' ==={{pron}}=== *{{IPA|[lʲitɛrɐˈturə]}} ==={{noun}}=== {{head|bg|noun|head=литерату́ра|tr=literatúra|g=f}} [[Category:{{bg}}_文学|*]] #[[文学]]。 {{bg-ndecl|литерату́ра<>}} =={{mk}}== ==={{etym}}=== {{etyl|la|mk}} ''[[litteratura]]'' ==={{pron}}=== *{{IPA|[litɛɾaˈtuɾa]}} ==={{noun}}=== {{head|mk|noun|head=литерату́ра|tr=literatúra|g=f}} [[Category:{{mk}}_文学|*]] #[[文学]]。 {{mk-decl-noun-f|литератур|n=sg}} ===={{syn}}==== *{{l|mk|книжевност}} =={{ru}}== ==={{etym}}=== {{etyl|la|ru}} ''[[litteratura]]'' ==={{pron}}=== *{{ru-IPA|литерату́ра}} *音声: [[ファイル:Ru-{{PAGENAME}}.ogg]] ==={{noun}}=== {{head|ru|noun|head=литерату́ра|tr=literatúra|g=f-in}} [[Category:{{ru}}_文学|*]] #[[文学]]。 {{ru-noun-table|литерату́ра}} {{ru-noun-table|литерату́ра|old=1}} ===={{rel}}==== *{{l|ru|литератор|литера́тор|g=m}} *{{l|ru|литературный|литерату́рный}} *{{l|ru|литературоведение|литературове́дение|g=n}} *{{l|ru|литературщина|литерату́рщина|g=f}} hg7vwxey25cp0tfk2830hzqg56lq1kj клуч 0 307760 2313204 1540747 2026-08-08T23:22:57Z Kuroco2k 84207 wikify 2313204 wikitext text/x-wiki {{also|ключ|кључ}} =={{mk}}== ==={{etym}}=== {{etyl|sla-pro|mk}} {{recons|kľučь|lang=sla-pro}} ==={{pron}}=== *{{IPA|[kɫut͡ʃ]}} ==={{noun}}=== {{head|mk|noun|cat2=道具|tr=kluč|g=m}} #{{ふりがな|鍵|かぎ}}。 #[[スパナ]]。[[レンチ]]。 {{mk-decl-noun-m||клучев}} ===={{syn}}==== *{{l|mk|одвртувач}} o09qnexdo3lp0opms8db9yo2gtfina8 вчера 0 307774 2313203 1387491 2026-08-08T23:22:57Z Kuroco2k 84207 wikify 2313203 wikitext text/x-wiki =={{bg}}== ==={{etym}}=== {{etyl|sla-pro|bg}} {{recons|vьčera|lang=sla-pro}} ==={{pron}}=== *{{IPA|[ˈft͡ʃerə]}} ==={{adverb}}=== {{head|bg|adverb|cat2=時間|head=вче́ра|tr=včéra|比較形なし}} #{{ふりがな|昨日|きのう}}。 ===={{drv}}==== *{{l|bg|вчерашен|вче́рашен}} *{{l|bg|завчера|за́вчера}} ===={{rel}}==== *{{l|bg|вечер|ве́чер}} *{{l|bg|вечерен|ве́черен}} =={{mk}}== ==={{etym}}=== {{etyl|sla-pro|mk}} {{recons|vьčera|lang=sla-pro}} ==={{pron}}=== *{{IPA|[ˈft͡ʃɛɾa]}} ==={{adverb}}=== {{head|mk|adverb|cat2=時間|tr=včera|比較形なし}} #{{ふりがな|昨日|きのう}}。 =={{ru}}== ==={{etym}}=== {{etyl|sla-pro|ru}} {{recons|vьčera|lang=sla-pro}} ==={{pron}}=== *{{ru-IPA|вчера́}} *音声: [[ファイル:Ru-{{PAGENAME}}.ogg]] ==={{adverb}}=== {{head|ru|adverb|cat2=時間|head=вчера́|tr=včerá}} #{{ふりがな|昨日|きのう}}。 ==={{noun}}=== {{head|ru|noun|head=вчера́|tr=včerá|g=n-in}} #昨日。 ===={{rel}}==== *{{l|ru|вчерашний|вчера́шний}} *{{l|ru|позавчера|позавчера́}} ==={{seealso}}=== *{{l|ru|завтра|за́втра}} *{{l|ru|сегодня|сего́дня}} 9cdz5s7i85z4d8kp3nq1evnw07rugri сфера 0 312551 2313205 2149339 2026-08-08T23:22:57Z Kuroco2k 84207 wikify 2313205 wikitext text/x-wiki =={{L|uk}}== ==={{pron}}=== *{{uk-IPA|сфе́ра}} *{{音声|uk|Uk-сфера.ogg}} ==={{noun}}=== {{head|uk|noun|head=сфе́ра|tr=sféra|g=f-in}} #{{context|shape|lang=uk}}[[球]]。[[球体]]。 #[[範囲]]。[[領域]]。 {{uk-decl-noun|сфера|сфери|сфери|сфер|сфері|сферам|сферу|сфери|сферою|сферами|сфері|сферах|сферо|сфери}} =={{L|mk}}== ==={{pron}}=== *{{mk-IPA}} *{{音声|mk|LL-Q9296 (mkd)-Bjankuloski06-сфера.wav}} *{{hyph|lang=mk|сфе|ра}} *{{rhymes|lang=mk|ɛɾa|s=2}} ==={{noun}}=== {{head|mk|noun|tr=sfera|g=f}} #{{context|shape|lang=mk}}[[球]]。[[球体]]。 #[[範囲]]。[[領域]]。 {{mk-decl-noun-f|сфер}} =={{L|ru}}== ==={{pron}}=== *{{ru-IPA|сфе́ра}} *{{音声|ru|Ru-сфера.ogg}} ==={{noun}}=== {{head|ru|noun|head=сфе́ра|tr=sféra|g=f-in}} #{{context|shape|lang=ru}}[[球]]。[[球体]]。 #[[範囲]]。[[領域]]。 {{ru-noun-table|сфе́ра}} ===={{rel}}==== *{{l|ru|сферический|сфери́ческий}} 4xr0ucl6ls9bvzvgcb31tpgzw96jqm7 кашла 0 314740 2313202 1540755 2026-08-08T23:22:56Z Kuroco2k 84207 wikify 2313202 wikitext text/x-wiki {{also|кашля}} =={{mk}}== ==={{etym}}=== {{etyl|sla-pro|mk}} {{recons|kašьľati|lang=sla-pro}} ==={{verb}}=== {{head|mk|verb|g=impf}} #{{context|ambitransitive|physiology|lang=mk}}[[咳]]をする。 {{mk-conj-а|impf|кашл}} jnl2mxz4gwyejciqqdeumr8psa4nkz2 трактор 0 317106 2313206 1978792 2026-08-08T23:22:56Z Kuroco2k 84207 wikify 2313206 wikitext text/x-wiki =={{uk}}== {{wikipedia|lang=uk}} ==={{pron}}=== *{{uk-IPA|тра́ктор}} *{{音声|uk|Uk-{{PAGENAME}}.ogg|音声}} ==={{noun}}=== {{uk-noun+|тра́ктор<c>}} # {{context|農業機械|lang=uk}} [[トラクター]]。 ===={{decl}}==== {{uk-ndecl|тра́ктор<c>}} =={{L|sh}}== {{wikipedia|Traktor|lang=sh}} ==={{noun}}=== {{sh-noun+|g=m|head=тра̏ктор}} # {{context|農業機械|lang=sh}} [[トラクター]]。 ===={{decl}}==== {{sh-decl-noun|sc=Cyrl|трактор|трактори|трактора|трактора|трактору|тракторима|трактор|тракторе|тракторе|трактори|трактору|тракторима|трактором|тракторима}} =={{L|bg}}== {{wikipedia|lang=bg}} ==={{pron}}=== *{{bg-IPA|тра́ктор}} ==={{noun}}=== {{bg-noun|тра́ктор|m|adj=тра́кторен}} # {{context|農業機械|lang=bg}} [[トラクター]]。 ===={{decl}}==== {{bg-ndecl|тра́ктор<>}} =={{L|mk}}== {{wikipedia|lang=mk}} ==={{pron}}=== *{{mk-IPA}} ==={{noun}}=== {{mk-noun|m}} # {{context|農業機械|lang=mk}}[[トラクター]]。 ===={{decl}}==== {{mk-decl-noun-m|||тракторе}} =={{L|mn}}== {{mn-variant|m=ᠲ᠋ᠷᠠᠻᠲ᠋ᠣᠷ|c=трактор}} {{wikipedia|lang=mn}} ==={{etym}}=== {{bor|mn|ru|тра́ктор}} ==={{pron}}=== {{mn-IPA|трактәр}} ==={{noun}}=== {{mn-noun}} # {{context|農業機械|lang=mn}} [[トラクター]]。 =={{ru}}== {{wikipedia|lang=ru}} ==={{alter}}=== *{{alter+|ru|тра́кторъ||ru-PRO}} ==={{etym}}=== {{bor|ru|en|tractor}} < {{etyl|la|ru}} {{m|la|trahere}} < {{etyl|ine-pro|ru}} {{m|ine-pro|*tragh-}} ==={{pron}}=== *{{ru-IPA|тра́ктор}} *{{X-SAMPA1|"trakt@r}} *{{音声|ru|Ru-{{PAGENAME}}.ogg|音声}} *カナ表記例: 「ト'''ラ'''クタル」 *{{hyphenation|трак|тор|lang=ru}} ==={{noun}}=== {{ru-noun+|тра́ктор|or|c||(1)|adj=тра́кторный}} # {{context|農業機械|lang=ru}} [[トラクター]]。 ===={{decl}}==== {{ru-noun-table|тра́ктор|or|c||(1)}} ===={{hyper}}==== *{{l|ru|маши́на||機械, 車|g=f}} *{{l|ru|сельхозмаши́на||農業用の機械, 車|g=f}} ===={{hypo}}==== *{{l|ru|гу́сеничный тра́ктор||キャタピラトラクター}} *{{l|ru|колёсный тра́ктор}} ===={{rel}}==== *{{l|ru|трактори́ст|g=m}} ===={{desc}}==== *{{desc|az|traktor|bor=1}} *{{desc|hy|տրակտոր|bor=1}} *{{desc|izh|traktora|bor=1}} *{{desc|ug|تراكتور‎|bor=1}} *{{desc|uz|traktor|bor=1}} *{{desc|kk|трактор|bor=1}} *{{desc|ky|трактор|bor=1}} *{{desc|ka|ტრაქტორი|bor=1}} *{{desc|tg|трактор|bor=1}} *{{desc|zh|-|der=1}} *: {{desc|yue|-}} {{zh-l|拖拉機|tr=to1 laai1 gei1}} *: {{desc|dng|туәлаҗи}} *: {{desc|cmn|-}} {{zh-l|拖拉機}} *: {{desc|nan|-}} {{zh-l|拖拉機|tr=thoa-la-ki / tho-la-ki}} ** {{desc|bo|ཐོ་ལ་ཅི|bor=1}} ** {{desc|za|dohlahgih|bor=1}} ** {{desc|my|ထော် လာဂျီ|bor=1}} ** {{desc|pcc|toylayjiy|bor=1}} *{{desc|ko|뜨락또르|bor=1}} {{i|北朝鮮}} *{{desc|tk|traktor|bor=1}} *{{desc|dng|трактор|bor=1}} *{{desc|mn|-|bor=1}} *: {{desc|mn|трактор|sclb=1}} *: {{desc|mn|ᠲ᠋ᠷᠠᠻᠲ᠋ᠣᠷ|sclb=1}} 6fkw8facfsyaohdk8caflr3s4y4upx6 しゅうせい 0 318520 2313127 2105836 2026-08-08T14:59:25Z 鍼灸 112313 2313127 wikitext text/x-wiki {{kana-DEFAULTSORT}} {{also|しゅうぜい|じゅうせい|じゅうぜい}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana|h=y}} *【[[習性]]】①[[習慣]]によって[[身に付く|身に付いた]][[性質]]。②ある[[種]]の[[動物]]の[[行動]]の[[特性]]。 *【[[修正]]】[[文章]]など[[不十分]]な[[箇所]]を[[なおす|直す]]こと。 *【[[修整]]】[[写真]]で、[[原板]]や[[印画]]に[[手を加える|手を加え]]て[[画像]]の[[みだれ|乱れ]]を直すこと。 *【[[修成]]】修正し[[完成]]させること。 *【[[終生]]、[[終世]]】[[一生]]。 *【[[集成]]】[[おおく|多く]]の物を[[あつめる|集め]]て[[まとめる]]こと。また、まとめた[[本]]の名。 *【[[秋晴]]】[[あきばれ]]。 *【[[秋声]]】[[おと|音]]から[[感]]じられる[[あき|秋]]の[[気配]]。 *【[[秋成]]】秋に実か熟れること。 *【[[醜声]]】[[不名誉]]な[[評判]]。 *【[[衆星]]】[[おおく|多く]]の[[ほし|星]]。 *【[[銹錆]]】[[金属]]が[[さびる|錆びる]]こと。 *【[[州政]]】[[州]]の[[行政]]。 *【[[宗制]]】[[宗教]]の[[制度]]。 *【[[収生]]】[[分娩]]させること。 *【[[輯製]]】[[編輯]]によって[[つくる|作る]]こと。 8ec0e5srl61x9oj6lxeuey405cjocqs モジュール:ko-translit 828 319498 2313303 2312868 2026-08-09T00:50:17Z Jiba1219 100610 マッキューン=ライシャワー式の特例(a および o の直後に e が隣接する場合の ë 表記)に対応。 2313303 Scribunto text/plain local export = {} local gsub = mw.ustring.gsub local match = mw.ustring.match local jung_to_vowels = { [0] = {"a"}, [1] = {"ae"}, [2] = {"ya"}, [3] = {"yae"}, [4] = {"ŏ"}, [5] = {"e"}, [6] = {"yŏ"}, [7] = {"ye"}, [8] = {"o"}, [9] = {"wa"}, [10] = {"wae"}, [11] = {"oe"}, [12] = {"yo"}, [13] = {"u"}, [14] = {"wŏ"}, [15] = {"we"}, [16] = {"wi"}, [17] = {"yu"}, [18] = {"ŭ"}, [19] = {"ŭi", "i", "e"}, [20] = {"i"} } local function ends_with_a_or_o(char) local cp = mw.ustring.codepoint(char) if not cp or cp < 0xAC00 or cp > 0xD7A3 then return false end cp = cp - 0xAC00 local jong = cp % 28 local jung = math.floor(cp / 28) % 21 return jong == 0 and (jung == 0 or jung == 8) end local function starts_with_e(char) local cp = mw.ustring.codepoint(char) if not cp or cp < 0xAC00 or cp > 0xD7A3 then return false end cp = cp - 0xAC00 local cho = math.floor(cp / (28 * 21)) local jung = math.floor(cp / 28) % 21 return cho == 11 and jung == 5 end local function get_slices(clean_text, full_roman) local hangul_chars = {} for char in mw.ustring.gmatch(clean_text, "[가-힣]") do table.insert(hangul_chars, char) end local hangul_count = #hangul_chars if hangul_count == 0 then return {} end if hangul_count == 1 then return { gsub(full_roman, "[%s%-]", "") } end local v_starts = {} local v_ends = {} local pos = 1 local len = mw.ustring.len(full_roman) for i = 1, hangul_count do local char = hangul_chars[i] local cp = mw.ustring.codepoint(char) - 0xAC00 local jung = math.floor(cp / 28) % 21 local expected_vowels = jung_to_vowels[jung] local earliest_start, earliest_end = nil, nil for _, v in ipairs(expected_vowels) do local s, e = mw.ustring.find(full_roman, v, pos, true) if s then if not earliest_start or s < earliest_start or (s == earliest_start and e > earliest_end) then earliest_start = s earliest_end = e end end end if earliest_start then table.insert(v_starts, earliest_start) table.insert(v_ends, earliest_end) pos = earliest_end + 1 else break end end if #v_starts < hangul_count then return nil end local bounds = { 1 } for k = 1, hangul_count - 1 do local gap_start = v_ends[k] + 1 local gap_end = v_starts[k + 1] - 1 if gap_start > gap_end then table.insert(bounds, gap_start) else local gap = mw.ustring.sub(full_roman, gap_start, gap_end) if match(gap, "^ng") then if gap == "ng" then table.insert(bounds, gap_end + 1) else table.insert(bounds, gap_start + 2) end elseif match(gap, "%'$") then local split_idx = gap_end - 1 if match(gap, "ch%'$") then split_idx = gap_end - 2 end if split_idx < gap_start then split_idx = gap_start end table.insert(bounds, split_idx) elseif match(gap, "ch$") then local split_idx = gap_end - 1 if split_idx < gap_start then split_idx = gap_start end table.insert(bounds, split_idx) elseif mw.ustring.len(gap) >= 2 then table.insert(bounds, gap_start + 1) else table.insert(bounds, gap_start) end end end table.insert(bounds, len + 1) local slices = {} for k = 1, hangul_count do local piece = mw.ustring.sub(full_roman, bounds[k], bounds[k + 1] - 1) piece = gsub(piece, "[%s%-]", "") table.insert(slices, piece) end return slices end function export.tr(word, lang, sc) word = gsub(word, "%([一丁-龯㐀-䶵]+%)", "") word = gsub(word, "—", "-") word = gsub(word, "%[%[[^%]|]*|([^%]]+)%]%]", "[[%1]]") if match(word, "^[ㅂㅈㄷㄱㅅㅁㄴㅇㄹㅎㅋㅌㅊㅍㄸㅃㅉㄲㅆㅛㅕㅑㅐㅔㅗㅓㅏㅣㅠㅜㅡㅖㅒ%-]+$") then return (gsub(word, "[ㅂㅈㄷㄱㅅㅁㄴㅇㄹㅎㅋㅌㅊㅍㄸㅃㅉㄲㅆㅛㅕㅑㅐㅔㅗㅓㅏㅣㅠㅜㅡㅖㅒ]", { ["ㅂ"] = "p", ["ㅈ"] = "ch", ["ㄷ"] = "t", ["ㄱ"] = "k", ["ㅅ"] = "s", ["ㅁ"] = "m", ["ㄴ"] = "n", ["ㅇ"] = "/", ["ㄹ"] = "l", ["ㅎ"] = "h", ["ㅋ"] = "k'", ["ㅌ"] = "t'", ["ㅊ"] = "ch'", ["ㅍ"] = "p'", ["ㄸ"] = "tt", ["ㅃ"] = "pp", ["ㅉ"] = "tch", ["ㄲ"] = "kk", ["ㅆ"] = "ss", ["ㅛ"] = "yo", ["ㅕ"] = "yŏ", ["ㅑ"] = "ya", ["ㅐ"] = "ae", ["ㅔ"] = "e", ["ㅗ"] = "o", ["ㅓ"] = "ŏ", ["ㅏ"] = "a", ["ㅣ"] = "i", ["ㅠ"] = "yu", ["ㅜ"] = "u", ["ㅡ"] = "ŭ", ["ㅖ"] = "ye", ["ㅒ"] = "yae" } )) end if not match(word, "[가-힣]") then return nil end local clean = gsub(word, "[^가-힣%s%-]", "") local m_pron = require("Module:ko-pron") local full_roman = m_pron.romanise(clean, 4, {}, true) if not full_roman then return nil end local slices = get_slices(clean, full_roman) local use_e_umlaut = {} local hangul_idx = 0 local prev_hangul = nil local prev_was_adjacent = false for char in mw.ustring.gmatch(clean, ".") do if match(char, "[가-힣]") then hangul_idx = hangul_idx + 1 if prev_was_adjacent and prev_hangul then if starts_with_e(char) and ends_with_a_or_o(prev_hangul) then use_e_umlaut[hangul_idx] = true end end prev_hangul = char prev_was_adjacent = true elseif match(char, "[%s%-]") then prev_was_adjacent = false end end local revised if slices then local idx = 0 revised = gsub(word, "[가-힣]", function(m) idx = idx + 1 local slice = slices[idx] or m if use_e_umlaut[idx] then slice = gsub(slice, "^e", "ë") end return slice end) else revised = full_roman end if match(revised, "[%.%?%!]") then revised = mw.ustring.upper(mw.ustring.sub(revised, 1, 1)) .. mw.ustring.sub(revised, 2, -1) revised = gsub(revised, "([%.%?%!]) ([a-z%'])", "%1 ^%2") revised = gsub(revised, "^%'%'%'", "'''^") end revised = gsub(revised, "%^%'%'%'", "'''^") revised = gsub(revised, "%^%l", mw.ustring.upper) revised = gsub(revised, '%^', '') revised = gsub(revised, "%-'''%-", "'''-") revised = gsub(revised, "%-%-", "-") return revised end export.tr_revised = export.tr return export luc2bfuqtpos3frze6iju3uaafd5b62 しとう 0 323967 2313269 2275277 2026-08-09T00:11:26Z 鍼灸 112313 2313269 wikitext text/x-wiki {{kana-DEFAULTSORT}} {{also|しどう|じとう|じどう}} =={{ja}}== ==={{kangokana}}=== {{ja-kangokana|h=y}} *【[[市頭]]】:街の中。市中。 *【[[死闘]]】:[[命]]をかけた戦い。 *【[[指頭]]】:[[指]]の[[先]]。 *【[[至当]]】:[[至極]][[当然]]なこと。 *【[[私闘]]】:個人的な利害などによる闘い。 *【[[私党]]】:公認されていない党。 *【[[支撐]]】:支えること。 *【[[四島]]】:四つの島。 *【[[四等]]】:第四位。 *【[[四頭]]】:(動物が)四匹。 80qhuckpk7nsrk03egjdub5iy2j3oy5 たびだつ 0 326120 2313374 1932543 2026-08-09T06:24:55Z ちょこれ゚いとみんと 129959 2313374 wikitext text/x-wiki {{kana-DEFAULTSORT}} =={{L|ja}}== ==={{verb}}=== {{ja-verb|旅立つ}} #[[たび|旅]]に[[でる|出る]]。 #{{context|figuratively|lang=ja|}}[[人生]]の新たな[[段階]]に[[むかう|向かう]]。 #{{context|euphemism|lang=ja|}}[[なくなる|亡くなる]]。[[しぬ|死ぬ]]。 ===={{conjug}}==== {{日本語五段活用}} ===={{rel}}==== *[[たびだち]] 789sqmit2gjlpwl6tn1s00yssa1pyiw かけい 0 327165 2313275 2301958 2026-08-09T00:13:02Z うーむ 129171 /* */ 2313275 wikitext text/x-wiki {{kana-DEFAULTSORT}} {{also|かげい|がけい}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|筧|懸樋}} #「[[かけひ]]」の表記ゆれ。 ==={{kangokana}}=== {{ja-kangokana|h=y}} *【[[佳景]]】よい[[景色]]や眺め。 *【[[家兄]]】[[自分]]の兄。 *【[[家計]]】[[家庭]]の[[経済]]。 *【[[家系]]】家庭の[[系統]]。 *【[[火刑]]】火炙りの刑。 *【[[花兄]]】梅の異称。 *【[[花形]]】花のかたち。 *【[[花茎]]】花だけを支える茎。 *【[[科刑]]】刑罰を科す。 *【[[嘉慶]]】日本で使用された年号。 1d0ouxdb4tcxwrbg8yot11k6o0435kd 博识 0 331528 2313365 2156864 2026-08-09T05:26:47Z Jiba1219 100610 2313365 wikitext text/x-wiki {{DEFAULTSORT:bo2shi2}} =={{L|zh}}== ==={{pron}}=== {{cmn-pron|bóshí|bóshì|z=n}} {{yue-pron|bok3 sik1|h=n}} ==={{adjective}}=== {{zhchars|t=博識}} #[[博識]]な。 {{zh-cat|bo2shi2|形容詞}} {{yue-cat|bok3sik1|形容詞}} 7pdxsgb7q3n0dlnt8m3f7ipi9rwh7ae 博識 0 331529 2313364 2156861 2026-08-09T05:23:53Z Jiba1219 100610 /* {{L|zh}} */ 2313364 wikitext text/x-wiki {{kana-DEFAULTSORT|はくしき}} =={{L|ja}}== {{ja-kanjitab|はく|しき|yomi=o,o}} ==={{pron}}=== {{ja-pron|はくしき|acc=0}} {{ja-accent-common|region=京阪|h||はくしき}} ==={{noun}}・{{adjectivenoun}}=== {{ja-noun|はくしき}} #[[知識]]の[[範囲]]が[[ひろい|広く]][[あらゆる]]物事に[[くわしい|詳しい]]こと。また、そのさま。[[ものしり|もの知り]]。 {{日本語ダ活用}} =={{L|zh}}== ==={{pron}}=== {{cmn-pron|bóshí|bóshì}} {{yue-pron|bok3 sik1}} ==={{adjective}}=== {{zhchars|s=博识}} #博識な。 {{zh-cat|bo2shi2|形容詞}} {{yue-cat|bok3sik1|形容詞}} =={{L|ko}}== ==={{noun}}=== {{ko-head|noun|박식}} #(日本語に同じ)博識。 nlaqknah3sdckpsvpmqzje1bj61g890 浣腸 0 342370 2313111 2094601 2026-08-08T13:54:18Z M-30722 1202 2313111 wikitext text/x-wiki {{kana-DEFAULTSORT|かんちょう}} {{Wikipedia}} {{wikipedia|カンチョー}} =={{L|ja}}== {{ja-kanjitab|かん|ちょう|yomi=o}} ==={{alter}}=== *[[灌腸]] ==={{pron}}=== {{ja-pron|かんちょう|acc=h}} {{ja-accent-common|region=京阪|h||かんちょー}} ==={{noun}}=== {{ja-noun-suru|[[かんちょう]]}} #{{タグ|ja|医療}}[[便通]]の[[促進]]や[[栄養]][[補給]]のため、[[肛門]]から[[直腸]]、[[大腸]]に[[薬剤]]を[[注入]]すること。 #{{タグ|ja|俗語|性}}主に[[こども|子供]]が行う、[[肛門]]に両の人差し指を突き刺す[[悪戯]]。[[陰裂]]に[[貫手]]を当てることを指す場合もある。 ===={{trans}}==== {{trans-top|名詞語義1}} *{{T|ar}}: {{t|ar|حُقْنَة شَرَجِيَّة|f|tr=ḥuqna šarajiyya}}, {{t|ar|حُقْنَة|f}} *{{T|hy}}: {{t|hy|հոգնա}}, {{t|hy|կլիզմա}} (口語) *{{T|it}}: {{t|it|clistere|m}}, {{t|it|lavativo|m}} *{{T|id}}: {{t|id|enema}}, {{t|id|lavemen}}, {{t|id|klisma}}, {{t|id|huknah}} *{{T|cy}}: {{t|cy|enema|m|f}}, {{t|cy|rhefrolch|m}} (文章語) *{{T|uk}}: {{t|uk|клі́зма|f}}, {{t|uk|клісти́р|m}} (古用法) *{{T|uz}}: {{t|uz|klizma}} *{{T|en}}: {{t|en|enema}} *{{T|eo}}: {{t|eo|klistero}} *{{T|nl}}: {{t|nl|klysma|n}}, {{t|nl|lavement|n}} *{{T|kk}}: {{t|kk|клизма}} *{{T|ca}}: {{t|ca|ènema|m}} *{{T|el}}: {{t|el|κλύσμα|n}}, {{t|el|υποκλυσμός|m}} *:{{T|grc}}: {{t|grc|κλύσμα|n}}, {{t|grc|ἔνεμα|n}} *{{T|ky}}: {{t|ky|клизма}} *{{T|ka}}: {{t|ka|ოყნა}} *{{T|sv}}: {{t|sv|lavemang}} *{{T|es}}: {{t|es|enema|m}}, {{t|es|lavativa|f}}, {{t|es|clister|m}}, {{t|es|clistel|m}} *{{T|sk}}: {{t|sk|klystír|m}} *{{T|sl}}: {{t|sl|klistir|m}} *{{T|sh}}: *:キリル文字: {{t|sh|клѝзма|f}} *:ラテン文字: {{t|sh|klìzma|f}} *{{T|tg}}: {{t|tg|ҳуқна}} *{{T|cs}}: {{t|cs|klystýr|m}} *{{T|zh}}: {{t|cmn|灌腸劑|tr=guànchángjì}}, {{t|cmn|灌腸|tr=guàncháng}} *{{T|ko}}: {{t|ko|관장(灌腸)}} *{{T|de}}: {{t|de|Einlauf|m}}, {{t|de|Klistier|n}} *{{T|tr}}: {{t|tr|lavman}} *{{T|nrf}}: {{t|nrf|lavement|m}} (ジャージー) *{{T|hu}}: {{t|hu|beöntés}} *{{T|fi}}: {{t|fi|peräruiske}} *{{T|fr}}: {{t|fr|lavement|m}} *{{T|bg}}: {{t|bg|кли́зма|f}} *{{T|he}}: {{t|he|חוקן|m|tr=khóken|alt=חוקן \ חֹקֶן}} *{{T|be}}: {{t|be|клі́зма|f}} *{{T|fa}}: {{t|fa|اِنِما}} *{{T|pl}}: {{t|pl|lewatywa|f}}, {{t|pl|enema|f}}, {{t|pl|klizma|f}} *{{T|pt}}: {{t|pt|enema|m}}, {{t|pt|clister|m}} *{{T|mk}}: {{t|mk|клизма|f}} *{{T|ms}}: {{t|ms|enema}} *{{T|ro}}: {{t|ro|clismă|f}} *{{T|ru}}: {{t|ru|кли́зма|f}}, {{t|ru|клисти́р|m}} (古用法) {{trans-bottom}} ==={{verb}}=== {{ja-verb-suru|かんちょう}} {{日本語サ変活用}} =={{L|zh}}== ==={{pron}}=== {{cmn-pron|huǎncháng,wǎncháng}} ==={{noun}}=== {{zh-cat|huan3chang2|noun|医療}} {{zhchars|s=浣肠}} #(日本語 語義1に同じ)浣腸。 6c17pdblecip9wi3un35vevuzdf6yin аниматор 0 345136 2313201 1647156 2026-08-08T23:21:56Z Kuroco2k 84207 wikify 2313201 wikitext text/x-wiki =={{L|sh}}== ==={{etym}}=== {{m|sh|sc=Cyrl|аними́рати}} ==={{pron}}=== *{{sh-IPA|анѝма̄тор}} *{{hyph|sh|а|ни|ма|тор}} ==={{noun}}=== {{sh-noun+|g=m|head=анѝма̄тор}} # {{context|occupation|lang=sh}} [[アニメーター]]。 ===={{decl}}==== {{sh-decl-noun|sc=Cyrl |анѝма̄тор|аниматори |аниматора|аниматора |аниматору|аниматорима |аниматора|аниматоре |аниматоре|аниматори |аниматору|аниматорима |аниматором|аниматорима }} ===参考文献=== *{{R:sh:HJP|fV1mWg%3D%3D}} =={{L|mk}}== ==={{pron}}=== *{{mk-IPA|анима/тор}} ==={{noun}}=== {{mk-noun|m|f=аниматорка}} #{{context|occupation|lang=mk}} [[アニメーター]]。 ===={{inflection}}==== {{mk-decl-noun-m|||аниматоре}} =={{L|ru}}== ==={{etym}}=== {{bor|ru|en|animator|notext=y}} の翻字 < {{der|ru|la|animātor}} < {{m|la|animāre||吸い込む, 吹く; 復活させる}} < {{m|la|anima||空気, 魂}} < {{etyl|ine-pro|ru}} {{m|ine-pro||*ane-|吹く, 息をする}} ==={{pron}}=== *{{ru-IPA|анима́тор}} *{{kanahyoki|ru|アニ'''マ'''タル}} *{{hyph|ru|а|ни|ма|тор}} ==={{noun}}=== {{ru-noun+|анима́тор|a=an|adj=анима́торский}} # {{context|lang=ru|neologism|occupation}} [[アニメーター]]。 ===={{decl}}==== {{ru-noun-table|анима́тор|a=an}} ===={{syn}}==== *{{l|ru|мультиплика́тор|g=m}} ===={{hyper}}==== *{{l|ru|рабо́тник|g=m}}, {{l|ru|худо́жник|g=m}} ===={{rel}}==== *{{l|ru|анима́торский}} *{{l|ru|анима́ция|g=f}} bfxfvneefvm05v7jhxd1siziis0tj8s きゅうとう 0 346319 2313249 2279632 2026-08-08T23:45:50Z 鍼灸 112313 2313249 wikitext text/x-wiki {{kana-DEFAULTSORT}} {{also|きゅうどう|ぎゅうとう|ぎゅうどう}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana|h=y}} *【[[旧套]]】:古びたやり方。 *【[[急登]]】:急な[[斜面]]の[[道]]。 *【[[急騰]]】:[[急]]な[[高騰]]。 *【[[給湯]]】:[[湯]]を[[わかす|沸かし]]て[[屋内]]の[[部屋]]などへ[[配給]]すること。 *【[[九島]]】:九つの島。 *【[[九等]]】:第九位。 *【[[九頭]]】:(動物が)九匹。 k5bswcr09lsf47q5bjd5x2yre1n6lyt 包帯 0 346384 2313225 1935578 2026-08-08T23:26:00Z Kuroco2k 84207 2313225 wikitext text/x-wiki =={{ja}}== {{wikipedia}} [[Category:{{ja}}]] {{kana-DEFAULTSORT|ほうたい}} ==={{noun}}=== [[Category:{{ja}}_{{noun}}]] {{jachar|包|帯}}([[ほうたい]] {{同音後|[[繃帯]]}}) #[[傷]]などを[[保護]]したり[[感染]][[防止]]のため、[[患部]]のうえから[[まく|巻く]]綿布や[[ガーゼ]]などでできた細長い[[布]]。 ===={{trans}}==== {{top}} *[[{{apw}}]]<!--* Apache-->: {{t|apw|bee bikʼídisdizí}} *[[{{ar}}]]<!--* Arabic-->: {{t|ar|ضِمَادَة|f}}, {{t|ar|عِصَابَة|f}} *[[{{az}}]]<!--* Azerbaijani-->: {{t+|az|bint}}, {{t|az|bandaj}}, {{t+|az|sarğı}} *[[{{ba}}]]<!--* Bashkir-->: {{t|ba|бәйләүес|sc=Cyrl}} *[[{{be}}]]<!--* Belarusian-->: {{t|be|бінт|m|sc=Cyrl}}, {{t|be|банда́ж|m|sc=Cyrl}}, {{t|be|павя́зка|f|sc=Cyrl}} *[[{{bg}}]]<!--* Bulgarian-->: {{t|bg|бинт|m|sc=Cyrl}}, {{t+|bg|бандаж|m|sc=Cyrl}} *[[{{bn}}]]<!--* Bengali-->: {{t|bn|পটি}}, {{t|bn|ব্যাণ্ডেজ}} *[[{{bo}}]]<!--* Tibetan-->: {{t|bo|སྨན་རས}}, {{t|bo|རྨ་རས}} *[[{{ca}}]]<!--* Catalan-->: {{t+|ca|bena|f}}, {{t|ca|embenat|m}} *[[{{ceb}}]]<!--* Cebuano-->: {{t|ceb|haklop}} *[[{{cop}}]]<!--* Coptic-->: {{t|cop|ⲥⲉⲃⲉⲛ|m}} *[[{{crh}}]]<!--* Crimean Tatar-->: {{t|crh|bint}} *[[{{cs}}]]<!--* Czech-->: {{t+|cs|obvaz|m}}, {{t+|cs|fáč|m}}, {{t+|cs|obinadlo|n}} *[[{{cy}}]]<!--* Welsh-->: {{t+|cy|rhwymyn|m}} *[[{{da}}]]<!--* Danish-->: {{t+|da|bandage|c}} *[[{{de}}]]<!--* German-->: {{t+|de|Verband|m}} *[[{{el}}]]<!--* Greek-->: {{t+|el|επίδεσμος|m|sc=Grek}} **[[{{grc}}]]<!--* Ancient Greek-->: {{t|grc|ἐπίδεσμος|m|sc=Grek}}, {{t|grc|κειρία|f|sc=Grek}}, {{t|grc|τελαμών|m|sc=Grek}} *{{en}}:[[bandage]] *[[{{eo}}]]<!--* Esperanto-->: {{t+|eo|bandaĝo}} *[[{{es}}]]<!--* Spanish-->: {{t+|es|venda|f}}, {{t+|es|vendaje|m}} *[[{{et}}]]<!--* Estonian-->: {{t|et|haavaside}}, {{t+|et|side}} *[[{{eu}}]]<!--* Basque-->: {{t|eu|lotura}}, {{t|eu|hesgailu}} *[[{{fa}}]]<!--* Persian-->: {{t+|fa|بانداژ|tr=bândâž}} *[[{{fi}}]]<!--* Finnish-->: {{t+|fi|side}} *[[{{fj}}]]<!--* Fijian-->: {{t|fj|vadreti-taka}} *[[{{fr}}]]<!--* French-->: {{t+|fr|bandage|m}}, {{t+|fr|pansement|m}} *[[{{ga}}]]<!--* Irish-->: {{t|ga|bindealán}} *[[{{gd}}]]<!--* Scottish Gaelic-->: {{t|gd|bann|m}} *[[{{gl}}]]<!--* Galician-->: {{t|gl|venda|f}} *[[{{got}}]]<!--* Gothic-->: {{t|got|𐍆𐌰𐍃𐌺𐌾𐌰|m}} *[[{{he}}]]<!--* Hebrew-->: {{t|he|תחבושת|f|alt=תחבושת \ תַּחְבֹּשֶׁת|tr=tahboshet}} *[[{{hi}}]]<!--* Hindi-->: {{t+|hi|पट्टी|f}}, {{t+|hi|पट्टा|m}} *[[{{hu}}]]<!--* Hungarian-->: {{t+|hu|kötszer}}, {{t+|hu|kötés}} *[[{{hy}}]]<!--* Armenian-->: {{t+|hy|վիրակապ|sc=Armn}}, {{t+|hy|բինտ|sc=Armn}} *[[{{id}}]]<!--* Indonesian-->: {{t+|id|barut}} *[[{{io}}]]<!--* Ido-->: {{t+|io|bandajo}} *[[{{is}}]]<!--* Icelandic-->: {{t+|is|umbúðir|f-p}}, {{t+|is|plástur|m}} *[[{{it}}]]<!--* Italian-->: {{t+|it|fasciatura|f}}, {{t|it|bendaggio|m}}, {{t+|it|benda|f}}, {{t|it|benderella|f}}, {{t+|it|fascia|f}} *[[{{ka}}]]<!--* Georgian-->: {{t|ka|ბანდი|sc=Geor}}, {{t|ka|სახვევი|sc=Geor}} *[[{{kk}}]]<!--* Kazakh-->: {{t|kk|жаратаңғыш|sc=Cyrl}} *[[{{km}}]]<!--* Khmer-->: {{t|km|ប៉ង់សឺម៉ង់}}, {{t|km|វណវេឋន៍}} *[[{{kn}}]]<!--* Kannada-->: {{t+|kn|ಕಟ್ಟುಪಟ್ಟಿ}} *[[{{ko}}]]<!--* Korean-->: {{t|ko|붕대}} *[[{{ky}}]]<!--* Kyrgyz-->: {{t+|ky|бинт|sc=Cyrl}}, {{t+|ky|бандаж|sc=Cyrl}} *[[{{la}}]]<!--* Latin-->: {{t|la|fascia|f}}, {{t|la|infula|f}} *[[{{lo}}]]<!--* Lao-->: {{t|lo|ພັນຜ້າ}}, {{t|lo|ຜ້າພັນແຜ}}, {{t|lo|ຜ້າພັນບາດ}}, {{t|lo|ວະນະບັດ}}, {{t|lo|ວະນະພັນ}} *[[{{lt}}]]<!--* Lithuanian-->: {{t|lt|bintas|m}} *[[{{lv}}]]<!--* Latvian-->: {{t|lv|pārsējs|m}} *[[{{mk}}]]<!--* Macedonian-->: {{t|mk|завој|m|sc=Cyrl}} *[[{{mi}}]]<!--* Maori-->: {{t|mi|takai}}, {{t|mi|tākaikai}}, {{t|mi|tāpi}} *[[{{mr}}]]<!--* Marathi-->: {{t|mr|मलमपट्टी|f}} *[[{{ms}}]]<!--* Malay-->: {{t|ms|bebat}}, {{t|ms|barut}}, {{t|ms|balut}} *[[{{mt}}]]<!--* Maltese-->: {{t|mt|faxxa|f}} *[[{{my}}]]<!--* Burmese-->: {{t+|my|ပတ်တီး}} *[[{{nl}}]]<!--* Dutch-->: {{t+|nl|verband|n}}, {{t+|nl|bandage|f}}, {{t+|nl|zwachtel|m}} *[[{{no}}]]<!--* Norwegian-->: **[[{{nb}}]]<!--* Bokmål-->: {{t|nb|bandasje|m}} **[[{{nn}}]]<!--* Nynorsk-->: {{t|nn|bandasje|m}} *[[{{nrf}}]]<!--* Norman-->: {{t|nrf|bandage|m}} *[[{{oc}}]]<!--* Occitan-->: {{t+|oc|pensament|m}} *[[{{pl}}]]<!--* Polish-->: {{t+|pl|bandaż|m}} *[[{{ps}}]]<!--* Pashto-->: {{t+|ps|پټۍ|f|tr=paṭəj}} *[[{{pt}}]]<!--* Portuguese-->: {{t+|pt|bandagem|f}}, {{t+|pt|atadura|f}}, {{t+|pt|curativo|m}}, {{t+|pt|penso|m}} *[[{{rhg}}]]<!--* Rohingya-->: {{t|rhg|faththi}} *[[{{ro}}]]<!--* Romanian-->: {{t+|ro|bandaj|n}}, {{t+|ro|fașă|f}}, {{t+|ro|pansament|n}} *[[{{ru}}]]<!--* Russian-->: {{t+|ru|бинт|m|sc=Cyrl}}, {{t+|ru|банда́ж|m|sc=Cyrl}}, {{t+|ru|повя́зка|f|sc=Cyrl}} *[[{{rup}}]]<!--* Aromanian-->: {{t|rup|fashi|f}}, {{t|rup|fashe|f}} *[[{{sa}}]]<!--* Sanskrit-->: {{t+|sa|पट्टिका|f}}, {{t+|sa|पट्टी|f}} *[[{{sh}}]]<!--* Serbo-Croatian-->:{{t|sh|завој}}/{{t+|sh|zavoj|m}} *[[{{sk}}]]<!--* Slovak-->: {{t|sk|obväz|m}}, {{t|sk|ovíjadlo|n}}, {{t|sk|ovínadlo|n}} *[[{{sl}}]]<!--* Slovene-->: {{t|sl|obveza|f}} *[[{{sq}}]]<!--* Albanian-->: {{t+|sq|fashë|f}}, {{t|sq|fashaturë|f}} *[[{{stq}}]]<!--* Saterland Frisian-->: {{t|stq|Biende|f}} *[[{{sv}}]]<!--* Swedish-->: {{t+|sv|plåster|n}}, {{t+|sv|bandage|n}}, {{t+|sv|förband|n}} *[[{{sw}}]]<!--* Swahili-->: {{t+|sw|bendeji|c9|c10}}, {{t|sw|plasta}} *[[{{te}}]]<!--* Telugu-->: {{t+|te|కట్టు}} *[[{{tg}}]]<!--* Tajik-->: {{t|tg|дока|sc=Cyrl}}, {{t|tg|бандаж|sc=Cyrl}}, {{t|tg|бинт|sc=Cyrl}} *[[{{th}}]]<!--* Thai-->: {{t|th|ผ้าพัน}}, {{t|th|ผ้าพันแผล}} *[[{{tk}}]]<!--* Turkmen-->: {{t|tk|sarag}} *[[{{tl}}]]<!--* Tagalog-->: {{t|tl|bendahan}} *[[{{tr}}]]<!--* Turkish-->: {{t+|tr|bandaj}}, {{t+|tr|sargı}} **[[{{ota}}]]<!--* Ottoman Turkish-->: {{t|ota|صارغی|tr=sargı}} *[[{{tt}}]]<!--* Tatar-->: {{t+|tt|бәйләвеч|sc=Cyrl}} *[[{{txb}}]]<!--* Tocharian B-->: {{t|txb|śwele}} *[[{{ug}}]]<!--* Uyghur-->: {{t|ug|تېڭىق}} *[[{{uk}}]]<!--* Ukrainian-->: {{t+|uk|бинт|m|sc=Cyrl}}, {{t+|uk|банда́ж|m|sc=Cyrl}}, {{t+|uk|пов'я́зка|f|sc=Cyrl}} *[[{{ur}}]]<!--* Urdu-->: {{t|ur|پٹی|f|tr=paṭṭī}} *[[{{uz}}]]<!--* Uzbek-->: {{t+|uz|bint}}, {{t+|uz|bandaj}} *[[{{vep}}]]<!--* Veps-->: {{t|vep|sideg}} *[[{{vi}}]]<!--* Vietnamese-->: {{t+|vi|băng}}, {{t|vi|băng giữ}}, {{t+|vi|băng bó}} *[[{{vro}}]]<!--* Võro-->: {{t|vro|sidõ}} *[[{{yi}}]]<!--* Yiddish-->: {{t|yi|באַנדאַזש|m}} *{{zh}}:[[绷带]]/[[繃帶]](bēng dài), [[绑带]]/[[綁帶]](bǎngdài) {{bottom}} 214cm478nx5se4ioq8r4x9ae0cesdx3 法堂 0 347395 2313250 1936260 2026-08-08T23:47:31Z 鍼灸 112313 2313250 wikitext text/x-wiki =={{ja}}== {{kana-DEFAULTSORT|はっとう}} ==={{noun}}=== {{ja-noun|[[はっとう]]}} #[[禅宗]][[寺院]]で[[法門]]を[[講義]]、[[講演]]するための堂舎。[[講堂]]。 =={{zh}}== ==={{pron}}=== {{cmn-pron|fǎtáng}} ==={{noun}}=== {{zh-cat|fa3tang2|noun}} {{zhchars}} #寺院で大勢の聴衆に説教をするのに用いる建物。 #「[[法廷]]」の旧称。 6qzn8xdpbolflzxlb5rzl271vyd5z26 さいせん 0 348880 2313106 1936840 2026-08-08T13:26:29Z うーむ 129171 /* 日本語 */ 2313106 wikitext text/x-wiki {{kana-DEFAULTSORT}} {{also|さいぜん}} =={{ja}}== ==={{homonym}}=== {{head|ja|同音異義}} *【[[再選]]】選挙の[[結果]]、[[おなじ|同じ]]人が[[選出]]されること。 *【[[賽銭]]】[[祈願]]が[[成就]]した後に[[神仏]]に賽物として[[奉納]]する[[金銭]]。 *【[[最先]]】[[最前]]。 3fe71sk2dupu9onldmb4k0vojeaajb5 2313116 2313106 2026-08-08T14:01:09Z M-30722 1202 2313116 wikitext text/x-wiki {{kana-DEFAULTSORT}} {{also|さいぜん}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana|h=y}} *【[[再選]]】選挙の[[結果]]、[[おなじ|同じ]]人が[[選出]]されること。 *【[[賽銭]]】[[祈願]]が[[成就]]した後に[[神仏]]に賽物として[[奉納]]する[[金銭]]。 *【[[最先]]】[[最前]]。 di9i04kuufntdwl3ybfwm4egparxoib 2313159 2313116 2026-08-08T22:45:54Z うーむ 129171 /* */ 2313159 wikitext text/x-wiki {{kana-DEFAULTSORT}} {{also|さいぜん|ざいせん}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana|h=y}} *【[[再選]]】選挙の[[結果]]、[[おなじ|同じ]]人が[[選出]]されること。 *【[[賽銭]]】[[祈願]]が[[成就]]した後に[[神仏]]に賽物として[[奉納]]する[[金銭]]。 *【[[最先]]】[[最前]]。 iasya7kumsmujyyrakq3hngajp5nefu likken 0 348982 2313464 1645308 2026-08-09T11:51:54Z Kuroco2k 84207 /* {{desc}} */ 2313464 wikitext text/x-wiki =={{L|nl}}== ==={{etym}}=== {{etyl|dum|nl}} {{m|dum|lecken}}, {{m|dum|licken}} < {{etyl|odt|nl}} {{m|odt|leccon}} < {{etyl|gmw-pro|nl}} {{m|gmw-pro|*likkōn}} < {{etyl|gem-pro|nl}} {{m|gem-pro|*likkōną}} ==={{pron}}=== *音声: [[ファイル:Nl-likken.ogg]] * {{IPA|lang=nl|ˈlɪ.kə(n)}} * {{rhymes|ɪkən|s=2}} * {{hyphenation|lik|ken}} ==={{verb}}=== {{nl-verb|wk-t}} #{{context|transitive|intransitive|lang=nl}}{{おくりがな2|舐|な|める|なめる}}。 {{nl-conj-wk|lik|likke}} ===={{drv}}==== * {{l|nl|aflikken}} * {{l|nl|belikken}} * {{l|nl|oplikken}} * {{l|nl|weglikken}} ===={{desc}}==== * {{desc|dcr|lek|lik}} * {{desc|gmw-jdt|läkke}} ==={{anag}}=== * {{l|nl|klinke}}, {{l|nl|nikkel}} ec3z6uav737la5mje678ee3ecpjxbmm leer 0 352392 2313465 1651838 2026-08-09T11:52:35Z Kuroco2k 84207 /* {{desc}} */ 2313465 wikitext text/x-wiki {{also|Leer|lêer|leër}} =={{L|af}}== ==={{pron}}=== * {{IPA|lang=af|lɪər}} ==={{etym}}1=== {{etyl|nl|af}} {{m|nl|leren}} < {{etyl|dum|af}} {{m|dum|lêren}} < {{etyl|odt|af}} {{m|odt|lēren}} < {{etyl|gem-pro|af}} {{m|gem-pro|*laizijaną}} ===={{verb}}==== {{af-verb|lerende}} #{{おくりがな2|学|まな|ぶ|まなぶ}}。 ==={{etym}}2=== {{etyl|nl|af}} {{m|nl|leer}} < {{etyl|dum|af}} {{m|dum|lêre}} < {{etyl|odt|af}} {{m|odt|lēra}} < {{etyl|gem-pro|af}} {{m|gem-pro|*laizō}} ===={{noun}}==== {{af-noun|-}} #{{おくりがな2|教|おし|え|おしえ}}。 ==={{etym}}3=== {{etyl|nl|af}} {{m|nl|leer}} < {{m|nl|leder}} < {{etyl|dum|af}} {{m|dum|lēder}} < {{etyl|odt|af}} {{m|odt|*lether}} < {{etyl|gem-pro|af}} {{m|gem-pro|*leþrą}} ===={{noun}}==== {{af-noun|-}} #{{ふりがな|革|かわ}}、[[レザー]]。 ==={{etym}}4=== {{etyl|nl|af}} {{m|nl|leer}} < {{etyl|dum|af}} {{m|dum|leer}} ===={{noun}}==== {{af-noun|lere}} #{{ふりがな|梯子|はしご}}。 ====={{desc}}===== * {{desc|st|lere|bor=1}} * {{desc|xh|ileli|bor=1}} ---- =={{L|en}}== ==={{pron}}=== * {{a|UK}} {{IPA|lang=en|lɪə(ɹ)}} * {{a|US}} {{IPA|lɪɹ}} *音声(英): [[ファイル:en-uk-leer.ogg]] *音声(米): [[ファイル:en-us-leer.ogg]] * {{rhymes|ɪə(ɹ)|s=1}} ==={{etym}}1=== 不詳であるが、動詞 ''*leer'' (顔を作る) < 語義2 {{m|en|leer||顔}} と考えられる。 ===={{verb}}==== {{en-verb}} #{{context|intransitive|lang=en}}{{ふりがな|横目|よこめ}}で{{おくりがな2|見|み|る|みる}}。 #{{context|transitive|lang=en}}{{ふりがな|色目|いろめ}}を使い[[誘惑]]する。 ===={{noun}}==== {{en-noun}} #横目、{{おくりがな3|流|なが|し|目|め||ながしめ}}。 ==={{etym}}2=== {{etyl|enm}} {{m|enm|ler}}, {{m|enm|leor}} < {{etyl|ang}} {{m|ang|hlēor}} < {{etyl|gem-pro}} {{m|gem-pro|*hleuzą}} < {{etyl|ine-pro}} {{m|ine-pro|*ḱlews-}} < {{m|ine-pro|*ḱlewe-}}, {{m|ine-pro|*ḱlew-}} ===={{alter}}==== * {{l|en|lyre}}, {{l|en|lire}}, {{l|en|lere}} ===={{noun}}==== {{en-noun}} #{{context|obsolete|lang=en}}{{ふりがな|頬|ほお}}。 #{{context|obsolete|lang=en}}{{ふりがな|顔|かお}}。 #{{context|obsolete|lang=en}}[[外観]]、[[表情]]。 #{{context|obsolete|lang=en}}{{ふりがな|顔色|かおいろ}}。 #{{context|obsolete|lang=en}}{{ふりがな|身|み}}、{{ふりがな|肌|はだ}}。 #{{context|UK|dialectal|lang=en}}{{ふりがな|脇腹|わきばら}}。 ==={{etym}}3=== {{etyl|enm}} {{m|enm|lere}} < {{etyl|ang}} {{m|ang|ġelǣr}}, {{m|ang|*lǣre}} < {{etyl|gem-pro}} {{m|gem-pro|*lēziz}}, {{m|gem-pro|*lēzijaz}} < {{etyl|ine-pro}} {{m|ine-pro|*les-}} ===={{alter}}==== * {{l|en|lear}} ===={{adjective}}==== {{en-adj}} #{{context|obsolete|lang=en}}{{ふりがな|空|から}}の。 #{{context|obsolete|lang=en}}{{おくりがな2|足|た|り|たりる}}ない、[[不足]]した。 #{{context|obsolete|lang=en}}[[空腹]]の。 #{{context|UK|dialectal|obsolete|lang=en}}{{おくりがな2|薄|うす|い|うすい}}。{{おくりがな2|微|かす|か|かすか}}な。 #{{context|obsolete|lang=en}}{{おくりがな3|積|つ|み|荷|に||つみに}}のない。 #{{context|obsolete|lang=en}}[[些細]]な。 ====={{drv}}===== * {{l|en|leerness}} ==={{etym}}4=== {{etyl|enm}} {{m|enm|leren}} < {{etyl|ang}} {{m|ang|lǣran}} < {{etyl|gem-pro}} {{m|gem-pro|*laizijaną}} < {{etyl|ine-pro}} {{m|ine-pro|*leis-}} ===={{verb}}==== {{en-verb}} #{{context|transitive|obsolete|lang=en}}{{おくりがな2|教|おし|える|おしえる}}。 #{{context|transitive|obsolete|lang=en}}{{おくりがな2|学|まな|ぶ|まなぶ}}。 ==={{etym}}5=== {{m|en|lehr}} 参照。 ===={{noun}}==== {{en-noun}} #[[lehr]]の異形。 ==={{anag}}=== * {{anagrams|en|a=eelr|Erle|LREE|Reel|reel}} ---- =={{L|et}}== ==={{etym}}1=== {{etyl|gml|et}} {{m|gml|leger}}, {{m|gml|lager}} ===={{noun}}==== {{et-noun|leeri|leeri}} #[[陣営]]。 #{{ふりがな|側|がわ}}。 {{et-decl-riik|leer|leer|i}} ==={{etym}}2=== {{etyl|gml|et}} {{m|gml|lere}} ===={{noun}}==== {{et-noun|leeri|leeri}} #{{context|Christianity|lang=et}}(プロテスタント)[[堅信]]。 {{et-decl-riik|leer|leer|i}} ---- =={{L|nl}}== ==={{pron}}=== * {{IPA|lang=nl|leːr}} *音声: [[ファイル:Nl-leer.ogg]] * {{hyphenation|leer}} * {{rhymes|eːr|s=1}} ==={{etym}}1=== {{m|nl|leder}} の短縮 < {{etyl|dum|nl}} {{m|dum|leder}} < {{etyl|odt|nl}} {{m|odt|*lether}} < {{etyl|gem-pro|nl}} {{m|gem-pro|*leþrą}} ===={{noun}}==== {{nl-noun|g=n|-|-}} #{{ふりがな|革|かわ}}、[[レザー]]。 ===={{syn}}==== * {{l|nl|leder}} ====={{drv}}===== * {{l|nl|kunstleer}} * {{l|nl|leerdoek}} * {{l|nl|leertje}} * {{l|nl|leertouwen}} ====={{desc}}===== * {{desc|af|leer}} * {{desc|dcr|leër|leer}} * {{desc|djk|leli|bor=1}} * {{desc|srn|leri|bor=1}} ==={{etym}}2=== {{etyl|dum|nl}} {{m|dum|lêre}} < {{etyl|odt|nl}} {{m|odt|lēra}} < {{etyl|gem-pro|nl}} {{m|gem-pro|*laizō}} ===={{noun}}==== {{nl-noun|g=f|leren|leertje}} #[[教義]]、{{おくりがな2|教|おし|え|おしえ}}。 #[[学説]]。 ====={{drv}}===== * {{l|nl|beleren}} * {{l|nl|betekenisleer}} * {{l|nl|dwaalleer}} * {{l|nl|erfelijkheidsleerleer}} * {{l|nl|evolutieleer}} * {{l|nl|geloofsleer}} * {{l|nl|getallenleer}} * {{l|nl|leermeester}} * {{l|nl|leerstelling}} * {{l|nl|leervast}} * {{l|nl|notenleer}} * {{l|nl|rechtsleer}} * {{l|nl|verzamelingenleer}} * {{l|nl|vormleer}} * {{l|nl|warmteleer}} * {{l|nl|zedenleer}} ====={{desc}}===== * {{desc|af|leer}} * {{desc|dcr|leer}} ==={{etym}}3=== {{etyl|dum|nl}} {{m|dum|leer}} ===={{noun}}==== {{nl-noun|g=f|leren|-}} #{{context|dialectal|dated|lang=nl}}[[ladder]]の異形。 ====={{desc}}===== * {{desc|af|leer}} ==={{etym}}4=== ===={{verb}}==== {{nl-verb-form}} #[[leren]]の直説法現在第一人称単数形。 #lerenの命令法。 ==={{anag}}=== * {{l|nl|lere}} ---- =={{L|es}}== ==={{etym}}=== {{etyl|la|es}} {{m|la|legere}} < {{etyl|itc-pro|es}} {{m|itc-pro|*legō}} < {{etyl|ine-pro|es}} {{m|ine-pro|*leǵ-}} ==={{pron}}=== {{es-IPA}} *音声(コロンビア): [[ファイル:LL-Q1321 (spa)-AdrianAbdulBaha-leer.wav]] ==={{verb}}=== {{es-verb}} #{{おくりがな2|読|よ|む|よむ}}。 {{es-conj-er|le}} ===={{syn}}==== * {{l|es|ridear}} (ベリーズ) ===={{drv}}==== * {{l|es|entre gitanos no nos leemos las cartas}} * {{l|es|leer entre líneas}} * {{l|es|leer la cartilla}} ===={{rel}}==== {{top}} * {{l|es|atril}} * {{l|es|lección}} * {{l|es|lector}} * {{l|es|lectura}} * {{l|es|legible}} * {{l|es|leyenda}} * {{l|es|esleír}} {{bottom}} ===={{desc}}==== * {{desc|qu|liyiy}} ---- =={{L|da}}== ==={{pron}}=== * {{rhymes|eːˀər|s=2}} ==={{noun}}=== {{head|da|noun form|g=c}} #[[le]]の非限定複数形。 ---- =={{L|de}}== ==={{etym}}=== {{etyl|gmh|de}} {{m|gmh|lēr}}, {{m|gmh|lēre}}, {{m|gmh|lǣre}} < {{etyl|goh|de}} {{m|goh|lāri}} < {{etyl|gem-pro|de}} {{m|gem-pro|*lēziz}} ==={{pron}}=== * {{IPA|lang=de|leːɐ̯}} *音声: [[ファイル:De-leer.ogg]] * {{homophones|lang=de|lehr}} * {{rhymes|eːɐ̯|s=1}} ==={{adjective}}=== {{de-adj|leerer|leersten}} #{{ふりがな|空|から}}の。 {{de-decl-adj|leer|leerer|leerst}} ===={{ant}}==== * {{l|de|voll}} * {{l|de|gefüllt}} ===={{drv}}==== * {{l|de|Leere}} * {{l|de|leeren}} * {{l|de|leerlaufen}} * {{l|de|nichtleer}} * {{l|de|halb leer}} ==={{verb}}=== {{head|de|verb form}} #[[leeren]]の命令法単数形。 #{{context|colloquial|lang=de}}leerenの現在第一人称単数形。 ---- =={{L|nb}}== ==={{verb}}=== {{nb-verb-form}} #[[lee]]の現在形。 ---- =={{L|pdc}}== ==={{etym}}=== {{etyl|gmh|pdc}} {{m|gmh|lǣre}} < {{etyl|goh|pdc}} {{m|goh|lāri}} ==={{adjective}}=== {{head|pdc|adjective}} #{{ふりがな|空|から}}の。 ---- =={{L|rm}}== ==={{etym}}=== {{etyl|la|rm}} {{m|la|aēr}} ==={{noun}}=== {{head|rm|noun|g=m}} #{{context|Sutsilvan|lang=rm}}[[空気]]。 ===={{syn}}==== * (ロマンシュ・グリシュン、スルシルヴァン、ストゥシルヴァン、スルミラン) {{l|rm|aria}} * (プーター、ヴァラダール) {{l|rm|ajer}} ex597l2r02gxvx80nahpl4btd8j68t3 水晶 0 359782 2313223 2192353 2026-08-08T23:25:59Z Kuroco2k 84207 2313223 wikitext text/x-wiki =={{L|ja}}== {{wikipedia}} [[Category:{{ja}}]] {{kana-DEFAULTSORT|すいしょう}} ==={{noun}}=== [[Category:{{ja}}_{{noun}}]] {{jachars}}([[すいしょう]]) #ほぼ六角柱状で[[無色]][[透明]]の[[石英]]の[[結晶]]。[[成分]]は無水珪素。 ===={{syn}}==== *[[クリスタル]] ===={{trans}}==== {{trans-top}} *[[{{ar}}]]<!--* Arabic-->: {{t|ar|قَرِيس}}, {{t|ar|قَرِيت}} *[[{{bg}}]]<!--* Bulgarian-->: {{t+|bg|криста́л|m|sc=Cyrl}} *[[{{bo}}]]<!--* Tibetan-->: {{t|bo|ཆུ་ཤེལ}} *[[{{crh}}]]<!--* Crimean Tatar-->: {{t|crh|büllür}} *[[{{cs}}]]<!--* Czech-->: {{t+|cs|křišťál|m}} *[[{{cy}}]]<!--* Welsh-->: {{t+|cy|crisial|m}} *[[{{de}}]]<!--* German-->: {{t+|de|Kristall|m}} *[[{{el}}]]<!--* Greek-->: {{t+|el|κρύσταλλο|n|sc=Grek}} *[[{{en}}]]: {{t|en|crystal}}, {{t|en|rock crystal}} *[[{{eo}}]]<!--* Esperanto-->: {{t|eo|kristalo}} *[[{{es}}]]<!--* Spanish-->: {{t+|es|cristal|m}} *[[{{eu}}]]<!--* Basque-->: {{t+|eu|kristal}} *[[{{fa}}]]<!--* Persian-->: {{t+|fa|بلور|tr=bolur}} *[[{{fi}}]]<!--* Finnish-->: {{t+|fi|kristalli}} *[[{{fr}}]]<!--* French-->: {{t+|fr|cristal|m}} *[[{{ga}}]]<!--* Irish-->: {{t|ga|criostal|m}} *[[{{gl}}]]<!--* Galician-->: {{t+|gl|cristal|m}} *[[{{haw}}]]<!--* Hawaiian-->: {{t|haw|pōhaku aʻiaʻi}} *[[{{he}}]]<!--* Hebrew-->: {{t+|he|בְּדוֹלַח|m|tr=bdólaḥ}} *[[{{hi}}]]<!--* Hindi-->: {{t+|hi|बिल्लौर|m}}, {{t+|hi|अमल|m}}, {{t+|hi|क्रिस्टल|m}} *[[{{hu}}]]<!--* Hungarian-->: {{t+|hu|kristály}} *[[{{hy}}]]<!--* Armenian-->: {{t+|hy|բյուրեղ}} *[[{{it}}]]<!--* Italian-->: {{t+|it|cristallo|m}} *[[{{ka}}]]<!--* Georgian-->: {{t|ka|კრისტალი}} *[[{{km}}]]<!--* Khmer-->: {{t+|km|ផលិក}}, {{t+|km|ផ្លេក}} *[[{{ko}}]]<!--* Korean-->: {{t+|ko|수정}} *[[{{la}}]]<!--* Latin-->: {{t|la|cristallus|f}} *[[{{lad}}]]<!--* Ladino-->: {{t|lad|kristal}}, {{t|lad|cristal}} *[[{{lt}}]]<!--* Lithuanian-->: {{t|lt|kristalas|m}} *[[{{lv}}]]<!--* Latvian-->: {{t|lv|kristāls|m}} *[[{{mk}}]]<!--* Macedonian-->: {{t|mk|криста́л|m|sc=Cyrl}} *[[{{mi}}]]<!--* Maori-->: {{t|mi|tioata}} *[[{{mn}}]]<!--* Mongolian-->: (キリル文字){{t+|mn|болор|sc=Cyrl}} *[[{{nl}}]]<!--* Dutch-->: {{t+|nl|kristal|n}} *[[{{nv}}]]<!--* Navajo-->: {{t|nv|tséghádiʼnídínii}} *[[{{pl}}]]<!--* Polish-->: {{t+|pl|kryształ|m}} *[[{{pt}}]]<!--* Portuguese-->: {{t+|pt|cristal|m}} *[[{{ro}}]]<!--* Romanian-->: {{t+|ro|cristal|n}} *[[{{ru}}]]<!--* Russian-->: {{t+|ru|хруста́ль|m|sc=Cyrl}}, {{t+|ru|го́рный хруста́ль|m|sc=Cyrl}} *[[{{sa}}]]<!--* Sanskrit-->: {{t+|sa|अमल|n}} *[[{{sgs}}]]<!--* Samogitian-->: {{t|sgs|kristals|m}} *[[{{sh}}]]<!--* Serbo-Croatian-->: {{t|sh|крѝста̄л|sc=Cyrl}}/{{t+|sh|krìstāl|m}}, {{t|sh|ле̏дац|sc=Cyrl}}/{{t+|sh|lȅdac|m}} *[[{{sl}}]]<!--* Slovene-->: {{t+|sl|kristal|m}} *[[{{sq}}]]<!--* Albanian-->: {{t+|sq|kristal|m}} *[[{{sv}}]]<!--* Swedish-->: {{t+|sv|kristall|c}} *[[{{sw}}]]<!--* Swahili-->: {{t|sw|fuwele}} *[[{{te}}]]<!--* Telugu-->: {{t+|te|స్ఫటికం}} *[[{{th}}]]<!--* Thai-->: {{t+|th|ผลึก}} *[[{{tl}}]]<!--* Tagalog-->: {{t+|tl|kristal}} *[[{{tr}}]]<!--* Turkish-->: {{t+|tr|kristal}} *[[{{vi}}]]<!--* Vietnamese-->: {{t+|vi|pha lê}} {{trans-bottom}} =={{L|zh}}== {{wikipedia|lang=zh}} {{zh-cat|shui3jing1|noun}} {{yue-cat|seui2jing1|noun}} ==={{pron}}=== {{cmn-pron|shuǐjīng}} {{yue-pron|seoi2 zing1}} ==={{noun}}=== {{zhchars}} #透明な[[石英]]。 l4u6cqjhhjitcgc3p3j8ioswz627725 不平等 0 370619 2313226 1943175 2026-08-08T23:25:59Z Kuroco2k 84207 2313226 wikitext text/x-wiki =={{L|ja}}== {{kana-DEFAULTSORT|ふびょうどう}} {{ja-kanjitab|ふ|びょう|どう|yomi=o}} ==={{noun}}=== {{ja-noun|ふびょうどう}} # [[平等]]でないこと。また、その[[様子]]。 {{-}} ===={{trans}}==== {{trans-top}} *[[{{ar}}]]<!--* Arabic-->: {{t|ar|عَدَم مُسَاوَاة|m}} *[[{{ast}}]]<!--* Asturian-->: {{t|ast|desigualdá|f}} *[[{{az}}]]<!--* Azerbaijani-->: {{t|az|qeyri-bərabərlik}} *[[{{be}}]]<!--* Belarusian-->: {{t|be|няро́ўнасць|f|sc=Cyrl}} *[[{{bg}}]]<!--* Bulgarian-->: {{t+|bg|нера́венство|n|sc=Cyrl}} *[[{{ca}}]]<!--* Catalan-->: {{t+|ca|desigualtat|f}} *[[{{cs}}]]<!--* Czech-->: {{t|cs|nerovnost|f}} *[[{{cy}}]]<!--* Welsh-->: {{t|cy|anghydraddoldeb|m}} *[[{{da}}]]<!--* Danish-->: {{t|da|ulighed|c}} *[[{{de}}]]<!--* German-->: {{t+|de|Ungleichheit|f}} *[[{{en}}]]: {{t+|en|inequality}} *[[{{el}}]]<!--* Greek-->: {{t+|el|ανισότητα|f|sc=Grek}} **[[{{grc}}]]: {{t|grc|ἀνισότης|f|sc=Grek}} *[[{{eo}}]]<!--* Esperanto-->: {{t|eo|malegaleco}} *[[{{es}}]]<!--* Spanish-->: {{t+|es|desigualdad|f}} *[[{{fa}}]]<!--* Persian-->: {{t+|fa|نابرابری|tr=nâbarâbari}} *[[{{fi}}]]<!--* Finnish-->: {{t+|fi|epätasa-arvo}}, {{t+|fi|eriarvoisuus}} *[[{{fr}}]]<!--* French-->: {{t+|fr|inégalité|f}} *[[{{gl}}]]<!--* Galician-->: {{t+|gl|desigualdade|f}} *[[{{ko}}]]<!--* Korean-->: {{t+|ko|불평등}} *[[{{la}}]]<!--* Latin-->: {{t|la|iniquitas|f}} *[[{{mk}}]]<!--* Macedonian-->: {{t|mk|нееднаквост|f|sc=Cyrl}} *[[{{ms}}]]<!--* Malay-->: {{t|ms|ketidaksamaan}} *[[{{nl}}]]<!--* Dutch-->: {{t+|nl|ongelijkheid|f}} *[[{{oc}}]]<!--* Occitan-->: {{t+|oc|inegalitat|f}} *[[{{pl}}]]<!--* Polish-->: {{t+|pl|nierówność|f}} *[[{{pt}}]]<!--* Portuguese-->: {{t+|pt|desigualdade}} *[[{{ro}}]]<!--* Romanian-->: {{t+|ro|inegalitate}} *[[{{ru}}]]<!--* Russian-->: {{t+|ru|нера́венство|n|sc=Cyrl}} *[[{{sh}}]]<!--* Serbo-Croatian-->:{{t|sh|неједна́ко̄ст|sc=Cyrl}}/{{t+|sh|nejednákōst|f}} *[[{{sk}}]]<!--* Slovak-->: {{t|sk|nerovnosť|f}} *[[{{sl}}]]<!--* Slovene-->: {{t|sl|neenakost|f}} *[[{{sv}}]]<!--* Swedish-->: {{t+|sv|ojämlikhet|c}} *[[{{uk}}]]<!--* Ukrainian-->: {{t|uk|нері́вність|f|sc=Cyrl}} *[[{{ur}}]]<!--* Urdu-->: {{t|ur|غیر یکسانیت}}, {{t|ur|نابرابری}} {{trans-bottom}} ==={{adjectivenoun}}=== {{日本語ダ活用}} ===={{trans}}==== {{trans-top}} *[[{{bg}}]]<!--* Bulgarian-->: {{t+|bg|неравен|sc=Cyrl}}, {{t+|bg|нееднакъв|sc=Cyrl}} *[[{{ca}}]]<!--* Catalan-->: {{t+|ca|desigual}} *[[{{cs}}]]<!--* Czech-->: {{t|cs|nerovný|m}} *[[{{de}}]]<!--* German-->: {{t+|de|ungleich}} *[[{{en}}]]: {{t|en|unequal}}, {{t|en|inequal}} *[[{{eo}}]]<!--* Esperanto-->: {{t|eo|malegala}} *[[{{es}}]]<!--* Spanish-->: {{t+|es|desigual}} *[[{{fi}}]]<!--* Finnish-->: {{t+|fi|eri}}, {{t+|fi|erilainen}} *[[{{fr}}]]: {{t|fr|inégal}} *[[{{grc}}]]<!--* Ancient Greek-->: {{t|grc|ἄνισος|sc=Grek}} *[[{{it}}]]<!--* Italian-->: {{t+|it|ineguale}}, {{t+|it|diseguale}} *[[{{la}}]]<!--* Latin-->: {{t|la|iniquus}} *[[{{nl}}]]<!--* Dutch-->: {{t+|nl|ongelijk}} *[[{{ro}}]]<!--* Romanian-->: {{t+|ro|inegal}} *[[{{tl}}]]<!--* Tagalog-->: {{t|tl|ditumbas}} {{trans-bottom}} ---- =={{zh}}== [[category:{{zh}}|bu4ping2deng3]] ==={{adj}}=== [[category:{{zh}} {{adj}}|bu4ping2deng3]] {{zhchars}} ({{unicode|bùpíngděng}}) #平等ではない、対等ではない。 n5ujrspg59k1r8ys0uawc2xscha7bpd 千枚 0 377423 2313314 1944949 2026-08-09T01:42:07Z Maraschino Cherry 93381 /* 名詞 */ 食物も 2313314 wikitext text/x-wiki =={{ja}}== {{kana-DEFAULTSORT|せんまい}} ==={{noun}}=== {{ja-noun|[[せんまい]]}} #[[枚数]]が1000あること。 #厚さが[[うすい|薄い]]物や[[平面]]的な物が[[数]][[おおい|多い]]こと。 #*千枚田、[[千枚通し]] #牛の消化器の中、3番目の胃。 b865fglq3o1phh99630g11gmhzxlca6 済済 0 386319 2313086 1948476 2026-08-08T12:23:11Z うーむ 129171 /* 日本語 */ 2313086 wikitext text/x-wiki {{also|濟濟|济济}} =={{ja}}== {{kana-DEFAULTSORT|せいせい}} ==={{noun}}=== {{ja-noun|[[せいせい]]|[[さいさい]]}} #[[かず|数]]が[[おおい|多く]][[さかん|盛ん]]であること。また、そのようなさま。 ===={{idiom}}==== *[[多士済済]] ==={{adjectivenoun}}=== [[Category:{{ja}} {{adjectivenoun}}]] {{日本語タルト活用}} ov446nawyxuklrdhb2b3fca0bjgoi7v 七道 0 388212 2313324 1949134 2026-08-09T02:29:05Z うーむ 129171 /* 日本語 */ 2313324 wikitext text/x-wiki =={{ja}}== {{kana-DEFAULTSORT|しちどう}} ==={{noun}}=== {{ja-noun|[[しちどう]]}} #東海道、東山道、北陸道、山陰道、山陽道、南海道、西海道の[[総称]]。 ===={{rel}}==== *[[五畿七道]] *[[八道]] jcpyjq7i5w8h43fjt4izij05gk9uub8 かんちゅう 0 391572 2313076 1950405 2026-08-08T12:15:00Z うーむ 129171 /* */ 2313076 wikitext text/x-wiki {{kana-DEFAULTSORT}} {{also|がんちゅう}} =={{ja}}== ==={{homonym}}=== {{head|ja|同音異義}} *【[[寒中]]】:冬の寒い期間。 *【[[閑中]]】:ひまな間。 *【[[灌注]]】:注ぎ、かけること。 8kpyi0gcr8vtvg5nw8vds9vhwp3ddwg しょしょ 0 397197 2313102 1952247 2026-08-08T13:11:00Z うーむ 129171 /* 日本語 */ 2313102 wikitext text/x-wiki {{kana-DEFAULTSORT}} =={{ja}}== ==={{homonym}}=== {{head|ja|同音異義}} *【[[諸処]]・[[諸所]]・[[所所]]】:あちこち。 *【[[処暑]]】:二十四節気の一つ。 dcbw74p1fsfbsumi07frvzpyjmsuww9 所所 0 402010 2313103 1953823 2026-08-08T13:12:34Z うーむ 129171 /* 日本語 */ 2313103 wikitext text/x-wiki =={{ja}}== {{kana-DEFAULTSORT|しょしょ}} ==={{noun}}・{{adv}}=== [[カテゴリ:日本語 副詞]] {{ja-noun|[[しょしょ]]}} #[[あちら]][[こちら]]。[[あちこち]]。 ==={{wagokanji}}=== {{ja-wagokanji|ところどころ}} #{{wagokanji of|ところどころ}} 354qy3z9qdsyr0atmr5l5z82ha0nrkz 発根 0 410424 2313366 1956825 2026-08-09T05:46:33Z ちょこれ゚いとみんと 129959 2313366 wikitext text/x-wiki {{kana-DEFAULTSORT|はっこん}} =={{L|ja}}== ==={{noun}}=== {{ja-noun-suru|[[はっこん]]}} #[[植物]]が[[ね|根]]を[[だす|出す]]こと。根が[[でる|出る]]こと。 ==={{verb}}=== {{日本語サ変活用}} kxua0yay679wr0njcmn6an73zt4kecg 2313367 2313366 2026-08-09T05:48:52Z ちょこれ゚いとみんと 129959 2313367 wikitext text/x-wiki {{kana-DEFAULTSORT|はっこん}} =={{L|ja}}== ==={{noun}}=== {{ja-noun-suru|[[はっこん]]}} #{{タグ|ja|植物学}}[[植物]]が[[ね|根]]を[[だす|出す]]こと。根が[[でる|出る]]こと。 ==={{verb}}=== {{日本語サ変活用}} nmp58yylqqgrrjb850as5qkluauljjf ろくじ 0 412334 2313289 1957380 2026-08-09T00:29:10Z うーむ 129171 /* 日本語 */ 2313289 wikitext text/x-wiki {{kana-DEFAULTSORT}} =={{ja}}== ==={{homonym}}=== {{head|ja|同音異義}} *【[[六字]]】六つの文字。 *【[[六時]]】零時から六時間後の時刻。 *【[[陸地]]】陸。 *【[[禄次]]】禄位。 1lvh0i8kg218kuu5x2b4wkqo3orfdoa モジュール:parse utilities 828 421299 2313438 2193006 2026-08-09T10:25:14Z Kuroco2k 84207 2313438 Scribunto text/plain local export = {} local m_string_utilities = require("Module:string utilities") local string_utilities_module = "Module:string utilities" local rfind = mw.ustring.find local rsplit = mw.text.split local u = mw.ustring.char local rsubn = mw.ustring.gsub -- version of rsubn() that discards all but the first return value local function rsub(term, foo, bar) local retval = rsubn(term, foo, bar) return retval end local function split(...) split = require(string_utilities_module).split return split(...) end local function umatch(...) umatch = require(string_utilities_module).match return umatch(...) end --[=[split_alternating_runs_and_frob_raw_text In order to understand the following parsing code, you need to understand how inflected text specs work. They are intended to work with inflected text where individual words to be inflected may be followed by inflection specs in angle brackets. The format of the text inside of the angle brackets is up to the individual language and part-of-speech specific implementation. A real-world example is as follows: "[[медичний|меди́чна]]<+> [[сестра́]]<*,*#.pr>". This is the inflection of a multiword expression "меди́чна сестра́", which means "nurse" in Ukrainian (literally "medical sister"), consisting of two words: the adjective меди́чна ("medical" in the feminine singular) and the noun сестра́ ("sister"). The specs in angle brackets follow each word to be inflected; for example, <+> means that the preceding word should be declined as an adjective. The code below works in terms of balanced expressions, which are bounded by delimiters such as < > or [ ]. The intention is to allow separators such as spaces to be embedded inside of delimiters; such embedded separators will not be parsed as separators. For example, Ukrainian noun specs allow footnotes in brackets to be inserted inside of angle brackets; something like "меди́чна<+> сестра́<pr.[this is a footnote]>" is legal, as is "[[медичний|меди́чна]]<+> [[сестра́]]<pr.[this is an <i>italicized footnote</i>]>", and the parsing code should not be confused by the embedded brackets, spaces or angle brackets. The parsing is done by two functions, which work in close concert: parse_balanced_segment_run() and split_alternating_runs(). To illustrate, consider the following: parse_balanced_segment_run("foo<M.proper noun> bar<F>", "<", ">") = {"foo", "<M.proper noun>", " bar", "<F>", ""} then split_alternating_runs({"foo", "<M.proper noun>", " bar", "<F>", ""}, " ") = {{"foo", "<M.proper noun>", ""}, {"bar", "<F>", ""}} Here, we start out with a typical inflected text spec "foo<M.proper noun> bar<F>", call parse_balanced_segment_run() on it, and call split_alternating_runs() on the result. The output of parse_balanced_segment_run() is a list where even-numbered segments are bounded by the bracket-like characters passed into the function, and odd-numbered segments consist of the surrounding text. split_alternating_runs() is called on this, and splits *only* the odd-numbered segments, grouping all segments between the specified character. Note that the inner lists output by split_alternating_runs() are themselves in the same format as the output of parse_balanced_segment_run(), with bracket-bounded text in the even-numbered segments. Hence, such lists can be passed again to split_alternating_runs(). ]=] -- Parse a string containing matched instances of parens, brackets or the like. Return a list of strings, alternating -- between textual runs not containing the open/close characters and runs beginning and ending with the open/close -- characters. For example, -- -- parse_balanced_segment_run("foo(x(1)), bar(2)", "(", ")") = {"foo", "(x(1))", ", bar", "(2)", ""}. function export.parse_balanced_segment_run(segment_run, open, close) return m_string_utilities.capturing_split(segment_run, "(%b" .. open .. close .. ")") end -- The following is an equivalent, older implementation that does not use %b (written before I was aware of %b). --[=[ function export.parse_balanced_segment_run(segment_run, open, close) local break_on_open_close = m_string_utilities.capturing_split(segment_run, "([%" .. open .. "%" .. close .. "])") local text_and_specs = {} local level = 0 local seg_group = {} for i, seg in ipairs(break_on_open_close) do if i % 2 == 0 then if seg == open then table.insert(seg_group, seg) level = level + 1 else assert(seg == close) table.insert(seg_group, seg) level = level - 1 if level < 0 then error("Unmatched " .. close .. " sign: '" .. segment_run .. "'") elseif level == 0 then table.insert(text_and_specs, table.concat(seg_group)) seg_group = {} end end elseif level > 0 then table.insert(seg_group, seg) else table.insert(text_and_specs, seg) end end if level > 0 then error("Unmatched " .. open .. " sign: '" .. segment_run .. "'") end return text_and_specs end ]=] --[=[ Like parse_balanced_segment_run() but accepts multiple sets of delimiters. For example, parse_multi_delimiter_balanced_segment_run("foo[bar(baz[bat])], quux<glorp>", {{"[", "]"}, {"(", ")"}, {"<", ">"}}) = {"foo", "[bar(baz[bat])]", ", quux", "<glorp>", ""}. Each element in the list of delimiter pairs is a string specifying an equivalence class of possible delimiter characters. You can use this, for example, to allow either "[" or "&#91;" to be treated equivalently, with either one closed by either "]" or "&#93;". To do this, first replace "&#91;" and "&#93;" with single Unicode characters such as U+FFF0 and U+FFF1, and then specify a two-character string containing "[" and U+FFF0 as the opening delimiter, and a two-character string containing "]" and U+FFF1 as the corresponding closing delimiter. If `no_error_on_unmatched` is given and an error is found during parsing, a string is returned containing the error message instead of throwing an error. ]=] function export.parse_multi_delimiter_balanced_segment_run(segment_run, delimiter_pairs, no_error_on_unmatched) local escaped_delimiter_pairs = {} local open_to_close_map = {} local open_close_items = {} local open_items = {} for _, open_close in ipairs(delimiter_pairs) do local open, close = unpack(open_close) open = rsub(open, "([%[%]%%%%-])", "%%%1") close = rsub(close, "([%[%]%%%%-])", "%%%1") table.insert(open_close_items, open) table.insert(open_close_items, close) table.insert(open_items, open) open = "[" .. open .. "]" close = "[" .. close .. "]" open_to_close_map[open] = close table.insert(escaped_delimiter_pairs, {open, close}) end local open_close_pattern = "([" .. table.concat(open_close_items) .. "])" local open_pattern = "([" .. table.concat(open_items) .. "])" local break_on_open_close = m_string_utilities.capturing_split(segment_run, open_close_pattern) local text_and_specs = {} local level = 0 local seg_group = {} local open_at_level_zero for i, seg in ipairs(break_on_open_close) do if i % 2 == 0 then table.insert(seg_group, seg) if level == 0 then if not rfind(seg, open_pattern) then local errmsg = "Unmatched close sign " .. seg .. ": '" .. segment_run .. "'" if no_error_on_unmatched then return errmsg else error(errmsg) end end assert(open_at_level_zero == nil) for _, open_close in ipairs(escaped_delimiter_pairs) do local open, close = unpack(open_close) if rfind(seg, open) then open_at_level_zero = open break end end if open_at_level_zero == nil then error(("Internal error: Segment %s didn't match any open regex"):format(seg)) end level = level + 1 elseif rfind(seg, open_at_level_zero) then level = level + 1 elseif rfind(seg, open_to_close_map[open_at_level_zero]) then level = level - 1 assert(level >= 0) if level == 0 then table.insert(text_and_specs, table.concat(seg_group)) seg_group = {} open_at_level_zero = nil end end elseif level > 0 then table.insert(seg_group, seg) else table.insert(text_and_specs, seg) end end if level > 0 then local errmsg = "Unmatched open sign " .. open_at_level_zero .. ": '" .. segment_run .. "'" if no_error_on_unmatched then return errmsg else error(errmsg) end end return text_and_specs end --[=[ Split a list of alternating textual runs of the format returned by `parse_balanced_segment_run` on `splitchar`. This only splits the odd-numbered textual runs (the portions between the balanced open/close characters). The return value is a list of lists, where each list contains an odd number of elements, where the even-numbered elements of the sublists are the original balanced textual run portions. For example, if we do parse_balanced_segment_run("foo<M.proper noun> bar<F>", "<", ">") = {"foo", "<M.proper noun>", " bar", "<F>", ""} then split_alternating_runs({"foo", "<M.proper noun>", " bar", "<F>", ""}, " ") = {{"foo", "<M.proper noun>", ""}, {"bar", "<F>", ""}} Note that we did not touch the text "<M.proper noun>" even though it contains a space in it, because it is an even-numbered element of the input list. This is intentional and allows for embedded separators inside of brackets/parens/etc. Note also that the inner lists in the return value are of the same form as the input list (i.e. they consist of alternating textual runs where the even-numbered segments are balanced runs), and can in turn be passed to split_alternating_runs(). If `preserve_splitchar` is passed in, the split character is included in the output, as follows: split_alternating_runs({"foo", "<M.proper noun>", " bar", "<F>", ""}, " ", true) = {{"foo", "<M.proper noun>", ""}, {" "}, {"bar", "<F>", ""}} Consider what happens if the original string has multiple spaces between brackets, and multiple sets of brackets without spaces between them. parse_balanced_segment_run("foo[dated][low colloquial] baz-bat quux xyzzy[archaic]", "[", "]") = {"foo", "[dated]", "", "[low colloquial]", " baz-bat quux xyzzy", "[archaic]", ""} then split_alternating_runs({"foo", "[dated]", "", "[low colloquial]", " baz-bat quux xyzzy", "[archaic]", ""}, "[ %-]") = {{"foo", "[dated]", "", "[low colloquial]", ""}, {"baz"}, {"bat"}, {"quux"}, {"xyzzy", "[archaic]", ""}} If `preserve_splitchar` is passed in, the split character is included in the output, as follows: split_alternating_runs({"foo", "[dated]", "", "[low colloquial]", " baz bat quux xyzzy", "[archaic]", ""}, "[ %-]", true) = {{"foo", "[dated]", "", "[low colloquial]", ""}, {" "}, {"baz"}, {"-"}, {"bat"}, {" "}, {"quux"}, {" "}, {"xyzzy", "[archaic]", ""}} As can be seen, the even-numbered elements in the outer list are one-element lists consisting of the separator text. ]=] function export.split_alternating_runs(segment_runs, splitchar, preserve_splitchar) local grouped_runs = {} local run = {} for i, seg in ipairs(segment_runs) do if i % 2 == 0 then table.insert(run, seg) else local parts = preserve_splitchar and m_string_utilities.capturing_split(seg, "(" .. splitchar .. ")") or rsplit(seg, splitchar) table.insert(run, parts[1]) for j=2,#parts do table.insert(grouped_runs, run) run = {parts[j]} end end end if #run > 0 then table.insert(grouped_runs, run) end return grouped_runs end function export.strip_spaces(text) return rsub(text, "^%s*(.-)%s*$", "%1") end -- Apply an arbitrary function `frob` to the "raw-text" segments in a split run set (the output of -- split_alternating_runs()). We leave alone stuff within balanced delimiters (footnotes, inflection specs and the -- like), as well as splitchars themselves if present. `preserve_splitchar` indicates whether splitchars are present -- in the split run set. `frob` is a function of one argument (the string to frob) and should return one argument (the -- frobbed string). We operate by only frobbing odd-numbered segments, and only in odd-numbered runs if -- preserve_splitchar is given. function export.frob_raw_text_alternating_runs(split_run_set, frob, preserve_splitchar) for i, run in ipairs(split_run_set) do if not preserve_splitchar or i % 2 == 1 then for j, segment in ipairs(run) do if j % 2 == 1 then run[j] = frob(segment) end end end end end -- Like split_alternating_runs() but applies an arbitrary function `frob` to "raw-text" segments in the result (i.e. -- not stuff within balanced delimiters such as footnotes and inflection specs, and not splitchars if present). `frob` -- is a function of one argument (the string to frob) and should return one argument (the frobbed string). function export.split_alternating_runs_and_frob_raw_text(run, splitchar, frob, preserve_splitchar) local split_runs = export.split_alternating_runs(run, splitchar, preserve_splitchar) export.frob_raw_text_alternating_runs(split_runs, frob, preserve_splitchar) return split_runs end --[==[ FIXME: Older entry point. Call `split_alternating_runs_and_frob_raw_text()` in [[Module:parse utilities]] directly. Like `split_alternating_runs()` but strips spaces from both ends of the odd-numbered elements (only in odd-numbered runs if `preserve_splitchar` is given). Effectively we leave alone the footnotes and splitchars themselves, but otherwise strip extraneous spaces. Spaces in the middle of an element are also left alone. ]==] function export.split_alternating_runs_and_strip_spaces(segment_runs, splitchar, preserve_splitchar) return export.split_alternating_runs_and_frob_raw_text(segment_runs, splitchar, export.strip_spaces, preserve_splitchar) end -- Split the non-modifier parts of an alternating run (after parse_balanced_segment_run() is called) on a Lua pattern, -- but not on certain sequences involving characters in that pattern (e.g. comma+whitespace). `splitchar` is the pattern -- to split on; `preserve_splitchar` indicates whether to preserve the delimiter and is the same as in -- split_alternating_runs(). `escape_fun` is called beforehand on each run of raw text and should return two values: -- the escaped run and whether unescaping is needed. If any call to `escape_fun` indicates that unescaping is needed, -- `unescape_fun` will be called on each run of raw text after splitting on `splitchar`. The return value of this -- function is as in split_alternating_runs(). function export.split_alternating_runs_escaping(run, splitchar, preserve_splitchar, escape_fun, unescape_fun) -- First replace comma with a temporary character in comma+whitespace sequences. local need_unescape = false for i, seg in ipairs(run) do if i % 2 == 1 then local this_need_unescape run[i], this_need_unescape = escape_fun(run[i]) need_unescape = need_unescape or this_need_unescape end end if need_unescape then return export.split_alternating_runs_and_frob_raw_text(run, splitchar, unescape_fun, preserve_splitchar) else return export.split_alternating_runs(run, splitchar, preserve_splitchar) end end -- Replace comma with a temporary char in comma + whitespace. function export.escape_comma_whitespace(run, tempcomma) tempcomma = tempcomma or u(0xFFF0) if run:find(",%s") then run = run:gsub(",(%s)", tempcomma .. "%1") -- assign to temp to discard second return value return run, true else return run, false end end -- Undo the replacement of comma with a temporary char. function export.unescape_comma_whitespace(run, tempcomma) tempcomma = tempcomma or u(0xFFF0) run = run:gsub(tempcomma, ",") -- assign to temp to discard second return value return run end -- Split the non-modifier parts of an alternating run (after parse_balanced_segment_run() is called) on comma, but not -- on comma+whitespace. See `split_on_comma()` above for more information and the meaning of `tempcomma`. function export.split_alternating_runs_on_comma(run, tempcomma) tempcomma = tempcomma or u(0xFFF0) -- Replace comma with a temporary char in comma + whitespace. local function escape_comma_whitespace(seg) return export.escape_comma_whitespace(seg, tempcomma) end -- Undo replacement of comma with a temporary char in comma + whitespace. local function unescape_comma_whitespace(seg) return export.unescape_comma_whitespace(seg, tempcomma) end return export.split_alternating_runs_escaping(run, ",", false, escape_comma_whitespace, unescape_comma_whitespace) end -- Split text on a Lua pattern, but not on certain sequences involving characters in that pattern (e.g. -- comma+whitespace). `splitchar` is the pattern to split on; `preserve_splitchar` indicates whether to preserve the -- delimiter between split segments. `escape_fun` is called beforehand on the text and should return two values: the -- escaped run and whether unescaping is needed. If the call to `escape_fun` indicates that unescaping is needed, -- `unescape_fun` will be called on each run of text after splitting on `splitchar`. The return value of this a list -- of runs, interspersed with delimiters if `preserve_splitchar` is specified. function export.split_escaping(text, splitchar, preserve_splitchar, escape_fun, unescape_fun) if not umatch(text, splitchar) then return {text} end -- If there are square or angle brackets, we don't want to split on delimiters inside of them. To effect this, we -- use parse_multi_delimiter_balanced_segment_run() to parse balanced brackets, then do delimiter splitting on the -- non-bracketed portions of text using split_alternating_runs_escaping(), and concatenate back to a list of -- strings. When calling parse_multi_delimiter_balanced_segment_run(), we make sure not to throw an error on -- unbalanced brackets; in that case, we fall through to the code below that handles the case without brackets. if text:find("[%[<]") then local runs = export.parse_multi_delimiter_balanced_segment_run(text, {{"[", "]"}, {"<", ">"}}, "no error on unmatched") if type(runs) ~= "string" then local split_runs = export.split_alternating_runs_escaping(runs, splitchar, preserve_splitchar, escape_fun, unescape_fun) for i = 1, #split_runs do split_runs[i] = concat(split_runs[i]) end return split_runs end end -- First escape sequences we don't want to count for splitting. local need_unescape if escape_fun then text, need_unescape = escape_fun(text) end local parts = split(text, preserve_splitchar and "(" .. splitchar .. ")" or splitchar) if need_unescape then for i = 1, #parts, (preserve_splitchar and 2 or 1) do parts[i] = unescape_fun(parts[i]) end end return parts end -- Split text on comma, but not on comma+whitespace. This is similar to `mw.text.split(text, ",")` but will not split -- on commas directly followed by whitespace, to handle embedded commas in terms (which are almost always followed by -- a space). `tempcomma` is the Unicode character to temporarily use when doing the splitting; normally U+FFF0, but -- you can specify a different character if you use U+FFF0 for some internal purpose. function export.split_on_comma(text, tempcomma) tempcomma = tempcomma or u(0xFFF0) -- Replace comma with a temporary char in comma + whitespace. local function escape_comma_whitespace(run) return export.escape_comma_whitespace(run, tempcomma) end -- Undo replacement of comma with a temporary char in comma + whitespace. local function unescape_comma_whitespace(run) return export.unescape_comma_whitespace(run, tempcomma) end return export.split_escaping(text, ",", false, escape_comma_whitespace, unescape_comma_whitespace) end -- Ensure that Wikicode (bracketed links, HTML, bold/italics, etc.) displays literally in error messages by inserting -- a Unicode word-joiner symbol after all characters that may trigger Wikicode interpr. Replacing with equivalent -- HTML escapes doesn't work because they are displayed literally. I could not get this to work using -- <nowiki>...</nowiki> (those tags display literally) and using using {{#tag:nowiki|...}} (same thing). -- FIXME: This is a massive hack; there must be a better way. function export.escape_wikicode(term) term = term:gsub("([%[<'])", "%1" .. u(0x2060)) return term end function export.make_parse_err(arg_gloss) return function(msg, stack_frames_to_ignore) error(export.escape_wikicode(("%s: %s"):format(msg, arg_gloss)), stack_frames_to_ignore) end end -- Parse a term that may have a language code preceding it (e.g. 'la:minūtia' or 'grc:[[σκῶρ|σκατός]]'). Return -- two arguments, the term minus the language code and the language object corresponding to the language code. -- Etymology-only languages are allowed. This function also correctly handles Wikipedia prefixes (e.g. 'w:Abatemarco' -- or 'w:it:Colle Val d'Elsa') and converts them into two-part links, with the display form not including the Wikipedia -- prefix. `parse_err` should be a function of one or two arguments to display an error (the second argument is the -- number of stack frames to ignore when calling error(); if you declare your error function with only one argument, -- things will still work fine). function export.parse_term_with_lang(term, parse_err_or_paramname) parse_err = type(parse_err_or_paramname) == "function" and parse_err_or_paramname or parse_err_or_paramname and export.make_parse_err(("%s=%s"):format(parse_err_or_paramname, term)) or export.make_parse_err(term) -- Parse off an initial language code (e.g. 'la:minūtia' or 'grc:[[σκῶρ|σκατός]]'). First check for Wikipedia -- prefixes ('w:Abatemarco' or 'w:it:Colle Val d'Elsa' or 'lw:zh:邹衡'). Wikipedia language codes follow a similar -- format to Wiktionary language codes (see below). local termlang, foreign_wikipedia, actual_term = term:match("^(l?w):([a-z][a-z][a-z-]*):([^ ].*)$") if not termlang then termlang, actual_term = term:match("^(w):([^ ].*)$") end if termlang then local wikipedia_prefix = foreign_wikipedia and "w:" .. foreign_wikipedia or "w" if actual_term:find("[%[%]]") then parse_err("Cannot have brackets following a Wikipedia (w:...) link; place the Wikipedia link inside the brackets") end term = ("[[%s:%s|%s]]"):format(wikipedia_prefix, actual_term, actual_term) if termlang == "lw" then return term, require("Module:languages").getByCode(foreign_wikipedia, parse_err, "allow etym") else return term, nil end end -- 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.) termlang, actual_term = term:match("^([a-z][a-z][a-z-]*):([^ ].*)$") if not termlang then -- Special hack for Latin variants, which can have nonstandard etym codes, e.g. VL., LL. termlang, actual_term = term:match("^([A-Z]L%.):([^ ].*)$") end if termlang then termlang = require("Module:languages").getByCode(termlang, parse_err, "allow etym") term = actual_term end return term, termlang end --[=[ Parse a term that may have inline modifiers attached (e.g. 'rifiuti<q:plural-only>' or 'rinfusa<t:bulk cargo><lit:resupplying><qq:more common in the plural {{m|it|rinfuse}}>'). * `arg` is the term to parse. * `props` is an object holding further properties controlling how to parse the term: * `paramname` is the name of the parameter where `arg` comes from, or nil if this isn't available (it is used only in error messages). * `param_mods` is a table describing the allowed inline modifiers (see below). * `generate_obj` is a function of one or two arguments that should parse the argument minus the inline modifiers and return a corresponding parsed object (into which the inline modifiers will be rewritten). If declared with one argument, that will be the raw value to parse; if declared with two arguments, the second argument will be the `parse_err` function (see below). * `parse_err` is an optional function of one argument (an error message) and should display the error message, along with any desired contextual text (e.g. the argument name and value that triggered the error). If omitted, a default function will be generated which displays the error along with the original value of `arg` (passed through escape_wikicode() above to ensure that Wikicode (such as links) is displayed literally). * `splitchar` is a Lua pattern. If specified, `arg` can consist of multiple delimiter-separated terms, each of which may be followed by inline modifiers, and the return value will be a list of parsed objects instead of a single object. Note that splitting on delimiters will not happen in certain protected sequences (by default comma+whitespace; see below). The algorithm to split on delimiters is sensitive to inline modifier syntax and will not be confused by delimiters inside of inline modifiers, which do not trigger splitting (whether or not contained within protected sequences). * `preserve_splitchar`, if specified, causes the actual delimiter matched by `splitchar` to be returned in the parsed object describing the element that comes after the delimiter. The delimiter is stored in a key whose name is controlled by `separator_key`, which defaults to "separator". * `separator_key` controls the key into which the actual delimiter is written when `preserve_splitchar` is used. See above. * `escape_fun` and `unescape_fun` are as in split_escaping() and split_alternating_runs_escaping() above and control the protected sequences that won't be split. By default, `escape_comma_whitespace` and `unescape_comma_whitespace` are used, so that comma+whitespace sequences won't be split. `param_mods` is a table describing allowed modifiers. The keys of the table are modifier prefixes and the values are tables describing how to parse and store the associated modifier values. Here is a typical example: local param_mods = { t = { item_dest = "gloss", }, gloss = {}, pos = {}, alt = {}, lit = {}, id = {}, g = { item_dest = "genders", convert = function(arg) return rsplit(arg, ",") end, }, } In the table values: * `item_dest` specifies the destination key to store the object into (if not the same as the modifier key itself). * `convert` is a function of one or two arguments (the modifier value and optionally the `parse_err` function as passed in or generated), and should parse and convert the value into the appropriate object. If omitted, the string value is stored unchanged. * `store` describes how to store the converted modifier value into the parsed object. If omitted, the converted value is simply written into the parsed object under the appropriate key (but an error is generated if the key already has a value). If `store` == "insert", the converted value is appended to the key's value using table.insert(); if the key has no value, it is first converted to an empty list. `store` == "insertIfNot" is similar but appends the value using insertIfNot() in [[Module:table]]. If `store == "insert-flattened", the converted value is assumed to be a list and the objects are appended one-by-one into the key's existing value using table.insert(). `store` == "insertIfNot-flattened" is similar but appends using insertIfNot() in [[Module:table]]. WARNING: When using "insert-flattened" and "insertIfNot-flattened", if there is no existing value for the key, the converted value is just stored directly. This means that future appends will side-effect that value, so make sure that the return value of the conversion function for this key generates a fresh list each time. ]=] function export.parse_inline_modifiers(arg, props) local segments = export.parse_balanced_segment_run(arg, "<", ">") if not props.splitchar then return export.parse_inline_modifiers_from_segments(segments, arg, props) else local retval = {} local separated_groups = export.split_alternating_runs_escaping(segments, props.splitchar, props.preserve_splitchar, props.escape_fun or export.escape_comma_whitespace, props.unescape_fun or export.unescape_comma_whitespace) for j = 1, #separated_groups, (props.preserve_splitchar and 2 or 1) do local parsed = export.parse_inline_modifiers_from_segments(separated_groups[j], arg, props) if props.preserve_splitchar and j > 1 then parsed[props.separator_key or "separator"] = separated_groups[j - 1][1] end table.insert(retval, parsed) end return retval end end function export.parse_inline_modifiers_from_segments(group, arg, props) local function get_valid_prefixes() local valid_prefixes = {} for param_mod, _ in pairs(props.param_mods) do table.insert(valid_prefixes, param_mod) end table.sort(valid_prefixes) return valid_prefixes end local function get_arg_gloss() if props.paramname then return ("%s=%s"):format(props.paramname, arg) else return arg end end local parse_err = props.parse_err or export.make_parse_err(get_arg_gloss()) local dest_obj = props.generate_obj(group[1], parse_err) for k = 2, #group - 1, 2 do if group[k + 1] ~= "" then parse_err("Extraneous text '" .. group[k + 1] .. "' after modifier") end local modtext = group[k]:match("^<(.*)>$") if not modtext then parse_err("Internal error: Modifier '" .. group[k] .. "' isn't surrounded by angle brackets") end local prefix, val = modtext:match("^([a-zA-Z0-9+_-]+):(.*)$") if not prefix then local valid_prefixes = get_valid_prefixes() for i, valid_prefix in ipairs(valid_prefixes) do valid_prefixes[i] = "'" .. valid_prefix .. ":'" end parse_err("Modifier " .. group[k] .. " lacks a prefix, should begin with one of " .. require("Module:table").serialCommaJoin(valid_prefixes, {dontTag = true})) end local prefix_parse_err = export.make_parse_err(("modifier prefix '%s' in %s in %s"):format(prefix, group[k], get_arg_gloss())) if props.param_mods[prefix] then local key = props.param_mods[prefix].item_dest or prefix local convert = props.param_mods[prefix].convert local converted if convert then converted = convert(val, prefix_parse_err) else converted = val end local store = props.param_mods[prefix].store if not store then if dest_obj[key] then prefix_parse_err("Prefix occurs twice") end dest_obj[key] = converted elseif store == "insert" then if not dest_obj[key] then dest_obj[key] = {converted} else table.insert(dest_obj[key], converted) end elseif store == "insertIfNot" then if not dest_obj[key] then dest_obj[key] = {converted} else require("Module:table").insertIfNot(dest_obj[key], converted) end elseif store == "insert-flattened" then if not dest_obj[key] then dest_obj[key] = obj else for _, obj in ipairs(converted) do table.insert(dest_obj[key], obj) end end elseif store == "insertIfNot-flattened" then if not dest_obj[key] then dest_obj[key] = obj else for _, obj in ipairs(converted) do require("Module:table").insertIfNot(dest_obj[key], obj) end end else store(dest_obj, key, converted, prefix_parse_err) end else local valid_prefixes = get_valid_prefixes() for i, valid_prefix in ipairs(valid_prefixes) do valid_prefixes[i] = "'" .. valid_prefix .. "'" end prefix_parse_err("Unrecognized prefix, should be one of " .. require("Module:table").serialCommaJoin(valid_prefixes, {dontTag = true})) end end return dest_obj end return export 8jk01msiawp1taxqpquhvnv3whq9fir 2313468 2313438 2026-08-09T11:55:09Z Kuroco2k 84207 2313468 Scribunto text/plain local export = {} local m_string_utilities = require("Module:string utilities") local string_utilities_module = "Module:string utilities" local rfind = mw.ustring.find local rsplit = mw.text.split local u = mw.ustring.char local rsubn = mw.ustring.gsub local concat = table.concat -- version of rsubn() that discards all but the first return value local function rsub(term, foo, bar) local retval = rsubn(term, foo, bar) return retval end local function split(...) split = require(string_utilities_module).split return split(...) end local function umatch(...) umatch = require(string_utilities_module).match return umatch(...) end --[=[split_alternating_runs_and_frob_raw_text In order to understand the following parsing code, you need to understand how inflected text specs work. They are intended to work with inflected text where individual words to be inflected may be followed by inflection specs in angle brackets. The format of the text inside of the angle brackets is up to the individual language and part-of-speech specific implementation. A real-world example is as follows: "[[медичний|меди́чна]]<+> [[сестра́]]<*,*#.pr>". This is the inflection of a multiword expression "меди́чна сестра́", which means "nurse" in Ukrainian (literally "medical sister"), consisting of two words: the adjective меди́чна ("medical" in the feminine singular) and the noun сестра́ ("sister"). The specs in angle brackets follow each word to be inflected; for example, <+> means that the preceding word should be declined as an adjective. The code below works in terms of balanced expressions, which are bounded by delimiters such as < > or [ ]. The intention is to allow separators such as spaces to be embedded inside of delimiters; such embedded separators will not be parsed as separators. For example, Ukrainian noun specs allow footnotes in brackets to be inserted inside of angle brackets; something like "меди́чна<+> сестра́<pr.[this is a footnote]>" is legal, as is "[[медичний|меди́чна]]<+> [[сестра́]]<pr.[this is an <i>italicized footnote</i>]>", and the parsing code should not be confused by the embedded brackets, spaces or angle brackets. The parsing is done by two functions, which work in close concert: parse_balanced_segment_run() and split_alternating_runs(). To illustrate, consider the following: parse_balanced_segment_run("foo<M.proper noun> bar<F>", "<", ">") = {"foo", "<M.proper noun>", " bar", "<F>", ""} then split_alternating_runs({"foo", "<M.proper noun>", " bar", "<F>", ""}, " ") = {{"foo", "<M.proper noun>", ""}, {"bar", "<F>", ""}} Here, we start out with a typical inflected text spec "foo<M.proper noun> bar<F>", call parse_balanced_segment_run() on it, and call split_alternating_runs() on the result. The output of parse_balanced_segment_run() is a list where even-numbered segments are bounded by the bracket-like characters passed into the function, and odd-numbered segments consist of the surrounding text. split_alternating_runs() is called on this, and splits *only* the odd-numbered segments, grouping all segments between the specified character. Note that the inner lists output by split_alternating_runs() are themselves in the same format as the output of parse_balanced_segment_run(), with bracket-bounded text in the even-numbered segments. Hence, such lists can be passed again to split_alternating_runs(). ]=] -- Parse a string containing matched instances of parens, brackets or the like. Return a list of strings, alternating -- between textual runs not containing the open/close characters and runs beginning and ending with the open/close -- characters. For example, -- -- parse_balanced_segment_run("foo(x(1)), bar(2)", "(", ")") = {"foo", "(x(1))", ", bar", "(2)", ""}. function export.parse_balanced_segment_run(segment_run, open, close) return m_string_utilities.capturing_split(segment_run, "(%b" .. open .. close .. ")") end -- The following is an equivalent, older implementation that does not use %b (written before I was aware of %b). --[=[ function export.parse_balanced_segment_run(segment_run, open, close) local break_on_open_close = m_string_utilities.capturing_split(segment_run, "([%" .. open .. "%" .. close .. "])") local text_and_specs = {} local level = 0 local seg_group = {} for i, seg in ipairs(break_on_open_close) do if i % 2 == 0 then if seg == open then table.insert(seg_group, seg) level = level + 1 else assert(seg == close) table.insert(seg_group, seg) level = level - 1 if level < 0 then error("Unmatched " .. close .. " sign: '" .. segment_run .. "'") elseif level == 0 then table.insert(text_and_specs, table.concat(seg_group)) seg_group = {} end end elseif level > 0 then table.insert(seg_group, seg) else table.insert(text_and_specs, seg) end end if level > 0 then error("Unmatched " .. open .. " sign: '" .. segment_run .. "'") end return text_and_specs end ]=] --[=[ Like parse_balanced_segment_run() but accepts multiple sets of delimiters. For example, parse_multi_delimiter_balanced_segment_run("foo[bar(baz[bat])], quux<glorp>", {{"[", "]"}, {"(", ")"}, {"<", ">"}}) = {"foo", "[bar(baz[bat])]", ", quux", "<glorp>", ""}. Each element in the list of delimiter pairs is a string specifying an equivalence class of possible delimiter characters. You can use this, for example, to allow either "[" or "&#91;" to be treated equivalently, with either one closed by either "]" or "&#93;". To do this, first replace "&#91;" and "&#93;" with single Unicode characters such as U+FFF0 and U+FFF1, and then specify a two-character string containing "[" and U+FFF0 as the opening delimiter, and a two-character string containing "]" and U+FFF1 as the corresponding closing delimiter. If `no_error_on_unmatched` is given and an error is found during parsing, a string is returned containing the error message instead of throwing an error. ]=] function export.parse_multi_delimiter_balanced_segment_run(segment_run, delimiter_pairs, no_error_on_unmatched) local escaped_delimiter_pairs = {} local open_to_close_map = {} local open_close_items = {} local open_items = {} for _, open_close in ipairs(delimiter_pairs) do local open, close = unpack(open_close) open = rsub(open, "([%[%]%%%%-])", "%%%1") close = rsub(close, "([%[%]%%%%-])", "%%%1") table.insert(open_close_items, open) table.insert(open_close_items, close) table.insert(open_items, open) open = "[" .. open .. "]" close = "[" .. close .. "]" open_to_close_map[open] = close table.insert(escaped_delimiter_pairs, {open, close}) end local open_close_pattern = "([" .. table.concat(open_close_items) .. "])" local open_pattern = "([" .. table.concat(open_items) .. "])" local break_on_open_close = m_string_utilities.capturing_split(segment_run, open_close_pattern) local text_and_specs = {} local level = 0 local seg_group = {} local open_at_level_zero for i, seg in ipairs(break_on_open_close) do if i % 2 == 0 then table.insert(seg_group, seg) if level == 0 then if not rfind(seg, open_pattern) then local errmsg = "Unmatched close sign " .. seg .. ": '" .. segment_run .. "'" if no_error_on_unmatched then return errmsg else error(errmsg) end end assert(open_at_level_zero == nil) for _, open_close in ipairs(escaped_delimiter_pairs) do local open, close = unpack(open_close) if rfind(seg, open) then open_at_level_zero = open break end end if open_at_level_zero == nil then error(("Internal error: Segment %s didn't match any open regex"):format(seg)) end level = level + 1 elseif rfind(seg, open_at_level_zero) then level = level + 1 elseif rfind(seg, open_to_close_map[open_at_level_zero]) then level = level - 1 assert(level >= 0) if level == 0 then table.insert(text_and_specs, table.concat(seg_group)) seg_group = {} open_at_level_zero = nil end end elseif level > 0 then table.insert(seg_group, seg) else table.insert(text_and_specs, seg) end end if level > 0 then local errmsg = "Unmatched open sign " .. open_at_level_zero .. ": '" .. segment_run .. "'" if no_error_on_unmatched then return errmsg else error(errmsg) end end return text_and_specs end --[=[ Split a list of alternating textual runs of the format returned by `parse_balanced_segment_run` on `splitchar`. This only splits the odd-numbered textual runs (the portions between the balanced open/close characters). The return value is a list of lists, where each list contains an odd number of elements, where the even-numbered elements of the sublists are the original balanced textual run portions. For example, if we do parse_balanced_segment_run("foo<M.proper noun> bar<F>", "<", ">") = {"foo", "<M.proper noun>", " bar", "<F>", ""} then split_alternating_runs({"foo", "<M.proper noun>", " bar", "<F>", ""}, " ") = {{"foo", "<M.proper noun>", ""}, {"bar", "<F>", ""}} Note that we did not touch the text "<M.proper noun>" even though it contains a space in it, because it is an even-numbered element of the input list. This is intentional and allows for embedded separators inside of brackets/parens/etc. Note also that the inner lists in the return value are of the same form as the input list (i.e. they consist of alternating textual runs where the even-numbered segments are balanced runs), and can in turn be passed to split_alternating_runs(). If `preserve_splitchar` is passed in, the split character is included in the output, as follows: split_alternating_runs({"foo", "<M.proper noun>", " bar", "<F>", ""}, " ", true) = {{"foo", "<M.proper noun>", ""}, {" "}, {"bar", "<F>", ""}} Consider what happens if the original string has multiple spaces between brackets, and multiple sets of brackets without spaces between them. parse_balanced_segment_run("foo[dated][low colloquial] baz-bat quux xyzzy[archaic]", "[", "]") = {"foo", "[dated]", "", "[low colloquial]", " baz-bat quux xyzzy", "[archaic]", ""} then split_alternating_runs({"foo", "[dated]", "", "[low colloquial]", " baz-bat quux xyzzy", "[archaic]", ""}, "[ %-]") = {{"foo", "[dated]", "", "[low colloquial]", ""}, {"baz"}, {"bat"}, {"quux"}, {"xyzzy", "[archaic]", ""}} If `preserve_splitchar` is passed in, the split character is included in the output, as follows: split_alternating_runs({"foo", "[dated]", "", "[low colloquial]", " baz bat quux xyzzy", "[archaic]", ""}, "[ %-]", true) = {{"foo", "[dated]", "", "[low colloquial]", ""}, {" "}, {"baz"}, {"-"}, {"bat"}, {" "}, {"quux"}, {" "}, {"xyzzy", "[archaic]", ""}} As can be seen, the even-numbered elements in the outer list are one-element lists consisting of the separator text. ]=] function export.split_alternating_runs(segment_runs, splitchar, preserve_splitchar) local grouped_runs = {} local run = {} for i, seg in ipairs(segment_runs) do if i % 2 == 0 then table.insert(run, seg) else local parts = preserve_splitchar and m_string_utilities.capturing_split(seg, "(" .. splitchar .. ")") or rsplit(seg, splitchar) table.insert(run, parts[1]) for j=2,#parts do table.insert(grouped_runs, run) run = {parts[j]} end end end if #run > 0 then table.insert(grouped_runs, run) end return grouped_runs end function export.strip_spaces(text) return rsub(text, "^%s*(.-)%s*$", "%1") end -- Apply an arbitrary function `frob` to the "raw-text" segments in a split run set (the output of -- split_alternating_runs()). We leave alone stuff within balanced delimiters (footnotes, inflection specs and the -- like), as well as splitchars themselves if present. `preserve_splitchar` indicates whether splitchars are present -- in the split run set. `frob` is a function of one argument (the string to frob) and should return one argument (the -- frobbed string). We operate by only frobbing odd-numbered segments, and only in odd-numbered runs if -- preserve_splitchar is given. function export.frob_raw_text_alternating_runs(split_run_set, frob, preserve_splitchar) for i, run in ipairs(split_run_set) do if not preserve_splitchar or i % 2 == 1 then for j, segment in ipairs(run) do if j % 2 == 1 then run[j] = frob(segment) end end end end end -- Like split_alternating_runs() but applies an arbitrary function `frob` to "raw-text" segments in the result (i.e. -- not stuff within balanced delimiters such as footnotes and inflection specs, and not splitchars if present). `frob` -- is a function of one argument (the string to frob) and should return one argument (the frobbed string). function export.split_alternating_runs_and_frob_raw_text(run, splitchar, frob, preserve_splitchar) local split_runs = export.split_alternating_runs(run, splitchar, preserve_splitchar) export.frob_raw_text_alternating_runs(split_runs, frob, preserve_splitchar) return split_runs end --[==[ FIXME: Older entry point. Call `split_alternating_runs_and_frob_raw_text()` in [[Module:parse utilities]] directly. Like `split_alternating_runs()` but strips spaces from both ends of the odd-numbered elements (only in odd-numbered runs if `preserve_splitchar` is given). Effectively we leave alone the footnotes and splitchars themselves, but otherwise strip extraneous spaces. Spaces in the middle of an element are also left alone. ]==] function export.split_alternating_runs_and_strip_spaces(segment_runs, splitchar, preserve_splitchar) return export.split_alternating_runs_and_frob_raw_text(segment_runs, splitchar, export.strip_spaces, preserve_splitchar) end -- Split the non-modifier parts of an alternating run (after parse_balanced_segment_run() is called) on a Lua pattern, -- but not on certain sequences involving characters in that pattern (e.g. comma+whitespace). `splitchar` is the pattern -- to split on; `preserve_splitchar` indicates whether to preserve the delimiter and is the same as in -- split_alternating_runs(). `escape_fun` is called beforehand on each run of raw text and should return two values: -- the escaped run and whether unescaping is needed. If any call to `escape_fun` indicates that unescaping is needed, -- `unescape_fun` will be called on each run of raw text after splitting on `splitchar`. The return value of this -- function is as in split_alternating_runs(). function export.split_alternating_runs_escaping(run, splitchar, preserve_splitchar, escape_fun, unescape_fun) -- First replace comma with a temporary character in comma+whitespace sequences. local need_unescape = false for i, seg in ipairs(run) do if i % 2 == 1 then local this_need_unescape run[i], this_need_unescape = escape_fun(run[i]) need_unescape = need_unescape or this_need_unescape end end if need_unescape then return export.split_alternating_runs_and_frob_raw_text(run, splitchar, unescape_fun, preserve_splitchar) else return export.split_alternating_runs(run, splitchar, preserve_splitchar) end end -- Replace comma with a temporary char in comma + whitespace. function export.escape_comma_whitespace(run, tempcomma) tempcomma = tempcomma or u(0xFFF0) if run:find(",%s") then run = run:gsub(",(%s)", tempcomma .. "%1") -- assign to temp to discard second return value return run, true else return run, false end end -- Undo the replacement of comma with a temporary char. function export.unescape_comma_whitespace(run, tempcomma) tempcomma = tempcomma or u(0xFFF0) run = run:gsub(tempcomma, ",") -- assign to temp to discard second return value return run end -- Split the non-modifier parts of an alternating run (after parse_balanced_segment_run() is called) on comma, but not -- on comma+whitespace. See `split_on_comma()` above for more information and the meaning of `tempcomma`. function export.split_alternating_runs_on_comma(run, tempcomma) tempcomma = tempcomma or u(0xFFF0) -- Replace comma with a temporary char in comma + whitespace. local function escape_comma_whitespace(seg) return export.escape_comma_whitespace(seg, tempcomma) end -- Undo replacement of comma with a temporary char in comma + whitespace. local function unescape_comma_whitespace(seg) return export.unescape_comma_whitespace(seg, tempcomma) end return export.split_alternating_runs_escaping(run, ",", false, escape_comma_whitespace, unescape_comma_whitespace) end -- Split text on a Lua pattern, but not on certain sequences involving characters in that pattern (e.g. -- comma+whitespace). `splitchar` is the pattern to split on; `preserve_splitchar` indicates whether to preserve the -- delimiter between split segments. `escape_fun` is called beforehand on the text and should return two values: the -- escaped run and whether unescaping is needed. If the call to `escape_fun` indicates that unescaping is needed, -- `unescape_fun` will be called on each run of text after splitting on `splitchar`. The return value of this a list -- of runs, interspersed with delimiters if `preserve_splitchar` is specified. function export.split_escaping(text, splitchar, preserve_splitchar, escape_fun, unescape_fun) if not umatch(text, splitchar) then return {text} end -- If there are square or angle brackets, we don't want to split on delimiters inside of them. To effect this, we -- use parse_multi_delimiter_balanced_segment_run() to parse balanced brackets, then do delimiter splitting on the -- non-bracketed portions of text using split_alternating_runs_escaping(), and concatenate back to a list of -- strings. When calling parse_multi_delimiter_balanced_segment_run(), we make sure not to throw an error on -- unbalanced brackets; in that case, we fall through to the code below that handles the case without brackets. if text:find("[%[<]") then local runs = export.parse_multi_delimiter_balanced_segment_run(text, {{"[", "]"}, {"<", ">"}}, "no error on unmatched") if type(runs) ~= "string" then local split_runs = export.split_alternating_runs_escaping(runs, splitchar, preserve_splitchar, escape_fun, unescape_fun) for i = 1, #split_runs do split_runs[i] = concat(split_runs[i]) end return split_runs end end -- First escape sequences we don't want to count for splitting. local need_unescape if escape_fun then text, need_unescape = escape_fun(text) end local parts = split(text, preserve_splitchar and "(" .. splitchar .. ")" or splitchar) if need_unescape then for i = 1, #parts, (preserve_splitchar and 2 or 1) do parts[i] = unescape_fun(parts[i]) end end return parts end -- Split text on comma, but not on comma+whitespace. This is similar to `mw.text.split(text, ",")` but will not split -- on commas directly followed by whitespace, to handle embedded commas in terms (which are almost always followed by -- a space). `tempcomma` is the Unicode character to temporarily use when doing the splitting; normally U+FFF0, but -- you can specify a different character if you use U+FFF0 for some internal purpose. function export.split_on_comma(text, tempcomma) tempcomma = tempcomma or u(0xFFF0) -- Replace comma with a temporary char in comma + whitespace. local function escape_comma_whitespace(run) return export.escape_comma_whitespace(run, tempcomma) end -- Undo replacement of comma with a temporary char in comma + whitespace. local function unescape_comma_whitespace(run) return export.unescape_comma_whitespace(run, tempcomma) end return export.split_escaping(text, ",", false, escape_comma_whitespace, unescape_comma_whitespace) end -- Ensure that Wikicode (bracketed links, HTML, bold/italics, etc.) displays literally in error messages by inserting -- a Unicode word-joiner symbol after all characters that may trigger Wikicode interpr. Replacing with equivalent -- HTML escapes doesn't work because they are displayed literally. I could not get this to work using -- <nowiki>...</nowiki> (those tags display literally) and using using {{#tag:nowiki|...}} (same thing). -- FIXME: This is a massive hack; there must be a better way. function export.escape_wikicode(term) term = term:gsub("([%[<'])", "%1" .. u(0x2060)) return term end function export.make_parse_err(arg_gloss) return function(msg, stack_frames_to_ignore) error(export.escape_wikicode(("%s: %s"):format(msg, arg_gloss)), stack_frames_to_ignore) end end -- Parse a term that may have a language code preceding it (e.g. 'la:minūtia' or 'grc:[[σκῶρ|σκατός]]'). Return -- two arguments, the term minus the language code and the language object corresponding to the language code. -- Etymology-only languages are allowed. This function also correctly handles Wikipedia prefixes (e.g. 'w:Abatemarco' -- or 'w:it:Colle Val d'Elsa') and converts them into two-part links, with the display form not including the Wikipedia -- prefix. `parse_err` should be a function of one or two arguments to display an error (the second argument is the -- number of stack frames to ignore when calling error(); if you declare your error function with only one argument, -- things will still work fine). function export.parse_term_with_lang(term, parse_err_or_paramname) parse_err = type(parse_err_or_paramname) == "function" and parse_err_or_paramname or parse_err_or_paramname and export.make_parse_err(("%s=%s"):format(parse_err_or_paramname, term)) or export.make_parse_err(term) -- Parse off an initial language code (e.g. 'la:minūtia' or 'grc:[[σκῶρ|σκατός]]'). First check for Wikipedia -- prefixes ('w:Abatemarco' or 'w:it:Colle Val d'Elsa' or 'lw:zh:邹衡'). Wikipedia language codes follow a similar -- format to Wiktionary language codes (see below). local termlang, foreign_wikipedia, actual_term = term:match("^(l?w):([a-z][a-z][a-z-]*):([^ ].*)$") if not termlang then termlang, actual_term = term:match("^(w):([^ ].*)$") end if termlang then local wikipedia_prefix = foreign_wikipedia and "w:" .. foreign_wikipedia or "w" if actual_term:find("[%[%]]") then parse_err("Cannot have brackets following a Wikipedia (w:...) link; place the Wikipedia link inside the brackets") end term = ("[[%s:%s|%s]]"):format(wikipedia_prefix, actual_term, actual_term) if termlang == "lw" then return term, require("Module:languages").getByCode(foreign_wikipedia, parse_err, "allow etym") else return term, nil end end -- 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.) termlang, actual_term = term:match("^([a-z][a-z][a-z-]*):([^ ].*)$") if not termlang then -- Special hack for Latin variants, which can have nonstandard etym codes, e.g. VL., LL. termlang, actual_term = term:match("^([A-Z]L%.):([^ ].*)$") end if termlang then termlang = require("Module:languages").getByCode(termlang, parse_err, "allow etym") term = actual_term end return term, termlang end --[=[ Parse a term that may have inline modifiers attached (e.g. 'rifiuti<q:plural-only>' or 'rinfusa<t:bulk cargo><lit:resupplying><qq:more common in the plural {{m|it|rinfuse}}>'). * `arg` is the term to parse. * `props` is an object holding further properties controlling how to parse the term: * `paramname` is the name of the parameter where `arg` comes from, or nil if this isn't available (it is used only in error messages). * `param_mods` is a table describing the allowed inline modifiers (see below). * `generate_obj` is a function of one or two arguments that should parse the argument minus the inline modifiers and return a corresponding parsed object (into which the inline modifiers will be rewritten). If declared with one argument, that will be the raw value to parse; if declared with two arguments, the second argument will be the `parse_err` function (see below). * `parse_err` is an optional function of one argument (an error message) and should display the error message, along with any desired contextual text (e.g. the argument name and value that triggered the error). If omitted, a default function will be generated which displays the error along with the original value of `arg` (passed through escape_wikicode() above to ensure that Wikicode (such as links) is displayed literally). * `splitchar` is a Lua pattern. If specified, `arg` can consist of multiple delimiter-separated terms, each of which may be followed by inline modifiers, and the return value will be a list of parsed objects instead of a single object. Note that splitting on delimiters will not happen in certain protected sequences (by default comma+whitespace; see below). The algorithm to split on delimiters is sensitive to inline modifier syntax and will not be confused by delimiters inside of inline modifiers, which do not trigger splitting (whether or not contained within protected sequences). * `preserve_splitchar`, if specified, causes the actual delimiter matched by `splitchar` to be returned in the parsed object describing the element that comes after the delimiter. The delimiter is stored in a key whose name is controlled by `separator_key`, which defaults to "separator". * `separator_key` controls the key into which the actual delimiter is written when `preserve_splitchar` is used. See above. * `escape_fun` and `unescape_fun` are as in split_escaping() and split_alternating_runs_escaping() above and control the protected sequences that won't be split. By default, `escape_comma_whitespace` and `unescape_comma_whitespace` are used, so that comma+whitespace sequences won't be split. `param_mods` is a table describing allowed modifiers. The keys of the table are modifier prefixes and the values are tables describing how to parse and store the associated modifier values. Here is a typical example: local param_mods = { t = { item_dest = "gloss", }, gloss = {}, pos = {}, alt = {}, lit = {}, id = {}, g = { item_dest = "genders", convert = function(arg) return rsplit(arg, ",") end, }, } In the table values: * `item_dest` specifies the destination key to store the object into (if not the same as the modifier key itself). * `convert` is a function of one or two arguments (the modifier value and optionally the `parse_err` function as passed in or generated), and should parse and convert the value into the appropriate object. If omitted, the string value is stored unchanged. * `store` describes how to store the converted modifier value into the parsed object. If omitted, the converted value is simply written into the parsed object under the appropriate key (but an error is generated if the key already has a value). If `store` == "insert", the converted value is appended to the key's value using table.insert(); if the key has no value, it is first converted to an empty list. `store` == "insertIfNot" is similar but appends the value using insertIfNot() in [[Module:table]]. If `store == "insert-flattened", the converted value is assumed to be a list and the objects are appended one-by-one into the key's existing value using table.insert(). `store` == "insertIfNot-flattened" is similar but appends using insertIfNot() in [[Module:table]]. WARNING: When using "insert-flattened" and "insertIfNot-flattened", if there is no existing value for the key, the converted value is just stored directly. This means that future appends will side-effect that value, so make sure that the return value of the conversion function for this key generates a fresh list each time. ]=] function export.parse_inline_modifiers(arg, props) local segments = export.parse_balanced_segment_run(arg, "<", ">") if not props.splitchar then return export.parse_inline_modifiers_from_segments(segments, arg, props) else local retval = {} local separated_groups = export.split_alternating_runs_escaping(segments, props.splitchar, props.preserve_splitchar, props.escape_fun or export.escape_comma_whitespace, props.unescape_fun or export.unescape_comma_whitespace) for j = 1, #separated_groups, (props.preserve_splitchar and 2 or 1) do local parsed = export.parse_inline_modifiers_from_segments(separated_groups[j], arg, props) if props.preserve_splitchar and j > 1 then parsed[props.separator_key or "separator"] = separated_groups[j - 1][1] end table.insert(retval, parsed) end return retval end end function export.parse_inline_modifiers_from_segments(group, arg, props) local function get_valid_prefixes() local valid_prefixes = {} for param_mod, _ in pairs(props.param_mods) do table.insert(valid_prefixes, param_mod) end table.sort(valid_prefixes) return valid_prefixes end local function get_arg_gloss() if props.paramname then return ("%s=%s"):format(props.paramname, arg) else return arg end end local parse_err = props.parse_err or export.make_parse_err(get_arg_gloss()) local dest_obj = props.generate_obj(group[1], parse_err) for k = 2, #group - 1, 2 do if group[k + 1] ~= "" then parse_err("Extraneous text '" .. group[k + 1] .. "' after modifier") end local modtext = group[k]:match("^<(.*)>$") if not modtext then parse_err("Internal error: Modifier '" .. group[k] .. "' isn't surrounded by angle brackets") end local prefix, val = modtext:match("^([a-zA-Z0-9+_-]+):(.*)$") if not prefix then local valid_prefixes = get_valid_prefixes() for i, valid_prefix in ipairs(valid_prefixes) do valid_prefixes[i] = "'" .. valid_prefix .. ":'" end parse_err("Modifier " .. group[k] .. " lacks a prefix, should begin with one of " .. require("Module:table").serialCommaJoin(valid_prefixes, {dontTag = true})) end local prefix_parse_err = export.make_parse_err(("modifier prefix '%s' in %s in %s"):format(prefix, group[k], get_arg_gloss())) if props.param_mods[prefix] then local key = props.param_mods[prefix].item_dest or prefix local convert = props.param_mods[prefix].convert local converted if convert then converted = convert(val, prefix_parse_err) else converted = val end local store = props.param_mods[prefix].store if not store then if dest_obj[key] then prefix_parse_err("Prefix occurs twice") end dest_obj[key] = converted elseif store == "insert" then if not dest_obj[key] then dest_obj[key] = {converted} else table.insert(dest_obj[key], converted) end elseif store == "insertIfNot" then if not dest_obj[key] then dest_obj[key] = {converted} else require("Module:table").insertIfNot(dest_obj[key], converted) end elseif store == "insert-flattened" then if not dest_obj[key] then dest_obj[key] = obj else for _, obj in ipairs(converted) do table.insert(dest_obj[key], obj) end end elseif store == "insertIfNot-flattened" then if not dest_obj[key] then dest_obj[key] = obj else for _, obj in ipairs(converted) do require("Module:table").insertIfNot(dest_obj[key], obj) end end else store(dest_obj, key, converted, prefix_parse_err) end else local valid_prefixes = get_valid_prefixes() for i, valid_prefix in ipairs(valid_prefixes) do valid_prefixes[i] = "'" .. valid_prefix .. "'" end prefix_parse_err("Unrecognized prefix, should be one of " .. require("Module:table").serialCommaJoin(valid_prefixes, {dontTag = true})) end end return dest_obj end return export icrw7pofwnp7pw44oi4hded7kxt8p1x 旅立つ 0 425417 2313375 1960513 2026-08-09T06:25:32Z ちょこれ゚いとみんと 129959 2313375 wikitext text/x-wiki {{kana-DEFAULTSORT|たびだつ}} =={{L|ja}}== ==={{wago}}=== {{ja-wagokanji|たびだつ}} #{{wagokanji of|たびだつ}} e4gxhjfqlmpf1v8pa22a7hn2vi8n7dy さいぜん 0 426813 2313117 1960989 2026-08-08T14:01:26Z M-30722 1202 2313117 wikitext text/x-wiki {{kana-DEFAULTSORT}} {{also|さいせん}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana|h=y}} *【[[最前]]】一番前または先。 *【[[最善]]】最良。 joahacd7dneho7kcei36gc8ejqkfjx1 2313160 2313117 2026-08-08T22:46:47Z うーむ 129171 /* */ 2313160 wikitext text/x-wiki {{kana-DEFAULTSORT}} {{also|さいせん|ざいせん}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana|h=y}} *【[[最前]]】一番前または先。 *【[[最善]]】最良。 2mhttsan4ws6s0fmbwd36x2bd3dwphu 0 438289 2313453 1843201 2026-08-09T11:21:40Z M-30722 1202 2313453 wikitext text/x-wiki ==ハングル== {{ハングル|ㅊ|ㅣ|ㄴ}} =={{L|ko}}== ==={{pron}}=== {{ko-IPA}} ==={{prefix}}=== {{head|ko|prefix}} {{ko-h|親}} #[[直系]]の、[[実]]の。 #{{ふりがな|父方|ちちかた}}の。 #「[[したしい|親しい]]」「[[支持]]する」等の意を表す。 ===漢字音=== [[カテゴリ:{{ko}} 漢字音]] [[親]] =={{コード}}== {{ハングルコード|C4A3}} 7ad4fgayfqp2hfucvpyr6rc7uocahvk 0 438307 2313452 1843225 2026-08-09T11:17:44Z M-30722 1202 2313452 wikitext text/x-wiki ==ハングル== {{ハングル|ㅊ|ㅣ|ㄱ}} =={{L|ko}}== [[カテゴリ:{{ko}}]] ==={{pron}}=== {{ko-IPA}} ===漢字音=== [[カテゴリ:{{ko}} 漢字音]] [[則]][[勅]][[飭]] =={{コード}}== {{ハングルコード|C4A2}} c1e02zs1x7rmdcu4or1istxx4nuevnj 眼中 0 441842 2313078 1964686 2026-08-08T12:15:45Z うーむ 129171 /* 日本語 */ 2313078 wikitext text/x-wiki =={{ja}}== {{kana-DEFAULTSORT|がんちゅう}} ==={{noun}}=== {{ja-noun|[[がんちゅう]]}} #[[め|眼]]の[[うち|内]]。 #[[視界]]。 #[[意識]]や[[関心]]の[[範囲]]の内。 #*眼中にない b0pg07gz4sd177cz1cyvn1i39a9qb7v 利用者・トーク:Kuroco2k 3 446787 2313088 2292502 2026-08-08T12:32:46Z Keikei kanji 129888 /* 異体字セレクタ字の項 */ 新しい節 2313088 wikitext text/x-wiki == 𤮃のソートキーに関する質問 == いつも漢字項目の作成有難うございます。[[𤮃]]のソートキーに関する質問ですが、「ang1 ang」→「3ang1 ang」とソートキーの最初に「3」を付けられておりますが、この3の意味はどのようなものでしょうか。これまで編集していても見た事のないソート方法なのでご教示いただければと思います。--[[利用者:M-30722|M-30722]] ([[利用者・トーク:M-30722|トーク]]) 2023年12月30日 (土) 12:27 (UTC) :[[:カテゴリ:漢字]]、および[[:カテゴリ:Unicode CJK Unified Ideographs Extension B]]を見ていると、この漢字がaの箇所にあったため修正しようと考えたのですが、その際デフォルトソートに「ang1 ang」と「U+24B83」のどちらを当て振るべきか迷っており、最終的にデフォルトソートをそのままにその2つのカテゴリをU+24B83としてソートしたのですが、24B83の部分を切り取る際に誤って3だけ残ってしまったものだと思います。先ほど修正しました。--[[利用者:Kuroco2k|Kuroco2k]] ([[利用者・トーク:Kuroco2k|トーク]]) 2023年12月30日 (土) 12:45 (UTC) == 鯐のイェール式表記について == [[鯐]]のイェール式が「zau2」とのことですが、イェール式にzは使われていなかったように思うのですが間違いないでしょうか?「zau2」は粤拼で、イェール式では「jau2」となるかと思いますがいかがでしょうか? --[[利用者:M-30722|M-30722]] ([[利用者・トーク:M-30722|トーク]]) 2024年1月23日 (火) 16:42 (UTC) :すっかり失念していました。先ほど修正しました。--[[利用者:Kuroco2k|Kuroco2k]] ([[利用者・トーク:Kuroco2k|トーク]]) 2024年1月23日 (火) 16:47 (UTC) ::早速の対応ありがとうございます。--[[利用者:M-30722|M-30722]] ([[利用者・トーク:Kuroco2k|トーク]]) 2024年1月23日 (火) 16:52 (UTC) ::: Kuroco2kさん、確認しました。有難うございました。ところで上のコメント(16:52分)は私のものではないのですが60.88.85.56さん、私になりすましてのコメントはやめていただけますでしょうか。 --[[利用者:M-30722|M-30722]] ([[利用者・トーク:M-30722|トーク]]) 2024年1月23日 (火) 17:02 (UTC) == 類推簡化字→簡体字?? == 「類推簡化字」はあくまで「類推」であって、偏旁冠脚の簡略化を[[類推]]して適用するとこうなる、という字形です。あなたは、私Charidriが類推簡化字であるとして明確に定義づけた文字を、幾つか「簡体字」に変更しています。たとえば[[&#x2B405;]]の項目ですが、私は[[&#x8ED5;]]に対する類推簡化字であると初版で定義づけました。あなたはこれを簡体字に変更しました。中国語の「簡体字」の項目として、どう説明できますか。ほかも全部同じことがいえますが。それと[[&#x2CB37;]]などは『[[w:中華字海|中華字海]]』に「类推」简化字であると書いてあるのですよ。 拼音の追記についてはありがとうございます。初版でそこまではやってられないので。そして類推簡化字の項目を猛烈に投稿してもらってることについてはたすかります。--[[利用者:Charidri|Charidri]] ([[利用者・トーク:Charidri|トーク]]) 2024年1月27日 (土) 13:56 (UTC) == 情報減▲ == 異体字の項目は、音訓のフォーマットを省略しているだけであって、[[&#x2795E;]]での[https://ja.wiktionary.org/w/index.php?title=%F0%A7%A5%9E&diff=prev&oldid=1860124 編集]のように、わざわざ書いてある情報を削る必要は、ありませんよ。--[[利用者:Charidri|Charidri]] ([[利用者・トーク:Charidri|トーク]]) 2024年1月27日 (土) 13:56 (UTC) [[&#x2795E;]]の発音を戻しておいてくださいよ。--[[利用者:Charidri|Charidri]] ([[利用者・トーク:Charidri|トーク]]) 2025年6月21日 (土) 12:50 (UTC) ==漢字項目のソートキーなどについて== 漢字項目については基本的にソートキーは、日本語の読みです。それ以外をソートキーとすると日本語カテゴリに不具合が生じます。日本語のソートキーに対応できないチュノムや朝鮮の国字、近代中国における造字は各々の言語のソートキーになります。ユニコードがソートキーになっているものは修正途中と考えてください。--[[利用者:Mtodo|Mtodo]] ([[利用者・トーク:Mtodo|トーク]]) 2024年2月2日 (金) 23:36 (UTC) == 込の訓読み == 込のページで「すまいのこのみち」という読みを追加しましたが、それはどの資料に記載されている訓読みでしょうか?--[[利用者:醤油はせうゆ|醤油はせうゆ]] ([[利用者・トーク:醤油はせうゆ|トーク]]) 2024年8月3日 (土) 08:29 (UTC) :米沢蔵書の倭玉篇を参考としています。[https://www.library.yonezawa.yamagata.jp/dg/AA180.html 米沢図書館デジタルライブラリー本]の46ページをご参照ください。--[[利用者:Kuroco2k|Kuroco2k]] ([[利用者・トーク:Kuroco2k|トーク]]) 2024年8月3日 (土) 10:19 (UTC) ==言語の並び順== [[比]]での言語見出しの並び順が現行の合意(一番上が日本語でそれ以降は五十音順、[[Wiktionary:編集室/2018年Q1#言語の排列について]]、[[Wiktionary:編集室/2024年Q1#訳語の並び順]]も参照)とは異なる並びになっておりますが、どのようなルールで並べられておりますか? --[[利用者:M-30722|M-30722]] ([[利用者・トーク:M-30722|トーク]]) 2024年9月26日 (木) 16:31 (UTC) :日本語→中国語→古壮字使用言語(ブイ語→チワン語)→朝鮮語→ベトナム語→タイー語の順で並ばせていたのですが、五十音順であることは存じていませんでした。修正しましたが、[[Special:Permalink/2007617|こちら]]のようでよろしいでしょうか。--[[利用者:Kuroco2k|Kuroco2k]] ([[利用者・トーク:Kuroco2k|トーク]]) 2024年9月27日 (金) 07:22 (UTC) ::はい、これで合意通りです。もし五十音順よりも上記の並びの方が適当であると思われる場合は[[Wiktionary:編集室]]等で提案していただければ例外規定についての検討も可能かもしれません。 --[[利用者:M-30722|M-30722]] ([[利用者・トーク:M-30722|トーク]]) 2024年9月29日 (日) 13:22 (UTC) ==タイー語のソートキーに関する相談== タイー語等の編集ありがとうございます。ただいま[[カテゴリ・トーク:タイー語]]にてタイー語のソートキーの案を募集しておりますので何か良い案があれば提案していただければ幸いです。 --[[利用者:M-30722|M-30722]] ([[利用者・トーク:M-30722|トーク]]) 2024年11月6日 (水) 14:57 (UTC) ==漢字項目に関する議論の紹介== いつも編集ありがとうございます。現在、[[Wiktionary:編集室/2025年Q2#「カテゴリ:漢字」のソートキーのルール]]にて漢字項目のソートキーに関する議論を行っております。漢字項目をよく編集されておりますKuroco2kさんのご意見もうかがえますと幸いです。 --[[利用者:M-30722|M-30722]] ([[利用者・トーク:M-30722|トーク]]) 2025年5月6日 (火) 08:35 (UTC) == 英語の成句の動詞句 == お疲れ様です。先ほど{{l|en|play for time}}を作成されましたが日本語版ウィクショナリーでは動詞句の定形は作成しません({{l|en|reads the room}}、{{l|en|reading the room}}を作成した際に指摘を受けました)。ですので作成されたものは即時削除にし「動詞」ではなく「成句 動詞句」にしてください。--[[利用者:Praqimu|Praqimu]] ([[利用者・トーク:Praqimu|トーク]]) 2025年5月18日 (日) 03:00 (UTC) :それは存じませんでした。現在対応しています。--[[利用者:Kuroco2k|Kuroco2k]] ([[利用者・トーク:Kuroco2k|トーク]]) 2025年5月18日 (日) 03:03 (UTC) ::ご対応ありがとうございます。--[[利用者:Praqimu|Praqimu]] ([[利用者・トーク:Praqimu|トーク]]) 2025年5月18日 (日) 03:10 (UTC) == 漢字 > ベトナム語 or タイー語 == あなた 単漢字項目である字喃(チュノム)とか岱喃(タイノム)の項目の大見出しを、ベトナム語とかタイー語で大見出しを書いていますが、 テンプレート:標準の内容/漢字 に準じた体裁に全部書き直してください。単一の文字の項目は、文字そのものを上位の大見出しに書いて、各言語の節はその下位にぶらさがるようにしてください。この原則は、チュノム等を含む漢字項目のみならず、欧文のアルファベットなどもこうなっています。 そして、これも重要なことですが、単漢字項目は熟語項目とは異なるので、[[テンプレート:vi-DEFAULTSORT]] を使ってしまうと、ページ情報の「既定のソートキー」がクォックグーになってしまい、[[:カテゴリ:漢字]]などで混乱のもとになるので、使わないでください。[[テンプレート:vi-DEFAULTSORT]] に書き換えないでください。--[[利用者:Charidri|Charidri]] ([[利用者・トーク:Charidri|トーク]]) 2025年6月21日 (土) 12:50 (UTC) :横から失礼します。まず前半部分については確かに文字情報と言語情報は分けて書いた方が良いと思います(同意します)。次に後半部分についてですが、「カテゴリ:漢字」については{{temp|kanji header}}や{{temp|漢字}}といったテンプレートを用いるとデフォルトソートの影響を受けず正しい形でソートされますので、テンプレートを使用した場合に限りデフォルトソートを使ったとしても「カテゴリ:漢字」のソートには影響を及ぼさないので、仕様を理解した上でなら{{temp|vi-DEFAULTSORT}}を使用しても問題ないのではと個人的には思います。また、'''{{temp|vi-DEFAULTSORT}}を使用することを禁止する合意は現時点でなされていないので現状デフォルトソートの禁止を強制は出来ない'''と認識しております。 --[[利用者:M-30722|M-30722]] ([[利用者・トーク:M-30722|トーク]]) 2025年7月8日 (火) 15:46 (UTC) == 菩提薩埵のページについて == [[菩提薩埵]]のページにベトナム語の項目を追加していただいたようですが、テンプレートが明らかにエラーを起こしているので対処の方をお願いします。自分では対応できず申し訳ありませんが確認していただけると助かります。--[[利用者:Jiba1219|Jiba1219]] ([[利用者・トーク:Jiba1219|トーク]]) 2025年8月22日 (金) 12:13 (UTC) :{{対処}} 私(「テンプレート:vi-head」の作成者です)が代わりに対処しました。なお、普段登録状況を[[:カテゴリ:テンプレート:vi-sort1にソートキーのデータ未登録]]で追っておりますが現在不具合により登録してもリストから消えなくなっております。その為もしかするとまだ登録漏れのものがある可能性がありますので見つけ次第教えていただけますと対処します。 --[[利用者:M-30722|M-30722]] ([[利用者・トーク:M-30722|トーク]]) 2025年8月22日 (金) 16:14 (UTC) == 上位カテゴリに関する質問 == [[:カテゴリ:四川語 月名]]や[[:カテゴリ:ドンガン語 月名]]の上位カテゴリをナビゲーターでは「〇〇語 名詞」としておりますが、実際に付けられた上位カテゴリの「〇〇語 暦」を辿っていっても「〇〇語 名詞」に辿り着かないのですが「〇〇語 名詞」は本当に「〇〇語 月名」の上位カテゴリなのでしょうか? --[[利用者:M-30722|M-30722]] ([[利用者・トーク:M-30722|トーク]]) 2025年9月25日 (木) 16:25 (UTC) :(これ時代は日本語の同意カテゴリーからコピーしたものですが)たしかにこうせざるとも良いかもしれません。一旦消しておきます。--[[利用者:Kuroco2k|Kuroco2k]] ([[利用者・トーク:Kuroco2k|トーク]]) 2025年9月25日 (木) 22:09 (UTC) ::日本語のカテゴリの構造が問題ありそうですね。昔は名詞を上位カテゴリとする分野カテゴリが複数あったのでその名残が更新されずにきたものと考えられますので更新しておきます。 --[[利用者:M-30722|M-30722]] ([[利用者・トーク:M-30722|トーク]]) 2025年9月26日 (金) 13:35 (UTC) == テンプレート:字典での異体字字典について == 先日{{temp|字典}}に追加された引数vt異体字字典掲載番号について、一つ提案をさせていただきます。異体字字典の中には掲載があり、Unicodeに文字が存在するがこれらの紐付けがされておらず検索してもヒットしない文字があります([[蜗]]に対する[https://dict.variants.moe.edu.tw/dictView.jsp?educode=A03661-002]など)。つきましては、このテンプレートの異体字字典の情報をWikidataの該当文字のP11475(教育部異体字字典識別子)から移入することはできますでしょうか。--[[利用者:TAKA647|TAKA647]] ([[利用者・トーク:TAKA647|トーク]]) 2025年11月13日 (木) 05:33 (UTC) :少し試してみましたが、厳しいように思えます。Wiktionaryというプロジェクトの理念の性質上、Wikidataにつながっていないので、テンプレート単体では難しいと思います(モジュールに書き出せばできるかもしれませんが、その余力があいにくないです)。--[[利用者:Kuroco2k|Kuroco2k]] ([[利用者・トーク:Kuroco2k|トーク]]) 2025年11月13日 (木) 08:15 (UTC) ::返信ありがとうございます。なるほど、厳しいのですね。異体字字典は一つの字形に複数の識別子を結びつけていることもありますが、現在このテンプレートは複数のリンクに対応していないほか、上記の通り検索しても出てこない字形もありますし、一度この引数は導入を見送るのも手だと考えます。--[[利用者:TAKA647|TAKA647]] ([[利用者・トーク:TAKA647|トーク]]) 2025年11月13日 (木) 16:32 (UTC) == テンプレート:vi-hanについて == [[匿]]を編集していただいたようですが、<code><nowiki>{{vi-han}}</nowiki></code>の表示に不具合が生じているようです。私では対応できないため、お手数ですが、ご確認をお願いいたします。--[[利用者:Jpnbcl|Jpnbcl]] ([[利用者・トーク:Jpnbcl|トーク]]) 2025年12月16日 (火) 11:46 (UTC) :前も[[#菩提薩埵のページについて|同じこと]]を言われたので返答はこちらに代えさせていただきますが、ひとまず対処のみ。--[[利用者:Kuroco2k|Kuroco2k]] ([[利用者・トーク:Kuroco2k|トーク]]) 2025年12月16日 (火) 12:04 (UTC) ::ひとまずの対応ありがとうございました。--[[利用者:Jpnbcl|Jpnbcl]] ([[利用者・トーク:Jpnbcl|トーク]]) 2025年12月16日 (火) 12:16 (UTC) == コードについて == いつも加筆および訂正ありがとうございます。編集の参考にさせていただきたいのですが、コード等の情報はどこから入手しているのでしょうか。少し気になったので差し支えなければ出来る範囲でご教示いただけると助かります。[[利用者:なきは|なきは]] ([[利用者・トーク:なきは|トーク]]) 2026年3月15日 (日) 07:35 (UTC) :実に単純な話で、だいたいはUnihanのページ(単字なら{{temp|文字コード}}が自動で出してくれるのでアクセスは容易なはずです)から拾えますし、GB18030は[http://ccamc.org/ 古今文字集成]で拾えます。あとは拾ったソースをフォーマットに沿うように([[利用者:Jpnbcl#メモ|有志の方が一部メモしてある物]]を貼っておきます)書くだけです。--[[利用者:Kuroco2k|<span style="color:#000000">'''雛宮黒狐'''</span>]]([[利用者‐会話:Kuroco2k|<span style="color:#5a00cc">Talk</span>]]) 2026年3月15日 (日) 08:09 (UTC) ::ありがとうございます。[[利用者:なきは|なきは]] ([[利用者・トーク:なきは|トーク]]) 2026年3月15日 (日) 09:26 (UTC) ==ベトナム語の漢字語について== いつも編集お疲れ様です。[[giữa trời]]や[[dưa hấu]]で「[[:カテゴリ:ベトナム語 漢字語]]」の付与を見送られているかと思いますが、当カテゴリは現在チュノムも付与の対象に含まれております。従いまして付与を見送った理由を教えていただけますと幸いです。 --[[利用者:M-30722|M-30722]] ([[利用者・トーク:M-30722|トーク]]) 2026年3月16日 (月) 13:03 (UTC) :おっと、失礼しました。単純に見落としです。--[[利用者:Kuroco2k|<span style="color:#000000">'''雛宮黒狐'''</span>]]([[利用者‐会話:Kuroco2k|<span style="color:#5a00cc">Talk</span>]]) 2026年3月16日 (月) 13:08 (UTC) ::承知しました。ちなみに、先日朝鮮語用のテンプレートで漢字表記の出力をしながら漢字語カテゴリの付与を自動で行える{{temp|ko-h}}を作成したのですが、これのベトナム語バージョンを作ろうかどうか検討しております。自動出力にすれば漢字語カテゴリ付与の手間も減らせて便利になるかと思いますがいかがでしょうか?--[[利用者:M-30722|M-30722]] ([[利用者・トーク:M-30722|トーク]]) 2026年3月16日 (月) 13:12 (UTC) :::アイデアそのものは悪くないでしょうが、漢語由来の熟語はともかくとして、それ以外の二字熟語に複数表記がある場合が多く、作っても相当やりづらいものになることが予想されます。朝鮮語ですら「並/竝」の二通りがある場合悩みどころですが、ベトナム語はそれ以上です。--[[利用者:Kuroco2k|<span style="color:#000000">'''雛宮黒狐'''</span>]]([[利用者‐会話:Kuroco2k|<span style="color:#5a00cc">Talk</span>]]) 2026年3月16日 (月) 13:16 (UTC) ::::他の方からも意見がありましたので一応朝鮮語とほぼ同仕様の{{temp|vi-h}}を作成してみましたが、ベトナム語に合わせた仕様にできればと考えております。なお、朝鮮語の場合は例えば[[정화]]では<nowiki>{{ko-h|精|華}}{{ko-h|菁|華|alt=y}}</nowiki>とすることで「精華」「菁華」両方の表記を表示できる仕様となっております。--[[利用者:M-30722|M-30722]] ([[利用者・トーク:M-30722|トーク]]) 2026年3月16日 (月) 13:22 (UTC) == [[特別:携帯機器差分/2217397]] == お疲れ様です。こちらの要約欄が気になりまして、アルメニア語の発音テンプレートであるテンプレート:hy-IPAですが新たにモジュール:hy-IPAを作成して使えるようにしましたのでお使いください。--[[利用者:Praqimu|Praqimu]] ([[利用者・トーク:Praqimu|トーク]]) 2026年4月15日 (水) 17:25 (UTC) :助かりました。下手にあれこれ変えてエラーを起こすわけにもいきませんので...--[[利用者:Kuroco2k|<span style="color:#000000">'''雛宮黒狐'''</span>]]([[利用者‐会話:Kuroco2k|<span style="color:#5a00cc">Talk</span>]]) 2026年4月16日 (木) 08:15 (UTC) == 漢字ページ作りについて == テンプレート:kanjiを入れたときの部首や総画の表示やテンプレートja-kanji(表外漢字の場合)の下の読みの表示などの方法を教えてほしいです--[[利用者:R914|R914]] ([[利用者・トーク:R914|トーク]]) 2026年5月24日 (日) 07:57 (UTC) == 訂正について。 == 色々欠けているところをフォローしてくれてありがとうございます m(_ _)m。 自分はウィクショナリーでまだまだ未熟なので訂正はありがたいです。--[[利用者:Shishinó Mígami|Shishinó Mígami]] ([[利用者・トーク:Shishinó Mígami|トーク]]) 2026年7月3日 (金) 10:13 (UTC) == 異体字セレクタ字の項 == 「[[冉󠄁]]」「[[僊󠄁]]」の二字の内容を変更してくれたみたいなので質問なのですが、このような異体字に関しては字源や日本語その他言語などの項目は必要ないのですか?また「「僊」に異体字セレクタのU+E0101を指定した字形。」と意義欄に書かれていますがこれはどちらかと言うと字源欄に書くべきではないでしょうか。(「[[冉󠄁]]」も同様)--[[利用者:Keikei kanji|Keikei kanji]] ([[利用者・トーク:Keikei kanji|トーク]]) 2026年8月8日 (土) 12:32 (UTC) 0jdqttytwigo4dho9gajsw067g5jfsx 2313093 2313088 2026-08-08T12:51:02Z Kuroco2k 84207 /* 異体字セレクタ字の項 */ 返信 2313093 wikitext text/x-wiki == 𤮃のソートキーに関する質問 == いつも漢字項目の作成有難うございます。[[𤮃]]のソートキーに関する質問ですが、「ang1 ang」→「3ang1 ang」とソートキーの最初に「3」を付けられておりますが、この3の意味はどのようなものでしょうか。これまで編集していても見た事のないソート方法なのでご教示いただければと思います。--[[利用者:M-30722|M-30722]] ([[利用者・トーク:M-30722|トーク]]) 2023年12月30日 (土) 12:27 (UTC) :[[:カテゴリ:漢字]]、および[[:カテゴリ:Unicode CJK Unified Ideographs Extension B]]を見ていると、この漢字がaの箇所にあったため修正しようと考えたのですが、その際デフォルトソートに「ang1 ang」と「U+24B83」のどちらを当て振るべきか迷っており、最終的にデフォルトソートをそのままにその2つのカテゴリをU+24B83としてソートしたのですが、24B83の部分を切り取る際に誤って3だけ残ってしまったものだと思います。先ほど修正しました。--[[利用者:Kuroco2k|Kuroco2k]] ([[利用者・トーク:Kuroco2k|トーク]]) 2023年12月30日 (土) 12:45 (UTC) == 鯐のイェール式表記について == [[鯐]]のイェール式が「zau2」とのことですが、イェール式にzは使われていなかったように思うのですが間違いないでしょうか?「zau2」は粤拼で、イェール式では「jau2」となるかと思いますがいかがでしょうか? --[[利用者:M-30722|M-30722]] ([[利用者・トーク:M-30722|トーク]]) 2024年1月23日 (火) 16:42 (UTC) :すっかり失念していました。先ほど修正しました。--[[利用者:Kuroco2k|Kuroco2k]] ([[利用者・トーク:Kuroco2k|トーク]]) 2024年1月23日 (火) 16:47 (UTC) ::早速の対応ありがとうございます。--[[利用者:M-30722|M-30722]] ([[利用者・トーク:Kuroco2k|トーク]]) 2024年1月23日 (火) 16:52 (UTC) ::: Kuroco2kさん、確認しました。有難うございました。ところで上のコメント(16:52分)は私のものではないのですが60.88.85.56さん、私になりすましてのコメントはやめていただけますでしょうか。 --[[利用者:M-30722|M-30722]] ([[利用者・トーク:M-30722|トーク]]) 2024年1月23日 (火) 17:02 (UTC) == 類推簡化字→簡体字?? == 「類推簡化字」はあくまで「類推」であって、偏旁冠脚の簡略化を[[類推]]して適用するとこうなる、という字形です。あなたは、私Charidriが類推簡化字であるとして明確に定義づけた文字を、幾つか「簡体字」に変更しています。たとえば[[&#x2B405;]]の項目ですが、私は[[&#x8ED5;]]に対する類推簡化字であると初版で定義づけました。あなたはこれを簡体字に変更しました。中国語の「簡体字」の項目として、どう説明できますか。ほかも全部同じことがいえますが。それと[[&#x2CB37;]]などは『[[w:中華字海|中華字海]]』に「类推」简化字であると書いてあるのですよ。 拼音の追記についてはありがとうございます。初版でそこまではやってられないので。そして類推簡化字の項目を猛烈に投稿してもらってることについてはたすかります。--[[利用者:Charidri|Charidri]] ([[利用者・トーク:Charidri|トーク]]) 2024年1月27日 (土) 13:56 (UTC) == 情報減▲ == 異体字の項目は、音訓のフォーマットを省略しているだけであって、[[&#x2795E;]]での[https://ja.wiktionary.org/w/index.php?title=%F0%A7%A5%9E&diff=prev&oldid=1860124 編集]のように、わざわざ書いてある情報を削る必要は、ありませんよ。--[[利用者:Charidri|Charidri]] ([[利用者・トーク:Charidri|トーク]]) 2024年1月27日 (土) 13:56 (UTC) [[&#x2795E;]]の発音を戻しておいてくださいよ。--[[利用者:Charidri|Charidri]] ([[利用者・トーク:Charidri|トーク]]) 2025年6月21日 (土) 12:50 (UTC) ==漢字項目のソートキーなどについて== 漢字項目については基本的にソートキーは、日本語の読みです。それ以外をソートキーとすると日本語カテゴリに不具合が生じます。日本語のソートキーに対応できないチュノムや朝鮮の国字、近代中国における造字は各々の言語のソートキーになります。ユニコードがソートキーになっているものは修正途中と考えてください。--[[利用者:Mtodo|Mtodo]] ([[利用者・トーク:Mtodo|トーク]]) 2024年2月2日 (金) 23:36 (UTC) == 込の訓読み == 込のページで「すまいのこのみち」という読みを追加しましたが、それはどの資料に記載されている訓読みでしょうか?--[[利用者:醤油はせうゆ|醤油はせうゆ]] ([[利用者・トーク:醤油はせうゆ|トーク]]) 2024年8月3日 (土) 08:29 (UTC) :米沢蔵書の倭玉篇を参考としています。[https://www.library.yonezawa.yamagata.jp/dg/AA180.html 米沢図書館デジタルライブラリー本]の46ページをご参照ください。--[[利用者:Kuroco2k|Kuroco2k]] ([[利用者・トーク:Kuroco2k|トーク]]) 2024年8月3日 (土) 10:19 (UTC) ==言語の並び順== [[比]]での言語見出しの並び順が現行の合意(一番上が日本語でそれ以降は五十音順、[[Wiktionary:編集室/2018年Q1#言語の排列について]]、[[Wiktionary:編集室/2024年Q1#訳語の並び順]]も参照)とは異なる並びになっておりますが、どのようなルールで並べられておりますか? --[[利用者:M-30722|M-30722]] ([[利用者・トーク:M-30722|トーク]]) 2024年9月26日 (木) 16:31 (UTC) :日本語→中国語→古壮字使用言語(ブイ語→チワン語)→朝鮮語→ベトナム語→タイー語の順で並ばせていたのですが、五十音順であることは存じていませんでした。修正しましたが、[[Special:Permalink/2007617|こちら]]のようでよろしいでしょうか。--[[利用者:Kuroco2k|Kuroco2k]] ([[利用者・トーク:Kuroco2k|トーク]]) 2024年9月27日 (金) 07:22 (UTC) ::はい、これで合意通りです。もし五十音順よりも上記の並びの方が適当であると思われる場合は[[Wiktionary:編集室]]等で提案していただければ例外規定についての検討も可能かもしれません。 --[[利用者:M-30722|M-30722]] ([[利用者・トーク:M-30722|トーク]]) 2024年9月29日 (日) 13:22 (UTC) ==タイー語のソートキーに関する相談== タイー語等の編集ありがとうございます。ただいま[[カテゴリ・トーク:タイー語]]にてタイー語のソートキーの案を募集しておりますので何か良い案があれば提案していただければ幸いです。 --[[利用者:M-30722|M-30722]] ([[利用者・トーク:M-30722|トーク]]) 2024年11月6日 (水) 14:57 (UTC) ==漢字項目に関する議論の紹介== いつも編集ありがとうございます。現在、[[Wiktionary:編集室/2025年Q2#「カテゴリ:漢字」のソートキーのルール]]にて漢字項目のソートキーに関する議論を行っております。漢字項目をよく編集されておりますKuroco2kさんのご意見もうかがえますと幸いです。 --[[利用者:M-30722|M-30722]] ([[利用者・トーク:M-30722|トーク]]) 2025年5月6日 (火) 08:35 (UTC) == 英語の成句の動詞句 == お疲れ様です。先ほど{{l|en|play for time}}を作成されましたが日本語版ウィクショナリーでは動詞句の定形は作成しません({{l|en|reads the room}}、{{l|en|reading the room}}を作成した際に指摘を受けました)。ですので作成されたものは即時削除にし「動詞」ではなく「成句 動詞句」にしてください。--[[利用者:Praqimu|Praqimu]] ([[利用者・トーク:Praqimu|トーク]]) 2025年5月18日 (日) 03:00 (UTC) :それは存じませんでした。現在対応しています。--[[利用者:Kuroco2k|Kuroco2k]] ([[利用者・トーク:Kuroco2k|トーク]]) 2025年5月18日 (日) 03:03 (UTC) ::ご対応ありがとうございます。--[[利用者:Praqimu|Praqimu]] ([[利用者・トーク:Praqimu|トーク]]) 2025年5月18日 (日) 03:10 (UTC) == 漢字 > ベトナム語 or タイー語 == あなた 単漢字項目である字喃(チュノム)とか岱喃(タイノム)の項目の大見出しを、ベトナム語とかタイー語で大見出しを書いていますが、 テンプレート:標準の内容/漢字 に準じた体裁に全部書き直してください。単一の文字の項目は、文字そのものを上位の大見出しに書いて、各言語の節はその下位にぶらさがるようにしてください。この原則は、チュノム等を含む漢字項目のみならず、欧文のアルファベットなどもこうなっています。 そして、これも重要なことですが、単漢字項目は熟語項目とは異なるので、[[テンプレート:vi-DEFAULTSORT]] を使ってしまうと、ページ情報の「既定のソートキー」がクォックグーになってしまい、[[:カテゴリ:漢字]]などで混乱のもとになるので、使わないでください。[[テンプレート:vi-DEFAULTSORT]] に書き換えないでください。--[[利用者:Charidri|Charidri]] ([[利用者・トーク:Charidri|トーク]]) 2025年6月21日 (土) 12:50 (UTC) :横から失礼します。まず前半部分については確かに文字情報と言語情報は分けて書いた方が良いと思います(同意します)。次に後半部分についてですが、「カテゴリ:漢字」については{{temp|kanji header}}や{{temp|漢字}}といったテンプレートを用いるとデフォルトソートの影響を受けず正しい形でソートされますので、テンプレートを使用した場合に限りデフォルトソートを使ったとしても「カテゴリ:漢字」のソートには影響を及ぼさないので、仕様を理解した上でなら{{temp|vi-DEFAULTSORT}}を使用しても問題ないのではと個人的には思います。また、'''{{temp|vi-DEFAULTSORT}}を使用することを禁止する合意は現時点でなされていないので現状デフォルトソートの禁止を強制は出来ない'''と認識しております。 --[[利用者:M-30722|M-30722]] ([[利用者・トーク:M-30722|トーク]]) 2025年7月8日 (火) 15:46 (UTC) == 菩提薩埵のページについて == [[菩提薩埵]]のページにベトナム語の項目を追加していただいたようですが、テンプレートが明らかにエラーを起こしているので対処の方をお願いします。自分では対応できず申し訳ありませんが確認していただけると助かります。--[[利用者:Jiba1219|Jiba1219]] ([[利用者・トーク:Jiba1219|トーク]]) 2025年8月22日 (金) 12:13 (UTC) :{{対処}} 私(「テンプレート:vi-head」の作成者です)が代わりに対処しました。なお、普段登録状況を[[:カテゴリ:テンプレート:vi-sort1にソートキーのデータ未登録]]で追っておりますが現在不具合により登録してもリストから消えなくなっております。その為もしかするとまだ登録漏れのものがある可能性がありますので見つけ次第教えていただけますと対処します。 --[[利用者:M-30722|M-30722]] ([[利用者・トーク:M-30722|トーク]]) 2025年8月22日 (金) 16:14 (UTC) == 上位カテゴリに関する質問 == [[:カテゴリ:四川語 月名]]や[[:カテゴリ:ドンガン語 月名]]の上位カテゴリをナビゲーターでは「〇〇語 名詞」としておりますが、実際に付けられた上位カテゴリの「〇〇語 暦」を辿っていっても「〇〇語 名詞」に辿り着かないのですが「〇〇語 名詞」は本当に「〇〇語 月名」の上位カテゴリなのでしょうか? --[[利用者:M-30722|M-30722]] ([[利用者・トーク:M-30722|トーク]]) 2025年9月25日 (木) 16:25 (UTC) :(これ時代は日本語の同意カテゴリーからコピーしたものですが)たしかにこうせざるとも良いかもしれません。一旦消しておきます。--[[利用者:Kuroco2k|Kuroco2k]] ([[利用者・トーク:Kuroco2k|トーク]]) 2025年9月25日 (木) 22:09 (UTC) ::日本語のカテゴリの構造が問題ありそうですね。昔は名詞を上位カテゴリとする分野カテゴリが複数あったのでその名残が更新されずにきたものと考えられますので更新しておきます。 --[[利用者:M-30722|M-30722]] ([[利用者・トーク:M-30722|トーク]]) 2025年9月26日 (金) 13:35 (UTC) == テンプレート:字典での異体字字典について == 先日{{temp|字典}}に追加された引数vt異体字字典掲載番号について、一つ提案をさせていただきます。異体字字典の中には掲載があり、Unicodeに文字が存在するがこれらの紐付けがされておらず検索してもヒットしない文字があります([[蜗]]に対する[https://dict.variants.moe.edu.tw/dictView.jsp?educode=A03661-002]など)。つきましては、このテンプレートの異体字字典の情報をWikidataの該当文字のP11475(教育部異体字字典識別子)から移入することはできますでしょうか。--[[利用者:TAKA647|TAKA647]] ([[利用者・トーク:TAKA647|トーク]]) 2025年11月13日 (木) 05:33 (UTC) :少し試してみましたが、厳しいように思えます。Wiktionaryというプロジェクトの理念の性質上、Wikidataにつながっていないので、テンプレート単体では難しいと思います(モジュールに書き出せばできるかもしれませんが、その余力があいにくないです)。--[[利用者:Kuroco2k|Kuroco2k]] ([[利用者・トーク:Kuroco2k|トーク]]) 2025年11月13日 (木) 08:15 (UTC) ::返信ありがとうございます。なるほど、厳しいのですね。異体字字典は一つの字形に複数の識別子を結びつけていることもありますが、現在このテンプレートは複数のリンクに対応していないほか、上記の通り検索しても出てこない字形もありますし、一度この引数は導入を見送るのも手だと考えます。--[[利用者:TAKA647|TAKA647]] ([[利用者・トーク:TAKA647|トーク]]) 2025年11月13日 (木) 16:32 (UTC) == テンプレート:vi-hanについて == [[匿]]を編集していただいたようですが、<code><nowiki>{{vi-han}}</nowiki></code>の表示に不具合が生じているようです。私では対応できないため、お手数ですが、ご確認をお願いいたします。--[[利用者:Jpnbcl|Jpnbcl]] ([[利用者・トーク:Jpnbcl|トーク]]) 2025年12月16日 (火) 11:46 (UTC) :前も[[#菩提薩埵のページについて|同じこと]]を言われたので返答はこちらに代えさせていただきますが、ひとまず対処のみ。--[[利用者:Kuroco2k|Kuroco2k]] ([[利用者・トーク:Kuroco2k|トーク]]) 2025年12月16日 (火) 12:04 (UTC) ::ひとまずの対応ありがとうございました。--[[利用者:Jpnbcl|Jpnbcl]] ([[利用者・トーク:Jpnbcl|トーク]]) 2025年12月16日 (火) 12:16 (UTC) == コードについて == いつも加筆および訂正ありがとうございます。編集の参考にさせていただきたいのですが、コード等の情報はどこから入手しているのでしょうか。少し気になったので差し支えなければ出来る範囲でご教示いただけると助かります。[[利用者:なきは|なきは]] ([[利用者・トーク:なきは|トーク]]) 2026年3月15日 (日) 07:35 (UTC) :実に単純な話で、だいたいはUnihanのページ(単字なら{{temp|文字コード}}が自動で出してくれるのでアクセスは容易なはずです)から拾えますし、GB18030は[http://ccamc.org/ 古今文字集成]で拾えます。あとは拾ったソースをフォーマットに沿うように([[利用者:Jpnbcl#メモ|有志の方が一部メモしてある物]]を貼っておきます)書くだけです。--[[利用者:Kuroco2k|<span style="color:#000000">'''雛宮黒狐'''</span>]]([[利用者‐会話:Kuroco2k|<span style="color:#5a00cc">Talk</span>]]) 2026年3月15日 (日) 08:09 (UTC) ::ありがとうございます。[[利用者:なきは|なきは]] ([[利用者・トーク:なきは|トーク]]) 2026年3月15日 (日) 09:26 (UTC) ==ベトナム語の漢字語について== いつも編集お疲れ様です。[[giữa trời]]や[[dưa hấu]]で「[[:カテゴリ:ベトナム語 漢字語]]」の付与を見送られているかと思いますが、当カテゴリは現在チュノムも付与の対象に含まれております。従いまして付与を見送った理由を教えていただけますと幸いです。 --[[利用者:M-30722|M-30722]] ([[利用者・トーク:M-30722|トーク]]) 2026年3月16日 (月) 13:03 (UTC) :おっと、失礼しました。単純に見落としです。--[[利用者:Kuroco2k|<span style="color:#000000">'''雛宮黒狐'''</span>]]([[利用者‐会話:Kuroco2k|<span style="color:#5a00cc">Talk</span>]]) 2026年3月16日 (月) 13:08 (UTC) ::承知しました。ちなみに、先日朝鮮語用のテンプレートで漢字表記の出力をしながら漢字語カテゴリの付与を自動で行える{{temp|ko-h}}を作成したのですが、これのベトナム語バージョンを作ろうかどうか検討しております。自動出力にすれば漢字語カテゴリ付与の手間も減らせて便利になるかと思いますがいかがでしょうか?--[[利用者:M-30722|M-30722]] ([[利用者・トーク:M-30722|トーク]]) 2026年3月16日 (月) 13:12 (UTC) :::アイデアそのものは悪くないでしょうが、漢語由来の熟語はともかくとして、それ以外の二字熟語に複数表記がある場合が多く、作っても相当やりづらいものになることが予想されます。朝鮮語ですら「並/竝」の二通りがある場合悩みどころですが、ベトナム語はそれ以上です。--[[利用者:Kuroco2k|<span style="color:#000000">'''雛宮黒狐'''</span>]]([[利用者‐会話:Kuroco2k|<span style="color:#5a00cc">Talk</span>]]) 2026年3月16日 (月) 13:16 (UTC) ::::他の方からも意見がありましたので一応朝鮮語とほぼ同仕様の{{temp|vi-h}}を作成してみましたが、ベトナム語に合わせた仕様にできればと考えております。なお、朝鮮語の場合は例えば[[정화]]では<nowiki>{{ko-h|精|華}}{{ko-h|菁|華|alt=y}}</nowiki>とすることで「精華」「菁華」両方の表記を表示できる仕様となっております。--[[利用者:M-30722|M-30722]] ([[利用者・トーク:M-30722|トーク]]) 2026年3月16日 (月) 13:22 (UTC) == [[特別:携帯機器差分/2217397]] == お疲れ様です。こちらの要約欄が気になりまして、アルメニア語の発音テンプレートであるテンプレート:hy-IPAですが新たにモジュール:hy-IPAを作成して使えるようにしましたのでお使いください。--[[利用者:Praqimu|Praqimu]] ([[利用者・トーク:Praqimu|トーク]]) 2026年4月15日 (水) 17:25 (UTC) :助かりました。下手にあれこれ変えてエラーを起こすわけにもいきませんので...--[[利用者:Kuroco2k|<span style="color:#000000">'''雛宮黒狐'''</span>]]([[利用者‐会話:Kuroco2k|<span style="color:#5a00cc">Talk</span>]]) 2026年4月16日 (木) 08:15 (UTC) == 漢字ページ作りについて == テンプレート:kanjiを入れたときの部首や総画の表示やテンプレートja-kanji(表外漢字の場合)の下の読みの表示などの方法を教えてほしいです--[[利用者:R914|R914]] ([[利用者・トーク:R914|トーク]]) 2026年5月24日 (日) 07:57 (UTC) == 訂正について。 == 色々欠けているところをフォローしてくれてありがとうございます m(_ _)m。 自分はウィクショナリーでまだまだ未熟なので訂正はありがたいです。--[[利用者:Shishinó Mígami|Shishinó Mígami]] ([[利用者・トーク:Shishinó Mígami|トーク]]) 2026年7月3日 (金) 10:13 (UTC) == 異体字セレクタ字の項 == 「[[冉󠄁]]」「[[僊󠄁]]」の二字の内容を変更してくれたみたいなので質問なのですが、このような異体字に関しては字源や日本語その他言語などの項目は必要ないのですか?また「「僊」に異体字セレクタのU+E0101を指定した字形。」と意義欄に書かれていますがこれはどちらかと言うと字源欄に書くべきではないでしょうか。(「[[冉󠄁]]」も同様)--[[利用者:Keikei kanji|Keikei kanji]] ([[利用者・トーク:Keikei kanji|トーク]]) 2026年8月8日 (土) 12:32 (UTC) :*異体字に詳細な字源・言語情報はいらない? :**>あってもなくても...です。「親項目見ればわかるでしょ?」という人は略します。字源はちょっと話が違いますが(明らかに当用のものとは異とするとか、ある字の原字なら書かざるを得ないでしょう)。 :*「『○』の...」はそこに書く必要ある? :**>異体字関係を意義に書いてるようなことです。やむなく意義を充足させてるにすぎません。なによりそれを字源に書くのは情報技術の外では本質的じゃないです。 :--[[利用者:Kuroco2k|<span style="color:#000000">'''雛宮黒狐'''</span>]]([[利用者‐会話:Kuroco2k|<span style="color:#5a00cc">Talk</span>]]) 2026年8月8日 (土) 12:51 (UTC) kxec1qypuq3hxsxw0e1zwzecpr5y7pz テンプレート:cmn-pron 10 486426 2313355 2159535 2026-08-09T04:20:41Z Jiba1219 100610 引数2とzが同時に指定された場合は台湾国語のセクションを非表示にし、大陸普通話のみ表示するように改修 2313355 wikitext text/x-wiki <includeonly> *官話:<!-- -->{{#if:{{{1|}}}|**{{#if:{{{2|}}}|大陸普通話|標準中国語}}: *:[[w:拼音|拼音]]: {{#ifeq:{{{h|}}}|y|[[{{{1}}}]]|{{{1}}}}}<!-- -->{{#if:{{{2|}}}||{{#ifeq:{{{z|}}}|n||*:[[w:注音符号|注音符号]]: {{#invoke:cmn-pron|py_zhuyin|{{{1}}}}}}}}} *:[[w:ウェード式|ウェード式]]: {{#invoke:cmn-pron|py_wg|{{{1|}}}}} *:{{IPA|lang=zh|{{#invoke:cmn-pron|py_ipa|{{{1}}}}}|sort={{#invoke:cmn-pron|py_sort|{{{1}}}}}}}<!-- -->{{#if:{{{a|}}}|*:{{音声|zh|{{#ifeq:{{{a|}}}|y|Zh-{{{1}}}.ogg|{{{a}}}}}}}}}<!-- -->{{#if:{{{a2|}}}|*:{{音声|zh|{{{a2}}}}}}}<!-- -->{{#ifeq:{{{er|}}}|y|<!-- -->**大陸普通話([[w:児化|児化]]): *:[[児化詞]]: {{#ifeq:{{{z|}}}|n|[[{{PAGENAME}}儿]]|[[{{PAGENAME}}兒]]}} *:[[w:拼音|拼音]]: {{{1}}}r<!-- -->{{#if:{{{2|}}}||{{#ifeq:{{{z|}}}|n||*:[[w:注音符号|注音符号]]: {{#invoke:cmn-pron|py_zhuyin|{{{1}}}r}}}}}} *:[[w:ウェード式|ウェード式]]: {{#invoke:cmn-pron|py_wg|{{{1}}}r}} *:{{IPA|lang=zh|{{#invoke:cmn-pron|py_ipa|{{{1}}}r}}|sort={{#invoke:cmn-pron|py_sort|{{{1}}}}}}}<!-- -->[[カテゴリ:{{zh}} 児化|{{#invoke:cmn-pron|py_sort|{{{1}}}}}]]|}}<!-- -->{{#if:{{{2|}}}|{{#if:{{{z|}}}||<!-- -->**[[w:台湾国語|台湾国語]]: *:[[w:拼音|拼音]]: {{{2|}}} *:[[w:注音符号|注音符号]]: {{#invoke:cmn-pron|py_zhuyin|{{{2|}}}}} *:[[w:ウェード式|ウェード式]]: {{#invoke:cmn-pron|py_wg|{{{2|}}}}} *:[[w:国語ローマ字|国語ローマ字]]: {{#invoke:cmn-pron|py_gwoyeu|{{{2|}}}}} *:[[w:通用拼音|通用拼音]]: {{#invoke:cmn-pron|py_tongyong|{{{2|}}}}} *:{{IPA|lang=zh|{{#invoke:cmn-pron|py_ipa|{{{2|}}}}}|sort={{#invoke:cmn-pron|py_sort|{{{1}}}}}}}<!-- -->[[カテゴリ:{{zh}}_両岸で発音の異なる語|{{#invoke:cmn-pron|py_sort|{{{1}}}}}]]}}}}}}<!-- -->{{#if:{{{s|}}}|<!-- -->**{{zhx-sic}}: *:[[w:zh:四川話拼音|四川拼音]]: {{#invoke:zhx-sic-pron|rom|{{{s}}}}}<!-- -->{{#if:{{#invoke:zhx-sic-pron|convert2|{{{s}}}}}| *:[[w:zh:四川话拉丁化新文字|ラテン化新文字]]: {{#invoke:zhx-sic-pron|convert2|{{{s}}}}}}} *:{{IPA|{{#invoke:zhx-sic-pron|convert|{{{s}}}|IPA}}|lang=zhx-sic|sort={{#invoke:zhx-sic-pron|sort|{{{s}}}}}}}}}<!-- -->{{#if:{{{1|}}}|{{#if:{{{x|}}}|<!-- -->**関中語: *:[[:en:Wiktionary:About Chinese/Xi'an|関中拼音]]: {{{x}}} *:{{IPA|{{#invoke:cmn-pron-xian|ipa|{{{x}}}}}|lang=zh|sort={{#invoke:cmn-pron|py_sort|{{{1}}}}}}}}}<!-- -->{{#if:{{{nj|}}}|<!-- -->**南京語: *:[[:en:Wiktionary:About Chinese/Nanjing|南京拼音]]: {{{nj}}} *:{{IPA|{{#invoke:cmn-pron-nanjing|ipa|{{{nj}}}}}|lang=zh|sort={{#invoke:cmn-pron|py_sort|{{{1}}}}}}}}}}}<!-- -->{{#if:{{{dg|}}}| **{{dng}}: *:[[w:キリル文字|キリル文字]]: {{#invoke:dng-pron|process|{{{dg}}}}} *:{{IPA|{{#invoke:dng-pron|convert|{{{dg}}}|IPA}}|lang=dng|sort={{#invoke:dng-pron|sort|{{{dg}}}}}}}}}<!-- --></includeonly><!-- --><noinclude>[[カテゴリ:{{zh}}_発音テンプレート|cmnpron]]{{documentation}}</noinclude> j2i7ywo9kp8nkfgf1xa3xvih8inanos 利用者:Kuroco2k 2 489345 2313401 2307220 2026-08-09T08:05:58Z Kuroco2k 84207 /* テスト */ 2313401 wikitext text/x-wiki '''Kuroco2k'''(雛宮黒狐ともいう)といいます。基本中立。議論が下手だから。 ==最近思うこと== #新規項目よりも既存項目の充実が大事であり、それが一段落するまで濫造に走ってはいけない。 ==配下ページ== *[[/二簡字]](未完) *[[/朝鮮語基本語彙表]](今作ってある分の赤リンクを作り終えたら続編も作る) ==Todo== #(進行中)漢検範囲内の訓立項 #(進行中)漢字項目のメンテナンス、異体字整理 #(進行中)漢字項目の立項 #(進行中)西夏文字項目の立項 ==独り言== #閩東語、閩北語にある「ṳ」などの文字たち。 #*ソート順に迷います。暫定的にはṳにy、e̤にoeを割り振ってます。将来的に提案できたらと思いますが、まだ実用的な段階に踏めてません。例えば、「[[用]]」の閩東語のソートはこれなら「oeyng6」になります。 #[[Template:kanji variants]]を使用してみたけど、ちょっとこの辺に困るなというところ: #*Unicode順に整列されてしまうので、意図した並びが崩れてしまう #*同じ文字を複数入れると反映されない(語義の違いとかで入れることがあるので...) #シソーラスの名前空間 #*多分現状だと記事にカウントされているので、別の名前空間として扱いたい。 ==リンク集(メモ)== *[https://hongkongvision.com/tool/cc_py_conv_zh 漢字→廣東話/粵語拼音轉換工具] **広東語のイェール式に変換してくれる。'''zi.toolsは粤拼'''。 *[https://www.wugniu.com/ 吳語學堂] **いわゆる呉拼というやつ。上海語は下記のでいいですが、方言とかを記述するときにない時が多いので使っている。英語版の標準表記。 *[https://wu-chinese.com/minidict/ 吴音小字典] **日本語版で、呉語の標準表記に使用される(主に上海語で)。 *[https://www.ydict.net/ 榕典] **閩東語方言に使っている。 *[[特別:特別ページ一覧]] **メモ用 *[[利用者:Naggy Nagumo/他言語版にあって日本語版にない項目]] **タスクリスト ==テスト== {{number box|hu|0}} ==リスト一覧== {{rel-top|中国語}} {| class="wikitable" style="text-align: center" |- ! 声調番号 !! 声調名 !! 白話字(aを例として) !! 声調値(台北) !! 声調値(台南) |- | 1 || 陰平 || a || 55 || 44 |- | 2 (6) || 陰上 || á || 51 || 53 |- | 3 || 陰去 || à || 31 || 11 |- | 4 || 陰入 || ap/at/ak/ah || 32 || 21 |- | 5 || 陽平 || â || 14 || 25 |- | 7 || 陽去 || ā || 33 || 22 |- | 8 || 陽入 || a̍p/a̍t/a̍k/a̍h || 4 || 5 |} {|class=wikitable border=1 style="text-align: left;" ! 声調名 ! 白話字(aを例として) ! 声調値(苗栗腔) ! 声調値(新竹腔) |- |陰平 |â |24 |53 |- |陽平 |à |11 |55 |- |上声 |á |31 |24 |- |陰去 |a |rowspan="2"|55 |11 |- |陽去 |å |33 |- |陰入 |ap/at/ak |2 |5 |- |陽入 |a̍p/a̍t/a̍k |5 |2 |- |} ([[:w:白話字]]より、要所だけ) {| class="wikitable" style="text-align:center;" | bgcolor="#ABCDEF" |'''名称''' | bgcolor="#ABCDEF" |'''声調番号''' | bgcolor="#ABCDEF" |'''符号''' | bgcolor="#ABCDEF" |'''例''' |- | 上平 | 55 | ◌̆ | 君 '''Gŭng''' |- | 上聲 | 33 | ◌̄ | 滾 '''Gūng''' |- | 上去 | 213 | ◌́ | 貢 '''Góng''' |- | 上入 | <u>24</u> | ◌́ | 谷 '''Gók''' |- | 下平 | 53 | ◌̀ | 群 '''Gùng''' |- | 下去 | 242 | ◌̂ | 郡 '''Gông''' |- | 下入 | 5 | ◌̆ | 掘 '''Gŭk''' |} ([[:w:en:Bàng-uâ-cê]]より、要所だけ) {| class="wikitable" |+ KCRにおける声調符号 |- !番号 |1 |2 |3 |4 |5 |6 |7 |- !声調タイプ |陰平 |陽平 |上聲 |陰去 |陽去 |陰入 |陽入 |- !KCRにおける符号 | <span style="font-size:190%;">ˊ</span> ({{lang|mnp|á}}) | <span style="font-size:190%;">ˆ</span> ({{lang|mnp|â}}) | <span style="font-size:190%;">ˇ</span> ({{lang|mnp|ǎ}}) | <span style="font-size:190%;"> ̿</span> ({{lang|mnp|a̿}}) | <span style="font-size:190%;">ˉ</span> ({{lang|mnp|ā}}) | <span style="font-size:190%;">˘</span> ({{lang|mnp|ă}}) | <span style="font-size:190%;">ˋ</span> ({{lang|mnp|à}}) |- |} ([[:w:en:Kienning Colloquial Romanized]]より、要所だけ) {{rel-bottom}} :{| class="wikitable" style="width:80%; text-align:center" |- !呉拼!!声調番号 (Wikt)!!声調名!!調値!!方言大詞典調値 |- !1!!1!!陰平 |{{IPAfont|˥˧}} 53|| 陰平 ({{IPAfont|˥˧}} 53) |- !5!!2!!陰去 |{{IPAfont|˧˦}} 34|| 陰去 ({{IPAfont|˧˥}} 35)<br>陰上 ({{IPAfont|˥}} 55) |- !6!!3!!陽去 |{{IPAfont|˨˧}} 23|| 陽舒 ({{IPAfont|˩˧}} 13) |- !7!!4!!陰入 |{{IPAfont|˥ʔ}} <u>55</u>||陰入 ({{IPAfont|˥ʔ}} <u>55</u>) |- !8!!5!!陽入 |{{IPAfont|˩˨ʔ}} <u>12</u>|| 陽入 ({{IPAfont|˩˧ʔ}} <u>13</u>) |} {|class="wikitable" style="text-align:center;" |- |声調||陰平||陽平||上聲||陰去||陽去||陰入||陽入||長入 |- |声調番号||1||2||3||4||5||6||7||8 |- |調値||˨˦ (24)||˨˩ (21)||˨˩˩ (211)||˧˥ (35)||˧ (33)||˥ (5)||˧ (3)||˥ (55) |- |方言大詞典調値||24||21||213||35||33||5||3||55 |} なお、ここでいう長入とは、入声であるが、白読によって、第6声とみなされないものをいう。 9unftln9p0dk3myyzlqyy7x524kqizj 2313405 2313401 2026-08-09T08:56:54Z Kuroco2k 84207 /* テスト */ 2313405 wikitext text/x-wiki '''Kuroco2k'''(雛宮黒狐ともいう)といいます。基本中立。議論が下手だから。 ==最近思うこと== #新規項目よりも既存項目の充実が大事であり、それが一段落するまで濫造に走ってはいけない。 ==配下ページ== *[[/二簡字]](未完) *[[/朝鮮語基本語彙表]](今作ってある分の赤リンクを作り終えたら続編も作る) ==Todo== #(進行中)漢検範囲内の訓立項 #(進行中)漢字項目のメンテナンス、異体字整理 #(進行中)漢字項目の立項 #(進行中)西夏文字項目の立項 ==独り言== #閩東語、閩北語にある「ṳ」などの文字たち。 #*ソート順に迷います。暫定的にはṳにy、e̤にoeを割り振ってます。将来的に提案できたらと思いますが、まだ実用的な段階に踏めてません。例えば、「[[用]]」の閩東語のソートはこれなら「oeyng6」になります。 #[[Template:kanji variants]]を使用してみたけど、ちょっとこの辺に困るなというところ: #*Unicode順に整列されてしまうので、意図した並びが崩れてしまう #*同じ文字を複数入れると反映されない(語義の違いとかで入れることがあるので...) #シソーラスの名前空間 #*多分現状だと記事にカウントされているので、別の名前空間として扱いたい。 ==リンク集(メモ)== *[https://hongkongvision.com/tool/cc_py_conv_zh 漢字→廣東話/粵語拼音轉換工具] **広東語のイェール式に変換してくれる。'''zi.toolsは粤拼'''。 *[https://www.wugniu.com/ 吳語學堂] **いわゆる呉拼というやつ。上海語は下記のでいいですが、方言とかを記述するときにない時が多いので使っている。英語版の標準表記。 *[https://wu-chinese.com/minidict/ 吴音小字典] **日本語版で、呉語の標準表記に使用される(主に上海語で)。 *[https://www.ydict.net/ 榕典] **閩東語方言に使っている。 *[[特別:特別ページ一覧]] **メモ用 *[[利用者:Naggy Nagumo/他言語版にあって日本語版にない項目]] **タスクリスト ==テスト== {{ca-conj|cantar}} {{ca-conj|pagar}} {{ca-conj|distribuir}} ==リスト一覧== {{rel-top|中国語}} {| class="wikitable" style="text-align: center" |- ! 声調番号 !! 声調名 !! 白話字(aを例として) !! 声調値(台北) !! 声調値(台南) |- | 1 || 陰平 || a || 55 || 44 |- | 2 (6) || 陰上 || á || 51 || 53 |- | 3 || 陰去 || à || 31 || 11 |- | 4 || 陰入 || ap/at/ak/ah || 32 || 21 |- | 5 || 陽平 || â || 14 || 25 |- | 7 || 陽去 || ā || 33 || 22 |- | 8 || 陽入 || a̍p/a̍t/a̍k/a̍h || 4 || 5 |} {|class=wikitable border=1 style="text-align: left;" ! 声調名 ! 白話字(aを例として) ! 声調値(苗栗腔) ! 声調値(新竹腔) |- |陰平 |â |24 |53 |- |陽平 |à |11 |55 |- |上声 |á |31 |24 |- |陰去 |a |rowspan="2"|55 |11 |- |陽去 |å |33 |- |陰入 |ap/at/ak |2 |5 |- |陽入 |a̍p/a̍t/a̍k |5 |2 |- |} ([[:w:白話字]]より、要所だけ) {| class="wikitable" style="text-align:center;" | bgcolor="#ABCDEF" |'''名称''' | bgcolor="#ABCDEF" |'''声調番号''' | bgcolor="#ABCDEF" |'''符号''' | bgcolor="#ABCDEF" |'''例''' |- | 上平 | 55 | ◌̆ | 君 '''Gŭng''' |- | 上聲 | 33 | ◌̄ | 滾 '''Gūng''' |- | 上去 | 213 | ◌́ | 貢 '''Góng''' |- | 上入 | <u>24</u> | ◌́ | 谷 '''Gók''' |- | 下平 | 53 | ◌̀ | 群 '''Gùng''' |- | 下去 | 242 | ◌̂ | 郡 '''Gông''' |- | 下入 | 5 | ◌̆ | 掘 '''Gŭk''' |} ([[:w:en:Bàng-uâ-cê]]より、要所だけ) {| class="wikitable" |+ KCRにおける声調符号 |- !番号 |1 |2 |3 |4 |5 |6 |7 |- !声調タイプ |陰平 |陽平 |上聲 |陰去 |陽去 |陰入 |陽入 |- !KCRにおける符号 | <span style="font-size:190%;">ˊ</span> ({{lang|mnp|á}}) | <span style="font-size:190%;">ˆ</span> ({{lang|mnp|â}}) | <span style="font-size:190%;">ˇ</span> ({{lang|mnp|ǎ}}) | <span style="font-size:190%;"> ̿</span> ({{lang|mnp|a̿}}) | <span style="font-size:190%;">ˉ</span> ({{lang|mnp|ā}}) | <span style="font-size:190%;">˘</span> ({{lang|mnp|ă}}) | <span style="font-size:190%;">ˋ</span> ({{lang|mnp|à}}) |- |} ([[:w:en:Kienning Colloquial Romanized]]より、要所だけ) {{rel-bottom}} :{| class="wikitable" style="width:80%; text-align:center" |- !呉拼!!声調番号 (Wikt)!!声調名!!調値!!方言大詞典調値 |- !1!!1!!陰平 |{{IPAfont|˥˧}} 53|| 陰平 ({{IPAfont|˥˧}} 53) |- !5!!2!!陰去 |{{IPAfont|˧˦}} 34|| 陰去 ({{IPAfont|˧˥}} 35)<br>陰上 ({{IPAfont|˥}} 55) |- !6!!3!!陽去 |{{IPAfont|˨˧}} 23|| 陽舒 ({{IPAfont|˩˧}} 13) |- !7!!4!!陰入 |{{IPAfont|˥ʔ}} <u>55</u>||陰入 ({{IPAfont|˥ʔ}} <u>55</u>) |- !8!!5!!陽入 |{{IPAfont|˩˨ʔ}} <u>12</u>|| 陽入 ({{IPAfont|˩˧ʔ}} <u>13</u>) |} {|class="wikitable" style="text-align:center;" |- |声調||陰平||陽平||上聲||陰去||陽去||陰入||陽入||長入 |- |声調番号||1||2||3||4||5||6||7||8 |- |調値||˨˦ (24)||˨˩ (21)||˨˩˩ (211)||˧˥ (35)||˧ (33)||˥ (5)||˧ (3)||˥ (55) |- |方言大詞典調値||24||21||213||35||33||5||3||55 |} なお、ここでいう長入とは、入声であるが、白読によって、第6声とみなされないものをいう。 chwp8lk1abh4pawkxx6yo2bb8lt8e1z 2313406 2313405 2026-08-09T08:57:35Z Kuroco2k 84207 /* テスト */ 2313406 wikitext text/x-wiki '''Kuroco2k'''(雛宮黒狐ともいう)といいます。基本中立。議論が下手だから。 ==最近思うこと== #新規項目よりも既存項目の充実が大事であり、それが一段落するまで濫造に走ってはいけない。 ==配下ページ== *[[/二簡字]](未完) *[[/朝鮮語基本語彙表]](今作ってある分の赤リンクを作り終えたら続編も作る) ==Todo== #(進行中)漢検範囲内の訓立項 #(進行中)漢字項目のメンテナンス、異体字整理 #(進行中)漢字項目の立項 #(進行中)西夏文字項目の立項 ==独り言== #閩東語、閩北語にある「ṳ」などの文字たち。 #*ソート順に迷います。暫定的にはṳにy、e̤にoeを割り振ってます。将来的に提案できたらと思いますが、まだ実用的な段階に踏めてません。例えば、「[[用]]」の閩東語のソートはこれなら「oeyng6」になります。 #[[Template:kanji variants]]を使用してみたけど、ちょっとこの辺に困るなというところ: #*Unicode順に整列されてしまうので、意図した並びが崩れてしまう #*同じ文字を複数入れると反映されない(語義の違いとかで入れることがあるので...) #シソーラスの名前空間 #*多分現状だと記事にカウントされているので、別の名前空間として扱いたい。 ==リンク集(メモ)== *[https://hongkongvision.com/tool/cc_py_conv_zh 漢字→廣東話/粵語拼音轉換工具] **広東語のイェール式に変換してくれる。'''zi.toolsは粤拼'''。 *[https://www.wugniu.com/ 吳語學堂] **いわゆる呉拼というやつ。上海語は下記のでいいですが、方言とかを記述するときにない時が多いので使っている。英語版の標準表記。 *[https://wu-chinese.com/minidict/ 吴音小字典] **日本語版で、呉語の標準表記に使用される(主に上海語で)。 *[https://www.ydict.net/ 榕典] **閩東語方言に使っている。 *[[特別:特別ページ一覧]] **メモ用 *[[利用者:Naggy Nagumo/他言語版にあって日本語版にない項目]] **タスクリスト ==テスト== {{利用者:Kuroco2k/テンプレート:ca-conj|cantar}} {{利用者:Kuroco2k/テンプレート:ca-conj|pagar}} {{利用者:Kuroco2k/テンプレート:ca-conj|distribuir}} ==リスト一覧== {{rel-top|中国語}} {| class="wikitable" style="text-align: center" |- ! 声調番号 !! 声調名 !! 白話字(aを例として) !! 声調値(台北) !! 声調値(台南) |- | 1 || 陰平 || a || 55 || 44 |- | 2 (6) || 陰上 || á || 51 || 53 |- | 3 || 陰去 || à || 31 || 11 |- | 4 || 陰入 || ap/at/ak/ah || 32 || 21 |- | 5 || 陽平 || â || 14 || 25 |- | 7 || 陽去 || ā || 33 || 22 |- | 8 || 陽入 || a̍p/a̍t/a̍k/a̍h || 4 || 5 |} {|class=wikitable border=1 style="text-align: left;" ! 声調名 ! 白話字(aを例として) ! 声調値(苗栗腔) ! 声調値(新竹腔) |- |陰平 |â |24 |53 |- |陽平 |à |11 |55 |- |上声 |á |31 |24 |- |陰去 |a |rowspan="2"|55 |11 |- |陽去 |å |33 |- |陰入 |ap/at/ak |2 |5 |- |陽入 |a̍p/a̍t/a̍k |5 |2 |- |} ([[:w:白話字]]より、要所だけ) {| class="wikitable" style="text-align:center;" | bgcolor="#ABCDEF" |'''名称''' | bgcolor="#ABCDEF" |'''声調番号''' | bgcolor="#ABCDEF" |'''符号''' | bgcolor="#ABCDEF" |'''例''' |- | 上平 | 55 | ◌̆ | 君 '''Gŭng''' |- | 上聲 | 33 | ◌̄ | 滾 '''Gūng''' |- | 上去 | 213 | ◌́ | 貢 '''Góng''' |- | 上入 | <u>24</u> | ◌́ | 谷 '''Gók''' |- | 下平 | 53 | ◌̀ | 群 '''Gùng''' |- | 下去 | 242 | ◌̂ | 郡 '''Gông''' |- | 下入 | 5 | ◌̆ | 掘 '''Gŭk''' |} ([[:w:en:Bàng-uâ-cê]]より、要所だけ) {| class="wikitable" |+ KCRにおける声調符号 |- !番号 |1 |2 |3 |4 |5 |6 |7 |- !声調タイプ |陰平 |陽平 |上聲 |陰去 |陽去 |陰入 |陽入 |- !KCRにおける符号 | <span style="font-size:190%;">ˊ</span> ({{lang|mnp|á}}) | <span style="font-size:190%;">ˆ</span> ({{lang|mnp|â}}) | <span style="font-size:190%;">ˇ</span> ({{lang|mnp|ǎ}}) | <span style="font-size:190%;"> ̿</span> ({{lang|mnp|a̿}}) | <span style="font-size:190%;">ˉ</span> ({{lang|mnp|ā}}) | <span style="font-size:190%;">˘</span> ({{lang|mnp|ă}}) | <span style="font-size:190%;">ˋ</span> ({{lang|mnp|à}}) |- |} ([[:w:en:Kienning Colloquial Romanized]]より、要所だけ) {{rel-bottom}} :{| class="wikitable" style="width:80%; text-align:center" |- !呉拼!!声調番号 (Wikt)!!声調名!!調値!!方言大詞典調値 |- !1!!1!!陰平 |{{IPAfont|˥˧}} 53|| 陰平 ({{IPAfont|˥˧}} 53) |- !5!!2!!陰去 |{{IPAfont|˧˦}} 34|| 陰去 ({{IPAfont|˧˥}} 35)<br>陰上 ({{IPAfont|˥}} 55) |- !6!!3!!陽去 |{{IPAfont|˨˧}} 23|| 陽舒 ({{IPAfont|˩˧}} 13) |- !7!!4!!陰入 |{{IPAfont|˥ʔ}} <u>55</u>||陰入 ({{IPAfont|˥ʔ}} <u>55</u>) |- !8!!5!!陽入 |{{IPAfont|˩˨ʔ}} <u>12</u>|| 陽入 ({{IPAfont|˩˧ʔ}} <u>13</u>) |} {|class="wikitable" style="text-align:center;" |- |声調||陰平||陽平||上聲||陰去||陽去||陰入||陽入||長入 |- |声調番号||1||2||3||4||5||6||7||8 |- |調値||˨˦ (24)||˨˩ (21)||˨˩˩ (211)||˧˥ (35)||˧ (33)||˥ (5)||˧ (3)||˥ (55) |- |方言大詞典調値||24||21||213||35||33||5||3||55 |} なお、ここでいう長入とは、入声であるが、白読によって、第6声とみなされないものをいう。 0v08t9fmm7cz5cfomldn1yx4xvuehy5 2313437 2313406 2026-08-09T10:22:02Z Kuroco2k 84207 /* テスト */ 2313437 wikitext text/x-wiki '''Kuroco2k'''(雛宮黒狐ともいう)といいます。基本中立。議論が下手だから。 ==最近思うこと== #新規項目よりも既存項目の充実が大事であり、それが一段落するまで濫造に走ってはいけない。 ==配下ページ== *[[/二簡字]](未完) *[[/朝鮮語基本語彙表]](今作ってある分の赤リンクを作り終えたら続編も作る) ==Todo== #(進行中)漢検範囲内の訓立項 #(進行中)漢字項目のメンテナンス、異体字整理 #(進行中)漢字項目の立項 #(進行中)西夏文字項目の立項 ==独り言== #閩東語、閩北語にある「ṳ」などの文字たち。 #*ソート順に迷います。暫定的にはṳにy、e̤にoeを割り振ってます。将来的に提案できたらと思いますが、まだ実用的な段階に踏めてません。例えば、「[[用]]」の閩東語のソートはこれなら「oeyng6」になります。 #[[Template:kanji variants]]を使用してみたけど、ちょっとこの辺に困るなというところ: #*Unicode順に整列されてしまうので、意図した並びが崩れてしまう #*同じ文字を複数入れると反映されない(語義の違いとかで入れることがあるので...) #シソーラスの名前空間 #*多分現状だと記事にカウントされているので、別の名前空間として扱いたい。 ==リンク集(メモ)== *[https://hongkongvision.com/tool/cc_py_conv_zh 漢字→廣東話/粵語拼音轉換工具] **広東語のイェール式に変換してくれる。'''zi.toolsは粤拼'''。 *[https://www.wugniu.com/ 吳語學堂] **いわゆる呉拼というやつ。上海語は下記のでいいですが、方言とかを記述するときにない時が多いので使っている。英語版の標準表記。 *[https://wu-chinese.com/minidict/ 吴音小字典] **日本語版で、呉語の標準表記に使用される(主に上海語で)。 *[https://www.ydict.net/ 榕典] **閩東語方言に使っている。 *[[特別:特別ページ一覧]] **メモ用 *[[利用者:Naggy Nagumo/他言語版にあって日本語版にない項目]] **タスクリスト ==テスト== {{lt-pr|nãmas}} ==リスト一覧== {{rel-top|中国語}} {| class="wikitable" style="text-align: center" |- ! 声調番号 !! 声調名 !! 白話字(aを例として) !! 声調値(台北) !! 声調値(台南) |- | 1 || 陰平 || a || 55 || 44 |- | 2 (6) || 陰上 || á || 51 || 53 |- | 3 || 陰去 || à || 31 || 11 |- | 4 || 陰入 || ap/at/ak/ah || 32 || 21 |- | 5 || 陽平 || â || 14 || 25 |- | 7 || 陽去 || ā || 33 || 22 |- | 8 || 陽入 || a̍p/a̍t/a̍k/a̍h || 4 || 5 |} {|class=wikitable border=1 style="text-align: left;" ! 声調名 ! 白話字(aを例として) ! 声調値(苗栗腔) ! 声調値(新竹腔) |- |陰平 |â |24 |53 |- |陽平 |à |11 |55 |- |上声 |á |31 |24 |- |陰去 |a |rowspan="2"|55 |11 |- |陽去 |å |33 |- |陰入 |ap/at/ak |2 |5 |- |陽入 |a̍p/a̍t/a̍k |5 |2 |- |} ([[:w:白話字]]より、要所だけ) {| class="wikitable" style="text-align:center;" | bgcolor="#ABCDEF" |'''名称''' | bgcolor="#ABCDEF" |'''声調番号''' | bgcolor="#ABCDEF" |'''符号''' | bgcolor="#ABCDEF" |'''例''' |- | 上平 | 55 | ◌̆ | 君 '''Gŭng''' |- | 上聲 | 33 | ◌̄ | 滾 '''Gūng''' |- | 上去 | 213 | ◌́ | 貢 '''Góng''' |- | 上入 | <u>24</u> | ◌́ | 谷 '''Gók''' |- | 下平 | 53 | ◌̀ | 群 '''Gùng''' |- | 下去 | 242 | ◌̂ | 郡 '''Gông''' |- | 下入 | 5 | ◌̆ | 掘 '''Gŭk''' |} ([[:w:en:Bàng-uâ-cê]]より、要所だけ) {| class="wikitable" |+ KCRにおける声調符号 |- !番号 |1 |2 |3 |4 |5 |6 |7 |- !声調タイプ |陰平 |陽平 |上聲 |陰去 |陽去 |陰入 |陽入 |- !KCRにおける符号 | <span style="font-size:190%;">ˊ</span> ({{lang|mnp|á}}) | <span style="font-size:190%;">ˆ</span> ({{lang|mnp|â}}) | <span style="font-size:190%;">ˇ</span> ({{lang|mnp|ǎ}}) | <span style="font-size:190%;"> ̿</span> ({{lang|mnp|a̿}}) | <span style="font-size:190%;">ˉ</span> ({{lang|mnp|ā}}) | <span style="font-size:190%;">˘</span> ({{lang|mnp|ă}}) | <span style="font-size:190%;">ˋ</span> ({{lang|mnp|à}}) |- |} ([[:w:en:Kienning Colloquial Romanized]]より、要所だけ) {{rel-bottom}} :{| class="wikitable" style="width:80%; text-align:center" |- !呉拼!!声調番号 (Wikt)!!声調名!!調値!!方言大詞典調値 |- !1!!1!!陰平 |{{IPAfont|˥˧}} 53|| 陰平 ({{IPAfont|˥˧}} 53) |- !5!!2!!陰去 |{{IPAfont|˧˦}} 34|| 陰去 ({{IPAfont|˧˥}} 35)<br>陰上 ({{IPAfont|˥}} 55) |- !6!!3!!陽去 |{{IPAfont|˨˧}} 23|| 陽舒 ({{IPAfont|˩˧}} 13) |- !7!!4!!陰入 |{{IPAfont|˥ʔ}} <u>55</u>||陰入 ({{IPAfont|˥ʔ}} <u>55</u>) |- !8!!5!!陽入 |{{IPAfont|˩˨ʔ}} <u>12</u>|| 陽入 ({{IPAfont|˩˧ʔ}} <u>13</u>) |} {|class="wikitable" style="text-align:center;" |- |声調||陰平||陽平||上聲||陰去||陽去||陰入||陽入||長入 |- |声調番号||1||2||3||4||5||6||7||8 |- |調値||˨˦ (24)||˨˩ (21)||˨˩˩ (211)||˧˥ (35)||˧ (33)||˥ (5)||˧ (3)||˥ (55) |- |方言大詞典調値||24||21||213||35||33||5||3||55 |} なお、ここでいう長入とは、入声であるが、白読によって、第6声とみなされないものをいう。 b7sc4bg0pxn6dupg4wlwdw4gggj9ej9 2313440 2313437 2026-08-09T10:30:31Z Kuroco2k 84207 /* テスト */ 2313440 wikitext text/x-wiki '''Kuroco2k'''(雛宮黒狐ともいう)といいます。基本中立。議論が下手だから。 ==最近思うこと== #新規項目よりも既存項目の充実が大事であり、それが一段落するまで濫造に走ってはいけない。 ==配下ページ== *[[/二簡字]](未完) *[[/朝鮮語基本語彙表]](今作ってある分の赤リンクを作り終えたら続編も作る) ==Todo== #(進行中)漢検範囲内の訓立項 #(進行中)漢字項目のメンテナンス、異体字整理 #(進行中)漢字項目の立項 #(進行中)西夏文字項目の立項 ==独り言== #閩東語、閩北語にある「ṳ」などの文字たち。 #*ソート順に迷います。暫定的にはṳにy、e̤にoeを割り振ってます。将来的に提案できたらと思いますが、まだ実用的な段階に踏めてません。例えば、「[[用]]」の閩東語のソートはこれなら「oeyng6」になります。 #[[Template:kanji variants]]を使用してみたけど、ちょっとこの辺に困るなというところ: #*Unicode順に整列されてしまうので、意図した並びが崩れてしまう #*同じ文字を複数入れると反映されない(語義の違いとかで入れることがあるので...) #シソーラスの名前空間 #*多分現状だと記事にカウントされているので、別の名前空間として扱いたい。 ==リンク集(メモ)== *[https://hongkongvision.com/tool/cc_py_conv_zh 漢字→廣東話/粵語拼音轉換工具] **広東語のイェール式に変換してくれる。'''zi.toolsは粤拼'''。 *[https://www.wugniu.com/ 吳語學堂] **いわゆる呉拼というやつ。上海語は下記のでいいですが、方言とかを記述するときにない時が多いので使っている。英語版の標準表記。 *[https://wu-chinese.com/minidict/ 吴音小字典] **日本語版で、呉語の標準表記に使用される(主に上海語で)。 *[https://www.ydict.net/ 榕典] **閩東語方言に使っている。 *[[特別:特別ページ一覧]] **メモ用 *[[利用者:Naggy Nagumo/他言語版にあって日本語版にない項目]] **タスクリスト ==テスト== {{id-pr|bahasa}} ==リスト一覧== {{rel-top|中国語}} {| class="wikitable" style="text-align: center" |- ! 声調番号 !! 声調名 !! 白話字(aを例として) !! 声調値(台北) !! 声調値(台南) |- | 1 || 陰平 || a || 55 || 44 |- | 2 (6) || 陰上 || á || 51 || 53 |- | 3 || 陰去 || à || 31 || 11 |- | 4 || 陰入 || ap/at/ak/ah || 32 || 21 |- | 5 || 陽平 || â || 14 || 25 |- | 7 || 陽去 || ā || 33 || 22 |- | 8 || 陽入 || a̍p/a̍t/a̍k/a̍h || 4 || 5 |} {|class=wikitable border=1 style="text-align: left;" ! 声調名 ! 白話字(aを例として) ! 声調値(苗栗腔) ! 声調値(新竹腔) |- |陰平 |â |24 |53 |- |陽平 |à |11 |55 |- |上声 |á |31 |24 |- |陰去 |a |rowspan="2"|55 |11 |- |陽去 |å |33 |- |陰入 |ap/at/ak |2 |5 |- |陽入 |a̍p/a̍t/a̍k |5 |2 |- |} ([[:w:白話字]]より、要所だけ) {| class="wikitable" style="text-align:center;" | bgcolor="#ABCDEF" |'''名称''' | bgcolor="#ABCDEF" |'''声調番号''' | bgcolor="#ABCDEF" |'''符号''' | bgcolor="#ABCDEF" |'''例''' |- | 上平 | 55 | ◌̆ | 君 '''Gŭng''' |- | 上聲 | 33 | ◌̄ | 滾 '''Gūng''' |- | 上去 | 213 | ◌́ | 貢 '''Góng''' |- | 上入 | <u>24</u> | ◌́ | 谷 '''Gók''' |- | 下平 | 53 | ◌̀ | 群 '''Gùng''' |- | 下去 | 242 | ◌̂ | 郡 '''Gông''' |- | 下入 | 5 | ◌̆ | 掘 '''Gŭk''' |} ([[:w:en:Bàng-uâ-cê]]より、要所だけ) {| class="wikitable" |+ KCRにおける声調符号 |- !番号 |1 |2 |3 |4 |5 |6 |7 |- !声調タイプ |陰平 |陽平 |上聲 |陰去 |陽去 |陰入 |陽入 |- !KCRにおける符号 | <span style="font-size:190%;">ˊ</span> ({{lang|mnp|á}}) | <span style="font-size:190%;">ˆ</span> ({{lang|mnp|â}}) | <span style="font-size:190%;">ˇ</span> ({{lang|mnp|ǎ}}) | <span style="font-size:190%;"> ̿</span> ({{lang|mnp|a̿}}) | <span style="font-size:190%;">ˉ</span> ({{lang|mnp|ā}}) | <span style="font-size:190%;">˘</span> ({{lang|mnp|ă}}) | <span style="font-size:190%;">ˋ</span> ({{lang|mnp|à}}) |- |} ([[:w:en:Kienning Colloquial Romanized]]より、要所だけ) {{rel-bottom}} :{| class="wikitable" style="width:80%; text-align:center" |- !呉拼!!声調番号 (Wikt)!!声調名!!調値!!方言大詞典調値 |- !1!!1!!陰平 |{{IPAfont|˥˧}} 53|| 陰平 ({{IPAfont|˥˧}} 53) |- !5!!2!!陰去 |{{IPAfont|˧˦}} 34|| 陰去 ({{IPAfont|˧˥}} 35)<br>陰上 ({{IPAfont|˥}} 55) |- !6!!3!!陽去 |{{IPAfont|˨˧}} 23|| 陽舒 ({{IPAfont|˩˧}} 13) |- !7!!4!!陰入 |{{IPAfont|˥ʔ}} <u>55</u>||陰入 ({{IPAfont|˥ʔ}} <u>55</u>) |- !8!!5!!陽入 |{{IPAfont|˩˨ʔ}} <u>12</u>|| 陽入 ({{IPAfont|˩˧ʔ}} <u>13</u>) |} {|class="wikitable" style="text-align:center;" |- |声調||陰平||陽平||上聲||陰去||陽去||陰入||陽入||長入 |- |声調番号||1||2||3||4||5||6||7||8 |- |調値||˨˦ (24)||˨˩ (21)||˨˩˩ (211)||˧˥ (35)||˧ (33)||˥ (5)||˧ (3)||˥ (55) |- |方言大詞典調値||24||21||213||35||33||5||3||55 |} なお、ここでいう長入とは、入声であるが、白読によって、第6声とみなされないものをいう。 cwi8mnn1ujum2ilt61duv2lkbqwnjuu ばっとう 0 521108 2313265 2084539 2026-08-09T00:06:17Z 鍼灸 112313 2313265 wikitext text/x-wiki {{kana-DEFAULTSORT}} {{also|はっとう|はつどう}} =={{ja}}== ==={{kangokana}}=== {{ja-kangokana|h=y}} *【[[抜刀]]】:刀を抜くこと。 *【[[帕頭]]】:頭巾。 mqkv05qhi7m8m3txhgf0d71jpkohvlm 浣肠 0 526370 2313112 2094618 2026-08-08T13:55:08Z M-30722 1202 2313112 wikitext text/x-wiki =={{L|zh}}== ==={{pron}}=== {{cmn-pron|huǎncháng, wǎncháng|z=n}} ==={{noun}}=== {{zh-cat|huan3chang2|noun|医療}} {{zhchars|t=浣腸}} #(医療)[[浣腸]]。 gilhgq8qneawjtojrp006r4thwsupqw モジュール:number list 828 531427 2313402 2105025 2026-08-09T08:10:16Z Kuroco2k 84207 2313402 Scribunto text/plain -- TODO: support <id:...>. currently it does nothing. local m_links = require("モジュール:links") local m_str_utils = require("モジュール:string utilities") local char = string.char local concat = table.concat local gsub = m_str_utils.gsub local insert = table.insert local list_to_set = require("モジュール:table").listToSet local sort = table.sort local u = m_str_utils.char local unpack = unpack or table.unpack -- Lua 5.2 compatibility local upper = string.upper local export = {} --[=[ Terminology: Number = a bare number; a mathematical entity which has different form types (e.g. cardinal, ordinal) Form type = a category of the forms that represent a number; examples are cardinal, ordinal, distributive, fractional Form = a word or expression that represents a number in a given language Tag = an identifier attached to a form that allows different logical subtypes of forms from the same form type to be identified; e.g. 'vuitanta-vuit<tag:Central>' vs. 'huitanta-huit<tag:Valencian>' to identify variants of Catalan cardinal number 88 for different dialectal standards; there can be multiple tags per form, e.g. 'tair ar ddeg<tag:vigesimal><tag:feminine>' for the Welsh number 13 where there are both decimal/vigesimal and masculine/feminine variants of this number Tag list = a list of tags in the order they are specified in the data, e.g. {"vigesimal", "feminine"} for the example above Combined tag = the string representation of a tag list, using ||| to separate individual tags ]=] local default_form_types = { {key = "cardinal", display = "[[基数]]"}, {key = "ordinal", display = "[[序数]]"}, {key = "adverbial", display = "[[副詞]]"}, {key = "multiplier", display = "[[乗数]]"}, {key = "distributive", display = "[[配分数詞]]"}, {key = "collective", display = "[[集合数詞]]"}, {key = "fractional", display = "[[分数]]"}, } -- Keys in a `numbers` entry that aren't form types. local non_form_types = { numeral = true, wplink = true, next = true, prev = true, next_outer = true, prev_outer = true, upper = true, lower = true, } local function track(page) require("モジュール:debug/track")("number list/" .. page) return true end --[=[ -- -- General set intersection local function set_intersection(sets) local intersection = {} for key, _ in pairs(sets[1]) do intersection[key] = true end for i = 2, #sets do local this_set = sets[i] for key, _ in pairs(intersection) do if not this_set[key] then -- See https://stackoverflow.com/questions/6167555/how-can-i-safely-iterate-a-lua-table-while-keys-are-being-removed -- It is safe to modify or remove a key while iterating over the table. intersection[key] = nil end end end return intersection end ]=] local function set_intersection(set1, set2) local intersection = {} for key, _ in pairs(set1) do intersection[key] = true end for key, _ in pairs(intersection) do if not set2[key] then -- See https://stackoverflow.com/questions/6167555/how-can-i-safely-iterate-a-lua-table-while-keys-are-being-removed -- It is safe to modify or remove a key while iterating over the table. intersection[key] = nil end end return intersection end function export.get_data_module_name(langcode) return "モジュール:number list/data/" .. langcode end -- Format a number (either a Lua number or a string) in fixed point without any decimal point or scientific notation. -- `tostring()` doesn't work because it converts large numbers such as 1000000000000000 to "1e+15". function export.format_fixed(number) if type(number) == "string" then return number else return ("%.0f"):format(number) end end -- Parse a form with modifiers such as 'vuitanta-vuit<tag:Central>' or 'سیزده<tr:sizdah>' -- or 'سیزده<tr:sizdah><tag:Iranian>' into its component parts. Return a form object, i.e. an object with fields -- `form` for the form, and `tr`, `tag`, `q`, `qq` or `link` for the modifiers. The `tag` field is a tag list -- (see above). function export.parse_form_and_modifiers(form_with_modifiers) local retval = {} local form form = form_with_modifiers while true do local new_form, angle_bracketed = form:match("^(.-)(%b<>)$") if not new_form then break end local prefix, content = angle_bracketed:match "^<(%w+):(.+)>$" if not prefix then break end if prefix == "tag" then if retval.tag then insert(retval.tag, content) else retval.tag = {content} end elseif prefix == "q" or prefix == "qq" or prefix == "tr" or prefix == "link" or prefix == "id" then if retval[prefix] then error(("Duplicate modifier '%s' in data module form, already saw value '%s': %s"):format(prefix, retval[prefix], form_with_modifiers)) else retval[prefix] = content end else error(("Unrecognized modifier '%s' in data module form: %s"):format(prefix, form_with_modifiers)) end form = new_form end retval.form = form return retval end -- Find the `numbers` object for a given number (which should be in string representation). function export.lookup_data(m_data, numstr) -- Don't try to convert very large numbers to Lua numbers because they may overflow. -- Powers of 10 >= 10^22 cannot be represented exactly as a Lua number. return m_data.numbers[numstr] or #numstr < 22 and m_data.numbers[tonumber(numstr)] or nil end -- Return true if a < b, where either may be a Lua number or the string representation of a number. function export.numbers_less_than(a, b) a, b = export.format_fixed(a), export.format_fixed(b) local alen = #a local blen = #b if alen < blen then return true end if alen > blen then return false end return a < b end -- Return true if a > b, where either may be a Lua number or the string representation of a number. function export.numbers_greater_than(a, b) return export.numbers_less_than(b, a) end -- Given a number form, convert it to its independent (un-affixed) form. This only makes sense for certain languages -- where there is a difference between independent and affixed forms of numerals. Currently the only such language -- is Swahili, where e.g. the cardinal number form for 3 is affixed [[-tatu]], independent [[tatu]], and the ordinal -- number form is [[-a tatu]], independent [[tatu]]. We rely on a set of Lua pattern substitutions to convert from -- affixed to independent form. -- -- FIXME: This needs major rethinking in a way that isn't specific to Swahili. local function maybe_unaffix(m_data, form) if not m_data.unaffix then return form end for _, entry in ipairs(m_data.unaffix) do local from, to = unpack(entry) form = gsub(form, from, to) end return form end -- Convert the given number form (taken from the data for `lang`, after parsing the form for modifiers and stripping -- the modifiers) to an entry name. The form may have links and/or accent/length marks that need to be stripped. local function form_to_entry_name(form, lang) return (lang:makeEntryName(m_links.remove_links(form))) end -- Return true if the given number form object (taken from the data for `lang`, after parsing the form for modifiers) -- matches `pagename`. If there is a <link:...> modifier, we check against it. Otherwise, we check against the form -- itself. In this case, the form may have links and/or accent/length marks that need to be stripped, and we may need -- to convert the form to its independent (un-affixed) form, if there is a difference between independent and affixed -- forms (as in Swahili). local function form_equals_pagename(formobj, pagename, m_data, lang) if formobj.link == pagename then return true end local entry_name = form_to_entry_name(formobj.form, lang) return entry_name == pagename or maybe_unaffix(m_data, entry_name) == pagename end -- Given the data for a language and a number (which should be in string representation), find the next and previous -- numbers to display (in string representation). local function get_next_and_prev_keys(m_data, numstr) local numdata = export.lookup_data(m_data, numstr) if not numdata then return nil, nil end local nextnum = numdata.next local prevnum = numdata.prev if not nextnum or not prevnum then -- Find the next/previous numbers by sorting all the keys and locating the number in question among them. local sorted_list = {} local index = 1 for key, _ in pairs(m_data.numbers) do sorted_list[index] = key index = index + 1 end sort(sorted_list, export.numbers_less_than) -- We could binary search to save time, but given that we already sort, which is supra-linear, it won't -- matter to search linearly. for i, key in ipairs(sorted_list) do if export.format_fixed(key) == numstr then nextnum = nextnum or sorted_list[i + 1] prevnum = prevnum or sorted_list[i - 1] break end end end if nextnum then nextnum = export.format_fixed(nextnum) end if prevnum then prevnum = export.format_fixed(prevnum) end return nextnum, prevnum end -- Find the "description objects" (a two-element list {NUMBER, TYPE}, where NUMBER is either a Lua number or a string, -- depending on how it appears in the underlying data) that matches `pagename` and (if given) `matching_type`. -- Return a list of such objects. local function lookup_number_by_form(lang, m_data, pagename, matching_type) local retval = {} local function check_form(form, num, typ) local formobj = export.parse_form_and_modifiers(form) if form_equals_pagename(formobj, pagename, m_data, lang) and (not matching_type or typ == matching_type) then -- It's possible the same pagename occurs multiply for a given type and number, e.g. with different length -- or accent marks. The calling code is OK with multiple entries for a given number (which can also occur -- with different types, e.g. the ordinal and fractional forms for a given number are the same), but will -- throw an error if different numbers are seen. insert(retval, {num, typ}) end end for num, numdata in pairs(m_data.numbers) do for numtype, forms in pairs(numdata) do if non_form_types[numtype] then -- do nothing elseif type(forms) == "table" then for _, form in ipairs(forms) do check_form(form, num, numtype) end else check_form(forms, num, numtype) end end end return retval end -- additional_types is an array of tables like form_types, -- but each table can contain the keys "before" or "after", which specify -- the numeral type that the form should appear before or after. -- The transformations are applied in order. local function add_form_types(form_types, additional_types) local types = require("モジュール:table").deepcopy(form_types) for _, additional_type in ipairs(additional_types) do if not (additional_type.before or additional_type.after) then insert(types, additional_type) else if additional_type.before and additional_type.after then error("The form type '" .. additional_type.key .. "' is specifying both before and after, which is not allowed") end local anchor, index = additional_type.before or additional_type.after for i, another_type in ipairs(types) do if another_type.key == anchor then index = i break end end if index and additional_type.after then index = index + 1 end additional_type = require("モジュール:table").shallowCopy(additional_type) additional_type.before, additional_type.after = nil, nil if not index then mw.log("Number type " .. (additional_type.before or additional_type.after) .. " was not found.") insert(types, additional_type) else insert(types, index, additional_type) end end end return types end -- Return all form types for the language in question, in order. function export.get_number_types(m_data) local form_types = default_form_types if m_data.additional_number_types then return add_form_types(form_types, m_data.additional_number_types) else return form_types end end -- Convert a number type object (an object with `display` and `key` fields) to its displayed form. function export.display_number_type(number_type) if number_type.display then return number_type.display else return (number_type.key:gsub("^.", upper):gsub("_", " ")) end end -- Group digits with a separator, such as a comma or a period. See [[w:Digit grouping]]. local function add_separator(numstr, separator, group, start) start = start or group if start >= #numstr then return numstr end local parts = { numstr:sub(-start) } for i = start + 1, #numstr, group do insert(parts, 1, numstr:sub(-(i + group - 1), -i)) end return concat(parts, separator) end function export.add_thousands_separator(numstr, separator) if #numstr < 4 then -- < 1000 return numstr end return add_separator(numstr, separator or ",", 3) end local function add_Indic_separator(numstr, separator) return add_separator(numstr, separator, 2, 3) end -- Convert a number (represented as a string) to non-Arabic form based on the specs in `numeral_config`. -- This is used, for example, to display the Hindu, Eastern Arabic or Roman form of a number along with the standard -- Arabic form. Most of the code below assumes that the non-Arabic numerals are decimal, and the digits map one-to-one -- with Arabic numerals. If this is not the case (e.g. for Roman numerals), a special module function is called to do -- the conversion. function export.generate_non_arabic_numeral(numeral_config, numstr) -- `numstr` is a number represented as a string. See comment near top of show_box(). if numeral_config.module and numeral_config.func then return require("モジュール:" .. numeral_config.module)[numeral_config.func](numstr) end local thousands_separator, Indic_separator, zero_codepoint = numeral_config.thousands_separator, numeral_config.Indic_separator, numeral_config.zero_codepoint if not zero_codepoint then return nil end if thousands_separator then numstr = export.add_thousands_separator(numstr, thousands_separator) elseif Indic_separator then numstr = add_Indic_separator(numstr, Indic_separator) end return numstr:gsub("%d", function (digit) return u(zero_codepoint + tonumber(digit)) end) end -- Format a number (either a Lua number or a string) for display. Sufficiently small numbers are displayed in fixed -- point with thousands separators. Larger numbers are displayed in both fixed point and scientific notation using -- superscripts, and sufficiently large numbers are displayed only in scientific notation. function export.format_number_for_display(number) local MAX_NUM_DIGITS_FOR_FIXED_ONLY = 6 local MIN_NUM_DIGITS_FOR_SCIENTIFIC_ONLY = 13 local numstr = export.format_fixed(number) local fixed = export.add_thousands_separator(numstr) if #numstr <= MAX_NUM_DIGITS_FOR_FIXED_ONLY then return fixed end local kstr = numstr:match("^([0-9]*[1-9])0*$") if not kstr then error("内部エラー: Unable to match number '" .. numstr .. "'") end local exponent = ("10<sup>%s</sup>"):format(#numstr - 1) local mantissa if kstr == "1" then mantissa = "" elseif #kstr == 1 then mantissa = kstr .. " × " else mantissa = kstr:gsub("^([0-9])", "%1.") .. " × " end local scientific = mantissa .. exponent if #numstr >= MIN_NUM_DIGITS_FOR_SCIENTIFIC_ONLY then return scientific else return fixed .. " (" .. scientific .. ")" end end -- Map a list of tags to a single string that is equivalent. We need to do this because we can't easily put lists in the -- keys of tables. local function tag_list_to_combined_tag(tag_list) return concat(tag_list, "|||") end -- Given a list of forms with attached inline modifiers (e.g. 'huitanta-huit<tag:Valencian>' or -- 'tair ar ddeg<tag:vigesimal><tag:feminine>'), parse the forms into form objects (the return value of -- parse_form_and_modifiers()) and group by the tag. Three values are returned: -- `seen_forms`, `forms_by_tag`, `seen_tags` where: -- (1) `seen_forms` is the list of parsed form objects; -- (2) `forms_by_tag` is a table grouping the form objects by combined tag, where the key is the tag and the value is -- a list of the form objects seen with that tag (forms without tag are grouped under the empty-string tag); -- (3) `seen_tags` is a list of the combined tags encountered, in the order they were encountered; -- (4) `combined_tags_to_tag_lists` is a map from combined tags to the corresponding tag lists. function export.group_numeral_forms_by_tag(forms) local seen_forms = {} local forms_by_tag = {} local seen_tags = {} local combined_tags_to_tag_lists = {} for _, form in ipairs(forms) do local formobj = export.parse_form_and_modifiers(form) insert(seen_forms, formobj) local combined_tag = formobj.tag and tag_list_to_combined_tag(formobj.tag) or "" if not forms_by_tag[combined_tag] then insert(seen_tags, combined_tag) forms_by_tag[combined_tag] = {} combined_tags_to_tag_lists[combined_tag] = formobj.tag or {} end insert(forms_by_tag[combined_tag], formobj) end return seen_forms, forms_by_tag, seen_tags, combined_tags_to_tag_lists end -- Given a form object (as returned by parse_form_and_modifiers()), format as appropriate for the current language. function export.format_formobj(formobj, m_data, lang) local left_q = formobj.q and require("モジュール:qualifier").format_qualifier(formobj.q) .. " " or "" local right_q = formobj.qq and " " .. require("モジュール:qualifier").format_qualifier(formobj.qq) or "" local term = maybe_unaffix(m_data, formobj.form) local alt = nil if term ~= formobj.form then alt = formobj.form end return left_q .. m_links.full_link{ lang = lang, term = term, alt = alt, tr = formobj.tr, } .. right_q end -- Implementation of {{number box}}. function export.show_box(frame) local full_link = m_links.full_link local params = { [1] = {required = true}, [2] = {}, ["pagename"] = {}, ["type"] = {}, } local parent_args = frame:getParent().args if parent_args.pagename then track("show-box-pagename") end local args = require("Module:parameters").process(parent_args, params) local langcode = args[1] or "und" local lang = require("Module:languages").getByCode(langcode, 1) -- Get the data from the data module. Some modules (e.g. currently [[モジュール:number list/data/ka]]) have to be -- loaded with require() because the exported numbers table has a metatable. local module_name = export.get_data_module_name(langcode) local m_data = require(module_name) local pagename = args.pagename or (mw.title.getCurrentTitle().nsText == "付録" and "*" or "") .. mw.title.getCurrentTitle().subpageText -- Resolve any risky characters which makeEntryName will escape, so that any matches involving them work correctly. pagename = (lang:makeEntryName(pagename)) local cur_type = args.type -- We represent all numbers as strings in this function to deal with the limited precision inherent in Lua numbers. -- These large numbers do occur, such as 100 trillion ([[རབ་བཀྲམ་ཆེན་པོ]]), 1 sextillion, etc. Lua represents all -- numbers as 64-bit floats, meaning that some numbers above 2^53 cannot be represented exactly. The first power of -- 10 that cannot be represented exactly is 10^22 (ten sextillion in short scale, ten thousand trillion in long -- scale), but the first power of ten whose neighboring numbers cannot be represented exactly is 10^16 (ten -- quadrillion or ten thousand billion). Ideally we would use a big integer library of some kind, but unfortunately -- Wiktionary does not seem to have any such library installed. MediaWiki docs make mention of bcmath, but -- mw.bcmath.new() throws an error. -- -- In module data, we allow numbers to be indexed as Lua numbers or as strings. See lookup_data() above. local cur_num = args[2] or langcode == "und" and mw.title.getCurrentTitle().nsText == "Template" and "2" or nil -- If a current number wasn't specified, find it by looking through the data for the current language and matching -- forms against the pagename. if not cur_num then local nums_and_types = lookup_number_by_form(lang, m_data, pagename, cur_type) if #nums_and_types == 0 then error("現在のページ名'" .. pagename .. "'が一致しません。モジュールまたはページ名の綴りを確認してください。") end for _, num_and_type in ipairs(nums_and_types) do local num = num_and_type[1] num = export.format_fixed(num) if cur_num and num ~= cur_num then local errparts = {} for _, num_and_type in ipairs(nums_and_types) do local num, typ = unpack(num_and_type) insert(errparts, ("%s (%s)"):format(num, typ)) end error("現在のページ名'" .. pagename .. "'がmatches the spelling of 倍数 in [[" .. module_name .. "]]: " .. concat(errparts, ",") .. "。正しい数字を指定してください。") else cur_num = num end end end cur_num = cur_num:gsub(",", "") -- remove thousands separators if not cur_num:find("^%d+$") then error("Extraneous characters in parameter 2: should be decimal number (integer): '" .. cur_num .. "'") end -- Wrapper around `export.lookup_data` that may throw an error if the number can't be found (specifically if -- param_for_error is given). local function lookup_data(numstr, param_for_error) local retval = export.lookup_data(m_data, numstr) if not retval and param_for_error then error(('The %s number "%s" specified in the "numbers" table entry for "%s" cannot be found in ' .. "[[%s]]; please fix the module."):format(param_for_error, numstr, cur_num, module_name)) end return retval end local cur_data = lookup_data(cur_num) if not cur_data then error('The number "' .. cur_num .. '" is not found in the "numbers" table in [[' .. module_name .. "]].") end local formatted_forms = {} if cur_type and not cur_data[cur_type] then error("The numeral type " .. cur_type .. " for " .. cur_num .. " is not found in [[" .. module_name .. "]].") end -- See above for the definition of "combined tag" and "tag list". The combined tag is just the concatenation of the -- tag list with ||| between the tags. local cur_tag_list, cur_combined_tag local form_types = export.get_number_types(m_data) -- LONG COMMENT EXPLAINING TAG HANDLING: -- -- For each form type (see `form_types` at top of file), group the entries for that form type by tag and figure out -- what the current form type and tag is, i.e. the form type and tag for the form matching the pagename. Tags are -- e.g. as in 'vuitanta-vuit<tag:Central>' or 'huitanta-huit<tag:Valencian>' for Catalan and allow different -- logical sets of numbers for the same form type to be identified. There can potentially be multiple tags per -- form, e.g. 'tair ar ddeg<tag:vigesimal><tag:feminine>' for the Welsh number 13 where there are both decimal/ -- vigesimal and masculine/feminine variants of this number. -- -- We need to do two passes over all form types. In the first pass, for each form type we parse all the forms, -- group them by tag, and store the results in a per-form-type table. In the second pass, we then format all forms -- for all form types. The reason for doing two passes is because we need to know the current tag in order to -- display a form type correctly (because we display the forms for the current tag before the forms for any other -- tags), but we won't know the current tag until we have done a pass over all form types and forms of those form -- types in order to determine which one matches the pagename. -- -- We use the current tag in two ways: -- 1. When displaying all the forms for a given number, we group both by form type and tag, and display the forms -- for a given form type/tag combination on a single line. For a given form type, we display the forms for each -- tag in the order the tags were specified in the data, except that the forms for the current tag are placed -- before all others (so e.g. for Catalan, if the current tag is "Valencian", we list the Valencian form(s) -- first even if the Central form(s) are listed first in the data file). -- 2. When displaying links to adjacent numbers in display_adjacent_number_links(), if there aren't form(s) for the -- current type, we don't display any links; but if there are mutiple tagged forms for the current type, we only -- display links for the forms for the current tag if there are any such forms, otherwise we display links for -- all forms of all tags. -- -- In the presence of multiple tags, things get a bit more complicated: -- 1. When displaying links to adjacent numbers, say the current tag is vigesimal+feminine, we want to prefer an -- adjacent-number form that's both vigesimal and feminine, but otherwise we prefer one that's vigesimal or -- feminine over one that's neither. Say the current tag is just vigesimal; we of course prefer an -- adjacent-number form that's just vigesimal, but otherwise we prefer a tag that's vigesimal + either masculine -- or feminine to a tag that's not vigesimal. So it seems we want the form(s) that have the maximum intersection -- of tags, and if there are two different tag lists with the same number of intersecting tags (e.g. the current -- tag is vigesimal+feminine and we have a choice of decimal+feminine or just vigesimal), we should prefer the -- form that has fewer non-matching tags, hence we prefer the just-vigesimal form. -- 2. By the same logic, when displaying all the forms for a given number, we should order by the size of the -- intersection of the tag list in question with the current tag list, then inversely by the size of the tag list -- (so we prefer tag lists with fewer non-matching tags), then by the order of the tag lists in the data file. local forms_by_tag_per_form_type = {} local seen_tags_per_form_type = {} local combined_tags_to_tag_lists_per_form_type = {} for _, form_type in ipairs(form_types) do local numeral = cur_data[form_type.key] if numeral then local seen_forms, forms_by_tag, seen_tags, combined_tags_to_tag_lists = export.group_numeral_forms_by_tag( type(numeral) == "table" and numeral or {numeral} ) forms_by_tag_per_form_type[form_type] = forms_by_tag seen_tags_per_form_type[form_type] = seen_tags combined_tags_to_tag_lists_per_form_type[form_type] = combined_tags_to_tag_lists for _, formobj in ipairs(seen_forms) do if not cur_tag_list and form_equals_pagename(formobj, pagename, m_data, lang) then cur_tag_list = formobj.tag or {} cur_combined_tag = tag_list_to_combined_tag(cur_tag_list) cur_type = cur_type or form_type.key end end end end -- Error if we couldn't locate the pagename among the forms for the current number. This only happens if the -- number if given explicitly in 2=. if not cur_type and mw.title.getCurrentTitle().nsText ~= "テンプレート" then error("現在のページ名'" .. pagename .. "'が一致しません。モジュールまたはページ名の綴りを確認してください。") end -- Now, format all the forms for all form types for the current number. local function sort_combined_tags(combined_tags, seen_tags, combined_tags_to_tag_lists) -- cur_tag_list should normally never be nil, but can be so in template space local cur_tag_set = list_to_set(cur_tag_list or {}) local tags_to_order = {} for i, tag in ipairs(seen_tags) do tags_to_order[tag] = i end local function compare_tags(tag1, tag2) -- See long comment above. -- First compare by number of tags in common with the current tag list. local tag_list1 = combined_tags_to_tag_lists[tag1] local tag_list2 = combined_tags_to_tag_lists[tag2] local common1 = set_intersection(cur_tag_set, list_to_set(tag_list1)) local common2 = set_intersection(cur_tag_set, list_to_set(tag_list2)) if #common1 ~= #common2 then return #common1 < #common2 end -- Then compare inversely by number of tags not in common with the current tag list (which is equivalent to -- comparing by total number of tags, since tags should be distinct). if #tag_list1 ~= #tag_list2 then return #tag_list1 > #tag_list2 end -- Finally, compare by the original ordering in the number data, but if a tag is the same as the current -- tag, put it first, and if somehow we encounter a tag that's not in the original ordering, put it last. local index1 = tag1 == cur_combined_tag and 0 or tags_to_order[tag1] or #seen_tags + 1 local index2 = tag2 == cur_combined_tag and 0 or tags_to_order[tag2] or #seen_tags + 1 return index1 < index2 end sort(combined_tags, compare_tags) end for _, form_type in ipairs(form_types) do local forms_by_tag = forms_by_tag_per_form_type[form_type] local seen_tags = seen_tags_per_form_type[form_type] local combined_tags_to_tag_lists = combined_tags_to_tag_lists_per_form_type[form_type] if forms_by_tag then local function insert_forms_by_tag(tag) local formatted_tag_forms = {} local pagename_among_forms = false for _, formobj in ipairs(forms_by_tag[tag]) do insert(formatted_tag_forms, export.format_formobj(formobj, m_data, lang)) if form_equals_pagename(formobj, pagename, m_data, lang) then pagename_among_forms = true end end if tag ~= "" then local tag_list = combined_tags_to_tag_lists[tag] tag = concat(tag_list, " / ") end local displayed_number_type = export.display_number_type(form_type) .. (tag == "" and "" or (" (%s)"):format(tag)) if pagename_among_forms then displayed_number_type = "'''" .. displayed_number_type .. "'''" end insert(formatted_forms, " &nbsp;&nbsp;&nbsp; " .. displayed_number_type .. ": " .. concat(formatted_tag_forms, ", ")) end sort_combined_tags(seen_tags, seen_tags, combined_tags_to_tag_lists) for _, tag in ipairs(seen_tags) do insert_forms_by_tag(tag) end end end -- Current number in header local cur_display = export.format_number_for_display(cur_num) local numeral if m_data.numeral_config then numeral = export.generate_non_arabic_numeral(m_data.numeral_config, cur_num) elseif cur_data["numeral"] then numeral = export.format_fixed(cur_data["numeral"]) end if numeral then cur_display = full_link{lang = lang, alt = numeral, tr = "-"} .. "<br/><span style=\"font-size: smaller;\">" .. cur_display .. "</span>" end --------------------- Determine next/prev, next/prev outer, and upper/lower numbers. ---------------------- -- We have three series of numbers to determine: -- -- 1. The next/previous numbers, which are always those in the sorted series of available numbers unless overridden -- by `next`/`prev` specs in an individual number. -- 2. The next/previous outer numbers, which are displayed to the outside of the next/previous numbers. These can -- be overridden for an individual number using `next_outer`/`prev_outer`. Otherwise, we try according to an -- algorithm described below in the code for computing the outer numbers. -- 3. The upper/lower numbers, which are displayed above or below the central number box. These can be overridden -- for an individual number using `upper`/`lower`. These are always 10x greater or less than the number in -- question, number not considering a number if it's the same as the next/previous number. local next_num, prev_num = get_next_and_prev_keys(m_data, cur_num) local next_data = next_num and lookup_data(next_num, "next") local prev_data = prev_num and lookup_data(prev_num, "previous") --------- Decompose number into mantissa (k) and exponent (m). ---------- local k, m if cur_num == "0" then k = 0 m = 1 else local kstr, mstr = cur_num:match("^([0-9]*[1-9])(0*)$") if not kstr then error("内部エラー: Unable to match number '" .. cur_num .. "'") elseif #kstr > 15 then -- This is because some numbers with 16 or more digits can't be represented exactly. error("Can't handle 数字 with more than 15桁 before the trailing zeros: '" .. cur_num .. "'") end k = tonumber(kstr) m = #mstr end -- Find the next greater power of 10 for cur_num, up to 10^6. `try` should look up the data for a power of 10 -- and return it if it's available and the number passes any checks, otherwise nil. local function make_greater_power_of_ten(power) return cur_num .. ("0"):rep(power) end -- Find the next lesser power of 10 for cur_num, up to 10^6. `try` should look up the data for a power of 10 -- and return it if it's available and the number passes any checks, otherwise nil. local function make_lesser_power_of_ten(power) local desired_zeros = m - power if desired_zeros < 0 then return nil end return k .. ("0"):rep(desired_zeros) end local next_outer_data, prev_outer_data local next_outer_num, prev_outer_num = cur_data.next_outer, cur_data.prev_outer -- When trying to find then next/previous outer numbers, first, if the base-10 mantissa is not 1 or 0, we add 1 to -- or subtract 1 from the mantissa, keeping the same number of zeros. Hence, for 300, we try 400 for the next outer, -- 200 for the previous outer. For 900, we try 1000 for the next outer and 800 for the previous outer. If the -- mantissa is 1, the next outer is computed the same but for the previous outer we use 9 followed by one fewer -- zero. Hence, for 100 we try 200 for the next outer but 90 for the previous outer. If the mantissa is 0 (i.e. the -- entire number is 0), we try 10 for the next outer, and have no previous outer. -- -- Next, if the number is an even power of 10, we try 10x, 1000x greater, 100x greater and 1,000,000x greater, in -- that sequence. Essentially, first we try the next power of 10; then we try the next short-scale number (billion, -- trillion, etc. where large numbers follow a 10^3 sequence); then we try the next long-scale number (where large -- numbers follow a 10^6 sequence); then we try the next Indic-scale number (where large numbers follow a 10^2 -- sequence: lakh, crore, arab, ...). We don't just try powers of 10 in order because then if e.g. we have entries -- for one million, ten million, one hundred million and one billion, and the current number is one million, the -- next number will be ten million and the next outer number one hundred million, when it would be cleaner to have -- one billion as the outer number (and in many cases, there is no Wiktionary entry for one hundred million). -- -- For the previous outer number, we do an analogous algorithm but make sure we don't try numbers less than 1. local power_of_10_sequence = { 1, 3, 2, 6 } --------- Determine next outer number. ---------- if next_outer_num then next_outer_data = lookup_data(next_outer_num, "next outer") else local function try(num) local data = (not next_num or export.numbers_greater_than(num, next_num)) and lookup_data(num) or nil if data then next_outer_num = num next_outer_data = data end return data end if not try((k + 1) .. ("0"):rep(m)) and k == 1 then -- Try looking up a greater power of ten instead. for _, power_of_10 in ipairs(power_of_10_sequence) do if try(make_greater_power_of_ten(power_of_10)) then break end end end end --------- Determine previous outer number. ---------- if prev_outer_num then prev_outer_data = lookup_data(prev_outer_num, "previous outer") else local function try(num) local data = (not prev_num or export.numbers_less_than(num, prev_num)) and lookup_data(num) or nil if data then prev_outer_num = num prev_outer_data = data end return data end if k == 0 or m == 0 then -- less than 10; no previous outer num else local num_to_try if k == 1 then num_to_try = "9" .. ("0"):rep(m - 1) else num_to_try = (k - 1) .. ("0"):rep(m) end if not try(num_to_try) and k == 1 then -- Try looking up a smaller power of ten instead. for _, power_of_10 in ipairs(power_of_10_sequence) do local num_to_try = make_lesser_power_of_ten(power_of_10) if num_to_try and try(num_to_try) then break end end end end end local upper_data, lower_data local upper_num, lower_num = cur_data.upper, cur_data.lower --------- Determine upper number. ---------- if upper_num then upper_data = lookup_data(upper_num, "upper") else -- Try looking up the next power of ten. upper_num = make_greater_power_of_ten(1) if upper_num == next_num or cur_num == "0" then upper_num = nil else upper_data = lookup_data(upper_num) end end --------- Determine lower number. ---------- if lower_num then lower_data = lookup_data(lower_num, "lower") elseif k == 0 or m == 0 then -- less than 10; no lower num else -- Try looking up the previous power or 10. lower_num = make_lesser_power_of_ten(1) if lower_num == prev_num then lower_num = nil else lower_data = lookup_data(lower_num) end end -- For a number `num` (an "adjacent" number to the current number, i.e. either next, previous, next/previous outer, -- or upper/lower) with corresponding entry data `num_data`, display link(s) to the form(s) for this number that -- are associated with the current type and tag. If there is a single form to be linked to, the form is linked -- using the number itself as the display text; otherwise, the multiple forms are linked with superscripted [a], -- [b], etc. and the number it displayed adjacent to the links. In either case, beside the number there may be an -- arrow. If `arrow` == "rarrow", the format is like this: -- if multiple entries: -- <numeral> → <sup>[a], [b], ...</sup> -- else -- <numeral> → -- If `arrow` == "larrow", the format is like this: -- if multiple entries: -- <sup>[a], [b], ...</sup> ← <numeral> -- else -- ← <numeral> -- Otherwise, the format is like this: -- if multiple entries: -- <numeral><sup>[a], [b], ...</sup> -- else -- <numeral> -- -- Returns nil if `num_data` is nil or there is no entry in `num_data` for the current number type. -- -- For the handling of tags in this function, see the "LONG COMMENT EXPLAINING TAG HANDLING" above. local function display_adjacent_number_links(num, num_data, arrow) if not num_data then return nil end local forms = num_data[cur_type] if not forms then return nil elseif type(forms) ~= "table" then forms = {forms} end local seen_forms, forms_by_tag = export.group_numeral_forms_by_tag(forms) -- FIXME: `cur_tag` is not defined. This seems to have been missed when multiple tag handling was added in [[特別:Diff/68978046]]. local forms_to_display if cur_tag and forms_by_tag[cur_tag] then forms_to_display = forms_by_tag[cur_tag] else forms_to_display = seen_forms end for i, form_to_display in ipairs(forms_to_display) do forms_to_display[i] = form_to_display.link or maybe_unaffix(m_data, form_to_entry_name(form_to_display.form, lang)) end local seen_pagenames = {} local pagenames_to_display = {} for _, form in ipairs(forms_to_display) do if not seen_pagenames[form] then insert(pagenames_to_display, form) seen_pagenames[form] = true end end if #pagenames_to_display == 0 then return nil end num = export.format_number_for_display(num) local num_arrow = arrow == "rarrow" and num .. "&nbsp;&nbsp;→&nbsp;" or arrow == "larrow" and "&nbsp;←&nbsp;&nbsp;" .. num or num if #pagenames_to_display > 1 then local a = ("a"):byte() local links = {} for i, term in ipairs(pagenames_to_display) do links[i] = m_links.language_link{lang = lang, term = term, alt = "[" .. char(a + i - 1) .. "]"} end links = "<sup>" .. concat(links, ", ") .. "</sup>" return arrow == "larrow" and links .. num_arrow or num_arrow .. links else return m_links.language_link { lang = lang, term = pagenames_to_display[1], alt = num_arrow, } end end -- Display links to previous/next numbers local prev_display = display_adjacent_number_links(prev_num, prev_data, "larrow") or "" local next_display = display_adjacent_number_links(next_num, next_data, "rarrow") or "" -- Display links to previous/next outer numbers local prev_outer_display = display_adjacent_number_links(prev_outer_num, prev_outer_data, "larrow") local next_outer_display = display_adjacent_number_links(next_outer_num, next_outer_data, "rarrow") -- Display links to upper/lower numbers local upper_display = display_adjacent_number_links(upper_num, upper_data) local lower_display = display_adjacent_number_links(lower_num, lower_data) local canonical_name = lang:getCanonicalName() local appendix1 = canonical_name .. " 数詞" local appendix2 = canonical_name .. " 数詞" local appendix local title if mw.title.new(appendix1, "付録"):getContent() then appendix = appendix1 elseif mw.title.new(appendix2, "付録"):getContent() then appendix = appendix2 end if appendix then title = "[[付録:" .. appendix .. "|" .. appendix2 .. "]]" else title = appendix2 end local function format_cell(contents, class_name, colspan, bold) class_name = class_name and (" " .. class_name) or "" colspan = colspan and ('colspan="%s" '):format(colspan) or "" bold = bold and "!" or "|" return ('%s %sclass="table-cell %s | %s\n'):format(bold, colspan, class_name, contents) end local has_outer_display = not not (prev_outer_display or next_outer_display) local function format_upper_lower_display_row(display) local blank_cell if has_outer_display then blank_cell = '| colspan="2" |\n' else blank_cell = "|\n" end local parts = {'|- class="adjacent-panel"\n'} insert(parts, blank_cell) insert(parts, format_cell(display, "adjacent-number")) insert(parts, blank_cell) return concat(parts) end upper_display = upper_display and format_upper_lower_display_row(upper_display) or "" lower_display = lower_display and format_upper_lower_display_row(lower_display) or "" local function format_display_cell(display) return format_cell(display, "adjacent-number") end prev_display = format_display_cell(prev_display) next_display = format_display_cell(next_display) prev_outer_display = has_outer_display and format_display_cell(prev_outer_display or "") or "" next_outer_display = has_outer_display and format_display_cell(next_outer_display or "") or "" cur_display = format_cell(cur_display, "current-number", nil, "bold") local forms_display = ('| colspan="%s" style="text-align: center;" | %s\n'):format( has_outer_display and 5 or 3, concat(formatted_forms, "<br/>")) local footer_display if cur_data.wplink then local footer = "[[w:" .. lang:getCode() .. ":|" .. lang:getCanonicalName() .. "版ウィキペディア]]" .. m_links.full_link{lang = lang, term = "w:" .. lang:getCode() .. ":" .. cur_data.wplink, alt = export.format_number_for_display(cur_num)} footer_display = '|- style="text-align: center;"\n' .. format_cell(footer, "footer-cell", has_outer_display and 5 or 3) else footer_display = "" end local edit_link = ' <sup>(<span class="plainlinks">[' .. tostring(mw.uri.fullUrl(module_name, { action = "edit" })) .. " 編集]</span>)</sup>" return [=[{| class="floatright number-box" cellpadding="5" cellspacing="0" style="background: var(--wikt-palette-white, #ffffff); color: inherit; border: 1px #aaa solid; border-collapse: collapse; margin-top: .5em;" rules="all" |+ ''']=] .. title .. edit_link .. "'''\n" .. upper_display .. '|- style="text-align: center;"\n' .. prev_outer_display .. prev_display .. cur_display .. next_display .. next_outer_display .. "|-\n" .. lower_display .. "|-\n" .. forms_display .. footer_display .. "|}" .. require("モジュール:TemplateStyles")("テンプレート:number box/styles.css") end function export.show_box_manual(frame) local m_links = require("モジュール:links") local num_type = frame.args["type"] local args = require("モジュール:parameters").process(frame:getParent().args, { [1] = {required = true, type = "language", default = "und"}, sc = {type = "script"}, headlink = true, wplink = true, alt = true, tr = true, [2] = true, -- prev_symbol [3] = true, -- cur_symbol [4] = true, -- next_symbol [5] = true, -- prev_term [6] = true, -- next_term card = true, cardalt = true, cardtr = true, ord = true, ordalt = true, ordtr = true, adv = true, advalt = true, advtr = true, mult = true, multalt = true, multtr = true, dis = true, disalt = true, distr = true, coll = true, collalt = true, colltr = true, frac = true, fracalt = true, fractr = true, opt = true, optx = true, optxalt = true, optxtr = true, opt2 = true, opt2x = true, opt2xalt = true, opt2xtr = true, }) local lang = args[1] local sc = args.sc local headlink = args.headlink local wplink = args.wplink local alt = args.alt local tr = args.tr local prev_symbol = args[2] local cur_symbol = args[3] local next_symbol = args[4] local prev_term = args[5] local next_term = args[6] local cardinal_term = args.card; local cardinal_alt = args.cardalt; local cardinal_tr = args.cardtr local ordinal_term = args.ord; local ordinal_alt = args.ordalt; local ordinal_tr = args.ordtr local adverbial_term = args.adv; local adverbial_alt = args.advalt; local adverbial_tr = args.advtr local multiplier_term = args.mult; local multiplier_alt = args.multalt; local multiplier_tr = args.multtr local distributive_term = args.dis; local distributive_alt = args.disalt; local distributive_tr = args.distr local collective_term = args.coll; local collective_alt = args.collalt; local collective_tr = args.colltr local fractional_term = args.frac; local fractional_alt = args.fracalt; local fractional_tr = args.fractr local optional1_title = args.opt local optional1_term = args.optx; local optional1_alt = args.optxalt; local optional1_tr = args.optxtr local optional2_title = args.opt2 local optional2_term = args.opt2x; local optional2_alt = args.opt2xalt; local optional2_tr = args.opt2xtr track(lang:getCode()) if sc then track("sc") end if headlink then track("headlink") end if wplink then track("wplink") end if alt then track("alt") end if cardinal_alt or ordinal_alt or adverbial_alt or multiplier_alt or distributive_alt or collective_alt or fractional_alt or optional1_alt or optional2_alt then track("xalt") end local subpage = mw.title.getCurrentTitle().subpageText local is_reconstructed = lang:hasType("reconstructed") or mw.title.getCurrentTitle().nsText == "付録" -- Commenting out this line prevents passing redundant alts to full_link; -- however, there may have been a purpose to it. -- alt = alt or (is_reconstructed and "*" or "") .. subpage if num_type == "cardinal" then cardinal_term = cardinal_term or (is_reconstructed and "*" or "") .. subpage cardinal_alt = cardinal_alt or alt cardinal_tr = cardinal_tr or tr elseif num_type == "ordinal" then ordinal_term = ordinal_term or (is_reconstructed and "*" or "") .. subpage ordinal_alt = ordinal_alt or alt ordinal_tr = ordinal_tr or tr end local header = lang:getCanonicalName() .. " " .. num_type .. " numbers" if headlink then header = "[[" .. headlink .. "|" .. header .. "]]" end local previous = "" if prev_term or prev_symbol then previous = m_links.full_link{lang = lang, sc = sc, term = prev_term, alt = "&nbsp;&lt;&nbsp;&nbsp;" .. prev_symbol, tr = "-", no_alt_ast = true} end local current = m_links.full_link{lang = lang, sc = sc, alt = cur_symbol, tr = "-", no_alt_ast = true} local next = "" if next_term or next_symbol then next = m_links.full_link{lang = lang, sc = sc, term = next_term, alt = next_symbol .. "&nbsp;&nbsp;&gt;&nbsp;", tr = "-", no_alt_ast = true} end local forms = {} if cardinal_term then insert(forms, " &nbsp;&nbsp;&nbsp; [[基数]]: " .. m_links.full_link{lang = lang, sc = sc, term = cardinal_term, alt = cardinal_alt, tr = cardinal_tr}) end if ordinal_term then insert(forms, " &nbsp;&nbsp;&nbsp; [[序数]]: " .. m_links.full_link{lang = lang, sc = sc, term = ordinal_term, alt = ordinal_alt, tr = ordinal_tr}) end if adverbial_term then insert(forms, " &nbsp;&nbsp;&nbsp; [[副詞]]: " .. m_links.full_link{lang = lang, sc = sc, term = adverbial_term, alt = adverbial_alt, tr = adverbial_tr}) end if multiplier_term then insert(forms, " &nbsp;&nbsp;&nbsp; [[乗数]]: " .. m_links.full_link{lang = lang, sc = sc, term = multiplier_term, alt = multiplier_alt, tr = multiplier_tr}) end if distributive_term then insert(forms, " &nbsp;&nbsp;&nbsp; [[配分数詞]]: " .. m_links.full_link{lang = lang, sc = sc, term = distributive_term, alt = distributive_alt, tr = distributive_tr}) end if collective_term then insert(forms, " &nbsp;&nbsp;&nbsp; [[集合数詞]]: " .. m_links.full_link{lang = lang, sc = sc, term = collective_term, alt = collective_alt, tr = collective_tr}) end if fractional_term then insert(forms, " &nbsp;&nbsp;&nbsp; [[分数]]: " .. m_links.full_link{lang = lang, sc = sc, term = fractional_term, alt = fractional_alt, tr = fractional_tr}) end if optional1_title then insert(forms, " &nbsp;&nbsp;&nbsp; " .. optional1_title .. ": " .. m_links.full_link{lang = lang, sc = sc, term = optional1_term, alt = optional1_alt, tr = optional1_tr}) end if optional2_title then insert(forms, " &nbsp;&nbsp;&nbsp; " .. optional2_title .. ": " .. m_links.full_link{lang = lang, sc = sc, term = optional2_term, alt = optional2_alt, tr = optional2_tr}) end local footer = "" if wplink then footer = "[[w:" .. lang:getCode() .. ":|" .. lang:getCanonicalName() .. "版ウィキペディア]]" .. m_links.full_link{lang = lang, sc = sc, term = "w:" .. lang:getCode() .. ":" .. wplink, alt = alt, tr = tr} end return [=[{| class="floatright number-box" cellpadding="5" cellspacing="0" rules="all" |+ ''']=] .. header .. [=[''' |- | class="adjacent-slot" | ]=] .. previous .. [=[ ! class="current-slot" | ]=] .. current .. [=[ | class="adjacent-slot" | ]=] .. next .. [=[ |- | colspan="3" class="form-slot" | ]=] .. concat(forms, "<br/>") .. [=[ |- | colspan="3" class="footer-slot" | ]=] .. footer .. [=[ |}]=] .. require("モジュール:TemplateStyles")("テンプレート:number box/styles.css") end return export tld0z3bqr9n2cj96pfbwkaut60fm0ko 修煉 0 546834 2313463 2140132 2026-08-09T11:51:18Z Kuroco2k 84207 /* {{desc}} */ 2313463 wikitext text/x-wiki {{kana-DEFAULTSORT|しゅうれん}} =={{L|ja}}== {{ja-kanjitab|しゅう|れん|yomi=o}} ==={{pron}}=== {{ja-pron|しゅうれん|acc=1}} ==={{noun}}=== {{ja-noun-suru|[[しゅうれん]]}}({{同音前|[[修練]]}}) #[[身体]]や[[精神]]、[[技術]]などを{{おくりがな2|磨|みが|き|みがく}}{{おくりがな2|鍛|きた|える|きたえる}}こと。 ==={{verb}}=== {{ja-verb-suru|しゅうれん}} {{日本語サ変活用}} =={{L|zh}}== ==={{alter}}=== *{{zh-l|修練}} *{{zh-l|修鍊}} ==={{pron}}=== {{cmn-pron|xiūliàn}} {{yue-pron|sau1 lin6}} ==={{verb}}=== {{zh-cat|xiu1lian4|verb|道教}} {{yue-cat|sau1lin6|verb}} {{zhchars}}({{zh-ts||'''[[修炼]]'''}}) #[[修練]]する。[[練習]]する。 #{{context|道教|lang=yue|skey=sau1lin6}}[[瞑想]]する。 ==={{desc}}=== {{CJKV|[[修煉]], [[修練]], [[修鍊]]|j=しゅうれん|修煉|j2=修練|j3=修鍊|[[수련]]|k=修鍊/修練}} a5lzdn2d51ebbs6apamzu910t30e3hk 四島 0 547027 2313271 2140476 2026-08-09T00:12:02Z 鍼灸 112313 2313271 wikitext text/x-wiki {{kana-DEFAULTSORT|しとう|よんとう}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[しとう]]|[[よんとう]]}} #{{タグ|ja|島}}四つの[[しま|島]]。 #{{タグ|ja|略語}} 「[[北方四島]]」の略称。 g6fvky64lvcswhyh3ezqtcbxvihb3p0 2313272 2313271 2026-08-09T00:12:13Z 鍼灸 112313 2313272 wikitext text/x-wiki {{kana-DEFAULTSORT|しとう}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[しとう]]|[[よんとう]]}} #{{タグ|ja|島}}四つの[[しま|島]]。 #{{タグ|ja|略語}} 「[[北方四島]]」の略称。 2x0v1d1cknx153de3g906fzsneqmz93 よんとう 0 547033 2313192 2140764 2026-08-08T22:58:36Z ~2026-43757-49 132871 /* 日本語 */ 2313192 wikitext text/x-wiki {{kana-DEFAULTSORT}} =={{L|ja}}== ==={{homonym}}=== {{ja-hom}} *【[[四島]]】:四つの島。 *【[[四等]]】:第四位。 a93tjryw1qnuehfasg96lqz330rbu95 2313234 2313192 2026-08-08T23:39:45Z 鍼灸 112313 2313234 wikitext text/x-wiki {{kana-DEFAULTSORT}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana|h=y}} *【[[四島]]】:四つの島。 *【[[四等]]】:第四位。 abiw69i5lab4ifz7ggwaz4k1ebsnrph 2313236 2313234 2026-08-08T23:43:00Z 鍼灸 112313 2313236 wikitext text/x-wiki {{kana-DEFAULTSORT}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana|h=y}} *【[[四島]]】:四つの島。 *【[[四等]]】:第四位。 *【[[四頭]]】:(動物)が四匹。 fh9te0p3nhp1dquc4cmdah67p0jqld5 にとう 0 547043 2313239 2140736 2026-08-08T23:44:01Z 鍼灸 112313 2313239 wikitext text/x-wiki {{kana-DEFAULTSORT}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana|h=y}} *【[[二島]]】:二つの島。 *【[[二刀]]】:二本の刀。 *【[[二等]]】:第二位。 *【[[二桃]]】:二個の桃。 *【[[二頭]]】:(動物が)二匹。 *【[[二糖]]】:[[二糖類]]。 pumg83omk8snzohrtkuq48wffp3jew5 四等 0 547260 2313274 2140746 2026-08-09T00:12:39Z 鍼灸 112313 2313274 wikitext text/x-wiki {{kana-DEFAULTSORT|しとう}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[しとう]]|[[よんとう]]}} #四[[番目]]の[[等級]]。 tgbwtd21hfn3rbd5z32gqei879y08qg さんず 0 547322 2313285 2140859 2026-08-09T00:24:25Z 鍼灸 112313 2313285 wikitext text/x-wiki {{kana-DEFAULTSORT}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana|h=y}} *【[[三頭]], [[三図]]】:[[三封]]。 *【[[三途]], [[三塗]]】:[[三途の川]]。 3ppqi3oquvwr39s4jurfdjggrktpvzg 利用者:Kuroco2k/common.js 2 554760 2313200 2312496 2026-08-08T23:21:35Z Kuroco2k 84207 スイッチオン 2313200 javascript text/javascript mw.loader.load("/wiki/利用者:Kuroco2k/hangul.js?action=raw&ctype=text/javascript"); mw.loader.load('/wiki/利用者:Kuroco2k/maintenance.js?action=raw&ctype=text/javascript'); mw.loader.load('/wiki/利用者:Kuroco2k/es-verb-form.js?action=raw&ctype=text/javascript'); mw.loader.load('/wiki/利用者:Kuroco2k/pt-verb-form.js?action=raw&ctype=text/javascript'); mw.loader.load('/wiki/利用者:Kuroco2k/fr-verb-form.js?action=raw&ctype=text/javascript'); mw.loader.load('/wiki/利用者:Kuroco2k/de-verb-form.js?action=raw&ctype=text/javascript'); mw.loader.load('/wiki/利用者:Kuroco2k/gl-verb-form.js?action=raw&ctype=text/javascript'); mw.loader.load( '/w/index.php?title=利用者:Kuroco2k/verb-form-config.js&action=raw&ctype=text/javascript' ); rdbvnyu4uiyb51h1asblv9mg1eo2v7h 2313222 2313200 2026-08-08T23:24:12Z Kuroco2k 84207 スイッチオフ 2313222 javascript text/javascript mw.loader.load("/wiki/利用者:Kuroco2k/hangul.js?action=raw&ctype=text/javascript"); mw.loader.load('/wiki/利用者:Kuroco2k/es-verb-form.js?action=raw&ctype=text/javascript'); mw.loader.load('/wiki/利用者:Kuroco2k/pt-verb-form.js?action=raw&ctype=text/javascript'); mw.loader.load('/wiki/利用者:Kuroco2k/fr-verb-form.js?action=raw&ctype=text/javascript'); mw.loader.load('/wiki/利用者:Kuroco2k/de-verb-form.js?action=raw&ctype=text/javascript'); mw.loader.load('/wiki/利用者:Kuroco2k/gl-verb-form.js?action=raw&ctype=text/javascript'); mw.loader.load( '/w/index.php?title=利用者:Kuroco2k/verb-form-config.js&action=raw&ctype=text/javascript' ); tj1hi53cvhiv8ezeghlntm5uzqrwg26 モジュール:id-pronunciation 828 560499 2313441 2286378 2026-08-09T10:34:46Z Kuroco2k 84207 2313441 Scribunto text/plain -- Based on [[Module:es-pronunc]] by Benwing2 and [[Module:ceb-pron]] by TagaSanPedroAko. -- Original module by Rex Aurorum, improved by TagaSanPedroAko. -- Partly rewritten by TagaSanPedroAko, merging code from [[Module:es-pronunc]] back into this module; {{tl-pr}} restructured -- to take inline modifiers, like {{es-pr}}. -- Modified for {{id-pr}}. local export = {} --[==[ FIXME: 1. Use apostrophe ' to mark irregular stress instead of macron (e.g 'a not ā) 2. Ability to fully detect plosives cluster with /r/ and /l/ 3. Placement of stress where a word has schwas needs to be smarter (see [[w:Malay phonology]] for details). In entries and [[jenderal]], {{id-pr))/{{id-IPA}} would place the stress on wrong position (i.e. ultimate instead of penultimate) and currently needs adding a macron on vowel at syllable where stress actually applies. This rule doesn't seem to apply to affixed words with penultimate schwas such as [[menentang]] (root [[tentang]], which has ultimate stress), which should be pronounced with ultimate stress, so stress have to be applied manually. 4. Allow Q against K e.g. [[bapak]] respelled 'bapaq' with syllabification 'ba.pak', [[rakyat]] respelled 'raqyat' with syllabification 'rak.yat', . [DONE] 5. Fix syllabification of words with R followed by J e.g. [[kerja]], [[perjalanan]]. [DONE] 6. Fix syllabification of words with K pronounced as glottal stop (and respelled Q) followed by any consonant e.g. [[rakyat]], [[dakwa]], [[bakso]]. [DONE] 7. Allow syllabification of words with E respelled É and È. [DONE] 8. Diphthongs should not be split in syllabification. [DONE] 9. Final /k/ should be devoiced. [DONE] 10. "EU" found in borrowings and place names from Acehnese and Sundanese should be just rendered with schwa. [DONE] 11. Insert a /w/ or /j/ in vowel cluster beginning with /u/ or /i/ respectively. [TODO] 12. Diphthongs (ai, au, ei, ui) should be transcribed in phonemic IPA as vowel+i̯/u̯ instead of vowel+glide (j or w) [DONE] 13. Schwa insertion in pt and ps clusters as standard pronunciation and silent as nonstandard or English influenced pronunciation ]==] local force_cat = false -- enable for testing local m_IPA = require("Module:IPA") local m_str_utils = require("Module:string utilities") local m_table = require("Module:table") local accent_qualifier_module = "Module:accent qualifier" local audio_module = "Module:audio" local headword_data_module = "Module:headword/data" local hyphenation_module = "Module:hyphenation" local labels_module = "Module:labels" local parse_utilities_module = "Module:parse utilities" local rhymes_module = "Module:rhymes" local set_utilities_module = "Module:set utilities" local lang = require("Module:languages").getByCode("id") local rfind = m_str_utils.find local rsubn = m_str_utils.gsub local rsplit = m_str_utils.split local toNFC = mw.ustring.toNFC local toNFD = mw.ustring.toNFD local trim = mw.text.trim local u = m_str_utils.char local ulen = m_str_utils.len local ulower = m_str_utils.lower local unpack = unpack or table.unpack -- Lua 5.2 compatibility local AC = u(0x0301) -- acute = ́ local GR = u(0x0300) -- grave = ̀ local CFLEX = u(0x0302) -- circumflex = ̂ local MAC = u(0x0304) -- macron local BR = u(0x0306) -- breve = ˘ local vowel = "aeéèiɨoòuəɛɔ" -- vowel local V = "[" .. vowel .. "]" local W = "[jw]" -- glide local NV = "[^" .. vowel .. "]" local accent = AC .. GR .. MAC .. BR local accent_c = "[" .. accent .. "]" local stress_c = "[" .. MAC .. BR .. "]" local ipa_stress = "ˈ" local ipa_stress_c = "[" .. ipa_stress .. "]" local separator = accent .. ipa_stress .. "# .-" local C = "[^" .. vowel .. separator .. "]" -- consonant local unstressed_words = m_table.listToSet { --prepositions "di", "ké", -- letter names. Excluding ones that also occur as regular words "a", "bé", "cé", "dé", "é", "èf", "gé", "ha", "i", "jé", "èl", "èm", "èn", "o", "pé", "ki", "èr", "té", "u", "vé", "wé", "èks", "yé", "zèt", "dan" -- conjunction } local unstressed_affixes = m_table.listToSet { -- NOTE: prefixes here aren't currently used with prefixes themselves because they are all assumed unstressed -- in the absence of an explicit accent marker.. "-an", "-in", "ber-", "di-", "meng-", "me-", "peng-", "pe-", "per-", "-nya", "-mu", "-ku" } local function track(page) require("Module:debug/track")("id-pron/" .. page) return true end -- version of rsubn() that discards all but the first return value local function rsub(term, foo, bar) local retval = rsubn(term, foo, bar) return retval end -- version of rsubn() that returns a 2nd argument boolean indicating whether -- a substitution was made. local function rsubb(term, foo, bar) local retval, nsubs = rsubn(term, foo, bar) return retval, nsubs > 0 end -- apply rsub() repeatedly until no change local function rsub_repeatedly(term, foo, bar) while true do local new_term = rsub(term, foo, bar) if new_term == term then return term end term = new_term end end -- Combine two sets of qualifiers, either of which may be nil or a list of qualifiers. Remove duplicate qualifiers. -- Return value is nil or a list of qualifiers. local function combine_qualifiers(qual1, qual2) if not qual1 then return qual2 end if not qual2 then return qual1 end local qualifiers = m_table.deepCopy(qual1) for _, qual in ipairs(qual2) do m_table.insertIfNot(qualifiers, qual) end return qualifiers end local function decompose(text) -- decompose everything but é, è, Javanese ò text = toNFD(text) text = rsub(text, "." .. "[" .. AC .. CFLEX .. GR .. "]", { ["e" .. AC] = "é", ["e" .. GR] = "è", ["o" .. GR] = "ò", -- O as in the Javanese place names "Solo", "Purwokerto", "Probolinggo" }) return text end local function remove_accents(str) str = decompose(str) str = rsub(str, "(.)" .. accent_c, "%1") return str end local function split_on_comma(term) if term:find(",%s") then return require(parse_utilities_module).split_on_comma(term) else return rsplit(term, ",") end end -- ĵ, ɟ and ć are used internally to represent [d͡ʒ], [j] and [t͡ʃ] -- function export.IPA(text) local debug = {} text = ulower(text) text = decompose(text) -- convert commas and en/en dashes to IPA foot boundaries text = rsub(text, "%s*[,–—]%s*", " | ") -- question mark or exclamation point in the middle of a sentence -> IPA foot boundary text = rsub(text, "([^%s])%s*[!?]%s*([^%s])", "%1 | %2") -- canonicalize multiple spaces and remove leading and trailing spaces local function canon_spaces(text) text = rsub(text, "%s+", " ") text = rsub(text, "^ ", "") text = rsub(text, " $", "") return text end text = canon_spaces(text) -- Make prefixes unstressed unless they have an explicit stress marker; also make certain -- monosyllabic words (e.g. [[di]], [[ke]], [[se-]], [[meng-]], etc.) without stress marks be -- unstressed. local words = rsplit(text, " ") for i, word in ipairs(words) do if rfind(word, "%-$") and not rfind(word, accent_c) or unstressed_words[word] then -- add BR to the last vowel not the first one -- adding the BR after the 'u' words[i] = rsub(word, "^(.*" .. V .. ")", "%1" .. BR) end end text = table.concat(words, " ") -- Convert hyphens to spaces text = rsub(text, "%-", " ") -- canonicalize multiple spaces again, which may have been introduced by hyphens text = canon_spaces(text) -- now eliminate punctuation text = rsub(text, "[!?']", "") -- put # at word beginning and end and double ## at text/foot boundary beginning/end text = rsub(text, " | ", "# | #") text = "##" .. rsub(text, " ", "# #") .. "##" table.insert(debug, text) --"i" or "u" as part of diphthongs. to indicate these should be separate sounds, add a period. text = rsub(text, "(" .. V .. ")i([#.])", "%1i̯%2") text = rsub(text, "(" ..V.. ")u([#.])", "%1u̯%2") -- syllable-initial X (e.g. in [[xenofobia]], [[xenon]], [[xilofon]]) text = rsub(text, "x("..V..")", "s%1") -- handle certain combinations; eu, kh, ng, ny and sy handling needs to go first, so is word-initial ps/pt text = rsub(text, "eu", "ə") -- as used in Acehnese and Sundanese (e.g. [[Lhokseumawe]]) text = rsub(text, "kh", "x") text = rsub(text, "ng", "ŋ") text = rsub(text, "ny", "ɲ") text = rsub(text, "sy", "ʃ") text = rsub(text, "([#])p([st])", "pə.%2") -- e.g. [[psikologi]], [[pterodaktil]] text = rsub(text, "bh", "b") -- in terms from Sanskrit e.g. [[bhakti]], [[bhayangkara]] table.insert(debug, text) --alphabet-to-phoneme text = rsub(text, "[ceéègjòqvy]", --["g"]="ɡ": U+0067 LATIN SMALL LETTER G → U+0261 LATIN SMALL LETTER SCRIPT G { ["c"] = "ć", ["e"] = "ə", ["é"] = "e", ["è"] = "ɛ", ["g"] = "ɡ", ["j"] = "ĵ", ["ò"] = "ɔ", ["q"] = "ʔ", ["y"] = "j" }) -- reduce any remaining double consonants (e.g. [[massa]], [[Makassar]], [[Tallo]]); text = rsub(text, "(" .. C .. ")%1", "%1") --syllable division local vowel_to_glide = { ["i"] = "j", ["o"] = "w", ["u"] = "w" } -- i, o and u between vowels -> j and w e.g. [[rangkaian]]) text = rsub_repeatedly(text, "(" .. V .. accent_c .. "*)([iou])(" .. V .. ")", function(v1, iou, v2) return v1 .. vowel_to_glide[iou] .. v2 end ) table.insert(debug, text) -- "mb", "mp", "nd", "nk", "nt" combinations text = rsub_repeatedly(text, "(m)([bp])([^hlrɟ" .. vowel .. separator .."])(" .. V .. ")", "%1%2.%3%4") text = rsub_repeatedly(text, "(n)([dkt])([^hlrɟ" .. vowel .. separator .. "])(" .. V .. ")", "%1%2.%3%4") text = rsub_repeatedly(text, "(n)([s])([^lrt" .. vowel .. separator .. "])(" .. V .. ")", "%1.%2%3%4") text = rsub_repeatedly(text, "(ŋ)([k])([^hlrɟ" .. vowel .. separator .. "])(" .. V .. ")", "%1%2.%3%4") text = rsub_repeatedly(text, "([r])([bćdfɡklmnpsʃvz])([^hlrɟ" .. vowel .. separator .. "])(" .. V .. ")", "%1%2.%3%4") text = rsub_repeatedly(text, "([r])([t])([sz]?)([^hlrɟsʃ" .. vowel .. separator .. "])(" .. V .. ")", "%1%2%3.%4%5") text = rsub_repeatedly(text, "(" .. V .. accent_c .. "*)(" .. C .. W .. "?" .. V .. ")", "%1.%2") text = rsub_repeatedly(text, "(" .. V .. accent_c .. "*" .. C .. "+)(" .. C .. C .. V .. ")", "%1.%2") text = rsub_repeatedly(text, "(" .. V .. accent_c .. "*" .. C .. ")(" .. C .. V .. ")", "%1.%2") text = rsub_repeatedly(text, "(" .. V .. accent_c .. "*" .. C .. "+)(" .. C .. C .. V .. ")", "%1.%2") text = rsub_repeatedly(text, "(" .. C .. ")%.s(" .. C .. ")", "%1s.%2") text = rsub_repeatedly(text, "(" .. V .. accent_c .. "*)("..V..")", "%1.%2") --fix diphthongs before stress is applied. text = rsub(text, "(" .. V .. ")([.])i̯([#.])", "%1i̯%3") text = rsub(text, "(" ..V.. ")([.])u̯([#.])", "%1u̯%3") table.insert(debug, text) local accent_to_stress_mark = { [MAC] = "ˈ", [BR] = "" } local function accent_word(word, syllables) -- Now stress the word. If any accent exists in the word (including macron indicating an unaccented word), -- put the stress mark(s) at the beginning of the indicated syllable(s). Otherwise, apply the default -- stress rule. if rfind(word, accent_c) then for i = 1, #syllables do syllables[i] = rsub(syllables[i], "^(.*)(" .. accent_c .. ")(.*)$", function(pre, accent, post) return accent_to_stress_mark[accent] .. pre .. post end ) end else -- Default stress rule. Words without vowels (e.g. IPA foot boundaries) don't get stress. if #syllables == 1 and rfind(word, V) then syllables[#syllables] = "ˈ" ..syllables[#syllables] -- Monosyllabic words with schwa don't get stress elseif #syllables == 2 and rfind(word, "([ə])(".. C .."?)([#])") then syllables[#syllables - 1] = "ˈ" .. syllables[#syllables - 1] elseif #syllables == 2 and rfind(word, "([ə])(".. C .."?)([.])") then syllables[#syllables] = "ˈ" .. syllables[#syllables] elseif #syllables >= 3 and rfind(word, "([.])(".. C .."?)([ə])(".. C .."?)([.])(".. C .."?)(".. V ..")(".. V .."?)(".. C .."?)(".. C .."?)([#])") then syllables[#syllables] = "ˈ" .. syllables[#syllables] elseif #syllables > 1 then syllables[#syllables - 1] = "ˈ" .. syllables[#syllables - 1] end end end local words = rsplit(text, " ") for j, word in ipairs(words) do -- accentuation local syllables = rsplit(word, "%.") accent_word(word, syllables) -- Reconstruct the word. words[j] = table.concat(syllables, ".") end text = table.concat(words, " ") -- suppress syllable mark before IPA stress indicator text = rsub(text, "%.(" .. ipa_stress_c .. ")", "%1") --make all primary stresses but the last one be secondary text = rsub_repeatedly(text, "ˈ(.+)ˈ", "ˌ%1ˈ") table.insert(debug,text) --correct final consonant placement before Y or W text = rsub(text,"([.])(".. C ..")([ɟjw])(" .. V .. ")","%2%1%3%4") table.insert(debug,text) text = rsub_repeatedly(text, "^([#]*)([ˈˌ])([#]*)", "%1%3%2") -- Move stress inside word boundary fix at start text = rsub_repeatedly(text, "([ ])([#]*)([ˈˌ])([#]*)", "%1%2%4%3") -- Move stress inside word boundary fix at start local id_IPA_table = { ["phonetic"] = text, ["phonemic"] = text, ["raw"] = text } for key, value in pairs(id_IPA_table) do text = id_IPA_table[key] --phonetic transcription if key == "phonetic" then table.insert(debug, text) --vowel plus glide to diphthong (to handle examples such as [[siomay]], [[Mongondow]], [[kuproy]]) text = rsub(text, "([aeou])([jɟ])([#.ˈ])", "%1i̯%3") text = rsub(text, "([a])w([#.ˈ])", "%1u̯%2") table.insert(debug, text) --change i, u in closed final syllables text = rsub(text, "(".. C .."?)i(".. C ..")([#])","%1ɪ%2%3") text = rsub(text, "(".. C .."?)u(".. C ..")([#])","%1ʊ%2%3") text = rsub(text, "(".. C .."?)e(".. C ..")([#])","%1ɛ%2%3") text = rsub(text, "(".. C .."?)o(".. C ..")([#])","%1ɔ%2%3") table.insert(debug, text) --i, u in closed stressed syllables with nasal coda text = rsub(text, "([ˈ])(".. C .. ")ɪ([mnŋ])([.#])","%1%2i%3%4") text = rsub(text, "([ˈ])(" .. C .. ")ʊ([mnŋ])([.#])","%1%2u%3%4") text = rsub(text, "([ˈ])(".. C .. ")ɛ([mnŋ])([.#])","%1%2e%3%4") text = rsub(text, "([ˈ])(" .. C .. ")ɔ([mnŋ])([.#])","%1%2o%3%4") table.insert(debug, text) -- prevent unreleased plosives before syllables starting with j or w text = rsub(text, "p([#.ˈ])([jw])", "p%1%2") text = rsub(text, "t([#.ˈ])([jw])", "t̪%1%2") text = rsub(text, "k([#.ˈ])([jw])", "k%1%2") text = rsub(text, "b([#.ˈ])([jw])", "b%1%2") text = rsub(text, "d([#.ˈ])([jw])", "d%1%2") text = rsub(text, "ɡ([#.ˈ])([jw])", "ɡ%1%2") -- then apply the usual final-stop unreleased rule safely text = rsub(text, "[bp]([#.ˈ])","p̚%1") text = rsub(text, "[dt]([#.ˈ])","t̚%1") text = rsub(text, "[ɡk]([#.ˈ])","k̚%1") --Indonesian /t/ is dental text = rsub(text, "t","t̪") --/n/ sandhi text = rsub(text,"([n])([ˈˌ# .]*[ćĵʃ])","ɲ%2") text = rsub(text,"([n])([ˈˌ# .]*[t])", "n̪%2") --V to F text = rsub(text, "v","f") --final fix for phonetic diphthongs text = rsub(text,"(".. V ..")ɪ̯","%1i̯") -- ai, ei text = rsub(text,"(".. V ..")ʊ̯","%1u̯") --au -- insert optional glottal stop between identical vowels (e.g., aa → a(ʔ)a) text = rsub(text, "([aeiouɛɔɪʊə])%.?%1", "%1.(ʔ)%1") mw.log(text) end table.insert(debug, text) -- convert fake symbols to real ones local final_conversions = { ["ć"] = "t͡ʃ", -- fake "c" to real "c" ["ɟ"] = "j", -- fake "i" to real "i" ["ĵ"] = "d͡ʒ" -- fake "j" to real "j" } text = rsub(text, "[ćɟĵ]", final_conversions) -- Do not have multiple syllable break consecutively text = rsub_repeatedly(text, "([.]+)", ".") text = rsub_repeatedly(text, "([.]?)(‿)([.]?)", "%2") -- remove # symbols at word and text boundaries text = rsub_repeatedly(text, "([.]?)#([.]?)", "") -- resuppress syllable mark before IPA stress indicator text = rsub(text, "%.(" .. ipa_stress_c .. ")", "%1") text = rsub_repeatedly(text, "([.]?)(" .. ipa_stress_c .. ")([.]?)", "%2") id_IPA_table[key] = canon_spaces(toNFC(text)) end return id_IPA_table end function export.show(frame) local params = { [1] = {}, ["pre"] = {}, ["bullets"] = {type = "number", default = 1}, } local parargs = frame:getParent().args local args = require("Module:parameters").process(parargs, params) local results = {} local text = args[1] or mw.loadData("Module:headword/data").pagename local IPA_result = export.IPA(text) table.insert(results, { pron = "/" .. IPA_result["phonemic"] .. "/" }) table.insert(results, { pron = "[" .. IPA_result["phonetic"] .. "]" }) local pre = args.pre and args.pre .. " " or "" local bullet = (args.bullets ~= 0) and "* " or "" return bullet .. pre .. m_IPA.format_IPA_full { lang, results } end local function parse_gloss(arg) local poses, gloss if arg:find("%^") then poses, gloss = arg:match("^(.-)%^(.*)$") if gloss == "" then gloss = nil end else gloss = arg end if poses then poses = split_on_comma(poses) local m_headword_data = mw.loadData(headword_data_module) for i, pos in ipairs(poses) do poses[i] = m_headword_data.pos_aliases[pos] or pos end end return { poses = poses, gloss = gloss, } end -- Parse a raw accent spec, which is one or more comma-separated accent qualifiers. local function parse_accents(arg) return require(labels_module).split_labels_on_comma(arg) end -- Return the number of syllables of a phonemic or phonetic representation, which should have syllable dividers in it -- but no hyphens. local function get_num_syl_from_ipa(pron) -- Maybe we should just count vowels instead of the below code. pron = rsub(pron, "|", " ") -- remove IPA foot boundaries local words = rsplit(pron, " +") for i, word in ipairs(words) do -- IPA stress marks are syllable divisions if between characters; otherwise just remove. word = rsub(word, "(.)[ˌˈ](.)", "%1.%2") word = rsub(word, "[ˌˈ]", "") words[i] = word end -- There should be a syllable boundary between words. pron = table.concat(words, ".") return ulen(rsub(pron, "[^.]", "")) + 1 end -- Get the rhyme by truncating everything up through the last stress mark + any following consonants, and remove -- syllable boundary markers. local function convert_phonemic_to_rhyme(phonemic) -- NOTE: This works because the phonemic vowels are just [aeiou] possibly with diacritics that are separate -- Unicode chars. phonemic = rsplit(phonemic, " ") phonemic = phonemic[#phonemic] phonemic = rsub(rsub(phonemic, ".*[ˌˈ]", ""), "^" .. NV .. "*", ""):gsub("%.", "") phonemic = rsub_repeatedly(phonemic, "^[iu](" .. V .. ")", "%1" ) return phonemic end local function split_syllabified_spelling(spelling) spelling = "#" .. spelling .. "#" spelling = rsub_repeatedly(spelling, "%.([ #])", "·%1") spelling = rsub_repeatedly(spelling, "#", "") spelling = rsplit(spelling, "%.") for key, value in ipairs(spelling) do spelling[key] = rsub_repeatedly(value, "·", ".") end return spelling end -- "Align" syllabified respelling `syllab` to original spelling `spelling` by matching character-by-character, allowing -- for extra syllable and accent markers in the syllabification and certain mismatches in the consonants. The goal is to -- produce the appropriately syllabified version of the original spelling (the pagename) by matching characters in the -- syllabified respelling to the original spelling, putting the syllable boundaries in the appropriate places in the -- original spelling. -- -- If we encounter an extra syllable marker (.), we allow and keep it. If we encounter an extra accent marker in thes -- syllabification, we drop it. We allow for mismatches in capitalization and for certain other mismatches, e.g. extra -- glottal stops (written q), respelling of unadapted loanwords, etc. If we can't match, we return nil -- indicating the alignment failed. local function align_syllabification_to_spelling(syllab, spelling) local result = {} local function concat_result() -- Postprocess to remove dots (syllable boundaries) next to hyphens. return (toNFC(table.concat(result)):gsub("%.%-", "-"):gsub("%-%.", "-")) end -- Replace glottal stop (q) from respelling with k, as found for original -- spelling. (FIXME: Diacritics should be removed , but they're currently removed earlier, in -- syllabify_from_spelling(). We should probably get rid of the removal there and put it here.) syllab = decompose(syllab:gsub("ː", "")):gsub("7", "q") local syll_chars = rsplit(ulower(syllab), "") local spelling_chars = rsplit(spelling, "") local i = 1 local j = 1 local function matches(uci, ucj) -- Return true if a syllabified respelling character (uci) matches the corresponding spelling char (ucj). -- Both uci and ucj should be lowercase. -- Sound is at the key, values are the letters sound can match local matching_chars = { ["e"] = {"e", "a"}, ["k"] = {"k", "q"}, ["s"] = {"j", "c", "x"} } return uci == ucj or (matching_chars[uci] and m_table.contains(matching_chars[uci], ucj) and true) or false end local function silent_spelling_letter(ucj) return ucj == "h" or ucj == "'" or ucj == "-" end local function syll_at(pos) return syll_chars[pos] or "" end local function spell_at(pos) return spelling_chars[pos] or "" end local function uspell_at(pos) local c = spelling_chars[pos] return c and ulower(c) or "" end while i <= #syll_chars or j <= #spelling_chars do local uci = syll_at(i) local cj = spell_at(j) local ucj = uspell_at(j) if uci == "g" and syll_at(i - 1) == "n" and syll_at(i + 1) == "." and matches(syll_at(i + 2), ucj) and not matches(syll_at(i + 2), uspell_at(j + 1)) then -- As a special case, before checking whether the corresponding characters match, we have to skip an extra -- g in an -ng- sequence in the syllabified respelling if the corresponding spelling character matches the -- next respelling character (taking into account the syllable boundary). i = i + 1 elseif uci == "g" and ucj == "g" and uspell_at(j + 1) == TILDE then table.insert(result, cj) table.insert(result, uspell_at(j + 1)) i = i + 1 j = j + 2 elseif matches(uci, ucj) then table.insert(result, cj) i = i + 1 j = j + 1 elseif ucj == uspell_at(j - 1) and uci == "." and ucj ~= syll_at(i + 1) then -- See below. We want to allow for a doubled letter in spelling that is pronounced single, and preserve the -- doubled letter. But it's tricky in the presence of syllable boundaries on both sides of the doubled -- letter as well as doubled letters pronounced double. Specifically, there are three possibilities, -- exemplified by: -- (1) syll='Ma.ka.ssar', spelling='Makassar' -> 'Ma.ka.ssar'; -- (2) syll='Ta.llo', spelling='Tallo' -> 'Ta.llo'. table.insert(result, cj) j = j + 1 elseif silent_spelling_letter(ucj) and uci == "." and ucj ~= syll_at(i + 1) and not rfind(uspell_at(j + 1), V) then -- See below for apostrophe in spelling. This condition is parallel to the one directly above -- for silent doubled letters in spelling and handles the case of syllab='Abdurrahmān', spelling='Abdurahman', -- which should be syllabified 'Ab.du.rrah.man'. But we need a check to see that the next spelling character -- isn't a vowel, because in that case we want the silent letter to go after the period, e.g. -- syllab='Jumu.ah', spelling='Jumu'ah' -> 'Ju.mu.ah'. table.insert(result, cj) j = j + 1 elseif uci == "." then table.insert(result, uci) i = i + 1 elseif ucj == uspell_at(j - 1) then -- A doubled letter in spelling that is pronounced single. Examples: -- * syllab='mas.sa', spelling='massa' -> 'masa' (with s) -- * syllab='Ma.kas.sar', spelling='Makassar' -> 'Ma.ka.ssar' (with s) -- * syllab='Ka.a.ba', spelling='Kaaba' -> 'Kaa.ba' (with a) -- * syllab='Tal.lo', spelling='Tallo' -> 'Tal.lo' (with l) table.insert(result, cj) j = j + 1 elseif silent_spelling_letter(ucj) then -- A silent h, apostrophe or hyphen in spelling. Examples: -- * syllab='Ramadān', spelling='Ramadhan' -> 'Ra.ma.dhan' table.insert(result, cj) j = j + 1 elseif uci == AC or uci == GR or uci == MAC or uci == BR or uci == "y" or uci == "w" then -- skip character i = i + 1 else -- non-matching character mw.log(("Syllabification alignment mismatch for pagename '%s' (position %s, character %s), syllabified respelling '%s' (position %s, character %s), aligned result so far '%s'" ):format(spelling, j, ucj, syllab, i, uci, concat_result())) return nil end end if i <= #syll_chars or j <= #spelling_chars then -- left-over characters on one side or the other mw.log(("Syllabification alignment mismatch for pagename '%s' (%s), syllabified respelling '%s' (%s), aligned result so far '%s'" ):format( spelling, j > #spelling_chars and "end of string" or ("position %s, character %s"):format(j, uspell_at(j)), syllab, i > #syll_chars and "end of string" or ("position %s, character %s"):format(i, syll_at(i)), concat_result())) return nil end return concat_result() end local function generate_syll_obj(term) return {syllabification = term, hyph = split_syllabified_spelling(term)} end -- Word should already be decomposed. local function word_has_vowels(word) word = ulower(word) return rfind(word, V) or word:find("y") end local function any_words_have_vowels(term) local words = rsplit(decompose(term), "[ %-]") for i, word in ipairs(words) do -- Allow empty word; this occurs with prefixes and suffixes. if word_has_vowels(word) then return true end end return false end local function should_generate_rhyme_from_respelling(term) local words = rsplit(decompose(term), " +") local last_word = words[#words] local should_generate_cat = #words == 1 local should_generate_rhyme = not last_word:find("%-$") and -- no if word is a prefix not (last_word:find("^%-") and last_word:find(MAC)) and -- no if word is an unstressed suffix word_has_vowels(last_word) -- no if word has no vowels (e.g. a single letter) return should_generate_rhyme, should_generate_cat end local function should_generate_rhyme_from_ipa(ipa) local should_generate_cat = not ipa:find("%s") local should_generate_rhyme = word_has_vowels(decompose(ipa)) return should_generate_rhyme, should_generate_cat end local function should_generate_rhyme_from_termobj(termobj) if termobj.raw then return should_generate_rhyme_from_ipa(termobj.raw_phonemic or termobj.raw_phonetic) else return should_generate_rhyme_from_respelling(termobj.term) end end local function process_specified_rhymes(rhymes, sylls, parsed_respellings) local rhyme_ret = {} for _, rhyme in ipairs(rhymes) do local num_syl = rhyme.num_syl local no_num_syl = false -- If user explicitly gave the rhyme but didn't explicitly specify the number of syllables, try to take it from -- the syllabification. if not num_syl then num_syl = {} for _, syll in ipairs(sylls) do if should_generate_rhyme_from_respelling(syll.syllabification) then local this_num_syl = 1 + ulen(rsub(syll.syllabification, "[^.]", "")) m_table.insertIfNot(num_syl, this_num_syl) else no_num_syl = true break end end if no_num_syl or #num_syl == 0 then num_syl = nil end end -- If that fails and term is single-word, try to take it from the phonemic. if not no_num_syl and not num_syl then for _, parsed in ipairs(parsed_respellings) do for _, pronun in ipairs(parsed.pronuns) do -- Check that pronun.phonemic exists (it may not if raw phonetic-only pronun is given), and rhyme -- isn't suppressed (which may happen if the term has a qualifier "colloquial", "obsolete" or the -- like or is an auto-generated "glottal stop elision" pronunciation). if pronun.phonemic and not pronun.no_rhyme then if not should_generate_rhyme_from_ipa(pronun.phonemic) then no_num_syl = true break end -- Count number of syllables by looking at syllable boundaries (including stress marks). local this_num_syl = get_num_syl_from_ipa(pronun.phonemic) m_table.insertIfNot(num_syl, this_num_syl) end end if no_num_syl then break end end if no_num_syl or #num_syl == 0 then num_syl = nil end end local rhymeobj = m_table.shallowCopy(rhyme) rhymeobj.num_syl = num_syl table.insert(rhyme_ret, rhymeobj) end end -- Parse a pronunciation modifier in `arg`, the argument portion in an inline modifier (after the prefix), which -- specifies a pronunciation property such as rhyme, syllabification, homophones or audio. The argument can itself have -- inline modifiers, e.g. <audio:Foo.ogg<a:Jakarta>>. The allowed inline modifiers are specified by `param_mods` (of -- the format expected by `parse_inline_modifiers()`); in addition to any modifiers specified there, the modifiers -- <q:...>, <qq:...>, <a:...> and <aa:...> are always accepted (and can be repeated). `generate_obj` and `parse_err` are -- like in `parse_inline_modifiers()` and specify respectively a function to generate the object into which modifier -- properties are stored given the non-modifier part of the argument, and a function to generate an error message (given -- the message). Normally, a comma-separated list of pronunciation properties is accepted and parsed, where each element -- in the list can have its own inline modifiers and where no spaces are allowed next to the commas in order for them to -- be recognized as separators. If `no_split_on_comma` is given, only a single pronunciation property is accepted. If -- `has_outer_container` is given, the list of pronunciation properties is embedded in the `terms` property of an outer -- container, into which other list-level modifiers can also be stored (by setting `overall = "true"` in the respective -- spec in `param_mods`). The return value is a list if neither `no_split_on_comma` nor `has_outer_container` are given, -- otherwise a container object (which, in the case of `has_outer_container`, will contain a list inside of it, in the -- `terms` property). local function parse_pron_modifier(arg, parse_err, generate_obj, param_mods, no_split_on_comma, has_outer_container) if arg:find("<") then local insert = { store = "insert" } param_mods.q = insert param_mods.qq = insert param_mods.a = insert param_mods.aa = insert return require(parse_utilities_module).parse_inline_modifiers(arg, { param_mods = param_mods, generate_obj = generate_obj, parse_err = parse_err, splitchar = not no_split_on_comma and "," or nil, outer_container = has_outer_container and {} or nil, }) elseif no_split_on_comma then return generate_obj(arg) else local retval = {} for _, term in ipairs(split_on_comma(arg)) do table.insert(retval, generate_obj(term)) end if has_outer_container then retval = { terms = retval, } end return retval end end local function parse_rhyme(arg, parse_err) local function generate_obj(term) return {rhyme = term} end local param_mods = { s = { item_dest = "num_syl", type = "number", sublist = true, }, } return parse_pron_modifier(arg, parse_err, generate_obj, param_mods) end local function parse_syll(arg, parse_err) local param_mods = { cap = { overall = true}, } -- We need to pass in has_outer_container because we have an overall property <cap:...> (the caption, defaulting -- to "Syllabification") applying to the whole set of syllabifications. return parse_pron_modifier(arg, parse_err, generate_syll_obj, param_mods, nil, "has outer container") end local function parse_homophone(arg, parse_err) local function generate_obj(term) return {term = term} end local param_mods = { t = { -- [[Module:links]] (called from [[Module:homophones]]) expects the gloss in "gloss". item_dest = "gloss", }, gloss = {}, pos = {}, alt = {}, lit = {}, id = {}, g = { -- [[Module:links]] (called from [[Module:homophones]]) expects the genders in "genders". item_dest = "genders", sublist = true, }, } return parse_pron_modifier(arg, parse_err, generate_obj, param_mods) end local function generate_audio_obj(arg) local file, gloss = arg:match("^(.-)%s*#%s*(.*)$") if not file then file = arg gloss = "Audio" end return {file = file, gloss = gloss} end local function parse_audio(arg, parse_err) -- None other than qualifiers local param_mods = {} -- Don't split on comma because some filenames have embedded commas not followed by a space (typically followed by -- an underscore). return parse_pron_modifier(arg, parse_err, generate_audio_obj, param_mods, "no split on comma") end local function syllabify_from_spelling(text, pagename) -- Auto syllabifications start -- local vowel = vowel .. "ẃý" -- vowel local V = "[" .. vowel .. "]" local NV = "[^" .. vowel .. "]" local C = "[^" .. vowel .. separator .."]" -- consonant text = decompose(text) local origtext = remove_accents(text) text = string.lower(text) text = rsub(text, "[.] ", "․ ") text = rsub(text, "[.]$", "․") -- put # at word beginning and end and double ## at text/foot boundary beginning/end text = rsub(text, " | ", "# | #") text = "##" .. rsub(text, " ", "# #") .. "##" text = rsub_repeatedly(text, "([.]?)#([.]?)", "#") text = rsub(text, "bh", "β") text = rsub(text, "eu", "ɨ") text = rsub(text, "ng", "ŋ") text = rsub(text, "ny", "ɲ") text = rsub(text, "c", "ć") text = rsub(text, "j", "ĵ") text = rsub(text, "kh", "x") text = rsub(text, "sy", "ʃ") text = rsub(text, "ʔ(["..separator.."])", "q%1") text = rsub(text, "(" .. V .. ")(" .. accent_c .. "?)ẃ([bdfgkpt])([r" .. vowel .. separator .."])" ,"%1%2w%3%4") text = rsub(text, "(" .. V .. ")(" .. accent_c .. "?)ẃ([bfgkp])([l" .. vowel .. separator .."])" ,"%1%2w%3%4") text = rsub(text, "(" .. V .. ")(" .. accent_c .. "?)ý([bdfgkpt])([r" .. vowel .. separator .."])" ,"%1%2y%3%4") text = rsub(text, "(" .. V .. ")(" .. accent_c .. "?)ý([bfgkp])([l" .. vowel .. separator .."])" ,"%1%2y%3%4") text = rsub_repeatedly(text, "(" .. V .. accent_c .. "*)(" .. C .. V .. ")", "%1.%2") -- "mb", "mp", "nd", "nk", "nt" combinations text = rsub_repeatedly(text, "(m)([bp])([^lrɟy" .. vowel .. separator .."])(" .. V .. ")", "%1%2.%3%4") text = rsub_repeatedly(text, "(n)([dk])([^lrɟy" .. vowel .. separator .. "])(" .. V .. ")", "%1%2.%3%4") text = rsub_repeatedly(text, "(n)([s])([^ɟy" .. vowel .. separator .. "])(" .. V .. ")", "%1%2.%3%4") text = rsub_repeatedly(text, "(n)([t])([^lrɟys" .. vowel .. separator .. "])(" .. V .. ")", "%1%2.%3%4") text = rsub_repeatedly(text, "(ŋ)([k])([^lrɟy" .. vowel .. separator .. "])(" .. V .. ")", "%1%2.%3%4") text = rsub_repeatedly(text, "([r])([bćdfgklmnpsʃvz])([^lrɟy" .. vowel .. separator .. "])(" .. V .. ")", "%1%2.%3%4") text = rsub_repeatedly(text, "([r])([t])([sz]?)([^lrɟysʃ" .. vowel .. separator .. "])(" .. V .. ")", "%1%2%3.%4%5") text = rsub_repeatedly(text, "(" .. V .. accent_c .. "*)(" .. C .. W .. "?" .. V .. ")", "%1.%2") text = rsub_repeatedly(text, "(" .. V .. accent_c .. "*" .. C .. ")(" .. C .. V .. ")", "%1.%2") text = rsub_repeatedly(text, "(" .. V .. accent_c .. "*" .. C .. "+)(" .. C .. C .. V .. ")", "%1.%2") text = rsub_repeatedly(text, "(" .. C .. ")%.s(" .. C .. ")", "%1s.%2") -- Any aeéèo, or stressed iu, should be syllabically divided from a following aeéèo or stressed iu. text = rsub_repeatedly(text, "([aeéèo]" .. accent_c .. "*)([aeéèo])", "%1.%2") text = rsub_repeatedly(text, "([aeéèo]" .. accent_c .. "*)(" .. V .. accent_c .. ")", "%1.%2") text = rsub(text, "([iu]" .. accent_c .. ")([aeéèo])", "%1.%2") text = rsub_repeatedly(text, "([iu]" .. accent_c .. ")(" .. V .. accent_c .. ")", "%1.%2") text = rsub_repeatedly(text, "i(" .. accent_c .. "*)i", "i%1.i") text = rsub_repeatedly(text, "u(" .. accent_c .. "*)u", "u%1.u") text = rsub_repeatedly(text, "i([aeéèou])", "i.%1") text = rsub_repeatedly(text, "u([aeéèio])", "u.%1") --correct final consonant placement before any glides (e.g. in [[rakyat]], [[dakwa]] [[jadwal]]) text = rsub(text,"([.])(".. C .. ")(".. W ..")(" .. V .. ")","%2%1%3%4") text = rsub(text, "β", "bh") text = rsub(text, "ć", "c") text = rsub(text, "ĵ", "j") text = rsub(text, "x", "kh") text = rsub(text, "ŋ", "ng") text = rsub(text, "ɲ", "ny") text = rsub(text, "ʃ", "sy") text = rsub(text, "q", "k") text = rsub(text, "ɨ", "eu") text = rsub(text, "([éè])", "e") text = rsub(text, "ò", "o") text = remove_accents(text) text = rsub_repeatedly(text, "([.]+)", ".") text = rsub(text, "[.]?-[.]?", "-") text = rsub(text, "[‿]([^ ])", "|%1") text = rsub(text, "[.]([^ ])", "|%1") text = rsub(text, "([|])+", "%1") -- remove # symbols at word and text boundaries text = rsub_repeatedly(text, "([.]?)#([.]?)", "") text = rsub(text, "․", ".") -- Fix Capitalization -- local syllbreak = 0 for i=1, #text do if text:sub(i,i) == "|" and origtext:sub(i-syllbreak, i-syllbreak) ~= "." and origtext:sub(i-syllbreak, i-syllbreak) ~= "7" then syllbreak = syllbreak + 1 elseif origtext:sub(i-syllbreak, i-syllbreak) == text:sub(i,i):upper() then text = table.concat({text:sub(1, i-1), text:sub(i,i):upper(), text:sub(i+1)}) end end -- Fix hyphens -- -- FIXME!!! Why are we relying on looking at the pagename here? This should not be happening. origtext = pagename if (table.concat(rsplit(origtext, "-")) == table.concat(rsplit(table.concat(rsplit(text, "|")), "-"))) then syllbreak = 0 for i=1, #text do if text:sub(i,i) == "|" then if origtext:sub(i-syllbreak, i-syllbreak) == "-" then text = table.concat({text:sub(1, i-1), "-", text:sub(i+1)}) else syllbreak = syllbreak + 1 end end end end -- FIXME! Hack -- up above we changed periods to vertical bars. The rest of the code expects periods so change -- them back. We should clean up the code above to leave the periods alone. return (text:gsub("|", "%.")) end function export.syllabify_and_align(respelling, pagename) local syllabification = syllabify_from_spelling(respelling, pagename) return align_syllabification_to_spelling(syllabification, pagename) end local function css_wrap(text, classes) return ('<span class="%s">%s</span>'):format(classes, text) end local function format_glosses(glosses) if not glosses then return "" end local formatted_glosses = {} for _, glossobj in ipairs(glosses) do local gloss_parts = {} if glossobj.gloss then table.insert(gloss_parts, css_wrap("“", "mention-gloss-double-quote") .. css_wrap(glossobj.gloss, "mention-gloss") .. css_wrap("”", "mention-gloss-double-quote")) end if glossobj.poses then for _, pos in ipairs(glossobj.poses) do table.insert(gloss_parts, css_wrap(pos, "ann-pos")) end end table.insert(formatted_glosses, table.concat(gloss_parts, css_wrap(",", "mention-gloss-comma") .. " ")) end return " " .. css_wrap("(", "mention-gloss-paren annotation-paren") .. table.concat(formatted_glosses, css_wrap(";", "mention-gloss-semicolon") .. " ") .. css_wrap(")", "mention-gloss-paren annotation-paren") end local function format_pronuns(pronuns) local pronunciations = {} -- Loop through each pronunciation. For each one, add the phonemic and phonetic versions to `pronunciations`, -- for formatting by [[Module:IPA]]. for j, pronun in ipairs(pronuns) do local qs = pronun.q local first_pronun = #pronunciations + 1 if not pronun.phonemic and not pronun.phonetic then error("Internal error: Saw neither phonemic nor phonetic pronunciation") end if pronun.phonemic then -- missing if 'raw:[...]' given -- don't display syllable division markers in phonemic local slash_pron = "/" .. pronun.phonemic:gsub("%.", "") .. "/" table.insert(pronunciations, { pron = slash_pron, }) end if pronun.phonetic then -- missing if 'raw:/.../' given local bracket_pron = "[" .. pronun.phonetic .. "]" table.insert(pronunciations, { pron = bracket_pron, }) end local last_pronun = #pronunciations if pronun.q then pronunciations[first_pronun].q = pronun.q end if j > 1 then pronunciations[first_pronun].separator = ", " end if pronun.qq then pronunciations[last_pronun].qq = pronun.qq end if pronun.refs then pronunciations[last_pronun].refs = pronun.refs end if first_pronun ~= last_pronun then pronunciations[last_pronun].separator = " " end end return m_IPA.format_IPA_full(lang, pronunciations, nil, "") end local function format_pronun_line(parsed) local formatted_pronuns = format_pronuns(parsed.pronuns) local pre = is_first and parsed.pre and parsed.pre .. " " or "" local post = is_first and parsed.post and " " .. parsed.post or "" return pre .. formatted_pronuns .. format_glosses(parsed.t) .. post end local function parse_respelling(respelling, pagename, parse_err) local raw_respelling = respelling:match("^raw:(.*)$") if raw_respelling then local raw_phonemic, raw_phonetic = raw_respelling:match("^/(.*)/ %[(.*)%]$") if not raw_phonemic then raw_phonemic = raw_respelling:match("^/(.*)/$") end if not raw_phonemic then raw_phonetic = raw_respelling:match("^%[(.*)%]$") end if not raw_phonemic and not raw_phonetic then parse_err(("Unable to parse raw respelling '%s', should be one of /.../, [...] or /.../ [...]") :format(raw_respelling)) end return { raw = true, raw_phonemic = raw_phonemic, raw_phonetic = raw_phonetic, } end if respelling == "+" then respelling = pagename end return {term = respelling} end -- External entry point for {{id-pr}}. function export.show_full(frame) --------------------------------- 1. Parse the arguments. ------------------------------------ local params = { [1] = {list = true}, ["rhyme"] = {}, ["syll"] = {}, ["hmp"] = {}, ["audio"] = {list = true}, ["pagename"] = {}, } local parargs = frame:getParent().args local args = require("Module:parameters").process(parargs, params) local pagename = args.pagename or mw.loadData("Module:headword/data").pagename local respellings = #args[1] > 0 and args[1] or {"+"} local parsed_respellings = {} local function overall_parse_err(msg, arg, val) error(msg .. ": " .. arg .. "=" .. val) end local overall_rhyme = args.rhyme and parse_rhyme(args.rhyme, function(msg) overall_parse_err(msg, "rhyme", args.rhyme) end) or nil local overall_syll = args.syll and parse_syll(args.syll, function(msg) overall_parse_err(msg, "syll", args.syll) end) or nil local overall_hmp = args.hmp and parse_homophone(args.hmp, function(msg) overall_parse_err(msg, "hmp", args.hmp) end) or nil local overall_audio if #args.audio > 0 then overall_audio = {} for _, audio in ipairs(args.audio) do local parsed_audio = parse_audio(audio, function(msg) overall_parse_err(msg, "audio", audio) end) table.insert(overall_audio, parsed_audio) end end -- Parse each respelling. Individual arguments in 1=, 2=, etc. can consist of one or more comma-separated -- respellings, each of which can have inline modifiers <q:...>, <qq:...>, <a:...>, <aa:...> or <ref:...>. -- In addition, the respellings as a whole of a given argument can be followed by various inline modifiers, -- such as <t:...>, <rhyme:...>, <syll:...>, etc. The result of parsing goes into `parsed_respellings`, which -- is a list of objects (one per numbered argument), each of which is a table of the form -- -- { -- terms = {TERM, TERM, ...}, -- audio = {AUDIO, AUDIO, ...}, -- rhyme = {RHYME, RHYME, ...}, -- syll = {SYLL, SYLL, ...}, -- hmp = {HMP, HMP, ...}, -- t = {GLOSS, GLOSS, ...}, -- pre = "PRE-TEXT" or nil, -- post = "POST-TEXT" or nil, -- bullets = NUM_BULLETS, -- accents = {"ACCENT", "ACCENT", ...}, -- } -- -- In this structure, TERM is an object that usually has the form -- -- { -- term = "RESPELLING", -- ref = {"REF-SPEC", "REF-SPEC", ...}, -- q = {"QUALIFIER", "QUALIFIER", ...}, -- qq = {"QUALIFIER", "QUALIFIER", ...}, -- } -- -- Note that in this structure, "REF-SPEC" of the form parsable by parse_references() in [[Module:references]]. -- -- Alternatively, if phonemic or phonetic IPA is given in place of a respelling, TERM will have the form -- -- { -- raw = true, -- phonemic = "PHONEMIC", -- phonetic = "PHONETIC", -- ref = {"REF-SPEC", "REF-SPEC", ...}, -- q = {"QUALIFIER", "QUALIFIER", ...}, -- qq = {"QUALIFIER", "QUALIFIER", ...}, -- } -- -- AUDIO is a table of the form -- -- { -- file = "FILE", -- gloss = "GLOSS", -- q = {"QUALIFIER", "QUALIFIER", ...}, -- qq = {"QUALIFIER", "QUALIFIER", ...}, -- a = {"ACCENT-QUALIFIER", "ACCENT-QUALIFIER", ...}, -- aa = {"ACCENT-QUALIFIER", "ACCENT-QUALIFIER", ...}, -- } -- -- RHYME is a table of the form -- -- { -- rhyme = "RHYME", -- num_syl = {NUM_SYL, NUM_SYL, ...}, -- q, qq, a, aa = (as for AUDIO), -- } -- -- SYLL is a table of the form (where `hyph` is required to be named this way for [[Module:hyphenation]]) -- -- { -- syllabification = "SYL.LAB.LES", -- hyph = {"SYL", "LAB", "LES"}, -- q, qq, a, aa = (as for AUDIO), -- } -- -- HMP is a table of the form -- -- { -- term = "HOMOPHONE", -- gloss = "GLOSS" or nil, -- pos = "POS" or nil, -- alt = "ALT" or nil, -- lit = "LIT" or nil, -- id = "ID" or nil, -- g = {"G", "G", ...}, -- q, qq, a, aa = (as for AUDIO), -- } -- -- GLOSS is a table of the form -- -- { -- poses = {"POS", "POS", ...} or nil, -- gloss = "GLOSS" or nil, -- } for i, respelling in ipairs(respellings) do if respelling:find("<") then local param_mods = { pre = { overall = true }, post = { overall = true }, bullets = { overall = true, type = "number", }, t = { overall = true, store = "insert", convert = parse_gloss, }, rhyme = { overall = true, store = "insert-flattened", convert = parse_rhyme, }, syll = { overall = true, -- Not `store = "insert-flattened"`. parse_syll() does not generates a list but a structure where -- the syllabifications are in `terms` and there's an additional overall property `cap` for the -- caption (defaulting to "Syllabification"). FIXME: Rethink whether we even want "insert-flattened" -- or just "insert" for the remaining pronunciation properties. convert = parse_syll, }, hmp = { overall = true, store = "insert-flattened", convert = parse_homophone, }, audio = { overall = true, store = "insert", -- not "insert-flattened" because parse_audio returns a single object convert = parse_audio, }, ref = { store = "insert" }, q = { store = "insert" }, qq = { store = "insert" }, a = { item_dest = "accents", overall = true, convert = parse_accents, }, } local parsed = require(parse_utilities_module).parse_inline_modifiers(respelling, { paramname = i, param_mods = param_mods, generate_obj = function(term, parse_err) return parse_respelling(term, pagename, parse_err) end, pre_normalize_modifiers = function(data) local modtext = data.modtext modtext = modtext:match("^<(.*)>$") if not modtext then error(("Internal error: Passed-in modifier isn't surrounded by angle brackets: %s"):format( data.modtext)) end if modtext:find("%^") and not modtext:find("^t:") then modtext = "t:" .. modtext end return "<" .. modtext .. ">" end, splitchar = ",", outer_container = {}, }) if not parsed.bullets then parsed.bullets = 1 end table.insert(parsed_respellings, parsed) else local termobjs = {} local function parse_err(msg) error(msg .. ": " .. i .. "=" .. respelling) end for _, term in ipairs(split_on_comma(respelling)) do table.insert(termobjs, parse_respelling(term, pagename, parse_err)) end table.insert(parsed_respellings, { terms = termobjs, bullets = 1, }) end end --------------------------------- 2. Generate IPA, rhymes and syllabification. ------------------------------------ -- Used for categorization below. local syllabification_alignment_failed = false -- Canonicalize syllabifications in `sylls` by convering '+' to the default syllabification of the pagename, '#' to -- the pagename itself, and '-' to no syllabification (return `null_syll`). If '-' not seen, return `sylls`. local function canonicalize_syllabification(sylls, null_syll) for _, syll in ipairs(sylls.terms) do if syll.syllabification == "+" then syll.syllabification = syllabify_from_spelling(pagename, pagename) syll.hyph = split_syllabified_spelling(syll.syllabification) elseif syll.syllabification == "#" then syll.syllabification = pagename syll.hyph = {syll.syllabification} elseif syll.syllabification == "-" then return null_syll end end return sylls end if overall_syll then overall_syll = canonicalize_syllabification(overall_syll, {}) end local function doesnt_count_for_rhyme(list) if not list then return false end local accent_no_count = {"colloquial", "obsolete", "nonstandard"} for _, item in ipairs(list) do for _, word_no_count in ipairs(accent_no_count) do if item:find("%f[%w]" .. word_no_count .. "%f[%W]") then return true end end end return false end -- Loop over individual respellings, processing each. for _, parsed in ipairs(parsed_respellings) do -- First, sort the specified accents and default to "Standard Indonesian". local default_accent = "Standard Indonesian" if not parsed.accents then parsed.accents = {default_accent} end -- If more than one respelling given, then if any accent or qualifier has the words 'colloquial', 'obsolete' or -- 'nonstandard' in them, don't generate a rhyme or a '#-syllable word' category. local more_than_one_respelling = #parsed.terms > 1 or #parsed_respellings > 1 local is_standard = m_table.contains(parsed.accents, default_accent) and true or false local all_terms_no_rhyme = more_than_one_respelling and doesnt_count_for_rhyme(parsed.accents) parsed.pronuns = {} for i, term in ipairs(parsed.terms) do local phonemic, phonetic if term.raw then phonemic = term.raw_phonemic phonetic = term.raw_phonetic else local ret = export.IPA(term.term) phonemic = ret.phonemic phonetic = ret.phonetic end local refs if not term.ref then refs = nil else refs = {} for _, refspec in ipairs(term.ref) do local this_refs = require("Module:references").parse_references(refspec) for _, this_ref in ipairs(this_refs) do table.insert(refs, this_ref) end end end local no_rhyme, rhyme_with_cat -- Same check as above for colloquial/obsolete/relaxed but check the qualifiers, which are attached to -- individual respellings rather than a single-line set of respellings. no_rhyme = all_terms_no_rhyme or more_than_one_respelling and ( doesnt_count_for_rhyme(term.q) or doesnt_count_for_rhyme(term.qq) ) if not no_rhyme then local should_generate_rhyme, should_generate_cat = should_generate_rhyme_from_termobj(term) no_rhyme = not should_generate_rhyme rhyme_with_cat = should_generate_cat end local pronobj = { raw = term.raw, phonemic = phonemic, phonetic = phonetic, refs = refs, q = term.q, qq = term.qq, no_rhyme = no_rhyme, rhyme_with_cat = rhyme_with_cat, } table.insert(parsed.pronuns, pronobj) end if not parsed.syll then if not overall_syll and any_words_have_vowels(pagename) then for _, term in ipairs(parsed.terms) do if not term.raw then local syllabification = syllabify_from_spelling(term.term, pagename) local aligned_syll = align_syllabification_to_spelling(syllabification, pagename) if aligned_syll then if not parsed.syll then parsed.syll = {terms = {}} end m_table.insertIfNot(parsed.syll.terms, generate_syll_obj(aligned_syll)) else syllabification_alignment_failed = true end end end end else parsed.syll = canonicalize_syllabification(parsed.syll, nil) end if not parsed.rhyme then if overall_rhyme then parsed.rhyme = nil else -- Generate the rhymes. for _, pronun in ipairs(parsed.pronuns) do -- We should have already excluded multiword terms and terms without vowels from rhyme generation -- (see `no_auto_rhyme` below). But make sure to check that pronun.phonemic exists (it may not if -- raw phonetic-only pronun is given), and rhyme isn't suppressed (which may happen if the term has -- a qualifier "colloquial", "obsolete" or the like ). if pronun.phonemic and not pronun.no_rhyme then -- Count number of syllables by looking at syllable boundaries (including stress marks). local num_syl = get_num_syl_from_ipa(pronun.phonemic) -- Get the rhyme by truncating everything up through the last stress mark + any following -- consonants, and remove syllable boundary markers. local rhyme = convert_phonemic_to_rhyme(pronun.phonemic) -- Copying qualifiers to rhymes: -- (1) If there's only one pronunciation, displaying any associated qualifier on the rhyme is -- is redundant, so don't do it. -- (2) If there are multiple pronunciations, then we generally do want to copy the qualifier(s) -- from pronunciation to rhyme, but only if a given rhyme either derives from a single -- pronunciation, or derives from multiple pronunciations all of which share the same -- qualifier(s). We do NOT want to combine two different qualifiers from two different -- pronunciations. -- (3) If there are multiple pronunciations that map to a single rhyme, and all pronunciations -- share qualifiers, then we might consider omitting the qualifiers as redundant; but this -- case will rarely happen so it might not be worth worrying about. -- (4) Similarly, if there are multiple pronunciations where some have the rhyme suppressed (see -- above), and all pronunciations share qualifiers, then we might consider omitting the -- qualifiers as redundant; but again, this case will rarely happen (especially since in -- almost all cases the suppressed-rhyme pronunciation will have distinctive qualifiers) so -- it probably isn't worth worrying about. Note that in the common case where the qualifiers -- of the rhyme-suppressed pronunciation differ from those of the rhyme-included -- pronunciation, we do want to include the qualifiers of the rhyme-included pronunciation -- (imagine e.g. there are two pronunciations marked "standard" and "colloquial"; we want to -- mark the rhyme as "standard"). -- (4) There are two different types of qualifiers (left and right); when comparing qualifiers, -- we need to compare the entire set of both qualifiers and make sure they both match -- (although it will be rare to have both left and right qualifiers on a single -- pronunciation). local saw_already = false if not parsed.rhyme then parsed.rhyme = {} end for _, existing in ipairs(parsed.rhyme) do if existing.rhyme == rhyme then saw_already = true -- We already saw this rhyme but possibly with a different number of syllables, -- e.g. if the user specified two pronunciations 'biologi' (4 syllables) and -- 'biologi' (5 syllables), both of which have the same rhyme /ogi/. m_table.insertIfNot(existing.num_syl, num_syl) if not m_table.deepEquals(existing.q, pronun.q) or not m_table.deepEquals(existing.qq, pronun.qq) then existing.q = nil existing.qq = nil end break end end if not saw_already then table.insert(parsed.rhyme, { rhyme = rhyme, num_syl = {num_syl}, q = #parsed.pronuns > 1 and pronun.q or nil, qq = #parsed.pronuns > 1 and pronun.qq or nil, nocat = not pronun.rhyme_with_cat, }) end end end end else local no_rhyme = false for _, rhyme in ipairs(parsed.rhyme) do if rhyme.rhyme == "-" then no_rhyme = true break end end if no_rhyme then parsed.rhyme = nil else parsed.rhyme = process_specified_rhymes(parsed.rhyme, parsed.syll and parsed.syll.terms or {}, {parsed}) end end end if overall_rhyme then local no_overall_rhyme = false for _, orhyme in ipairs(overall_rhyme) do if orhyme.rhyme == "-" then no_overall_rhyme = true break end end if no_overall_rhyme then overall_rhyme = nil else local all_sylls if overall_syll then all_sylls = overall_syll else all_sylls = {} for _, parsed in ipairs(parsed_respellings) do if parsed.syll then for _, syll in ipairs(parsed.syll.terms) do m_table.insertIfNot(all_sylls, syll) end end end end overall_rhyme = process_specified_rhymes(overall_rhyme, all_sylls, parsed_respellings) end end -- Determine whether all sets of pronunciations have the same value for a pronunciation property (rhymes, -- syllabifications or homophones). If so, we display them them only once at the bottom, otherwise beneath each set, -- indented. This function takes one argument, the name of a slot specifying the pronunciation property, and -- returns two values, a boolean indicating whether all values are the same and the first value seen (which will -- be the only value seen if all values are the same). local function all_sets_equal(parsed_slot) local first_set local all_sets_eq = true for j, parsed in ipairs(parsed_respellings) do if j == 1 then first_set = parsed[parsed_slot] elseif not m_table.deepEquals(first_set, parsed[parsed_slot]) then all_sets_eq = false break end end return all_sets_eq, first_set end local all_rhyme_sets_eq, first_rhyme_ret = all_sets_equal("rhyme") local all_syll_sets_eq, first_sylls = all_sets_equal("syll") local all_hmp_sets_eq, first_hmps = all_sets_equal("hmp") ------------------------------ 3. Insert categories as appropriate. --------------------------------- local categories = {} local function get_rhymes_categories(rhymes) if not rhymes then return end end get_rhymes_categories(overall_rhyme) for _, parsed in ipairs(parsed_respellings) do get_rhymes_categories(parsed.rhyme) end local function get_syll_categories(sylls) if not sylls then return end for _, syll in ipairs(sylls.terms) do local syll_no_dot = "#" .. syll.syllabification .. "#" syll_no_dot = syll.syllabification:gsub("%.([^ #])", "%1"):gsub("#", "") if syll_no_dot ~= pagename then mw.log(("For page '%s', saw syllabification '%s' not matching pagename"):format( pagename, syll.syllabification)) m_table.insertIfNot(categories, ("%s terms with syllabification not matching pagename"):format( lang:getCanonicalName())) end end end get_syll_categories(overall_syll) for _, parsed in ipairs(parsed_respellings) do get_syll_categories(parsed.syll) end if syllabification_alignment_failed then table.insert(categories, ("%s terms where syllabification alignment failed"):format(lang:getCanonicalName())) end ---------------------------- 4. Format IPA, rhymes and syllabification for display. ------------------------------- local function bullet_prefix(num_bullets) return string.rep("*", num_bullets) .. " " end local function format_rhyme(rhymes) return require(rhymes_module).format_rhymes { lang = lang, rhymes = rhymes, force_cat = force_cat, } end local function format_syllabifications(syllobj) return require(hyphenation_module).format_hyphenations { lang = lang, hyphs = syllobj.terms, caption = syllobj.cap or "Syllabification" } end local function format_homophones(hmps) return require("Module:homophones").format_homophones { lang = lang, homophones = hmps } end local function format_audio(audios, num_bullets) local ret = {} for i, audio in ipairs(audios) do local text = require(audio_module).format_audio { lang = lang, file = audio.file, caption = audio.gloss, q = audio.q, qq = audio.qq, a = audio.a, aa = audio.aa, } table.insert(ret, bullet_prefix(num_bullets) .. text) end return table.concat(ret, "\n") end -- Implement grouping by accent. If there is a run of more than one consecutive set of pronunciations with the -- same accent, the accent goes on its own line and the pronunciations with this accent go below with an extra -- bullet. local prev_accents local num_seen_with_these_accents for j, parsed in ipairs(parsed_respellings) do if m_table.deepEquals(prev_accents, parsed.accents) then parsed.of_several_accents = "continuation" num_seen_with_these_accents = num_seen_with_these_accents + 1 if num_seen_with_these_accents == 2 then parsed_respellings[j - 1].of_several_accents = "first" end else prev_accents = parsed.accents num_seen_with_these_accents = 1 end end -- Pull out autogenerated pronunciations and move to the next line, indented. for _, parsed in ipairs(parsed_respellings) do local saw_next_line_pronuns = false for _, pronun in ipairs(parsed.pronuns) do if pronun.move_to_next_line then saw_next_line_pronuns = true break end end if saw_next_line_pronuns then local this_line_pronuns = {} local next_line_pronuns = {} for _, pronun in ipairs(parsed.pronuns) do if pronun.move_to_next_line then table.insert(next_line_pronuns, pronun) else table.insert(this_line_pronuns, pronun) end end -- Now see if there are qualifiers shared among all elements of the next-line pronuns and deduplicate if so. local function deduplicate_qualifiers(field, keepfirst) local saw_nil = false for _, pronun in ipairs(next_line_pronuns) do if not pronun[field] then saw_nil = true break end end if not saw_nil then local m_setutil = require(set_utilities_module) local qualifiers = {} for _, pronun in ipairs(next_line_pronuns) do table.insert(qualifiers, m_setutil.list_to_set(pronun[field])) end local all_shared = m_setutil.intersect(unpack(qualifiers)) if next(all_shared) then local first_index, last_index if keepfirst then first_index = 2 last_index = #pronun else first_index = 1 last_index = #pronun - 1 end for i = first_index, last_index do local pronun = next_line_pronuns[i] local new_qualifiers = {} for _, q in ipairs(pronun[field]) do if not all_shared[q] then table.insert(new_qualifiers, q) end end pronun[field] = new_qualifiers end end end end parsed.pronuns = this_line_pronuns parsed.next_line_pronuns = next_line_pronuns end end -- Now actually format the pronunciations. local textparts = {} local first_line = true local function ins_line(linetext, num_bullets) if not first_line then table.insert(textparts, "\n") end first_line = false table.insert(textparts, bullet_prefix(num_bullets) .. linetext) end local min_num_bullets = math.huge for j, parsed in ipairs(parsed_respellings) do if parsed.bullets < min_num_bullets then min_num_bullets = parsed.bullets end local accent_grouping_offset = 0 if parsed.of_several_accents == "first" then ins_line(require(accent_qualifier_module).format_qualifiers(lang, parsed.accents), parsed.bullets) end local pronuns = format_pronun_line(parsed) local accent_prefix if not parsed.of_several_accents then accent_prefix = require(accent_qualifier_module).format_qualifiers(lang, parsed.accents) .. " " else accent_prefix = "" accent_grouping_offset = 1 end ins_line(accent_prefix .. pronuns, parsed.bullets + accent_grouping_offset) if parsed.next_line_pronuns then ins_line(format_pronuns(parsed.next_line_pronuns), parsed.bullets + accent_grouping_offset + 1) end if parsed.audio then -- format_audio() inserts multiple lines and handles bullets by itself. table.insert(textparts, "\n") -- If only one pronunciation set, add the audio with the same number of bullets, otherwise indent audio by -- one more bullet. table.insert(textparts, format_audio(parsed.audio, (#parsed_respellings == 1 and parsed.bullets or parsed.bullets + 1) + accent_grouping_offset)) end if not all_rhyme_sets_eq and parsed.rhyme then ins_line(format_rhyme(parsed.rhyme), parsed.bullets + 1 + accent_grouping_offset) end if not all_syll_sets_eq and parsed.syll then ins_line(format_syllabifications(parsed.syll), parsed.bullets + 1 + accent_grouping_offset) end if not all_hmp_sets_eq and parsed.hmp then ins_line(format_homophones(parsed.hmp), parsed.bullets + 1 + accent_grouping_offset) end end if overall_audio then -- format_audio() inserts multiple lines and handles bullets by itself. table.insert(textparts, "\n") table.insert(textparts, format_audio(overall_audio, min_num_bullets)) end if all_rhyme_sets_eq and first_rhyme_ret then ins_line(format_rhyme(first_rhyme_ret), min_num_bullets) end if overall_rhyme then ins_line(format_rhyme(overall_rhyme), min_num_bullets) end if all_syll_sets_eq and first_sylls then ins_line(format_syllabifications(first_sylls), min_num_bullets) end if overall_syll then ins_line(format_syllabifications(overall_syll), min_num_bullets) end if all_hmp_sets_eq and first_hmps then ins_line(format_homophones(first_hmps), min_num_bullets) end if overall_hmp then ins_line(format_homophones(overall_hmp), min_num_bullets) end return table.concat(textparts) .. require("Module:utilities").format_categories(categories, lang, nil, nil, force_cat) end -- Meant to be called from a bot. function export.pron_json(frame) local iparams = { [1] = {list = true, required = true}, ["pagename"] = {required = true}, } local iargs = require("Module:parameters").process(frame.args, iparams) local data = {} local syllabification_from_pagename = syllabify_from_spelling(iargs.pagename, iargs.pagename) for _, respelling in ipairs(iargs[1]) do local pronun = export.IPA(respelling) local syllabification = export.syllabify_and_align(respelling, iargs.pagename) local num_syl = get_num_syl_from_ipa(pronun.phonemic) local rhyme = convert_phonemic_to_rhyme(pronun.phonemic) table.insert(data, { respelling = respelling, phonemic = pronun.phonemic, phonetic = pronun.phonetic, syllabification = syllabification, num_syl = num_syl, rhyme = rhyme, }) end local retval = { pagename = iargs.pagename, syllabification_from_pagename = syllabification_from_pagename, data = data, } return require("Module:JSON").toJSON(retval) end return export 5tsem08gkobq2nprecu8cnrawhaf4j3 八島 0 564108 2313257 2174992 2026-08-08T23:53:18Z 鍼灸 112313 2313257 wikitext text/x-wiki {{kana-DEFAULTSORT|はっとう}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[はっとう]]}} #{{タグ|ja|島}}八つの[[しま|島]]。 ==={{wago}}=== {{ja-wagokanji|やしま}} #{{wagokanji of|やしま}} 9jrjeiato3ddtnz91pzihufb4ri3vt5 利用者:となりのふぁいやーくん 2 569225 2313307 2307618 2026-08-09T01:22:51Z となりのふぁいやーくん 129376 2313307 wikitext text/x-wiki [https://ja.wikipedia.org/wiki/利用者:となりのふぁいやーくん] 35jamybpny6wi1ayobrjfcnl8mor79u 利用者・トーク:Keikei kanji 3 577848 2313386 2301919 2026-08-09T07:39:06Z Kuroco2k 84207 /* 字源 */ 返信 2313386 wikitext text/x-wiki == 漢字項目の編集に関して == 「文字情報」見出しは[[Wiktionary:編集室/2026年Q1#文字情報見出しについて]]にて「コード等」とすることで合意されておりますので見出し名は「コード等」として下さい。また、{{temp|character info}}は非推奨となっておりますので使わず、代わりに{{temp|文字コード}}を使用して下さい。--[[利用者:M-30722|M-30722]] ([[利用者・トーク:M-30722|トーク]]) 2026年3月24日 (火) 15:44 (UTC) :わかりました。これから新規項目作成の時にはそうします。--[[利用者:Keikei kanji|Keikei kanji]] ([[利用者・トーク:Keikei kanji|トーク]]) 2026年3月25日 (水) 11:06 (UTC) == 内部リンクを外部リンク風にしなくてよい == [[特別:差分/2299483|これ]]で、[https://ja.wiktionary.org/wiki/蜘#字源 別にわざわざこんなこと]しなくても、[[蜘#字源]]と書けばよいですよ(見た目分からなければソースコードを見てください)。--[[利用者:Kuroco2k|<span style="color:#000000">'''雛宮黒狐'''</span>]]([[利用者‐会話:Kuroco2k|<span style="color:#5a00cc">Talk</span>]]) 2026年7月22日 (水) 07:22 (UTC) :これからはそうします。ありがとうございます。--[[利用者:Keikei kanji|Keikei kanji]] ([[利用者・トーク:Keikei kanji|トーク]]) 2026年7月22日 (水) 07:30 (UTC) == 字源 == 編集お疲れ様です 字源の編集にいくつか誤りがあるのでこちらで修正しています 以下気をつけてください * 形声文字の音符に書く上古音は、大文字の諧声域にする * 上古音の諧声関係を理解する(たとえば[[声母]]の s と t や、[[韻母]]の -m と -n は諧声しません) * 本義を明確に(「[[胡]]」の「なんぞ」は本義ではなく仮借義、「[[働]]」の本義は漢語ではなく和語) * 別字衝突を明確に(「[[歹]]」のスコップとチベット文字は、相反する別の説ではなく別字衝突です) * 表意初文と後起の形声文字を区別する(「[[穎]]」は後起の形声文字で、象形文字ではありません) --[[利用者:KashiDisco|KashiDisco]] ([[利用者・トーク:KashiDisco|トーク]]) 2026年7月22日 (水) 11:00 (UTC) :成程。浅学がでしゃばりすぎました。音符の上古音は大文字に変更しておきました。 :質問なんですが、本義を確認するのは「[https://humanum.arts.cuhk.edu.hk/Lexis/lexi-mf/ 漢語多功能字庫]」でいいでしょうか。(「なんぞ」は単純な思い込みでした)--[[利用者:Keikei kanji|Keikei kanji]] ([[利用者・トーク:Keikei kanji|トーク]]) 2026年7月22日 (水) 11:31 (UTC) ::諧声域は[http://www.kaom.net/sgy_bzd.php 広韻形声考]のいちばん左の列にある記号を使ってくださいね ::本義については、実際に使われていた語義のうち、意符に最も関係が深いもの(たとえば「[[肉]]」であれば人体に関することなど)を採用することになります ::実例のある上古漢語を調べるのは [https://qwert-ly.github.io/xtext/ PBOC] というサイトが便利です ::漢語多功能字庫は『説文解字』の解釈をそのまま載せているケースがあり、『説文』は実例のない語義を想像で書いている(望形生訓)ことが多いので注意が必要です ::こんな感じでなかなか難しいので、単純な形声文字であれば構成だけ述べて終わりでも大丈夫ですよ--[[利用者:KashiDisco|KashiDisco]] ([[利用者・トーク:KashiDisco|トーク]]) 2026年7月22日 (水) 11:54 (UTC) :::ありがとうございます。--[[利用者:Keikei kanji|Keikei kanji]] ([[利用者・トーク:Keikei kanji|トーク]]) 2026年7月22日 (水) 13:14 (UTC) ::::{{q|横から失礼}} ::::>「単純な形声文字であれば構成だけ述べて終わりでも大丈夫ですよ」 ::::*[[:w:Wikipedia:検証可能性|ダメです]]。如何に単純な形声文字でも、そう書いてあるなんかしらの材料は持ってきてください。前もなんか[[利用者・トーク:Denifr|勘違いしてる人]]がいましたが、文になってないことは書けません。 ::::--[[利用者:Kuroco2k|<span style="color:#000000">'''雛宮黒狐'''</span>]]([[利用者‐会話:Kuroco2k|<span style="color:#5a00cc">Talk</span>]]) 2026年7月27日 (月) 12:23 (UTC) :::::[[駸]]の要約欄を見ていたら、「自明な形声文字だけに対する記述はほぼないです。漢字は形声文字が8~9割ですから基本的に形声文字と考える方が合理的」ですが...。(字源を書く人の9割近く) 勘違いされてますが、[[:w:Wikipedia:独自研究は載せない|ダメです]]。記述がないということは、それは書けないというだけです。--[[利用者:Kuroco2k|<span style="color:#000000">'''雛宮黒狐'''</span>]]([[利用者‐会話:Kuroco2k|<span style="color:#5a00cc">Talk</span>]]) 2026年8月9日 (日) 07:39 (UTC) 4d6i1bfey7erf772fii5rmim625lfnr 利用者:Keikei kanji 2 579104 2313350 2312949 2026-08-09T03:45:13Z Keikei kanji 129888 2313350 wikitext text/x-wiki ==自己紹介== Keikei kanjiと申します。学生です。 [[古文字学]]の初学者ですので、管見の限り間違いのないようにしていますが、どうしても誤りがある場合があります。 *[[会意形声文字]]は現在必要性を感じた事がないため私は破棄します。 *基本上古音は布之道の「[http://www.kaom.net/sgy_bzd.php 廣韻形聲考]」に則ります。 === 漢検一級漢字一覧(部首別) === * [[字源]]/[[意義]]/[[熟語]]整備。古いテンプレを使用していれば入れ替えもします。 《優先順位》 # 立項 # 字源/古いテンプレ入れ替え # 熟語/意義 * とりあえず[https://jigennoshiori.jp/kanken-11 このサイト]に並びは準拠します。 「[[弌]]」,「[[丐]]」,「[[丕]]」,「[[丫]]」,「[[丱]]」,「[[乂]]」,「[[乖]]」,「[[予]]」,「[[于]]」,「[[弍]]」,「[[亟]]」,「[[亢]]」,「[[亶]]」,「[[仍]]」,「[[仄]]」,「[[仆]]」,「[[仂]]」,「[[仗]]」,「[[仞]]」,「[[仭]]」,「[[仟]]」,「[[价]]」,「[[伉]]」,「[[佚]]」,「[[估]]」,「[[佝]]」,「[[佗]]」,「[[佇]]」,「[[佞]]」,「[[余]]」,「[[佶]]」,「[[侈]]」,「[[侏]]」,「[[侘]]」,「[[佻]]」,「[[佩]]」,「[[佰]]」,「[[侑]]」,「[[佯]]」,「[[侖]]」,「[[俔]]」,「[[俟]]」,「[[俎]]」,「[[俘]]」,「[[俛]]」,「[[俑]]」,「[[俚]]」,「[[俐]]」,「[[俤]]」,「[[俥]]」,「[[倚]]」,「[[倨]]」,「[[倔]]」,「[[倪]]」,「[[倥]]」,「[[倅]]」,「[[伜]]」,「[[俶]]」,「[[倡]]」,「[[倩]]」,「[[倬]]」,「[[俾]]」,「[[俯]]」,「[[們]]」,「[[倆]]」,「[[偃]]」,「[[偕]]」,「[[偐]]」,「[[偈]]」,「[[偖]]」,「[[偬]]」,「[[偸]]」,「[[做]]」,「[[傀]]」,「[[傚]]」,「[[傅]]」,「[[傴]]」,「[[僉]]」,「[[僊󠄁]]」,「[[僊]]」,「[[僂]]」,「[[僖]]」,「[[僥]]」,「[[僭]]」,「[[僣]]」,「[[僮]]」,「[[僵]]」,「[[儁]]」,「[[儂]]」,「[[儕]]」,「[[儔]]」,「[[儚]]」,「[[儡]]」,「[[儳]]」,「[[儺]]」,「[[儷]]」,「[[儼]]」,「[[儻]]」,「[[兀]]」,「[[兌]]」,「[[兢]]」,「[[兪]]」,「[[冀]]」,「[[冉󠄁]]」,「[[冉]]」,「[[冏]]」,「[[冑]]」,「[[冓]]」,「[[冕]]」,「[[冤]]」,「[[寃]]」,「[[冢]]」,「[[冪]]」,「[[冱]]」,「[[冽]]」,「[[凊]]」,「[[凅]]」,「[[凜]]」,「[[凛]]」,「[[几]]」,「[[凩]]」,「[[凭]]」,「[[刋]]」,「[[刔]]」,「[[刎]]」,「[[刪]]」,「[[刮]]」,「[[刳]]」,「[[刱]]」,「[[剏]]」,「[[剄]]」,「[[剋]]」,「[[剌]]」,「[[剞]]」,「[[剔]]」,「[[剪]]」,「[[剴]]」,「[[剳]]」,「[[剿]]」,「[[𠞰]]」,「[[剽]]」,「[[劈]]」,「[[劬]]」,「[[劭]]」,「[[劼]]」,「[[勁]]」,「[[勍]]」,「[[勖]]」,「[[勗]]」,「[[勣]]」,「[[勦]]」,「[[飭]]」,「[[勠]]」,「[[匆]]」,「[[匈]]」,「[[甸]]」,「[[匍]]」,「[[匐]]」,「[[匏]]」,「[[匕]]」,「[[匚]]」,「[[匣]]」,「[[匯]]」,「[[匱]]」,「[[匳]]」,「[[卅]]」,「[[丗]]」,「[[卉]]」,「[[卉]]」,「[[卍]]」,「[[卮]]」,「[[巵]]」,「[[卻]]」,「[[厖]]」,「[[厥]]」,「[[厲]]」,「[[篡]]」,「[[簒]]」,「[[叟]]」,「[[燮]]」,「[[叮]]」,「[[叨]]」,「[[叭]]」,「[[叺]]」,「[[吁]]」,「[[吽]]」,「[[听]]」,「[[吭]]」,「[[吼]]」,「[[吮]]」,「[[吶]]」,「[[吩]]」,「[[吝]]」,「[[呎]]」,「[[呏]]」,「[[咏]]」,「[[呵]]」,「[[咎]]」,「[[呟]]」,「[[呱]]」,「[[呷]]」,「[[呰]]」,「[[呻]]」,「[[咀]]」,「[[呶]]」,「[[咄]]」,「[[咐]]」,「[[咆]]」,「[[哇]]」,「[[咢]]」,「[[咸]]」,「[[咥]]」,「[[咬]]」,「[[哄]]」,「[[哈]]」,「[[咨]]」,「[[咫]]」,「[[哂]]」,「[[咤]]」,「[[哥]]」,「[[哦]]」,「[[唏]]」,「[[唔]]」,「[[哽]]」,「[[哮]]」,「[[哭]]」,「[[哢]]」,「[[哳]]」,「[[唹󠄁]]」,「[[唹]]」,「[[啀]]」,「[[啣]]」,「[[售]]」,「[[啜]]」,「[[啅]]」,「[[啖]]」,「[[啗]]」,「[[唸]]」,「[[唳󠄂]]」,「[[唳]]」,「[[喑]]」,「[[喙]]」,「[[喀]]」,「[[喊]]」,「[[喟]]」,「[[啻]]」,「[[啾]]」,「[[喘]]」,「[[喞]]」,「[[啼]]」,「[[喃]]」,「[[喇]]」,「[[喨]]」,「[[嗚]]」,「[[嗇]]」,「[[嗟]]」,「[[嗄]]」,「[[嗜]]」,「[[嗤]]」,「[[嗔]]」,「[[嘔]]」,「[[嗷]]」,「[[嘖]]」,「[[嗾]]」,「[[嗽]]」,「[[嘛]]」,「[[噁]]」,「[[噎]]」,「[[嘴]]」,「[[嘶]]」,「[[嘸]]」,「[[噫]]」,「[[噤]]」,「[[嘯]]」,「[[噬]]」,「[[噪]]」,「[[噯]]」,「[[噦]]」,「[[嚆]]」,「[[嚀]]」,「[[嚊]]」,「[[嚠]]」,「[[嚔]]」,「[[嚏]]」,「[[嚥]]」,「[[嚮]]」,「[[嚮󠄃]]」,「[[嚬]]」,「[[嚶]]」,「[[囂]]」,「[[嚼]]」,「[[囁]]」,「[[囃]]」,「[[囀]]」,「[[囈]]」,「[[囮󠄁]]」,「[[囮]]」,「[[囹]]」,「[[圀]]」,「[[囿]]」,「[[圄]]」,「[[圉]]」,「[[圜]]」,「[[圦]]」,「[[坎]]」,「[[埳]]」,「[[圻]]」,「[[址]]」,「[[坏]]」,「[[坩]]」,「[[坡]]」,「[[坿]]」,「[[垓]]」,「[[垠]]」,「[[垤]]」,「[[埃]]」,「[[埆]]」,「[[埒]]」,「[[堊]]」,「[[堋󠄁]]」,「[[堋]]」,「[[堙󠄁]]」,「[[堙]]」,「[[堝]]」,「[[堡]]」,「[[堽]]」,「[[塋]]」,「[[塒]]」,「[[塹]]」,「[[墅]]」,「[[塿]]」,「[[墟]]」,「[[壅]]」,「[[壎]]」,「[[壑]]」,「[[壙]]」,「[[壜]]」,「[[壟]]」,「[[壼]]」,「[[夐]]」,「[[夥]]」,「[[夬]]」,「[[夭]]」,「[[夲]]」,「[[夸]]」,「[[夾]]」,「[[奕]]」,「[[奐]]」,「[[奎]]」,「[[奚]]」,「[[奘]]」,「[[弉]]」,「[[奠]]」,「[[奢]]」,「[[奸]]」,「[[妁]]」,「[[妝]]」,「[[妣]]」,「[[妲]]」,「[[姆]]」,「[[姨]]」,「[[姜]]」,「[[姸]]」,「[[妍]]」,「[[姙]]」,「[[姮]]」,「[[嫦]]」,「[[姚]]」,「[[娥]]」,「[[娟]]」,「[[娑]]」,「[[娜󠄁]]」,「[[娜]]」,「[[娉]]」,「[[婀]]」,「[[婬]]」,「[[婉]]」,「[[娵]]」,「[[娶]]」,「[[婢]]」,「[[婪]]」,「[[媚]]」,「[[媼]]」,「[[媾󠄁]]」,「[[媾]]」,「[[嫋]]」,「[[嫂󠄁]]」,「[[嫂]]」,「[[媽]]」,「[[嫣]]」,「[[嫗]]」,「[[嫩]]」,「[[嫖]]」,「[[嫺]]」,「[[嫻]]」,「[[嬌]]」,「[[嬋]]」,「[[嬖]]」,「[[嬲]]」,「[[嬪]]」,「[[嬶]]」,「[[嬾]]」,「[[孅]]」,「[[孀]]」,「[[孒]]」,「[[孑]]」,「[[孕]]」,「[[孚]]」,「[[孛]]」,「[[孥]]」,「[[孩]]」,「[[孰]]」,「[[孶]]」,「[[孳]]」,「[[孵]]」,「[[孺]]」,「[[孼]]」,「[[孽]]」,「[[宦]]」,「[[宸]]」,「[[寇]]」,「[[冦]]」,「[[寔]]」,「[[寐]]」,「[[寤]]」,「[[寞]]」,「[[寥]]」,「[[寰]]」,「[[尠]]」,「[[尨]]」,「[[尸]]」,「[[尹]]」,「[[屁]]」,「[[屎]]」,「[[屛]]」,「[[屏]]」,「[[屠]]」,「[[孱]]」,「[[屭]]」,「[[屓]]」,「[[屮]]」,「[[屶]]」,「[[屹]]」,「[[岌]]」,「[[岑]]」,「[[岔]]」,「[[岫]]」,「[[峙]]」,「[[峭]]」,「[[峪]]」,「[[崟]]」,「[[崛]]」,「[[崑]]」,「[[崔]]」,「[[崢]]」,「[[崚]]」,「[[崙]]」,「[[崘]]」,「[[嵌]]」,「[[嵒]]」,「[[嵎]]」,「[[嵋]]」,「[[嵬]]」,「[[嶇]]」,「[[嶄]]」,「[[嶂]]」,「[[嶢]]」,「[[嶝]]」,「[[嶬]]」,「[[嶮]]」,「[[嶷]]」,「[[嶼]]」,「[[巉]]」,「[[巍]]」,「[[巓]]」,「[[巒]]」,「[[巫]]」,「[[已]]」,「[[帚]]」,「[[帙]]」,「[[帑]]」,「[[帛]]」,「[[帷]]」,「[[幄]]」,「[[幃]]」,「[[幀]]」,「[[幎]]」,「[[幗]]」,「[[幔]]」,「[[幟]]」,「[[幢]]」,「[[幫]]」,「[[幇]]」,「[[幵]]」,「[[幷]]」,「[[并]]」,「[[幺]]」,「[[麼]]」,「[[庠]]」,「[[廁]]」,「[[厠]]」,「[[廂]]」,「[[廈]]」,「[[厦]]」,「[[廖]]」,「[[廝]]」,「[[厮]]」,「[[廛]]」,「[[壥]]」,「[[廡]]」,「[[廨]]」,「[[廩]]」,「[[龐]]」,「[[廬]]」,「[[廱]]」,「[[弁]]」,「[[彝]]」,「[[彜]]」,「[[弋]]」,「[[弑]]」,「[[弖]]」,「[[弩]]」,「[[弭]]」,「[[弸󠄁]]」,「[[弸]]」,「[[彎]]」,「[[弯]]」,「[[彗]]」,「[[彭]]」,「[[彷]]」,「[[徂]]」,「[[彿]]」,「[[彽]]」,「[[徊]]」,「[[很]]」,「[[徇]]」,「[[徙]]」,「[[徘]]」,「[[徨]]」,「[[徭]]」,「[[徼]]」,「[[忖]]」,「[[忻]]」,「[[忤]]」,「[[忸]]」,「[[忱]]」,「[[忝]]」,「[[忿]]」,「[[怡]]」,「[[怙]]」,「[[怩]]」,「[[怎]]」,「[[怛]]」,「[[怕]]」,「[[怫]]」,「[[怦]]」,「[[怏]]」,「[[怱]]」,「[[悤]]」,「[[怺]]」,「[[恚]]」,「[[恁]]」,「[[恪]]」,「[[恟]]」,「[[恊]]」,「[[恍]]」,「[[恃]]」,「[[恤]]」,「[[卹]]」,「[[恂]]」,「[[恬]]」,「[[恫]]」,「[[恙]]」,「[[悁]]」,「[[悍]]」,「[[悃]]」,「[[悚]]」,「[[悄]]」,「[[悛]]」,「[[悖]]」,「[[悒]]」,「[[悧]]」,「[[悋]]」,「[[悸]]」,「[[惓]]」,「[[悴]]」,「[[忰]]」,「[[悽]]」,「[[惆]]」,「[[悵]]」,「[[惘]]」,「[[悾]]」,「[[愕]]」,「[[愆]]」,「[[惶]]」,「[[惷]]」,「[[愀]]」,「[[惴]]」,「[[惺]]」,「[[愃]]」,「[[愒]]」,「[[惻]]」,「[[愍]]」,「[[愎]]」,「[[慍]]」,「[[慇]]」,「[[愾]]」,「[[愨]]」,「[[愧]]」,「[[慊]]」,「[[愿]]」,「[[愬]]」,「[[愴]]」,「[[慂]]」,「[[慳]]」,「[[慷]]」,「[[慙]]」,「[[慚]]」,「[[慫]]」,「[[慴]]」,「[[慥]]」,「[[慠]]」,「[[慟]]」,「[[慝]]」,「[[慓]]」,「[[慵]]」,「[[憖]]」,「[[憔]]」,「[[憚]]」,「[[憊]]」,「[[憑]]」,「[[憫]]」,「[[憮]]」,「[[懌]]」,「[[懊]]」,「[[懈]]」,「[[懃]]」,「[[懆]]」,「[[憺]]」,「[[懋]]」,「[[懍]]」,「[[懦]]」,「[[懣]]」,「[[懶]]」,「[[懺]]」,「[[懴]]」,「[[懿]]」,「[[懽]]」,「[[懾]]」,「[[懼]]」,「[[戈]]」,「[[戉]]」,「[[戍]]」,「[[戌]]」,「[[戔]]」,「[[戛]]」,「[[戞]]」,「[[戡]]」,「[[截]]」,「[[戮]]」,「[[戳]]」,「[[扁]]」,「[[扈󠄁]]」,「[[扈]]」,「[[扎]]」,「[[扣]]」,「[[扛]]」,「[[扞]]」,「[[扠]]」,「[[扨]]」,「[[扼]]」,「[[抉]]」,「[[找]]」,「[[抒]]」,「[[抓]]」,「[[抖]]」,「[[抃]]」,「[[抔]]」,「[[拗]]」,「[[拑]]」,「[[抻]]」,「[[拆]]」,「[[拈]]」,「[[拌]]」,「[[拊]]」,「[[拇]]」,「[[拋]]」,「[[抛]]」,「[[拿]]」,「[[拏]]」,「[[挌]]」,「[[拮]]」,「[[拱]]」,「[[挂]]」,「[[挈]]」,「[[拯]]」,「[[拵]]」,「[[挘]]」,「[[捐]]」,「[[捍]]」,「[[捏]]」,「[[掖]]」,「[[掎]]」,「[[掀]]」,「[[掫]]」,「[[捶]]」,「[[掣]]」,「[[掏]]」,「[[掉]]」,「[[掟]]」,「[[捫]]」,「[[捩󠄁]]」,「[[捩]]」,「[[掾]]」,「[[揩]]」,「[[揀]]」,「[[揆]]」,「[[揣]]」,「[[揉]]」,「[[揶]]」,「[[捓]]」,「[[揄]]」,「[[搤]]」,「[[搴]]」,「[[搆󠄁]]」,「[[搆]]」,「[[搦]]」,「[[搶]]」,「[[搓]]」,「[[搗]]」,「[[搏]]」,「[[搨]]」,「[[摶]]」,「[[摧]]」,「[[摎]]」,「[[摏]]」,「[[撕]]」,「[[撓]]」,「[[撥]]」,「[[撩]]」,「[[撈]]」,「[[撼]]」,「[[擒]]」,「[[擅]]」,「[[撻]]」,「[[擘]]」,「[[擂]]」,「[[擱]]」,「[[擠]]」,「[[擡]]」,「[[抬]]」,「[[擣]]」,「[[擯]]」,「[[擲]]」,「[[擺]]」,「[[攀]]」,「[[擽]]」,「[[攘]]」,「[[攢]]」,「[[攅]]」,「[[攤]]」,「[[攣]]」,「[[攫]]」,「[[攬]]」,「[[畋]]」,「[[敖]]」,「[[敞]]」,「[[敝]]」,「[[敲]]」,「[[斂]]」,「[[斃]]」,「[[斛]]」,「[[斟]]」,「[[斫]]」,「[[旃]]」,「[[旆]]」,「[[旁]]」,「[[旄]]」,「[[旌]]」,「[[旒]]」,「[[旛]]」,「[[旱]]」,「[[旰]]」,「[[杲]]」,「[[昊]]」,「[[昃]]」,「[[旻]]」,「[[杳]]」,「[[昵]]」,「[[昶]]」,「[[昴]]」,「[[昜]]」,「[[晏]]」,「[[晁]]」,「[[晟]]」,「[[晞]]」,「[[晤]]」,「[[晧]]」,「[[晨]]」,「[[晢]]」,「[[晣]]」,「[[晰]]」,「[[晳]]」,「[[暈]]」,「[[暉]]」,「[[暄]]」,「[[暘]]」,「[[暝]]」,「[[曁󠄁]]」,「[[曁]]」,「[[暹]]」,「[[暾]]」,「[[曄]]」,「[[曚]]」,「[[曠]]」,「[[昿]]」,「[[曦]]」,「[[曩]]」,「[[曬]]」,「[[曰]]」,「[[曷]]」,「[[曼]]」,「[[朏]]」,「[[朞]]」,「[[朦]]」,「[[朧]]」,「[[朮]]」,「[[朿]]」,「[[朶]]」,「[[朸]]」,「[[杆]]」,「[[桿]]」,「[[杠]]」,「[[杞]]」,「[[杙]]」,「[[杣]]」,「[[枉]]」,「[[杼]]」,「[[杪]]」,「[[枌]]」,「[[枋]]」,「[[枡]]」,「[[桝]]」,「[[桝󠄂]]」,「[[枷]]」,「[[柯]]」,「[[枴]]」,「[[柬]]」,「[[枳]]」,「[[柩]]」,「[[枸]]」,「[[柤]]」,「[[柞]]」,「[[柝]]」,「[[柢]]」,「[[柮]]」,「[[枹]]」,「[[柎]]」,「[[栞]]」,「[[框]]」,「[[栩]]」,「[[桀]]」,「[[栲]]」,「[[桎]]」,「[[桄]]」,「[[梳]]」,「[[栫]]」,「[[桙]]」,「[[枅]]」,「[[桛]]」,「[[桷]]」,「[[梟]]」,「[[梏]]」,「[[梭]]」,「[[梔]]」,「[[梛󠄁]]」,「[[梛]]」,「[[梃]]」,「[[桴]]」,「[[梵]]」,「[[梠]]」,「[[梲]]」,「[[梻]]」,「[[梺]]」,「[[椏]]」,「[[椁]]」,「[[棊]]」,「[[椈]]」,「[[棘]]」,「[[棍]]」,「[[棕]]」,「[[椶]]」,「[[椒]]」,「[[椄]]」,「[[棗]]」,「[[棣]]」,「[[棹]]」,「[[棠]]」,「[[椚]]」,「[[楹]]」,「[[楸]]」,「[[楫]]」,「[[楔]]」,「[[楮]]」,「[[椹]]」,「[[椽]]」,「[[椰]]」,「[[楡]]」,「[[楞󠄁]]」,「[[楞]]」,「[[楝]]」,「[[楾]]」,「[[榁]]」,「[[榀]]」,「[[槐]]」,「[[槁]]」,「[[槓]]」,「[[榾]]」,「[[槎]]」,「[[寨]]」,「[[槊]]」,「[[榻]]」,「[[槃]]」,「[[榔]]」,「[[榧]]」,「[[榑]]」,「[[榜]]」,「[[榕]]」,「[[榴]]」,「[[槔]]」,「[[槹]]」,「[[榱]]」,「[[樛]]」,「[[槿]]」,「[[槲]]」,「[[槧]]」,「[[樅]]」,「[[槭]]」,「[[樔]]」,「[[樊]]」,「[[樒]]」,「[[櫁]]」,「[[槨]]」,「[[橄]]」,「[[橇]]」,「[[橙]]」,「[[橦]]」,「[[橈]]」,「[[樸]]」,「[[檋]]」,「[[檔]]」,「[[檐]]」,「[[檠]]」,「[[檄]]」,「[[檣]]」,「[[檗]]」,「[[蘗]]」,「[[檻]]」,「[[櫃]]」,「[[櫂]]」,「[[檸]]」,「[[檳]]」,「[[檬]]」,「[[櫟]]」,「[[檪]]」,「[[櫚]]」,「[[櫪]]」,「[[櫨]]」,「[[櫱]]」,「[[蘖]]」,「[[欅]]」,「[[櫸]]」,「[[櫺]]」,「[[欒]]」,「[[欖]]」,「[[欠]]」,「[[欸]]」,「[[欷]]」,「[[欹]]」,「[[歃]]」,「[[歇]]」,「[[歉]]」,「[[歙]]」,「[[歔]]」,「[[歛]]」,「[[歟]]」,「[[歠]]」,「[[歿]]」,「[[殀]]」,「[[殄]]」,「[[殃]]」,「[[殍]]」,「[[殞]]」,「[[殤]]」,「[[殪]]」,「[[殫]]」,「[[殯]]」,「[[殲]]」,「[[殱]]」,「[[殷]]」,「[[毋]]」,「[[毟]]」,「[[毬]]」,「[[毫]]」,「[[毳]]」,「[[毯]]」,「[[氈]]」,「[[氓]]」,「[[氛]]」,「[[汞]]」,「[[汕]]」,「[[沂]]」,「[[汪]]」,「[[沍]]」,「[[沚]]」,「[[沁]]」,「[[沛]]」,「[[汨]]」,「[[沐]]」,「[[泄]]」,「[[泓]]」,「[[沽]]」,「[[泗]]」,「[[泅]]」,「[[泝]]」,「[[沱]]」,「[[沮]]」,「[[沾]]」,「[[泯]]」,「[[泛]]」,「[[泪]]」,「[[洟]]」,「[[洶]]」,「[[洫]]」,「[[洽]]」,「[[洸]]」,「[[洵]]」,「[[洌]]」,「[[洒]]」,「[[浣]]」,「[[涓]]」,「[[浚]]」,「[[浹]]」,「[[浙]]」,「[[涎]]」,「[[涕]]」,「[[涅]]」,「[[淹]]」,「[[涵]]」,「[[𣶏]]」,「[[涸]]」,「[[淆]]」,「[[淬]]」,「[[淌]]」,「[[淒]]」,「[[淅]]」,「[[淙]]」,「[[淤󠄁]]」,「[[淤]]」,「[[淪]]」,「[[渭]]」,「[[湮󠄁]]」,「[[湮]]」,「[[渙]]」,「[[湲]]」,「[[渾]]」,「[[渣]]」,「[[湫]]」,「[[渫]]」,「[[湍]]」,「[[渟]]」,「[[湃]]」,「[[渺]]」,「[[湎]]」,「[[渝]]」,「[[游]]」,「[[溂]]」,「[[溘]]」,「[[滉]]」,「[[溷]]」,「[[滓]]」,「[[溽]]」,「[[滄]]」,「[[溲]]」,「[[滔]]」,「[[滕󠄁]]」,「[[滕]]」,「[[溏]]」,「[[溥]]」,「[[滂]]」,「[[溟]]」,「[[滬󠄁]]」,「[[滬]]」,「[[滸]]」,「[[滾]]」,「[[漿]]」,「[[滲]]」,「[[漱]]」,「[[漲]]」,「[[滌]]」,「[[漾]]」,「[[漓]]」,「[[滷]]」,「[[澆]]」,「[[潺]]」,「[[潸]]」,「[[潯]]」,「[[潭]]」,「[[澂]]」,「[[潘]]」,「[[澎]]」,「[[潦]]」,「[[澳]]」,「[[澣]]」,「[[澡]]」,「[[澹]]」,「[[濆]]」,「[[澪]]」,「[[濬]]」,「[[濔]]」,「[[濘]]」,「[[濛]]」,「[[瀉]]」,「[[瀋]]」,「[[濺]]」,「[[瀑]]」,「[[瀁]]」,「[[瀏]]」,「[[濾]]」,「[[沪]]」,「[[瀛󠄁]]」,「[[瀛]]」,「[[瀚]]」,「[[瀝]]」,「[[瀟]]」,「[[瀰]]」,「[[瀾]]」,「[[瀲]]」,「[[灑]]」,「[[炙]]」,「[[炒]]」,「[[炯]]」,「[[烱]]」,「[[炷]]」,「[[炬]]」,「[[炸]]」,「[[炳]]」,「[[炮]]」,「[[烟]]」,「[[烋]]」,「[[烝]]」,「[[烙]]」,「[[焉]]」,「[[烽]]」,「[[焠]]」,「[[焜]]」,「[[焙]]」,「[[煥]]」,「[[煦]]」,「[[煢󠄁]]」,「[[煢]]」,「[[煌]]」,「[[煖]]」,「[[煬]]」,「[[熙]]」,「[[煕]]」,「[[熈]]」,「[[熄]]」,「[[熕]]」,「[[熨]]」,「[[熬]]」,「[[燗]]」,「[[熹]]」,「[[熾]]」,「[[燉]]」,「[[燔]]」,「[[燎]]」,「[[燠]]」,「[[燬]]」,「[[燧]]」,「[[燵]]」,「[[燻]]」,「[[熏]]」,「[[燼]]」,「[[燹]]」,「[[燿]]」,「[[爍]]」,「[[爛]]」,「[[爨]]」,「[[爬]]」,「[[爰]]」,「[[牀]]」,「[[牆]]」,「[[墻]]」,「[[牋]]」,「[[牖]]」,「[[牘]]」,「[[牴]]」,「[[牾]]」,「[[犂]]」,「[[犁]]」,「[[犇]]」,「[[犒]]」,「[[犖]]」,「[[犢]]」,「[[犲]]」,「[[狃]]」,「[[狆]]」,「[[狄]]」,「[[狎]]」,「[[狒]]」,「[[狢]]」,「[[狠]]」,「[[狡]]」,「[[狷]]」,「[[倏]]」,「[[猊]]」,「[[猗]]」,「[[猜]]」,「[[猖]]」,「[[猝]]」,「[[猋]]」,「[[猴]]」,「[[猯]]」,「[[猩]]」,「[[猥]]」,「[[猾]]」,「[[獏]]」,「[[獗]]」,「[[獪]]」,「[[獮]]」,「[[獰]]」,「[[獺]]」,「[[玫]]」,「[[珈]]」,「[[玻]]」,「[[珀]]」,「[[珥]]」,「[[珮]]」,「[[珞]]」,「[[琅]]」,「[[瑯]]」,「[[琥]]」,「[[琲]]」,「[[琺]]」,「[[瑇]]」,「[[玳]]」,「[[瑕]]」,「[[瑟]]」,「[[瑙]]」,「[[瑁]]」,「[[瑜]]」,「[[瑶]]」,「[[瑩]]」,「[[瑰]]」,「[[瑣]]」,「[[瑪]]」,「[[瑾]]」,「[[璋]]」,「[[璇]]」,「[[璢]]」,「[[璞]]」,「[[瓊]]」,「[[瓏]]」,「[[瓔]]」,「[[瓠󠄁]]」,「[[瓠]]」,「[[瓣]]」,「[[瓧]]」,「[[瓩]]」,「[[瓮]]」,「[[瓲]]」,「[[瓰]]」,「[[瓱]]」,「[[瓸]]」,「[[瓷]]」,「[[甄󠄁]]」,「[[甄]]」,「[[甃]]」,「[[甅]]」,「[[甌]]」,「[[甎]]」,「[[甍]]」,「[[甕]]」,「[[甓]]」,「[[甦]]」,「[[畛]]」,「[[畚]]」,「[[畤]]」,「[[畬]]」,「[[畭]]」,「[[畸]]」,「[[疆]]」,「[[疇]]」,「[[畴]]」,「[[疔]]」,「[[疚]]」,「[[疝]]」,「[[疥]]」,「[[疣]]」,「[[痂]]」,「[[疸]]」,「[[疳]]」,「[[痃]]」,「[[疵]]」,「[[疽]]」,「[[疼]]」,「[[疱]]」,「[[痍]]」,「[[痊]]」,「[[痒]]」,「[[痙]]」,「[[痣]]」,「[[痞]]」,「[[痾]]」,「[[痿]]」,「[[痼]]」,「[[瘁]]」,「[[痰]]」,「[[痹]]」,「[[痺]]」,「[[痲]]」,「[[痳]]」,「[[瘋]]」,「[[瘉]]」,「[[瘟]]」,「[[瘧]]」,「[[瘠]]」,「[[瘡]]」,「[[瘢]]」,「[[瘤]]」,「[[瘴]]」,「[[瘰]]」,「[[瘻]]」,「[[癇]]」,「[[癈]]」,「[[癆]]」,「[[癜]]」,「[[癘]]」,「[[癢]]」,「[[癨]]」,「[[癩]]」,「[[癧]]」,「[[癪]]」,「[[癬]]」,「[[癭]]」,「[[癰]]」,「[[癲]]」,「[[癴]]」,「[[癸]]」,「[[皁]]」,「[[皎]]」,「[[皖]]」,「[[皓]]」,「[[皙]]」,「[[皚]]」,「[[皰]]」,「[[皴]]」,「[[皹]]」,「[[皸]]」,「[[皺]]」,「[[盂]]」,「[[盍]]」,「[[盒]]」,「[[盞]]」,「[[盥]]」,「[[盧]]」,「[[盪]]」,「[[蘯]]」,「[[盻]]」,「[[眈]]」,「[[眇]]」,「[[眄]]」,「[[眩]]」,「[[眥]]」,「[[眦]]」,「[[眛]]」,「[[眷]]」,「[[眸]]」,「[[睇]]」,「[[睚]]」,「[[睨]]」,「[[睫]]」,「[[睛]]」,「[[睥]]」,「[[睾]]」,「[[睹]]」,「[[瞎]]」,「[[瞋]]」,「[[瞑]]」,「[[瞠]]」,「[[瞞]]」,「[[瞰]]」,「[[瞿]]」,「[[瞼]]」,「[[瞽]]」,「[[瞻]]」,「[[矇]]」,「[[矍]]」,「[[矚]]」,「[[矜]]」,「[[矣]]」,「[[矮]]」,「[[矼]]」,「[[矻]]」,「[[砌]]」,「[[砒]]」,「[[砠]]」,「[[硅]]」,「[[硼󠄁]]」,「[[硼]]」,「[[碚]]」,「[[碌]]」,「[[碣]]」,「[[碪]]」,「[[磑]]」,「[[磋]]」,「[[磔]]」,「[[碾]]」,「[[碼]]」,「[[磅]]」,「[[磊]]」,「[[磬]]」,「[[磧]]」,「[[磚]]」,「[[磽]]」,「[[磴]]」,「[[礒]]」,「[[礑]]」,「[[礙]]」,「[[礬]]」,「[[礫]]」,「[[祀]]」,「[[祠]]」,「[[祗]]」,「[[祟]]」,「[[祚]]」,「[[祓]]」,「[[祺]]」,「[[禊]]」,「[[禝]]」,「[[禧]]」,「[[禳]]」,「[[禹]]」,「[[禺]]」,「[[秉]]」,「[[秕]]」,「[[粃]]」,「[[秧]]」,「[[秬]]」,「[[秣]]」,「[[稈]]」,「[[稍]]」,「[[稠]]」,「[[稟]]」,「[[禀]]」,「[[稷]]」,「[[穡]]」,「[[穢]]」,「[[穹]]」,「[[穽]]」,「[[窈]]」,「[[窕]]」,「[[窘]]」,「[[窖]]」,「[[窩]]」,「[[窶]]」,「[[窿]]」,「[[竅]]」,「[[竄]]」,「[[竇]]」,「[[竍]]」,「[[竏]]」,「[[竕]]」,「[[竓]]」,「[[站]]」,「[[竚]]」,「[[竟]]」,「[[竡]]」,「[[竦]]」,「[[竢]]」,「[[竭]]」,「[[竰]]」,「[[竽]]」,「[[笏]]」,「[[笊]]」,「[[笆]]」,「[[笋]]」,「[[笳]]」,「[[笘]]」,「[[笙]]」,「[[笞]]」,「[[笵]]」,「[[笨]]」,「[[筐]]」,「[[筺]]」,「[[筓]]」,「[[笄]]」,「[[筍]]」,「[[筌]]」,「[[筅]]」,「[[筵]]」,「[[筥]]」,「[[筴]]」,「[[筧]]」,「[[筰]]」,「[[筱]]」,「[[筬]]」,「[[筮]]」,「[[筲]]」,「[[箝]]」,「[[箘]]」,「[[箍]]」,「[[箜]]」,「[[箚]]」,「[[劄]]」,「[[箒]]」,「[[箏]]」,「[[筝]]」,「[[箙󠄁]]」,「[[箙]]」,「[[篋]]」,「[[篁]]」,「[[篌]]」,「[[箴]]」,「[[篆]]」,「[[篪]]」,「[[篝]]」,「[[篩]]」,「[[簑]]」,「[[簔]]」,「[[篥]]」,「[[簀]]」,「[[簇]]」,「[[篳]]」,「[[篷]]」,「[[簍]]」,「[[簓]]」,「[[簗]]」,「[[簣]]」,「[[簧]]」,「[[簪]]」,「[[簟]]」,「[[簷]]」,「[[簫]]」,「[[簽]]」,「[[籌]]」,「[[籃]]」,「[[籔]]」,「[[籒]]」,「[[籀]]」,「[[籐󠄁]]」,「[[籐]]」,「[[籟]]」,「[[籙]]」,「[[籡]]」,「[[籤]]」,「[[籖]]」,「[[籥]]」,「[[籬]]」,「[[籵]]」,「[[粏]]」,「[[粤]]」,「[[粢]]」,「[[粨]]」,「[[粳]]」,「[[粲]]」,「[[粱]]」,「[[粽]]」,「[[糀]]」,「[[糂]]」,「[[糅]]」,「[[糒]]」,「[[糜]]」,「[[糝]]」,「[[糯]]」,「[[糲]]」,「[[糱]]」,「[[糴]]」,「[[糶]]」,「[[糺]]」,「[[紆]]」,「[[紂]]」,「[[紉]]」,「[[紜]]」,「[[紕]]」,「[[紊]]」,「[[絅]]」,「[[紮]]」,「[[紲]]」,「[[紿]]」,「[[紵]]」,「[[絆]]」,「[[絳]]」,「[[絖]]」,「[[絎]]」,「[[絨]]」,「[[絮]]」,「[[絏]]」,「[[綉]]」,「[[絛]]」,「[[綏]]」,「[[絽]]」,「[[綛󠄁]]」,「[[綛]]」,「[[絣]]」,「[[絣󠄁]]」,「[[綺]]」,「[[綮󠄁]]」,「[[綮]]」,「[[綦]]」,「[[綣]]」,「[[綵]]」,「[[緇]]」,「[[綽]]」,「[[綫]]」,「[[綢]]」,「[[綯]]」,「[[綸]]」,「[[綟󠄁]]」,「[[綟]]」,「[[綰]]」,「[[緘]]」,「[[緝]]」,「[[緤]]」,「[[緞]]」,「[[緲]]」,「[[緡]]」,「[[縅]]」,「[[縊]]」,「[[縕]]」,「[[縡]]」,「[[縒]]」,「[[縟]]」,「[[縉]]」,「[[縋]]」,「[[縢󠄂]]」,「[[縢]]」,「[[繆]]」,「[[繈]]」,「[[繦]]」,「[[縻]]」,「[[縵]]」,「[[縹]]」,「[[繃󠄁]]」,「[[繃]]」,「[[縷]]」,「[[縲]]」,「[[縺]]」,「[[繝]]」,「[[繖]]」,「[[繞]]」,「[[繙]]」,「[[繚]]」,「[[繧]]」,「[[繹]]」,「[[繳]]」,「[[繻]]」,「[[繽]]」,「[[辮]]」,「[[纃]]」,「[[纊]]」,「[[纈]]」,「[[纐]]」,「[[纓]]」,「[[纔]]」,「[[纛]]」,「[[纘]]」,「[[纉]]」,「[[纜]]」,「[[缶]]」,「[[缸]]」,「[[罅]]」,「[[罌]]」,「[[罍]]」,「[[罎]]」,「[[罕]]」,「[[罔]]」,「[[罘]]」,「[[罟]]」,「[[罠]]」,「[[罨]]」,「[[罩]]」,「[[罧]]」,「[[罹]]」,「[[羂]]」,「[[羆]]」,「[[羃]]」,「[[羇]]」,「[[羈]]」,「[[羌]]」,「[[羔]]」,「[[羝]]」,「[[羚]]」,「[[羯]]」,「[[羲]]」,「[[羹]]」,「[[羶]]」,「[[羸]]」,「[[翅]]」,「[[翊]]」,「[[翕]]」,「[[翔]]」,「[[翡]]」,「[[翦]]」,「[[翩󠄁]]」,「[[翩]]」,「[[翳]]」,「[[翹]]」,「[[耆]]」,「[[耄]]」,「[[耋]]」,「[[耘]]」,「[[耙]]」,「[[耜]]」,「[[耡]]」,「[[耦]]」,「[[耨]]」,「[[耿]]」,「[[聊]]」,「[[聆]]」,「[[聒]]」,「[[聘]]」,「[[聚]]」,「[[聟]]」,「[[聢]]」,「[[聳]]」,「[[聶]]」,「[[聿]]」,「[[肄]]」,「[[肆]]」,「[[肛]]」,「[[肓]]」,「[[肚]]」,「[[肭]]」,「[[肬]]」,「[[胛]]」,「[[胥]]」,「[[胙]]」,「[[胝]]」,「[[胄]]」,「[[胖]]」,「[[胚]]」,「[[胯]]」,「[[胱]]」,「[[脛]]」,「[[脩]]」,「[[脣]]」,「[[脯]]」,「[[腋]]」,「[[腆]]」,「[[脾]]」,「[[腓]]」,「[[腑]]」,「[[腁]]」,「[[胼]]」,「[[腱]]」,「[[腮]]」,「[[腥]]」,「[[腴]]」,「[[腠]]」,「[[膃]]」,「[[膈]]」,「[[膊]]」,「[[膀]]」,「[[膂]]」,「[[膠]]」,「[[膣]]」,「[[腟]]」,「[[膩]]」,「[[膰]]」,「[[膵]]」,「[[膾]]」,「[[臀]]」,「[[臂]]」,「[[膺]]」,「[[臉]]」,「[[臍]]」,「[[臑]]」,「[[臘]]」,「[[臙]]」,「[[臚]]」,「[[臠]]」,「[[臧]]」,「[[臻]]」,「[[臾]]」,「[[舁]]」,「[[舂]]」,「[[舅]]」,「[[舐]]」,「[[舒]]」,「[[舫]]」,「[[舸]]」,「[[舳]]」,「[[艀]]」,「[[艙]]」,「[[艘]]」,「[[艚]]」,「[[艝]]」,「[[艟]]」,「[[艤]]」,「[[艢]]」,「[[艨]]」,「[[艪]]」,「[[艫]]」,「[[艱]]」,「[[艸]]」,「[[艾]]」,「[[芍󠄁]]」,「[[芍]]」,「[[芒]]」,「[[芸]]」,「[[芫]]」,「[[芟]]」,「[[芻]]」,「[[蒭]]」,「[[芬]]」,「[[苆]]」,「[[苡]]」,「[[苣󠄁]]」,「[[苣]]」,「[[苟]]」,「[[苴]]」,「[[苳]]」,「[[范]]」,「[[苻]]」,「[[苹]]」,「[[苞]]」,「[[茆]]」,「[[苜]]」,「[[茉]]」,「[[苙]]」,「[[苺]]」,「[[莓]]」,「[[茵]]」,「[[茴]]」,「[[茱]]」,「[[茲]]」,「[[荀]]」,「[[茹]]」,「[[荐]]」,「[[荅]]」,「[[茯]]」,「[[茫]]」,「[[茗]]」,「[[茘]]」,「[[莅]]」,「[[莚]]」,「[[莪]]」,「[[莟]]」,「[[莢]]」,「[[茣]]」,「[[莎]]」,「[[荼]]」,「[[荳]]」,「[[荵󠄁]]」,「[[荵]]」,「[[莠]]」,「[[莉]]」,「[[莨]]」,「[[菴]]」,「[[萁]]」,「[[菫]]」,「[[菎]]」,「[[菽]]」,「[[萃]]」,「[[菘]]」,「[[菁]]」,「[[菠]]」,「[[菲]]」,「[[莽]]」,「[[萍]]」,「[[萢󠄁]]」,「[[萢]]」,「[[萸]]」,「[[葭]]」,「[[萼]]」,「[[葷]]」,「[[葩]]」,「[[葆]]」,「[[葯]]」,「[[萵]]」,「[[蒹]]」,「[[蒿]]」,「[[蒟]]」,「[[蓍]]」,「[[蒻]]」,「[[蓁]]」,「[[蓐]]」,「[[蓆]]」,「[[蓖]]」,「[[蒡]]」,「[[蓙]]」,「[[蔡]]」,「[[蓿]]」,「[[蓴󠄁]]」,「[[蓴]]」,「[[蔗]]」,「[[蔘]]」,「[[蔬]]」,「[[蔟]]」,「[[蔕]]」,「[[蒂]]」,「[[蔔]]」,「[[蓼]]」,「[[蕀]]」,「[[蕣]]」,「[[蕘]]」,「[[蕈]]」,「[[蕁]]」,「[[蕕]]」,「[[薀]]」,「[[薤]]」,「[[薈]]」,「[[薑]]」,「[[薊]]」,「[[薨]]」,「[[蕭]]」,「[[薏]]」,「[[薔]]」,「[[薛]]」,「[[薇]]」,「[[﨟]]」,「[[臈]]」,「[[薜]]」,「[[蕾]]」,「[[薐]]」,「[[蕷]]」,「[[薺]]」,「[[藉]]」,「[[藐]]」,「[[薹]]」,「[[藕]]」,「[[藜]]」,「[[藹]]」,「[[蘊]]」,「[[蘋]]」,「[[藾]]」,「[[藺]]」,「[[蘆]]」,「[[芦]]」,「[[蘢]]」,「[[蘚]]」,「[[蘿]]」,「[[虔]]」,「[[虒]]」,「[[虧]]」,「[[蚓]]」,「[[蚣]]」,「[[蚩]]」,「[[蚪]]」,「[[蚌]]」,「[[蚶]]」,「[[蚯]]」,「[[蛄]]」,「[[蛆]]」,「[[蚰]]」,「[[蛉]]」,「[[蚫]]」,「[[蛔]]」,「[[蛞]]」,「[[蛩]]」,「[[蛬]]」,「[[蛟]]」,「[[蛯]]」,「[[蜒]]」,「[[蜆]]」,「[[蜈]]」,「[[蜀]]」,「[[蜃]]」,「[[蛻]]」,「[[蜑]]」,「[[蜉]]」,「[[蜓]]」,「[[蜍]]」,「[[蛹]]」,「[[蜊]]」,「[[蜴]]」,「[[蜿]]」,「[[蜷]]」,「[[蜻]]」,「[[蜹]]」,「[[蚋]]」,「[[蜥]]」,「[[蜩]]」,「[[蜚]]」,「[[蝠]]」,「[[蝟]]」,「[[蝸]]」,「[[蝌]]」,「[[蝎]]」,「[[蝴]]」,「[[蝗]]」,「[[蝨]]」,「[[虱]]」,「[[蝮]]」,「[[蝘]]」,「[[蝙󠄁]]」,「[[蝙]]」,「[[蝓]]」,「[[蝣]]」,「[[蝲]]」,「[[螈]]」,「[[螗]]」,「[[螟]]」,「[[螂]]」,「[[蜋]]」,「[[螯]]」,「[[蟋]]」,「[[螽󠄁]]」,「[[螽]]」,「[[蟀]]」,「[[螫]]」,「[[蟄]]」,「[[螳]]」,「[[蟇]]」,「[[蟆]]」,「[[螻]]」,「[[螾]]」,「[[蟎]]」,「[[蟯]]」,「[[蟪]]」,「[[蟠]]」,「[[蟒󠄁]]」,「[[蠎]]」,「[[蠍]]」,「[[蠆]]」,「[[蠊]]」,「[[蟾]]」,「[[蟶]]」,「[[蟷]]」,「[[蠑]]」,「[[蠖]]」,「[[蠕]]」,「[[蠢]]」,「[[蠡]]」,「[[蠱]]」,「[[蠹]]」,「[[蠧]]」,「[[衄]]」,「[[衊]]」,「[[衍]]」,「[[衒]]」,「[[衙]]」,「[[衢]]」,「[[衫]]」,「[[衾]]」,「[[衮]]」,「[[袞]]」,「[[衵]]」,「[[衲]]」,「[[袂]]」,「[[袗]]」,「[[袒]]」,「[[袙]]」,「[[袢]]」,「[[袍]]」,「[[袤]]」,「[[袰]]」,「[[袵]]」,「[[衽]]」,「[[袿]]」,「[[袱]]」,「[[裃]]」,「[[裄]]」,「[[裔]]」,「[[裎]]」,「[[裘]]」,「[[裙]]」,「[[裹]]」,「[[褂]]」,「[[裼]]」,「[[裨]]」,「[[裴]]」,「[[裲]]」,「[[褄]]」,「[[褌]]」,「[[褊󠄁]]」,「[[褊]]」,「[[褓]]」,「[[褞]]」,「[[褥]]」,「[[褪]]」,「[[褫]]」,「[[襁]]」,「[[襄]]」,「[[褻]]」,「[[褶]]」,「[[褸]]」,「[[襌]]」,「[[褝]]」,「[[襠]]」,「[[襞]]」,「[[襦]]」,「[[襤]]」,「[[襭]]」,「[[襪󠄁]]」,「[[襪]]」,「[[襯]]」,「[[襴]]」,「[[襷]]」,「[[覃]]」,「[[覈]]」,「[[覓]]」,「[[覘]]」,「[[覡]]」,「[[覩]]」,「[[覦]]」,「[[覬]]」,「[[覯󠄁]]」,「[[覯]]」,「[[覲]]」,「[[覿]]」,「[[觚]]」,「[[觜]]」,「[[觝]]」,「[[觥]]」,「[[觴]]」,「[[訖]]」,「[[訐]]」,「[[訌]]」,「[[訛]]」,「[[訝]]」,「[[訥]]」,「[[訶]]」,「[[詁]]」,「[[詛]]」,「[[詒]]」,「[[詆]]」,「[[詈]]」,「[[詼]]」,「[[詭]]」,「[[詬]]」,「[[詢]]」,「[[誅]]」,「[[誂]]」,「[[誄]]」,「[[誨]]」,「[[誡]]」,「[[誑]]」,「[[誥]]」,「[[誚]]」,「[[誦]]」,「[[誣]]」,「[[諄]]」,「[[諍]]」,「[[諂]]」,「[[諚]]」,「[[諳]]」,「[[諤]]」,「[[諱]]」,「[[謔]]」,「[[諠]]」,「[[諢]]」,「[[諷]]」,「[[諞󠄁]]」,「[[諞]]」,「[[諛󠄁]]」,「[[諛]]」,「[[諡]]」,「[[謚]]」,「[[謌]]」,「[[謇]]」,「[[謖]]」,「[[謐]]」,「[[謗]]」,「[[謳]]」,「[[鞫]]」,「[[謦]]」,「[[謫]]」,「[[謾]]」,「[[謨]]」,「[[譁󠄁]]」,「[[譁]]」,「[[譌]]」,「[[譏]]」,「[[譎]]」,「[[譖]]」,「[[譛]]」,「[[譚]]」,「[[譚󠄁]]」,「[[譫]]」,「[[譟]]」,「[[譬]]」,「[[譴]]」,「[[讌]]」,「[[讐]]」,「[[讎]]」,「[[讒]]」,「[[讖]]」,「[[讙]]」,「[[谺]]」,「[[豁]]」,「[[谿]]」,「[[豈]]」,「[[豌]]」,「[[豕]]」,「[[豢]]」,「[[豺]]」,「[[貂]]」,「[[貉]]」,「[[貊]]」,「[[貎]]」,「[[貘]]」,「[[貽]]」,「[[貲]]」,「[[貶]]」,「[[賈]]」,「[[賁]]」,「[[賚]]」,「[[賽]]」,「[[賺]]」,「[[賻]]」,「[[贄]]」,「[[贅]]」,「[[贇]]」,「[[贏]]」,「[[贍]]」,「[[贐]]」,「[[贓]]」,「[[贔]]」,「[[贖]]」,「[[赧]]」,「[[赭]]」,「[[赬]]」,「[[赳]]」,「[[趁]]」,「[[趙]]」,「[[跂]]」,「[[趾]]」,「[[趺]]」,「[[跎]]」,「[[跏]]」,「[[跚]]」,「[[跖]]」,「[[跌]]」,「[[跛]]」,「[[跋]]」,「[[跪]]」,「[[跫]]」,「[[跟]]」,「[[跣]]」,「[[跼]]」,「[[踉]]」,「[[跿]]」,「[[踝]]」,「[[踑]]」,「[[踞]]」,「[[踟]]」,「[[蹂]]」,「[[踵]]」,「[[踰]]」,「[[踴]]」,「[[踴󠄁]]」,「[[蹊]]」,「[[蹇]]」,「[[蹉]]」,「[[蹌]]」,「[[蹐]]」,「[[蹈]]」,「[[蹙]]」,「[[蹤]]」,「[[蹠]]」,「[[蹣]]」,「[[蹕]]」,「[[蹻]]」,「[[蹶]]」,「[[蹲]]」,「[[蹼]]」,「[[躁]]」,「[[躅]]」,「[[躇]]」,「[[躄]]」,「[[躃]]」,「[[躋]]」,「[[躊]]」,「[[躑]]」,「[[躓]]」,「[[躔]]」,「[[躡]]」,「[[躪]]」,「[[躙]]」,「[[躬]]」,「[[躮]]」,「[[躱]]」,「[[躾]]」,「[[軈]]」,「[[軋]]」,「[[軛]]」,「[[軼]]」,「[[軫]]」,「[[軻]]」,「[[軾]]」,「[[輊]]」,「[[輅]]」,「[[輀]]」,「[[轜]]」,「[[輒]]」,「[[輙]]」,「[[輓]]」,「[[輜]]」,「[[輟]]」,「[[輛]]」,「[[輌]]」,「[[輦]]」,「[[輳]]」,「[[輻]]」,「[[輹]]」,「[[轅]]」,「[[轂]]」,「[[輾]]」,「[[轆]]」,「[[轌]]」,「[[轎]]」,「[[轗]]」,「[[轢]]」,「[[轤]]」,「[[辜]]」,「[[辟]]」,「[[辷]]」,「[[迚]]」,「[[迥]]」,「[[迢]]」,「[[迪]]」,「[[廸]]」,「[[迴]]」,「[[逅]]」,「[[迹]]」,「[[逕]]」,「[[逡]]」,「[[逑]]」,「[[逍]]」,「[[逞]]」,「[[逞󠄁]]」,「[[逖]]」,「[[逋]]」,「[[逧]]」,「[[逬]]」,「[[迸]]」,「[[逵]]」,「[[遏]]」,「[[遐]]」,「[[遑]]」,「[[遒]]」,「[[逎]]」,「[[遉]]」,「[[逾]]」,「[[遖]]」,「[[遘󠄁]]」,「[[遘]]」,「[[遨]]」,「[[遯]]」,「[[遶]]」,「[[邂]]」,「[[遽]]」,「[[邁]]」,「[[邀]]」,「[[邃󠄁]]」,「[[邃]]」,「[[邇]]」,「[[邏]]」,「[[邨]]」,「[[邯]]」,「[[邱]]」,「[[邵]]」,「[[郢]]」,「[[郤]]」,「[[郛]]」,「[[鄂]]」,「[[鄒]]」,「[[鄙]]」,「[[鄲]]」,「[[酊]]」,「[[酖]]」,「[[酣]]」,「[[酥]]」,「[[酩]]」,「[[酳]]」,「[[酲]]」,「[[醋]]」,「[[醂]]」,「[[醢]]」,「[[醯]]」,「[[醪]]」,「[[醵]]」,「[[醴]]」,「[[醺]]」,「[[釁]]」,「[[釉]]」,「[[釐]]」,「[[釵]]」,「[[鈞]]」,「[[釿]]」,「[[鈔]]」,「[[鈕]]」,「[[鈑]]」,「[[鉞]]」,「[[鉅]]」,「[[鉗]]」,「[[鉉]]」,「[[鉈]]」,「[[鈿]]」,「[[鉋]]」,「[[銕]]」,「[[銜]]」,「[[銖]]」,「[[銓]]」,「[[銛]]」,「[[鋏]]」,「[[銹]]」,「[[銷]]」,「[[鋩󠄁]]」,「[[鋩]]」,「[[錏]]」,「[[鋺]]」,「[[錙]]」,「[[錚]]」,「[[錣]]」,「[[錺]]」,「[[錵]]」,「[[錻]]」,「[[鍠]]」,「[[鍼]]」,「[[鍮]]」,「[[鎰]]」,「[[鎬]]」,「[[鎹]]」,「[[𫒼]]」,「[[鎺]]」,「[[鏖]]」,「[[鏗]]」,「[[鏨]]」,「[[鏘]]」,「[[鏃]]」,「[[鏝]]」,「[[鏐]]」,「[[鏈]]」,「[[鏤]]」,「[[鐚]]」,「[[鐔]]」,「[[鐓]]」,「[[鐃]]」,「[[鐐]]」,「[[鐶]]」,「[[鐫]]」,「[[鐺]]」,「[[鑒]]」,「[[鑠]]」,「[[鑢]]」,「[[鑞]]」,「[[鑪]]」,「[[鑰]]」,「[[鑵]]」,「[[鑷]]」,「[[鑽]]」,「[[鑚]]」,「[[鑼]]」,「[[鑾]]」,「[[钁]]」,「[[鑿]]」,「[[閂]]」,「[[閊]]」,「[[閔]]」,「[[閘]]」,「[[閨]]」,「[[閧]]」,「[[閭]]」,「[[閼󠄁]]」,「[[閼]]」,「[[閻]]」,「[[閹]]」,「[[閾]]」,「[[闊]]」,「[[濶]]」,「[[闃]]」,「[[闍]]」,「[[闌]]」,「[[闕]]」,「[[闔]]」,「[[闖]]」,「[[闡]]」,「[[闥]]」,「[[闢]]」,「[[阡]]」,「[[阨]]」,「[[阮]]」,「[[阯]]」,「[[陂]]」,「[[陌]]」,「[[陋]]」,「[[陜]]」,「[[陞]]」,「[[陝]]」,「[[陟]]」,「[[陲]]」,「[[陬]]」,「[[隋]]」,「[[隍]]」,「[[隘]]」,「[[隗]]」,「[[隕]]」,「[[隧]]」,「[[隰]]」,「[[隴]]」,「[[雎]]」,「[[雋]]」,「[[雉]]」,「[[雍]]」,「[[雕]]」,「[[霍]]」,「[[襍]]」,「[[雖]]」,「[[雹]]」,「[[霄]]」,「[[霆]]」,「[[霈]]」,「[[霓]]」,「[[霎]]」,「[[霑]]」,「[[霏]]」,「[[霖]]」,「[[霙]]」,「[[霤]]」,「[[霪]]」,「[[霰]]」,「[[霹]]」,「[[霸]]」,「[[霽]]」,「[[霾]]」,「[[靄]]」,「[[靆]]」,「[[靂]]」,「[[靉]]」,「[[靠]]」,「[[靡]]」,「[[靤]]」,「[[靦]]」,「[[靨]]」,「[[勒]]」,「[[靫]]」,「[[鞅]]」,「[[靼]]」,「[[鞁]]」,「[[靺]]」,「[[鞆]]」,「[[鞋]]」,「[[鞏]]」,「[[鞐]]」,「[[鞜]]」,「[[鞨]]」,「[[鞦]]」,「[[鞣]]」,「[[鞳]]」,「[[鞴]]」,「[[韆]]」,「[[韈]]」,「[[韋]]」,「[[韞]]」,「[[韜]]」,「[[齏]]」,「[[韲]]」,「[[韵]]」,「[[韶]]」,「[[頏]]」,「[[頌]]」,「[[頤]]」,「[[頡]]」,「[[頷]]」,「[[頽]]」,「[[頹]]」,「[[顆]]」,「[[顋]]」,「[[顫]]」,「[[顬]]」,「[[顰]]」,「[[顱]]」,「[[顴]]」,「[[顳]]」,「[[颪]]」,「[[颯]]」,「[[颱]]」,「[[颶]]」,「[[飄]]」,「[[飆]]」,「[[飜]]」,「[[飩]]」,「[[飫]]」,「[[餃]]」,「[[餉]]」,「[[餒]]」,「[[餔]]」,「[[餡]]」,「[[餞]]」,「[[餤]]」,「[[餬]]」,「[[餮]]」,「[[餽]]」,「[[餾]]」,「[[饂]]」,「[[饉]]」,「[[饅]]」,「[[饐]]」,「[[饋]]」,「[[饑]]」,「[[饒]]」,「[[饌]]」,「[[饕]]」,「[[馗]]」,「[[馘]]」,「[[馥]]」,「[[馭]]」,「[[馮]]」,「[[駟]]」,「[[駛]]」,「[[駝]]」,「[[駑]]」,「[[駘]]」,「[[駭]]」,「[[駮]]」,「[[駱]]」,「[[駻]]」,「[[駸]]」,「[[騁]]」,「[[騏]]」,「[[騅]]」,「[[騈]]」,「[[駢]]」,「[[騙]]」,「[[騫]]」,「[[騭]]」,「[[驂]]」,「[[驀]]」,「[[驃]]」,「[[騾]]」,「[[驕]]」,「[[驍]]」,「[[驎]]」,「[[驟]]」,「[[驢]]」,「[[驥]]」,「[[驤]]」,「[[驩]]」,「[[驪]]」,「[[骭]]」,「[[骰]]」,「[[骼]]」,「[[髀]]」,「[[髏]]」,「[[髑]]」,「[[髢]]」,「[[髥]]」,「[[髯]]」,「[[髣]]」,「[[髦]]」,「[[髫]]」,「[[髴]]」,「[[髱]]」,「[[髷]]」,「[[髻]]」,「[[鬆]]」,「[[鬘]]」,「[[鬚]]」,「[[鬟]]」,「[[鬢]]」,「[[鬣]]」,「[[鬧]]」,「[[閙]]」,「[[鬨]]」,「[[鬩]]」,「[[鬭]]」,「[[鬮]]」,「[[鬯]]」,「[[鬻]]」,「[[魃]]」,「[[魄]]」,「[[魏]]」,「[[魍]]」,「[[魎]]」,「[[魑]]」,「[[魘]]」,「[[魞]]」,「[[魳]]」,「[[魴]]」,「[[魬]]」,「[[魸]]」,「[[鮓]]」,「[[鮃]]」,「[[鮑]]」,「[[鮖]]」,「[[鮗󠄁]]」,「[[鮗]]」,「[[鮇]]」,「[[𩶗]]」,「[[鮠]]」,「[[鮨]]」,「[[鮟]]」,「[[鮴]]」,「[[鮲]]」,「[[鮱]]」,「[[鯀]]」,「[[鯊]]」,「[[鮹]]」,「[[鮸]]」,「[[鯏]]」,「[[鯑]]」,「[[鯒]]」,「[[鯎]]」,「[[鯐]]」,「[[鯣]]」,「[[鯢]]」,「[[鯤]]」,「[[鯔]]」,「[[鯡]]」,「[[鯲󠄁]]」,「[[鯲]]」,「[[鯱]]」,「[[鯰]]」,「[[鰕]]」,「[[鰔]]」,「[[鰉]]」,「[[鰓]]」,「[[鰌]]」,「[[鰆]]」,「[[鰈]]」,「[[鰒]]」,「[[鰊]]」,「[[鰄]]」,「[[鰘]]」,「[[鰙]]」,「[[鰚]]」,「[[鰮]]」,「[[鰛]]」,「[[鰥]]」,「[[鰤]]」,「[[鰧]]」,「[[鰰]]」,「[[鱆]]」,「[[鰾]]」,「[[鱇]]」,「[[鱏]]」,「[[鱓]]」,「[[鱚]]」,「[[鱛]]」,「[[𬵪]]」,「[[鱟]]」,「[[鱠]]」,「[[鱧]]」,「[[鱩]]」,「[[鱶]]」,「[[鱲]]」,「[[鱸]]」,「[[鳧]]」,「[[鳬]]」,「[[鳰]]」,「[[鴉]]」,「[[鴃]]」,「[[鴂]]」,「[[鴆]]」,「[[鴥]]」,「[[鴪]]」,「[[鴣]]」,「[[鴟]]」,「[[鴕]]」,「[[鴒]]」,「[[鵄]]」,「[[鵁]]」,「[[鴿]]」,「[[鴾]]」,「[[鵆]]」,「[[鵇]]」,「[[鵝]]」,「[[鵞]]」,「[[鵑]]」,「[[鵤]]」,「[[鵥]]」,「[[鵲]]」,「[[鶉]]」,「[[鶇]]」,「[[鵯]]」,「[[鵺]]」,「[[鶄]]」,「[[鶍]]」,「[[鶎]]」,「[[鶪]]」,「[[鵙]]」,「[[鶚]]」,「[[鶤]]」,「[[鶩]]」,「[[鶫]]」,「[[鶲]]」,「[[鷁]]」,「[[鶻]]」,「[[鶸]]」,「[[鶺]]」,「[[鷆]]」,「[[鷂]]」,「[[鷙]]」,「[[鷓]]」,「[[鷸]]」,「[[鷦]]」,「[[鷭]]」,「[[鷯]]」,「[[鷽]]」,「[[鸛]]」,「[[鸞]]」,「[[鹵]]」,「[[鹹]]」,「[[麈]]」,「[[麋]]」,「[[麌]]」,「[[麕]]」,「[[麇]]」,「[[麑]]」,「[[麝]]」,「[[麤]]」,「[[麁]]」,「[[麩]]」,「[[麸]]」,「[[麭]]」,「[[麾]]」,「[[黌]]」,「[[黎]]」,「[[黏]]」,「[[黐]]」,「[[黔]]」,「[[黜]]」,「[[黝]]」,「[[黠]]」,「[[黥]]」,「[[黯]]」,「[[黴]]」,「[[黶]]」,「[[黷]]」,「[[黹]]」,「[[黻]]」,「[[黼]]」,「[[黽]]」,「[[鼇]]」,「[[鼈]]」,「[[鼕]]」,「[[鼬]]」,「[[鼯]]」,「[[鼴]]」,「[[鼹]]」,「[[鼾]]」,「[[齎]]」,「[[齔]]」,「[[齣]]」,「[[齟]]」,「[[齠]]」,「[[齦]]」,「[[齧]]」,「[[囓]]」,「[[齬]]」,「[[齪]]」,「[[齷]]」,「[[齲]]」,「[[齶]]」,「[[龕]]」,「[[龠]]」 === メモ === ==== 諧声域 ==== M- ⇔ MR- S- ⇔ SR- S- ⇔ DZ- fzdu853ddwzsq5sduy6r94zmsh2alof モジュール・トーク:number list/data/hu 829 581646 2313403 2217066 2026-08-09T08:13:23Z Kuroco2k 84207 /* 英語版から移植しましたが… */ 返信 2313403 wikitext text/x-wiki == 英語版から移植しましたが… == 実際にハンガリー語の数詞の項目で[[テンプレート:number box]]を使用すると、エラーが発生します。修正されるまでは使用しないでください。Module:number listが英語版と日本語版で内部で使用しているメソッドが変わっていたりするので、その辺りに原因があるかもしれません。--[[利用者:NekoyamaWataru|NekoyamaWataru]] ([[利用者・トーク:NekoyamaWataru|トーク]]) 2026年4月15日 (水) 00:07 (UTC) :@[[利用者:NekoyamaWataru|NekoyamaWataru]] 最低限動かせるようにしてみました。自環境ではとりあえず問題なく表示されますが、そちらで不具合があったらまだ使うべきでないかもしれません。また、まだ未翻訳の箇所も多々見受けられるようです。--[[利用者:Kuroco2k|<span style="color:#000000">'''雛宮黒狐'''</span>]]([[利用者‐会話:Kuroco2k|<span style="color:#5a00cc">Talk</span>]]) 2026年8月9日 (日) 08:13 (UTC) m8p1p0j95n2jvmlq447uy8k0abqmrac モジュール:lt-pron 828 589513 2313439 2281497 2026-08-09T10:29:32Z Kuroco2k 84207 長かった...。 2313439 Scribunto text/plain --[==[ Backend for {{lt-pr}}: IPA, hyphenation, and rhyme generation. Author: TongcyDai ]==] local export = {} local m_debug = require("Module:debug") local m_str = require("Module:string utilities") local m_lt_common = require("Module:lt-common") local u = m_str.char local ulower = m_str.lower local uupper = m_str.upper local usub = m_str.sub local ulen = m_str.len local ugsub = m_str.gsub local ufind = m_str.find local umatch = m_str.match local rsplit = m_str.split local lang = require("Module:languages").getByCode("lt") -- Accent mark constants (re-exported from Module:lt-common to keep all -- Lithuanian modules in sync). local GRAVE = m_lt_common.GRAVE -- U+0300 local ACUTE = m_lt_common.ACUTE -- U+0301 local TILDE = m_lt_common.TILDE -- U+0303 local DOTABOVE = m_lt_common.DOTABOVE -- U+0307 local OGONEK = m_lt_common.OGONEK -- U+0328 -- M4: Reuse Module:lt-common's display formatter directly instead of -- maintaining a parallel local copy. local makeDisplayText = m_lt_common.makeDisplayText -- Liaison marker: U+203F UNDERTIE — separates clitics from their stressed host -- in input. The phonological grammar treats it like a "soft" word boundary that -- is transparent to several cross-word processes (palatalization spread, -- geminate / fricative simplification, place assimilation), per VLKK §19–§23. local LIAISON = u(0x203F) -- Lazy-loaded external modules local m_IPA local audio_module = "Module:audio" local homophones_module = "Module:homophones" local hyphenation_module = "Module:hyphenation" local rhymes_module = "Module:rhymes" local parameters_module = "Module:parameters" local parse_util_module = "Module:parse utilities" local concat = table.concat local insert = table.insert local lang_obj local function get_lang() if not lang_obj then lang_obj = require("Module:languages").getByCode("lt") end return lang_obj end local function track(reason) m_debug.track("lt-pron/" .. reason) end -- ============================================================================ -- SECTION 1: Orthography & Phonology Definitions -- ============================================================================ -- Suffix table for automatic phonetic adjustments (currently disabled) -- Exact matching lists (must include precomposed normalized tone markers) --[[ local SUFFIX_LOAN = { ["fòbas"]=true, ["fòbė"]=true, ["fòbija"]=true, ["fònas"]=true, ["fònė"]=true, ["lògas"]=true, ["lògija"]=true, ["skòpas"]=true } --]] -- Consonant classes for syllabification (Sonority Hierarchy) local CLASS = { R = {["l"]=true, ["m"]=true, ["n"]=true, ["r"]=true, ["v"]=true, ["j"]=true}, S = {["s"]=true, ["z"]=true, ["š"]=true, ["ž"]=true, ["f"]=true, ["x"]=true, ["h"]=true, ["ch"]=true}, T = {["p"]=true, ["b"]=true, ["t"]=true, ["d"]=true, ["k"]=true, ["g"]=true, ["c"]=true, ["dz"]=true, ["č"]=true, ["dž"]=true} } -- Front vowels trigger palatalization local FRONT_V = { ["e"]=true, ["ę"]=true, ["ė"]=true, ["i"]=true, ["į"]=true, ["y"]=true, ["ie"]=true, ["ei"]=true, ["eu"]=true } -- Vowel -> Base IPA mapping (Unstressed short/inherent) local V_IPA = { ["a"] = "ɐ", ["ą"] = "ɑː", ["e"] = "ɛ", ["ę"] = "æː", ["ė"] = "eː", ["i"] = "ɪ", ["į"] = "iː", ["y"] = "iː", ["u"] = "ʊ", ["ų"] = "uː", ["ū"] = "uː", ["o"] = "oː", ["ie"] = "iɛ", ["uo"] = "uɔ", -- Unstressed simple diphthongs ["ai"] = "ɐɪ", ["au"] = "ɒʊ", ["ei"] = "ɛɪ", ["eu"] = "ɛʊ", ["ui"] = "ʊɪ", ["oi"] = "ɔɪ", ["ou"] = "ɔʊ" } -- Consonant -> Base IPA mapping (Unpalatalized) local CONS_IPA = { ["b"] = "b", ["c"] = "t͡s", ["č"] = "t͡ʃ", ["d"] = "d", ["dz"] = "d͡z", ["dž"] = "d͡ʒ", ["ch"] = "x", ["f"] = "f", ["g"] = "ɡ", ["h"] = "ɣ", ["j"] = "j", ["k"] = "k", ["l"] = "l", ["m"] = "m", ["n"] = "n", ["p"] = "p", ["r"] = "r", ["s"] = "s", ["š"] = "ʃ", ["t"] = "t", ["v"] = "ʋ", ["z"] = "z", ["ž"] = "ʒ", } -- Voicing pairs for Voicing Assimilation local VOICING_PAIRS = { ["p"]="b", ["b"]="p", ["t"]="d", ["d"]="t", ["k"]="g", ["g"]="k", ["c"]="dz", ["dz"]="c", ["č"]="dž", ["dž"]="č", ["s"]="z", ["z"]="s", ["š"]="ž", ["ž"]="š", ["x"]="ɣ", ["ɣ"]="x" } local function is_voiced(c) local voiced_set = {["b"]=true, ["d"]=true, ["g"]=true, ["dz"]=true, ["dž"]=true, ["z"]=true, ["ž"]=true, ["ɣ"]=true} return voiced_set[c] == true end -- Accent pairs for conjugation module support -- Maps base vowel/diphthong to accented forms (falling/rising) local ACCENT_PAIRS = { -- Long vowels (acute or tilde) ["ą"] = {acute="ą"..ACUTE, tilde="ą"..TILDE}, ["ę"] = {acute="ę"..ACUTE, tilde="ę"..TILDE}, ["ė"] = {acute="ė"..ACUTE, tilde="ė"..TILDE}, ["y"] = {acute="y"..ACUTE, tilde="y"..TILDE}, ["į"] = {acute="į"..ACUTE, tilde="į"..TILDE}, ["ū"] = {acute="ū"..ACUTE, tilde="ū"..TILDE}, ["ų"] = {acute="ų"..ACUTE, tilde="ų"..TILDE}, -- a/e can be short (grave) or long (tilde) ["a"] = {grave="a"..GRAVE, tilde="a"..TILDE}, ["e"] = {grave="e"..GRAVE, tilde="e"..TILDE}, -- o: ó/õ/o are long, ò is short ["o"] = {acute="o"..ACUTE, grave="o"..GRAVE, tilde="o"..TILDE}, -- Short vowels i/u (only grave) ["i"] = {grave="i"..GRAVE}, ["u"] = {grave="u"..GRAVE}, -- Simple diphthongs ["ai"] = {acute="a"..ACUTE.."i", tilde="a".."i"..TILDE}, ["au"] = {acute="a"..ACUTE.."u", tilde="a".."u"..TILDE}, ["ei"] = {acute="e"..ACUTE.."i", tilde="e".."i"..TILDE}, ["ui"] = {grave="u"..GRAVE.."i", tilde="u".."i"..TILDE}, -- Complex diphthongs ["ie"] = {acute="i"..ACUTE.."e", tilde="i".."e"..TILDE}, ["uo"] = {acute="u"..ACUTE.."o", tilde="u".."o"..TILDE}, -- Mixed diphthongs (a series - acute/tilde) ["al"] = {acute="a"..ACUTE.."l", tilde="a".."l"..TILDE}, ["am"] = {acute="a"..ACUTE.."m", tilde="a".."m"..TILDE}, ["an"] = {acute="a"..ACUTE.."n", tilde="a".."n"..TILDE}, ["ar"] = {acute="a"..ACUTE.."r", tilde="a".."r"..TILDE}, -- Mixed diphthongs (e series - acute/grave/tilde, grave for foreign) ["el"] = {acute="e"..ACUTE.."l", grave="e"..GRAVE.."l", tilde="e".."l"..TILDE}, ["em"] = {acute="e"..ACUTE.."m", grave="e"..GRAVE.."m", tilde="e".."m"..TILDE}, ["en"] = {acute="e"..ACUTE.."n", grave="e"..GRAVE.."n", tilde="e".."n"..TILDE}, ["er"] = {acute="e"..ACUTE.."r", grave="e"..GRAVE.."r", tilde="e".."r"..TILDE}, -- Mixed diphthongs (i series - grave/tilde) ["il"] = {grave="i"..GRAVE.."l", tilde="i".."l"..TILDE}, ["im"] = {grave="i"..GRAVE.."m", tilde="i".."m"..TILDE}, ["in"] = {grave="i"..GRAVE.."n", tilde="i".."n"..TILDE}, ["ir"] = {grave="i"..GRAVE.."r", tilde="i".."r"..TILDE}, -- Mixed diphthongs (u series - grave/tilde) ["ul"] = {grave="u"..GRAVE.."l", tilde="u".."l"..TILDE}, ["um"] = {grave="u"..GRAVE.."m", tilde="u".."m"..TILDE}, ["un"] = {grave="u"..GRAVE.."n", tilde="u".."n"..TILDE}, ["ur"] = {grave="u"..GRAVE.."r", tilde="u".."r"..TILDE}, -- Foreign diphthongs (grave only) ["eu"] = {grave="e"..GRAVE.."u"}, ["oi"] = {grave="o"..GRAVE.."i"}, ["ou"] = {grave="o"..GRAVE.."u"}, ["ol"] = {grave="o"..GRAVE.."l"}, ["om"] = {grave="o"..GRAVE.."m"}, ["on"] = {grave="o"..GRAVE.."n"}, ["or"] = {grave="o"..GRAVE.."r"}, } -- ============================================================================ -- SECTION 2: Lexical Normalization (Avoid NFD destruction) -- ============================================================================ -- Helper: Remove all accent marks from text (moved here for early use). -- Delegates to Module:lt-common to keep the de-accenting logic shared. local function remove_all_accents(text) return m_lt_common.to_stem_bare(mw.ustring.toNFD(text)) end -- Extract pagename from input or load from headword data local function get_pagename(input) -- Check for manual override: <base:xxx> local manual = input:match("<base:([^>]+)>") if manual then return manual, input:gsub("<base:[^>]+>", "") end -- Load from headword data local success, data = pcall(function() return mw.loadData("Module:headword/data").pagename end) if success and data then return data, input end return nil, input end -- Identify respelling j and (j) positions local function identify_respelling_glides(input_with_accents, pagename) if not pagename then return {} -- No pagename, no respelling detection end -- Remove all accents from input local input_clean = remove_all_accents(input_with_accents) -- Remove special markers (^, .) input_clean = ugsub(input_clean, "[%^%.]", "") -- Remove <base:...> if present input_clean = ugsub(input_clean, "<base:[^>]+>", "") -- Remove literal ˌ input_clean = ugsub(input_clean, "ˌ", "") -- Remove softening mark ʼ input_clean = ugsub(input_clean, "ʼ", "") -- Remove (j) markers - replace with j for comparison input_clean = ugsub(input_clean, "%(j%)", "j") -- Remove spaces for comparison input_clean = ugsub(input_clean, " ", "") -- Convert to NFC for comparison input_clean = mw.ustring.toNFC(input_clean) -- Normalize pagename (lowercase, remove spaces) local pagename_clean = ulower(pagename) pagename_clean = ugsub(pagename_clean, " ", "") -- Find respelling j positions (j in input but not in pagename) local respelling_positions = {} local input_idx = 1 local page_idx = 1 while input_idx <= ulen(input_clean) do local input_char = usub(input_clean, input_idx, input_idx) if input_char == "j" then -- Check if this j exists in pagename at corresponding position local page_char = page_idx <= ulen(pagename_clean) and usub(pagename_clean, page_idx, page_idx) if page_char ~= "j" then -- This is a respelling j insert(respelling_positions, input_idx) input_idx = input_idx + 1 -- Don't advance page_idx else -- This is an original j input_idx = input_idx + 1 page_idx = page_idx + 1 end else input_idx = input_idx + 1 page_idx = page_idx + 1 end end return respelling_positions end -- Safe mapping to extract tones without destroying precomposed characters local TONE_MAP = { ["á"]="a,acute", ["à"]="a,grave", ["ã"]="a,tilde", ["é"]="e,acute", ["è"]="e,grave", ["ẽ"]="e,tilde", ["í"]="i,acute", ["ì"]="i,grave", ["ĩ"]="i,tilde", ["ý"]="y,acute", ["ỳ"]="y,grave", ["ỹ"]="y,tilde", ["ú"]="u,acute", ["ù"]="u,grave", ["ũ"]="u,tilde", ["ó"]="o,acute", ["ò"]="o,grave", ["õ"]="o,tilde", -- Precomposed vowels with macrons/ogoneks + tones (represented here via standard combinations) ["ą́"]="ą,acute", ["ą̃"]="ą,tilde", ["ę́"]="ę,acute", ["ę̃"]="ę,tilde", ["ė́"]="ė,acute", ["ė̃"]="ė,tilde", ["į́"]="į,acute", ["į̃"]="į,tilde", ["ų́"]="ų,acute", ["ų̃"]="ų,tilde", ["ū́"]="ū,acute", ["ū̃"]="ū,tilde", -- Tilde on liquids (for semi-diphthongs) ["l̃"]="l,tilde", ["m̃"]="m,tilde", ["ñ"]="n,tilde", ["r̃"]="r,tilde", ["j̃"]="j,tilde" } -- Resolves NFD back to safe representation if input was somehow NFD. -- The PUA rejection (with replacement hints), non-standard format tracking, -- and i/j-with-dotabove canonicalization are all delegated to Module:lt-common -- so that all Lithuanian modules share one implementation. Only the -- TONE_MAP-based codepoint parser remains local since it produces the -- token list specifically consumed by lt-pron's tokenizer. local function safe_normalize(text) -- Reject PUA characters with helpful "use X instead" hints. m_lt_common.reject_pua(text) -- Track non-standard input encodings for analytics. Detection runs on -- the raw input (in NFD internally) before any canonicalization, so the -- counts reflect what editors actually typed. local has_dotless, has_precomp_i = m_lt_common.detect_nonstandard(text) if has_dotless then track('dotless-ij') end if has_precomp_i then track('precomposed-i-accent') end -- "Explicit dotabove" (i.e., i/j + U+0307 + accent) is the *correct* -- input form for accented i/j and is tracked separately to monitor -- editor adoption. This check stays local since lt-common's -- detect_nonstandard intentionally only flags the wrong forms. if ufind(mw.ustring.toNFD(text), "[ij]" .. DOTABOVE) then track('explicit-dotabove') end -- Normalize: drops stray dot-aboves between i/j and accents, -- converts dotless ı/ȷ to standard i/j, returns clean NFC. text = m_lt_common.canonicalize_input(text) -- Parse the canonicalized NFC string into {char, tone} tokens. -- TONE_MAP entries are 1- or 2-codepoint precomposed sequences -- (e.g. "á" is one codepoint; "ą́" is "ą" + U+0301). The lookup tries -- the 2-codepoint match first, then falls back to the 1-codepoint match. local result = {} local i = 1 while i <= ulen(text) do local c = usub(text, i, i) local c_lower = ulower(c) -- Convert to lowercase for TONE_MAP lookup -- Look ahead for combining marks if any slipped through local next_c = usub(text, i+1, i+1) local next_c_lower = ulower(next_c) local combined = c_lower .. next_c_lower if TONE_MAP[combined] then local parts = rsplit(TONE_MAP[combined], ",") -- Preserve original case of base character local base_char = parts[1] if c ~= c_lower then base_char = uupper(base_char) end insert(result, {char = base_char, tone = parts[2]}) i = i + 2 elseif TONE_MAP[c_lower] then local parts = rsplit(TONE_MAP[c_lower], ",") -- Preserve original case of base character local base_char = parts[1] if c ~= c_lower then base_char = uupper(base_char) end insert(result, {char = base_char, tone = parts[2]}) i = i + 1 else insert(result, {char = c, tone = nil}) i = i + 1 end end return result end -- ============================================================================ -- SECTION 3: Tokenization & Diphthong/Digraph resolution -- ============================================================================ local function get_type(c) local lc = ulower(c) if V_IPA[lc] then return "V" end if CLASS.R[lc] then return "R" end if CLASS.S[lc] then return "S" end if CLASS.T[lc] then return "T" end return "UNKNOWN" end -- Helper: Convert token array back to NFC string for suffix/prefix matching local function tokens_to_string(tok_list) local s = "" for _, t in ipairs(tok_list) do local c = t.char if t.tone == "grave" then c = c .. GRAVE elseif t.tone == "acute" then c = c .. ACUTE elseif t.tone == "tilde" then c = c .. TILDE end s = s .. c end return mw.ustring.toNFC(s) end -- Apply automatic properties based on word structure (e.g. loanwords) local function apply_auto_properties(tokens) local word_str = ulower(tokens_to_string(tokens)) --[[ Suffix detection for loanword quality (currently disabled) local matched_loan_suff = nil for suff, _ in pairs(SUFFIX_LOAN) do if usub(word_str, -ulen(suff)) == suff then matched_loan_suff = suff; break end end if matched_loan_suff then local suff_len = ulen(matched_loan_suff) local acc_len = 0 for i = #tokens, 1, -1 do local t = tokens[i] acc_len = acc_len + ulen(tokens_to_string({t})) if t.type == "V" and ulower(t.char) == "o" then t.auto_targeted = true if not t.force_default then t.loan_quality = true end end if acc_len >= suff_len then break end end end -- Check for redundant asterisks globally for _, t in ipairs(tokens) do if t.force_default and not t.auto_targeted then track('redundant-asterisk') end end --]] return tokens end -- Strict whitelist for valid diphthong and tone combinations local function is_strict_diphthong(c1, t1, c2, t2) local combo = c1 .. c2 -- Unstressed: neither element has a tone if not t1 and not t2 then return (combo == "ie" or combo == "uo" or combo == "ai" or combo == "au" or combo == "ei" or combo == "ui" or combo == "oi" or combo == "ou" or combo == "eu") end -- Tone on the first element (acute or grave) if t1 and not t2 then if t1 == "acute" then return (combo == "ai" or combo == "au" or combo == "ei" or combo == "ie" or combo == "uo" or combo == "oi") elseif t1 == "grave" then return (combo == "ui" or combo == "oi" or combo == "ou" or combo == "eu") end end -- Tone on the second element (tilde) if not t1 and t2 then if t2 == "tilde" then return (combo == "ai" or combo == "au" or combo == "ei" or combo == "ui" or combo == "ie" or combo == "uo" or combo == "eu") end end return false end local function tokenize(text_str, pagename) local raw_chars = safe_normalize(text_str) -- Identify respelling glides local respelling_j_positions = identify_respelling_glides(text_str, pagename) local tokens = {} local i = 1 while i <= #raw_chars do local curr = raw_chars[i] local nxt = raw_chars[i+1] local lc_curr = ulower(curr.char) local lc_nxt = nxt and ulower(nxt.char) -- Explicit Modifiers if curr.char == "^" then local last_v = nil for j = #tokens, 1, -1 do if tokens[j].type == "V" then last_v = tokens[j]; break end end if last_v then local lc_v = ulower(last_v.char) local base_v = usub(lc_v, -1) -- Last char for silent i combinations local is_e_base = (lc_v == "e") or (base_v == "e") local is_o_base = (lc_v == "o") or (base_v == "o") -- Check for valid e: no tone or grave only if is_e_base then if not last_v.tone or last_v.tone == "grave" then last_v.loan_quality = true elseif last_v.tone == "acute" then error("lt-pron: '^' cannot be used with acute 'é' (use only with plain 'e' or grave 'è')") elseif last_v.tone == "tilde" then error("lt-pron: '^' cannot be used with tilde 'ẽ' (use only with plain 'e' or grave 'è')") end -- Check for valid o: no tone only elseif is_o_base then if not last_v.tone then last_v.loan_quality = true elseif last_v.tone == "grave" then error("lt-pron: '^' is redundant for 'ò' (already pronounced [ɔ])") elseif last_v.tone == "acute" or last_v.tone == "tilde" then error("lt-pron: '^' cannot be used with 'ó' or 'õ' (native long vowels)") end else error("lt-pron: '^' can only be used with 'e' (plain/grave) or 'o' (plain). Found: '" .. lc_v .. "'") end end i = i + 1 -- Check for (j) marker elseif curr.char == "(" and i + 2 <= #raw_chars then local char2 = raw_chars[i+1] local char3 = raw_chars[i+2] if char2.char == "j" and char3.char == ")" then insert(tokens, {char = "j", type = "R", tone = nil, is_respelling = true, is_optional = true, original_char = "-"}) i = i + 3 else error("lt-pron: '(' must be followed by 'j)' to form the (j) glide marker") end --[[ Asterisk modifier (currently disabled) elseif curr.char == "*" then local last_v = nil for j = #tokens, 1, -1 do if tokens[j].type == "V" then last_v = tokens[j]; break end end if last_v then last_v.force_default = true end i = i + 1 --]] elseif curr.char == "." then insert(tokens, {char = ".", type = "BOUNDARY"}) i = i + 1 elseif curr.char == "ˌ" then insert(tokens, {char = "ˌ", type = "SECONDARY_STRESS_BOUNDARY"}) i = i + 1 elseif curr.char == "ʼ" then -- Softening mark: palatalize the preceding consonant for j = #tokens, 1, -1 do local tok = tokens[j] if tok.type == "T" or tok.type == "S" or tok.type == "R" then tok.softening_mark = true break end end i = i + 1 elseif lc_curr == "d" and nxt and (lc_nxt == "z" or lc_nxt == "ž") then insert(tokens, {char = curr.char .. nxt.char, type = "T", tone = nil}) i = i + 2 elseif lc_curr == "c" and nxt and lc_nxt == "h" then insert(tokens, {char = curr.char .. nxt.char, type = "S", tone = nil}) i = i + 2 -- Special handling for V + j̃ (final j with tilde): treat as V + ĩ diphthong elseif curr.type ~= "BOUNDARY" and get_type(curr.char) == "V" and nxt and ulower(nxt.char) == "j" and nxt.tone == "tilde" then -- Check if this is word-final (no more non-boundary tokens after j̃) local is_final = true for k = i + 2, #raw_chars do if raw_chars[k].char ~= " " then is_final = false break end end if is_final then -- Combine V + j̃ as a diphthong V + ĩ (e.g., uj̃ → ui̇̃) local v_char = ulower(curr.char) local combined_char = v_char .. "i" -- e.g., "u" + "i" = "ui" local tone = "tilde" -- j̃'s tilde local tone_position = 2 -- Tilde is on the second vowel (i) insert(tokens, { char = combined_char, type = "V", tone = tone, tone_position = tone_position, original_char = v_char .. "j" -- For hyphenation: display as "uj̃" }) i = i + 2 else -- Not final, treat as regular V + j insert(tokens, {char = curr.char, type = "V", tone = curr.tone}) i = i + 1 end elseif curr.type ~= "BOUNDARY" and get_type(curr.char) == "V" and nxt and get_type(nxt.char) == "V" then local nxt_nxt = raw_chars[i+2] local lc_nxt_nxt = nxt_nxt and ulower(nxt_nxt.char) local back_diph = lc_nxt and lc_nxt_nxt and (lc_nxt .. lc_nxt_nxt) local is_silent_i_diph = (lc_curr == "i" and not curr.tone) and (back_diph == "au" or back_diph == "ai" or back_diph == "ou" or back_diph == "oi" or back_diph == "uo") local is_silent_i_mono = (lc_curr == "i" and not curr.tone) and (lc_nxt == "a" or lc_nxt == "ą" or lc_nxt == "o" or lc_nxt == "u" or lc_nxt == "ų" or lc_nxt == "ū" or lc_nxt == "ɔ") local is_valid_diph = is_strict_diphthong(lc_curr, curr.tone, lc_nxt, nxt and nxt.tone) if is_valid_diph and nxt_nxt and get_type(nxt_nxt.char) == "V" then local lc_nxt_nxt = ulower(nxt_nxt.char) local is_next_valid_diph = is_strict_diphthong(lc_nxt, nxt.tone, lc_nxt_nxt, nxt_nxt.tone) if is_next_valid_diph then -- Resolve ambiguous triplets (e.g., auo -> a.uo is standard) -- Break the first valid diphthong unless explicitly stressed if not curr.tone then is_valid_diph = false end end end if is_silent_i_diph then local tone = nxt.tone or nxt_nxt.tone local tone_position = nil if tone then -- For silent i diphthongs (e.g., iau), position is relative to the full string -- Position 2 = middle vowel, Position 3 = last vowel if nxt.tone then tone_position = 2 elseif nxt_nxt.tone then tone_position = 3 end end insert(tokens, {char = curr.char .. nxt.char .. nxt_nxt.char, type = "V", tone = tone, has_silent_i = true, tone_position = tone_position}) i = i + 3 elseif is_silent_i_mono then local tone = nxt.tone local tone_position = nil if tone then -- For silent i monosyllables (e.g., ia), position 2 = second character tone_position = 2 end insert(tokens, {char = curr.char .. nxt.char, type = "V", tone = tone, has_silent_i = true, tone_position = tone_position}) i = i + 2 elseif is_valid_diph then local tone = curr.tone or nxt.tone local tone_position = nil if tone then -- Record which vowel carries the tone (1 = first, 2 = second) if curr.tone then tone_position = 1 elseif nxt.tone then tone_position = 2 end end insert(tokens, {char = curr.char .. nxt.char, type = "V", tone = tone, tone_position = tone_position}) i = i + 2 else insert(tokens, {char = curr.char, type = "V", tone = curr.tone}) i = i + 1 end else if curr.char ~= " " then local tok_type = get_type(curr.char) local is_respelling_j = false -- Check if this is a respelling j if ulower(curr.char) == "j" and #respelling_j_positions > 0 then -- Build cleaned string up to current position to find clean position local cleaned_so_far = "" for k = 1, i do local c = raw_chars[k] if c.char ~= "^" and c.char ~= "." and c.char ~= " " and c.char ~= "ʼ" and c.char ~= "ˌ" then local char_clean = c.char -- Don't add tone marks to cleaned string if not c.tone then cleaned_so_far = cleaned_so_far .. char_clean else -- Add base character without tone cleaned_so_far = cleaned_so_far .. char_clean end end end local clean_pos = ulen(cleaned_so_far) -- Check if this position is in respelling list for _, pos in ipairs(respelling_j_positions) do if pos == clean_pos then is_respelling_j = true break end end end if ulower(curr.char) == "j" then local tok_data = {char = curr.char, type = tok_type, tone = curr.tone, is_respelling = is_respelling_j, is_optional = false} if is_respelling_j then tok_data.original_char = "-" -- Respelling: use "-" to indicate not in orthography end insert(tokens, tok_data) else insert(tokens, {char = curr.char, type = tok_type, tone = curr.tone}) end end i = i + 1 end end -- Validate respelling glides are between vowels for i, tok in ipairs(tokens) do if tok.is_respelling then local prev_is_vowel = false local next_is_vowel = false -- Check previous non-boundary token for j = i - 1, 1, -1 do if tokens[j].type ~= "BOUNDARY" and tokens[j].type ~= "SECONDARY_STRESS_BOUNDARY" then prev_is_vowel = (tokens[j].type == "V") break end end -- Check next non-boundary token for j = i + 1, #tokens do if tokens[j].type ~= "BOUNDARY" and tokens[j].type ~= "SECONDARY_STRESS_BOUNDARY" then next_is_vowel = (tokens[j].type == "V") break end end if not (prev_is_vowel and next_is_vowel) then error("lt-pron: Respelling glide 'j' or '(j)' must be between two vowels") end end end return apply_auto_properties(tokens) end -- ============================================================================ -- SECTION 4: Syllabification -- ============================================================================ -- Pre-syllabification: Merge geminate (doubled) consonants -- This must happen BEFORE syllabification to prevent false mixed diphthongs -- For example: pérrašo → pér-ra-šo would incorrectly treat ér as a mixed diphthong -- By merging rr→r first, we get pé-ra-šo, correctly keeping é as a pure vowel local function merge_geminate_consonants(tokens) local SIBILANTS = {["s"]=true, ["z"]=true, ["š"]=true, ["ž"]=true} local i = 1 while i < #tokens do local tok = tokens[i] local nxt = tokens[i+1] local tok_is_cons = (tok.type == "T" or tok.type == "S" or tok.type == "R") local nxt_is_cons = (nxt.type == "T" or nxt.type == "S" or nxt.type == "R") if tok_is_cons and nxt_is_cons then local tok_char = ulower(tok.char) local nxt_char = ulower(nxt.char) local tok_is_sib = SIBILANTS[tok_char] local nxt_is_sib = SIBILANTS[nxt_char] -- Merge if: (1) both are sibilants, or (2) identical consonants if (tok_is_sib and nxt_is_sib) or (tok_char == nxt_char) then -- Remove the first token (keep the second) table.remove(tokens, i) -- Don't increment i, check the same position again else i = i + 1 end else i = i + 1 end end end local function syllabify(tokens) local syllables = {} local current_syl = {} -- Check for leading secondary stress marker local has_initial_secondary_stress = false if #tokens > 0 and tokens[1].type == "SECONDARY_STRESS_BOUNDARY" then has_initial_secondary_stress = true end local v_indices = {} for i, tok in ipairs(tokens) do if tok.type == "V" then insert(v_indices, i) end end if #v_indices == 0 then return {tokens} end -- Edge case: no vowels local boundaries = {} -- Sonority Sequencing Algorithm combined with Morphophonological Maximum Onset for idx = 1, #v_indices - 1 do local v1_idx = v_indices[idx] local v2_idx = v_indices[idx + 1] local raw_c_tokens = {} local forced_boundary_idx = nil for i = v1_idx + 1, v2_idx - 1 do if tokens[i].type == "BOUNDARY" or tokens[i].type == "SECONDARY_STRESS_BOUNDARY" then forced_boundary_idx = i else insert(raw_c_tokens, {t=tokens[i], orig_idx=i}) end end if forced_boundary_idx then boundaries[forced_boundary_idx] = true elseif #raw_c_tokens == 0 then -- Hiatus boundaries[v2_idx] = true else -- Macro-Token Grouping: Treat consecutive sibilants (S) as a single phonological unit local macro_c = {} local i = 1 while i <= #raw_c_tokens do local current = raw_c_tokens[i] if current.t.type == "S" then local absorbed = {current} local j = i + 1 -- Absorb any subsequent S tokens into this macro unit, keeping track of them while j <= #raw_c_tokens and raw_c_tokens[j].t.type == "S" do insert(absorbed, raw_c_tokens[j]) j = j + 1 end insert(macro_c, {type = "S", orig_idx = current.orig_idx, tokens = absorbed}) i = j else insert(macro_c, {type = current.t.type, orig_idx = current.orig_idx, tokens = {current}}) i = i + 1 end end local m_count = #macro_c if m_count == 1 then -- V.CV (or V.SSV, e.g., sausšala -> sau.sšala) boundaries[macro_c[1].orig_idx] = true elseif m_count == 2 then local t1, t2 = macro_c[1].type, macro_c[2].type -- ST, SR, TR -> V.CCV if (t1=="S" and t2=="T") or (t1=="S" and t2=="R") or (t1=="T" and t2=="R") then boundaries[macro_c[1].orig_idx] = true else -- Handle TSS and RSS sequences properly (e.g., Oksfordas, transformavo). -- If the macro cluster is T+S or R+S, and the S unit absorbed multiple sibilants, -- split between the first and second sibilant (TS.S, RS.S). if (t1=="T" or t1=="R") and t2=="S" and #macro_c[2].tokens > 1 then boundaries[macro_c[2].tokens[2].orig_idx] = true else -- Default VC.CV boundaries[macro_c[2].orig_idx] = true end end elseif m_count == 3 then local t1, t2, t3 = macro_c[1].type, macro_c[2].type, macro_c[3].type if t1=="S" and t2=="T" and t3=="R" then boundaries[macro_c[1].orig_idx] = true -- V.CCCV elseif (t1=="T" and t2=="S" and t3=="T") or (t1=="R" and t2=="S" and t3=="T") or (t1=="T" and t2=="S" and t3=="R") or (t1=="R" and t2=="T" and t3=="R") or (t1=="T" and t2=="T" and t3=="R") or (t1=="R" and t2=="S" and t3=="R") then boundaries[macro_c[2].orig_idx] = true -- VC.CCV (includes RSR, e.g., konfliktas) else boundaries[macro_c[3].orig_idx] = true -- VCC.CV end elseif m_count == 4 then -- Identify the 4-consonant pattern according to the 8 documented combinations local pattern = macro_c[1].type .. macro_c[2].type .. macro_c[3].type .. macro_c[4].type if pattern == "RSTR" or pattern == "TSTR" then -- R.STR, T.STR -> VC.CCCV boundaries[macro_c[2].orig_idx] = true elseif pattern == "RTRR" or pattern == "TSTS" then -- RTR.R, TST.S -> VCCC.CV boundaries[macro_c[4].orig_idx] = true else -- RT.ST, RT.SR, RT.TR, ST.TR -> VCC.CCV boundaries[macro_c[3].orig_idx] = true end elseif m_count >= 5 then -- Fallback for >=5 logical consonant units track('complex-consonant-cluster') boundaries[macro_c[3].orig_idx] = true end end end -- Construct syllables local secondary_stress_syllables = {} for i, tok in ipairs(tokens) do if boundaries[i] and #current_syl > 0 then insert(syllables, current_syl) -- If this is a secondary stress boundary, mark the NEXT syllable if tok.type == "SECONDARY_STRESS_BOUNDARY" then secondary_stress_syllables[#syllables + 1] = true end current_syl = {} end if tok.type ~= "BOUNDARY" and tok.type ~= "SECONDARY_STRESS_BOUNDARY" then insert(current_syl, tok) end end if #current_syl > 0 then insert(syllables, current_syl) end -- Apply secondary stress marks for idx, _ in pairs(secondary_stress_syllables) do if syllables[idx] then syllables[idx].secondary_stress = true end end -- Apply initial secondary stress if present if has_initial_secondary_stress and #syllables > 0 then syllables[1].secondary_stress = true end return syllables end -- ============================================================================ -- SECTION 5: Base IPA Mapping & Stress Assignment -- ============================================================================ local function is_mixed_diphthong(syl, v_idx) local v_tok = syl[v_idx] local lc_v = ulower(v_tok.char) -- Strip silent 'i' for accurate length calculation if v_tok.has_silent_i then lc_v = usub(lc_v, 2) end -- Digraphs (ie, uo, ai, au, etc.) or natively long vowels (ą, ę, ė, į, y, ų, ū) -- do NOT form mixed diphthongs with subsequent resonants. -- Only short a, e, i, u, o can form true mixed diphthongs. if ulen(lc_v) > 1 then return false end local LONG_V = {["ą"]=true, ["ę"]=true, ["ė"]=true, ["į"]=true, ["y"]=true, ["ų"]=true, ["ū"]=true} if LONG_V[lc_v] then return false end -- V + R in the SAME syllable (coda) if v_idx < #syl and syl[v_idx+1].type == "R" then -- j and v are not considered for typical liquid semi-diphthongs length rules if syl[v_idx+1].char ~= "j" and syl[v_idx+1].char ~= "v" then return true end end return false end local function map_base_phonetics(syllables) local stress_prefix = nil for _, syl in ipairs(syllables) do local v_idx = nil for i, tok in ipairs(syl) do if tok.type == "V" then v_idx = i; break end end if v_idx then local v_tok = syl[v_idx] local v_char = v_tok.char local lc_v_char = ulower(v_char) local tone = v_tok.tone local is_mixed = is_mixed_diphthong(syl, v_idx) if is_mixed and not tone then local r_tok = syl[v_idx+1] if r_tok.tone then tone = r_tok.tone end end if v_tok.has_silent_i then v_tok.silent_i = true local actual_vowel = usub(lc_v_char, 2) v_tok.ipa = V_IPA[actual_vowel] or "ɐ" lc_v_char = actual_vowel else -- Apply loan quality base default for 'o' and 'e' v_tok.ipa = V_IPA[lc_v_char] or "ɐ" if lc_v_char == "o" and v_tok.loan_quality then v_tok.ipa = "ɔ" end if lc_v_char == "e" and v_tok.loan_quality then v_tok.ipa = "e" end -- Automatically prepend glide 'j' to syllable-initial 'ie' if lc_v_char == "ie" and v_idx == 1 then v_tok.ipa = "jiɛ" end end if tone then local s_mark = "" local v_base = usub(lc_v_char, 1, 1) if tone == "acute" then s_mark = "¹ˈ" if lc_v_char == "a" then if is_mixed then v_tok.ipa = "ɑˑ" else v_tok.ipa = "ɑː" end elseif lc_v_char == "e" then -- Note: '^' modifier not allowed with acute 'é' as of current rules -- This code path preserved for consistency if is_mixed and v_tok.loan_quality then v_tok.ipa = "ɛ" -- Loanword é in mixed diphthongs is short /ɛ/ without length elseif is_mixed then v_tok.ipa = "æˑ" -- Mixed diphthong: half-long else v_tok.ipa = "æː" -- Pure vowel: full-long end elseif lc_v_char == "ai" then v_tok.ipa = "ɑˑɪ" elseif lc_v_char == "au" then v_tok.ipa = "ɑˑʊ" elseif lc_v_char == "ei" then v_tok.ipa = "æˑɪ" elseif lc_v_char == "eu" then v_tok.ipa = "æˑʊ" elseif lc_v_char == "oi" then v_tok.ipa = "oˑɪ" end elseif tone == "grave" then if is_mixed and (v_base == "i" or v_base == "u" or v_base == "e" or v_base == "o") then s_mark = "¹ˈ" elseif lc_v_char == "ui" or lc_v_char == "oi" or lc_v_char == "ou" or lc_v_char == "eu" then s_mark = "¹ˈ" else s_mark = "ˈ" end -- Handle loanword variants for grave if lc_v_char == "e" and v_tok.loan_quality then v_tok.ipa = "e" -- è^ (loanword) → [e] end if lc_v_char == "o" then v_tok.ipa = "ɔ" -- ò (always loanword) → [ɔ] end elseif tone == "tilde" then s_mark = "²ˈ" if lc_v_char == "ai" then v_tok.ipa = "ɐɪˑ" elseif lc_v_char == "au" then v_tok.ipa = "ɒʊˑ" elseif lc_v_char == "ei" then v_tok.ipa = "ɛɪˑ" elseif lc_v_char == "eu" then v_tok.ipa = "ɛʊˑ" elseif lc_v_char == "ui" then v_tok.ipa = "ʊɪˑ" elseif lc_v_char == "a" then if is_mixed then v_tok.ipa = "ɐ" else v_tok.ipa = "ɑː" end elseif lc_v_char == "e" then if is_mixed then v_tok.ipa = "ɛ" else v_tok.ipa = "æː" end end end syl.stress = s_mark end -- Set base IPA for consonants (case-insensitive mapping) for i, tok in ipairs(syl) do if tok.type ~= "V" then local lc_c = ulower(tok.char) tok.ipa = CONS_IPA[lc_c] or lc_c end end -- Handle tilde half-length on mixed diphthong coda if tone == "tilde" and is_mixed then local r_tok = syl[v_idx+1] r_tok.half_long = true end else -- Syllable with no vowel (e.g. leftover consonant) for i, tok in ipairs(syl) do local lc_c = ulower(tok.char) tok.ipa = CONS_IPA[lc_c] or lc_c end end end end -- ============================================================================ -- SECTION 6: Phonetic Polish Passes -- ============================================================================ -- Pass 1: Palatalization Spreading (Right-to-Left) -- -- right_context_palatalizing (optional, used by the cross-word pipeline): -- When the current word is followed by a liaisoned word whose first effective -- phoneme is "soft" (front V, j, or a palatalized consonant), pass `true` so -- that: -- 1. spread_active starts true (allowing the word's last consonant to -- receive ʲ even though it has no in-word right neighbour); -- 2. is_direct evaluates to true for that last consonant when it is k/g, -- so VLKK §19's "lyk‿jója → [lʲiːkʲ‿…]" pattern is produced. -- When omitted or false, the function behaves exactly like the within-word -- palatalization that this module has always done. local function apply_palatalization(syllables, right_context_palatalizing) -- Flatten tokens for cross-syllable spreading local flat_tokens = {} for _, syl in ipairs(syllables) do for _, tok in ipairs(syl) do insert(flat_tokens, tok) end end -- First pass: Apply softening marks (no spreading) for i = 1, #flat_tokens do local tok = flat_tokens[i] if tok.softening_mark and tok.ipa ~= "" then tok.ipa = tok.ipa .. "ʲ" tok.is_palatalized = true end end local spread_active = right_context_palatalizing and true or false for i = #flat_tokens, 1, -1 do local tok = flat_tokens[i] local lc_char = ulower(tok.char) if tok.type == "V" then if tok.silent_i or FRONT_V[lc_char] then spread_active = true else spread_active = false end elseif lc_char == "j" then -- Preserve special IPA for final j (ɪ̯), don't override it if tok.ipa ~= "ɪ̯" and tok.ipa ~= "" then tok.ipa = "j" end tok.is_palatalized = true spread_active = true else if spread_active then -- Check if the palatalization is DIRECT (immediate contact with front V or j) local is_direct = false local nxt = flat_tokens[i+1] if nxt then local nxt_lc = ulower(nxt.char) if (nxt.type == "V" and (nxt.silent_i or FRONT_V[nxt_lc])) or nxt_lc == "j" then is_direct = true end elseif right_context_palatalizing then -- No in-word neighbour, but a liaisoned soft phoneme follows. is_direct = true end tok.is_palatalized = true if lc_char == "k" or lc_char == "g" then if is_direct and tok.ipa ~= "" then tok.ipa = tok.ipa .. "ʲ" end -- DO NOT set spread_active to false! k/g are transparent to spreading. else if tok.ipa ~= "" then tok.ipa = tok.ipa .. "ʲ" end end end end end end -- Pass 2: Voicing Assimilation (Right-to-Left) local function apply_voicing_assimilation(syllables) local flat_tokens = {} for _, syl in ipairs(syllables) do for _, tok in ipairs(syl) do insert(flat_tokens, tok) end end local target_voice = nil for i = #flat_tokens, 1, -1 do local tok = flat_tokens[i] if tok.type == "V" or tok.type == "R" then target_voice = nil -- Blocked by vowels and resonants elseif tok.type == "S" or tok.type == "T" then local lc_char = ulower(tok.char) local is_uppercase = (tok.char ~= lc_char) if target_voice == nil then -- Establish new assimilation target target_voice = is_voiced(lc_char) and "voiced" or "voiceless" else -- Assimilate local current_is_voiced = is_voiced(lc_char) if target_voice == "voiced" and not current_is_voiced then local new_char = VOICING_PAIRS[lc_char] or lc_char tok.char = is_uppercase and uupper(new_char) or new_char elseif target_voice == "voiceless" and current_is_voiced then local new_char = VOICING_PAIRS[lc_char] or lc_char tok.char = is_uppercase and uupper(new_char) or new_char end -- Update IPA based on new character, preserving palatalization local lc_new_char = ulower(tok.char) local new_ipa = CONS_IPA[lc_new_char] or lc_new_char if tok.is_palatalized and lc_new_char ~= "k" and lc_new_char ~= "g" then new_ipa = new_ipa .. "ʲ" end tok.ipa = new_ipa end end end end -- Pass 3: Nasal Assimilation (n -> ŋ before velars k/g and post-velar ch/h) -- Per VLKK §6.3, n assimilates to the place of articulation of any following -- velar/uvular consonant, including the fricatives ch [x] and h [ɣ]. local function apply_nasal_assimilation(syllables) local flat_tokens = {} for _, syl in ipairs(syllables) do for _, tok in ipairs(syl) do insert(flat_tokens, tok) end end for i = 1, #flat_tokens - 1 do local tok = flat_tokens[i] -- Ignore vowels for lookahead local lookahead = i + 1 while lookahead <= #flat_tokens and flat_tokens[lookahead].type == "V" do if flat_tokens[lookahead].silent_i then lookahead = lookahead + 1 else break end end local nxt = flat_tokens[lookahead] if nxt and ulower(tok.char) == "n" then local lc_nxt = ulower(nxt.char) if lc_nxt == "k" or lc_nxt == "g" or lc_nxt == "ch" or lc_nxt == "h" then -- Check actual IPA string for direct palatalization if ufind(nxt.ipa, "ʲ") then tok.ipa = "ŋʲ" else tok.ipa = "ŋ" end end end end end -- Pass 4: Vowel Quality Adjustments after Palatalization local function adjust_vowel_quality(syllables) for _, syl in ipairs(syllables) do local has_palatal_onset = false for i, tok in ipairs(syl) do if tok.type ~= "V" and (tok.is_palatalized or ulower(tok.char) == "j") then has_palatal_onset = true elseif tok.type == "V" and has_palatal_onset then local ipa = tok.ipa -- Shift a/e quality if ipa == "ɐ" then ipa = "ɛ" elseif ipa == "ɑː" then ipa = "æː" -- Diphthong shifts for iau / iai elseif ipa == "ɒʊ" then ipa = "ɛʊ" elseif ipa == "ɑˑʊ" then ipa = "æˑʊ" elseif ipa == "ɒʊˑ" then ipa = "ɛʊˑ" elseif ipa == "ɐɪ" then ipa = "ɛɪ" elseif ipa == "ɑˑɪ" then ipa = "æˑɪ" elseif ipa == "ɐɪˑ" then ipa = "ɛɪˑ" end -- Dynamic fronting for u/o/ɔ (adds U+031F) -- Matches ONLY the first character (^) to avoid double fronting in uɔ ipa = ugsub(ipa, "^([uʊoɔ])", "%1̟") tok.ipa = ipa has_palatal_onset = false end end end end -- Pass 5: Terminal Devoicing (Word-final obstruent devoicing) local function apply_terminal_devoicing(syllables) if #syllables == 0 then return end local last_syl = syllables[#syllables] local last_tok = last_syl[#last_syl] if last_tok and (last_tok.type == "S" or last_tok.type == "T") then local lc_char = ulower(last_tok.char) local is_uppercase = (last_tok.char ~= lc_char) if is_voiced(lc_char) then local devoiced = VOICING_PAIRS[lc_char] if devoiced then last_tok.char = is_uppercase and uupper(devoiced) or devoiced local new_ipa = CONS_IPA[devoiced] or devoiced if last_tok.is_palatalized then new_ipa = new_ipa .. "ʲ" end last_tok.ipa = new_ipa end end end end -- Pass 6: Place Assimilation (Sibilant + Affricate) -- When a sibilant meets an affricate, the sibilant adjusts its place of articulation: -- s+č→š, z+dž→ž, š+c→s, ž+dz→z local function apply_place_assimilation(syllables) local flat_tokens = {} for _, syl in ipairs(syllables) do for _, tok in ipairs(syl) do insert(flat_tokens, tok) end end local PLACE_ASSIM = { ["s"] = {["t͡ʃ"] = "ʃ"}, ["z"] = {["d͡ʒ"] = "ʒ"}, ["ʃ"] = {["t͡s"] = "s"}, ["ʒ"] = {["d͡z"] = "z"}, } for i = 1, #flat_tokens - 1 do local tok = flat_tokens[i] local nxt = flat_tokens[i+1] if tok.type == "S" and nxt.type == "T" then local rule = PLACE_ASSIM[tok.ipa] if rule and rule[nxt.ipa] then tok.ipa = rule[nxt.ipa] end end end end -- Pass 7: Geminate Simplification (Double consonant reduction) -- NOTE: Original geminates (rr, ll, etc.) are already merged in merge_geminate_consonants. -- This pass handles geminates created by phonetic rules (e.g., voicing assimilation: td→dd). -- Sibilants: any two sibilants merge into one (keeping the second) -- Other consonants: only identical pairs merge local function apply_geminate_simplification(syllables) local flat_tokens = {} for _, syl in ipairs(syllables) do for _, tok in ipairs(syl) do insert(flat_tokens, tok) end end local SIBILANTS = {["s"]=true, ["z"]=true, ["ʃ"]=true, ["ʒ"]=true} for i = 1, #flat_tokens - 1 do local tok = flat_tokens[i] local nxt = flat_tokens[i+1] local tok_is_cons = (tok.type == "T" or tok.type == "S" or tok.type == "R") local nxt_is_cons = (nxt.type == "T" or nxt.type == "S" or nxt.type == "R") if tok_is_cons and nxt_is_cons then local tok_is_sib = SIBILANTS[tok.ipa] local nxt_is_sib = SIBILANTS[nxt.ipa] if tok_is_sib and nxt_is_sib then tok.ipa = "" elseif tok.ipa == nxt.ipa and tok.ipa ~= "" then tok.ipa = "" end end end end -- Pass 8: Final Consonant Vocalization (v → ʊ̯, j → ɪ̯) -- Word-final v and j (without tilde) become non-syllabic vowels -- Note: j with tilde is already converted to i with tilde in tokenization local function apply_final_consonant_vocalization(syllables) if #syllables == 0 then return end local last_syl = syllables[#syllables] local last_tok = last_syl[#last_syl] if last_tok then local lc_char = ulower(last_tok.char) -- Final v → ʊ̯ if lc_char == "v" then last_tok.ipa = "ʊ̯" -- Keep type as "R" (resonant) for now - it's treated as non-syllabic end -- Final j (without tilde) → ɪ̯ -- Note: j with tilde is already converted to i in tokenization, so won't reach here if lc_char == "j" and last_tok.tone ~= "tilde" then last_tok.ipa = "ɪ̯" -- Keep type as "R" (resonant) for now - it's treated as non-syllabic end end end -- ============================================================================ -- SECTION 7: Output Assembly -- ============================================================================ -- --------------------------------------------------------------------------- -- Cross-word phonology helpers -- --------------------------------------------------------------------------- -- Split a term into segments at spaces only. Returns a plain list of -- non-empty word strings. The liaison marker ‿ is reserved for IPA output -- and must never appear in input; if it does, raise an error so the editor -- knows to use a regular space instead. local function split_into_segments(term) if term and ufind(term, LIAISON) then error("lt-pron: the liaison marker \"" .. LIAISON .. "\" (U+203F) must not appear in the input. Use a regular " .. "space between words; the module decides where to insert ‿ " .. "in the IPA output based on stress.") end local segs = {} for _, w in ipairs(rsplit(term or "", " ")) do if w ~= "" then insert(segs, w) end end return segs end -- True if any syllable in the word has primary or secondary stress. local function word_has_stress(syllables) for _, syl in ipairs(syllables) do if syl.stress or syl.secondary_stress then return true end end return false end -- Compute the clitic group anchor for each word in a phrase. -- -- A "clitic group" is a stressed word together with all unstressed words that -- prosodically attach to it. Two adjacent words share a liaison ‿ iff they -- belong to the same group. The algorithm: -- -- 1. Every stressed word is its own anchor. -- 2. Each unstressed word looks FORWARD for the nearest stressed word -- (proclitic case, e.g., "iš namų̃" — iš leans on namų̃). -- 3. If no stressed word follows, look BACKWARD instead (enclitic case, -- e.g., "sakaũ gi" — gi leans on sakaũ). -- 4. If the entire phrase has no stressed word (rare edge case), all -- unstressed words share a single pseudo-group with anchor 0. -- -- This matches VLKK §4.7 examples like "iš namų̃ [ɪʃ‿nɐ²ˈmuː]" (proclitic) -- and "sakaũ gi [sɐ²ˈkɒʊˑ‿ɡʲɪ]" (enclitic), and produces the correct -- behavior for VLKK §4.9's "išėjaũ į kiẽmą" where the unstressed į proclitic -- to kiẽmą while išėjaũ stands alone. local function compute_clitic_anchors(word_data) local anchors = {} -- Pass 1: stressed words anchor themselves. for i, wd in ipairs(word_data) do if word_has_stress(wd.syllables) then anchors[i] = i end end -- Pass 2: RTL — each unstressed word adopts the next word's anchor. -- Scanning RTL means each position can simply copy anchors[i+1], which -- already points to the nearest stressed word to the right (or nil). for i = #word_data - 1, 1, -1 do if anchors[i] == nil then anchors[i] = anchors[i+1] end end -- Pass 3: LTR — words still without an anchor (no stressed word to the -- right) fall back to the nearest stressed word on the left. for i = 2, #word_data do if anchors[i] == nil then anchors[i] = anchors[i-1] end end -- Pass 4: entire phrase has no stress at all — bundle everything into -- pseudo-group 0 so the words at least share liaison with each other. if #word_data > 0 and anchors[1] == nil then for i = 1, #word_data do anchors[i] = 0 end end return anchors end -- Find the first non-empty token across syllables (skips silent or zero-IPA -- tokens that don't realize a phoneme). local function first_effective_token(syllables) for _, syl in ipairs(syllables) do for _, tok in ipairs(syl) do if tok.ipa ~= "" then return tok end end end return nil end -- Find the last non-empty token across syllables. local function last_effective_token(syllables) for s = #syllables, 1, -1 do local syl = syllables[s] for t = #syl, 1, -1 do if syl[t].ipa ~= "" then return syl[t] end end end return nil end -- Return true if the next word's first effective phoneme triggers -- palatalization across the liaison boundary (front V, j, or an already -- palatalized consonant). Must be called AFTER the next word's palatalization -- pass has run, so `is_palatalized` is reliable. local function first_token_palatalizes(syllables) local tok = first_effective_token(syllables) if not tok then return false end local lc = ulower(tok.char) if tok.type == "V" then return tok.silent_i or FRONT_V[lc] or false end if lc == "j" then return true end return tok.is_palatalized == true end -- VLKK §20: the preposition "už" keeps its [ʒ] (i.e. terminal devoicing is -- skipped) when the next liaisoned word starts with a vowel or sonorant -- consonant (n, m, l, r, j, v). Other words always undergo terminal devoicing. local UZ_SKIP_SONORANTS = { ["n"]=true, ["m"]=true, ["l"]=true, ["r"]=true, ["j"]=true, ["v"]=true, } local function should_skip_devoicing_for_uz(word_text, next_syllables) -- remove_all_accents returns NFD; we have to fold it back to NFC before -- comparing against the literal "už" because ž (U+017E) decomposes to -- z + COMBINING CARON (U+030C) in NFD form. local clean = ulower(mw.ustring.toNFC(remove_all_accents(word_text or ""))) if clean ~= "už" then return false end if not next_syllables then return false end local nxt = first_effective_token(next_syllables) if not nxt then return false end if nxt.type == "V" then return true end return UZ_SKIP_SONORANTS[ulower(nxt.char)] == true end -- VLKK §21b / §22b / §23b: at a liaison boundary, the last consonant of W1 -- and the first consonant of W2 may interact. We mirror within-word place -- assimilation and geminate / sibilant simplification, applied just before -- W1's palatalization pass so that any new ipa (e.g. s → ʃ) gets palatalized -- correctly when needed. local CROSSWORD_PLACE_ASSIM = { ["s"] = {["t͡ʃ"] = "ʃ"}, ["z"] = {["d͡ʒ"] = "ʒ"}, ["ʃ"] = {["t͡s"] = "s"}, ["ʒ"] = {["d͡z"] = "z"}, } local CROSSWORD_SIBILANTS = {["s"]=true, ["z"]=true, ["ʃ"]=true, ["ʒ"]=true} local function strip_trailing_palatal(ipa) if not ipa then return "" end local stripped = ugsub(ipa, "ʲ$", "") return stripped end local function apply_crossword_polish_at_junction(w1_syllables, w2_syllables) local w1_last = last_effective_token(w1_syllables) local w2_first = first_effective_token(w2_syllables) if not (w1_last and w2_first) then return end -- W1's last token has not yet been palatalized at this point in the -- pipeline, so its ipa is the bare base form. W2 has already been fully -- polished, so we must strip a trailing ʲ before using it as a key. local w1_base = w1_last.ipa or "" local w2_base = strip_trailing_palatal(w2_first.ipa) if w1_base == "" or w2_base == "" then return end -- Geminate / sibilant cluster: drop W1's last consonant entirely. if w1_base == w2_base or (CROSSWORD_SIBILANTS[w1_base] and CROSSWORD_SIBILANTS[w2_base]) then w1_last.ipa = "" return end -- Place assimilation: rewrite W1's last consonant base. Palatalization, -- if any, will be re-applied by the palatalization pass. local rule = CROSSWORD_PLACE_ASSIM[w1_base] if rule and rule[w2_base] then w1_last.ipa = rule[w2_base] end end -- --------------------------------------------------------------------------- -- Word-level rendering -- --------------------------------------------------------------------------- -- Tokenize, syllabify, and assign base phonetics for one word. Returns a -- table { text, syllables } with the word's mutable phonological state. local function prepare_word_state(word, pagename) local tokens = tokenize(word, pagename) merge_geminate_consonants(tokens) local syllables = syllabify(tokens) map_base_phonetics(syllables) return {text = word, syllables = syllables} end -- Render a fully polished syllables list into an IPA string. Identical to -- the original tail of process_single_word_ipa. local function render_word_ipa(syllables) local parts = {} for s_idx, syl in ipairs(syllables) do local syl_str = "" local hiatus_sep = "" if s_idx > 1 then local prev_syl = syllables[s_idx - 1] local prev_last_tok = prev_syl[#prev_syl] local curr_first_tok = syl[1] local prev_ends_with_v = (prev_last_tok and prev_last_tok.type == "V" and not prev_last_tok.silent_i) local curr_starts_with_v = (curr_first_tok and curr_first_tok.type == "V" and not curr_first_tok.silent_i) if prev_ends_with_v and curr_starts_with_v then local prev_v_char = ulower(prev_last_tok.char) local curr_v_char = ulower(curr_first_tok.char) -- Only handle ie special case if curr_v_char == "ie" then -- 'ie' has implicit 'j' from map_base_phonetics. syl_str = "" hiatus_sep = "" else -- Standard hiatus without glide insertion syl_str = "." hiatus_sep = "" end end end -- Check for conflict between primary and secondary stress if syl.secondary_stress and syl.stress then error("lt-pron: A syllable cannot have both primary stress (tone mark) and secondary stress (ˌ)") end -- Add stress markers (primary or secondary, mutually exclusive) if syl.secondary_stress then syl_str = syl_str .. "ˌ" elseif syl.stress then syl_str = syl_str .. syl.stress end syl_str = syl_str .. hiatus_sep for _, tok in ipairs(syl) do if tok.is_respelling then if tok.is_optional then syl_str = syl_str .. "(j)" else syl_str = syl_str .. tok.ipa end else syl_str = syl_str .. tok.ipa end if tok.half_long then syl_str = syl_str .. "ˑ" end end insert(parts, syl_str) end return concat(parts, "") end -- --------------------------------------------------------------------------- -- Multi-word IPA assembler with cross-word phonology -- --------------------------------------------------------------------------- -- Pipeline for a phrase made of space-separated words. The liaison marker ‿ -- never appears in input; it is inserted into the rendered IPA according to -- clitic-group anchors computed from per-word stress (see -- compute_clitic_anchors above). -- -- Per-word polish order (unchanged from VLKK §17–§19): -- terminal devoicing → voicing assim → place assim → geminate simp → -- final-cons vocalization → cross-word polish at junction → -- palatalization (with cross-word right context) → nasal assim → -- vowel quality. -- -- Cross-word polish at the junction (§21b/§22b/§23b) runs *before* W1's -- palatalization pass so that any rewritten ipa still receives ʲ correctly. -- Words are processed RTL so that each W_i sees the already-polished state -- of W_{i+1} when computing its cross-word context. local function to_ipa(term, provided_pagename) -- Use provided pagename if available, otherwise try to extract from term local pagename, clean_term if provided_pagename then pagename = provided_pagename clean_term = term else pagename, clean_term = get_pagename(term) end term = clean_term -- Split input and pagename on whitespace; bail out if input contains ‿. local input_segs = split_into_segments(term) local pagename_segs = nil if pagename then pagename_segs = split_into_segments(pagename) -- Verify word count matches (only when both are multi-word) if #input_segs > 1 and #pagename_segs > 1 and #input_segs ~= #pagename_segs then error("lt-pron: Input has " .. #input_segs .. " words but pagename has " .. #pagename_segs .. " words. They must match.") end -- If pagename is a single word but input is multi-word, drop pagename -- alignment (respelling detection only makes sense for exact matches). if #pagename_segs == 1 and #input_segs > 1 then pagename_segs = nil end end -- Stage 1: tokenize / syllabify / map base phonetics for every word. local word_data = {} for i, seg_text in ipairs(input_segs) do local seg_pagename = (pagename_segs and pagename_segs[i]) or nil insert(word_data, prepare_word_state(seg_text, seg_pagename)) end if #word_data == 0 then return "" end -- Stage 2: compute clitic anchors and decide liaison per junction. -- Two adjacent words share a ‿ iff they belong to the same clitic group. local anchors = compute_clitic_anchors(word_data) for i = 1, #word_data - 1 do word_data[i].is_liaison = (anchors[i] == anchors[i+1]) end if word_data[#word_data] then word_data[#word_data].is_liaison = false -- no successor end -- Stage 3: flag the už §20 exception. už keeps its [ʒ] (i.e. terminal -- devoicing is skipped) only when it is in a liaison junction with the -- following word AND that word starts with a vowel or sonorant. Whether -- už is proclitic or enclitic in the group doesn't matter — what matters -- is that ‿ sits between už and the next phoneme. for i = 1, #word_data do local wd = word_data[i] wd.skip_terminal_devoicing = false if wd.is_liaison and word_data[i+1] then if should_skip_devoicing_for_uz(wd.text, word_data[i+1].syllables) then wd.skip_terminal_devoicing = true end end end -- Stage 4: run the polish pipeline RTL across word_data so each W_i sees -- W_{i+1}'s polished state when computing cross-word context. for i = #word_data, 1, -1 do local wd = word_data[i] local next_wd = wd.is_liaison and word_data[i+1] or nil -- Within-word polish (passes 1-5) if not wd.skip_terminal_devoicing then apply_terminal_devoicing(wd.syllables) end apply_voicing_assimilation(wd.syllables) apply_place_assimilation(wd.syllables) apply_geminate_simplification(wd.syllables) apply_final_consonant_vocalization(wd.syllables) -- Cross-word fricative simplification / place assimilation at the -- liaison boundary, before W1 palatalizes (so a freshly assimilated -- s → ʃ can still pick up ʲ). if next_wd then apply_crossword_polish_at_junction(wd.syllables, next_wd.syllables) end -- Determine right palatalization context for the cross-word case. local right_palatalizing = false if next_wd then right_palatalizing = first_token_palatalizes(next_wd.syllables) end -- Pass 6: palatalization (with cross-word context). apply_palatalization(wd.syllables, right_palatalizing) -- Remaining within-word passes. apply_nasal_assimilation(wd.syllables) adjust_vowel_quality(wd.syllables) end -- Stage 5: render each word and join with ‿ (same clitic group) or " ". local result_parts = {} for i, wd in ipairs(word_data) do insert(result_parts, render_word_ipa(wd.syllables)) end local result = result_parts[1] or "" for i = 2, #word_data do local sep = word_data[i-1].is_liaison and LIAISON or " " result = result .. sep .. result_parts[i] end return result end -- Rhyme Extractor local IPA_VOWELS = "aɐɑæɛeəɪiɔoʊuɒɜ" local function get_rhyme(ipa) -- Remove liaison and spaces before rhyme calculation local clean_ipa = ugsub(ipa, "[‿ ]", "") -- Search for the last stress mark from right to left local last_stress_pos = nil for i = ulen(clean_ipa), 1, -1 do local char = usub(clean_ipa, i, i) if char == "ˈ" then -- Skip superscript if present if i > 1 then local prev = usub(clean_ipa, i - 1, i - 1) if prev == "¹" or prev == "²" then last_stress_pos = i -- Point to ˈ, skip superscript else last_stress_pos = i end else last_stress_pos = i end break end end if not last_stress_pos then return nil end -- Extract content after the stress mark local after = usub(clean_ipa, last_stress_pos + 1) -- Remove hiatus dots for rhyme grouping after = ugsub(after, "%.", "") -- Find first vowel position (skip onset consonants) local vstart = umatch(after, "()[" .. IPA_VOWELS .. "]") if vstart then return usub(after, vstart) end return after end -- Hyphenation generator (supports multi-word phrases) local function get_hyphenation(term, provided_pagename) -- Use provided pagename if available, otherwise try to extract from term local pagename, clean_term if provided_pagename then pagename = provided_pagename clean_term = term else pagename, clean_term = get_pagename(term) end term = clean_term -- Split input on both ‿ and space, tracking the separator type so the -- final hyphenation string can preserve liaison markers from the input. local input_segs = split_into_segments(term) local pagename_segs = nil if pagename then pagename_segs = split_into_segments(pagename) -- Verify segment count matches (only when both are multi-segment) if #input_segs > 1 and #pagename_segs > 1 and #input_segs ~= #pagename_segs then error("lt-pron: Input has " .. #input_segs .. " words but pagename has " .. #pagename_segs .. " words. They must match.") end -- If pagename is a single word but input is multi-word, drop alignment if #pagename_segs == 1 and #input_segs > 1 then pagename_segs = nil end end local all_word_parts = {} for i, seg_text in ipairs(input_segs) do -- Get the corresponding pagename word, or nil if not available local seg_pagename = (pagename_segs and pagename_segs[i]) or nil local tokens = tokenize(seg_text, seg_pagename) local syllables = syllabify(tokens) local parts = {} for _, syl in ipairs(syllables) do local text = "" for _, tok in ipairs(syl) do -- Skip respelling characters (original_char == "-" means not in orthography) if tok.original_char ~= "-" then -- Re-attach original tone visually for display local t_mark = "" if tok.tone == "acute" then t_mark = ACUTE elseif tok.tone == "grave" then t_mark = GRAVE elseif tok.tone == "tilde" then t_mark = TILDE end -- Use original_char if set (e.g., j̃ → i internally but j in display) -- Otherwise use tok.char local disp_char = tok.original_char or tok.char -- Restore original orthography for ɔ if disp_char == "ɔ" then disp_char = "o" end if disp_char == "Ɔ" then disp_char = "O" end -- Handle tone placement for diphthongs if tok.tone_position then -- Diphthong: place tone on the specified vowel local char_len = ulen(disp_char) if char_len == 2 then -- Two-character diphthong local v1 = usub(disp_char, 1, 1) local v2 = usub(disp_char, 2, 2) if tok.tone_position == 1 then text = text .. v1 .. t_mark .. v2 else text = text .. v1 .. v2 .. t_mark end elseif char_len == 3 then -- Three-character (silent i) diphthong local v1 = usub(disp_char, 1, 1) local v2 = usub(disp_char, 2, 2) local v3 = usub(disp_char, 3, 3) if tok.tone_position == 1 then text = text .. v1 .. t_mark .. v2 .. v3 elseif tok.tone_position == 2 then text = text .. v1 .. v2 .. t_mark .. v3 else text = text .. v1 .. v2 .. v3 .. t_mark end end else -- Single vowel or consonant: tone goes after the character text = text .. disp_char .. t_mark end end end parts[#parts + 1] = makeDisplayText(text) end insert(all_word_parts, concat(parts, "‧")) -- Use ‧ instead of standard - internally to preserve word boundaries end -- Hyphenation always joins multi-word phrases with a plain space — the -- liaison marker ‿ is purely an IPA-output device and never appears here. local combined_string = concat(all_word_parts, " ") local final_parts = {} for _, piece in ipairs(rsplit(combined_string, "‧")) do insert(final_parts, piece) end -- Calculate actual syllable count (for correct num_syl) local syllable_count = 0 for _, word_part in ipairs(all_word_parts) do local word_syls = rsplit(word_part, "‧") syllable_count = syllable_count + #word_syls end -- Store actual syllable count as a field (since __len doesn't work on tables in Lua 5.1) final_parts.syllable_count = syllable_count return final_parts end -- ============================================================================ -- SECTION 7.5: Conjugation Module Support Functions -- ============================================================================ -- Export: Get syllables as string array with accents function export.get_syllables(term) local pagename, clean_term = get_pagename(term) term = clean_term local tokens = tokenize(term, pagename) local syllables = syllabify(tokens) local result = {} for _, syl in ipairs(syllables) do local text = "" for _, tok in ipairs(syl) do -- Skip respelling glides in syllable output if not tok.is_respelling then -- Re-attach original tone local t_mark = "" if tok.tone == "acute" then t_mark = ACUTE elseif tok.tone == "grave" then t_mark = GRAVE elseif tok.tone == "tilde" then t_mark = TILDE end -- Restore original orthography for ɔ local disp_char = tok.char if disp_char == "ɔ" then disp_char = "o" end if disp_char == "Ɔ" then disp_char = "O" end -- Handle tone placement for diphthongs if tok.tone_position then -- Diphthong: place tone on the specified vowel local char_len = ulen(disp_char) if char_len == 2 then -- Two-character diphthong local v1 = usub(disp_char, 1, 1) local v2 = usub(disp_char, 2, 2) if tok.tone_position == 1 then text = text .. v1 .. t_mark .. v2 else text = text .. v1 .. v2 .. t_mark end elseif char_len == 3 then -- Three-character (silent i) diphthong local v1 = usub(disp_char, 1, 1) local v2 = usub(disp_char, 2, 2) local v3 = usub(disp_char, 3, 3) if tok.tone_position == 1 then text = text .. v1 .. t_mark .. v2 .. v3 elseif tok.tone_position == 2 then text = text .. v1 .. v2 .. t_mark .. v3 else text = text .. v1 .. v2 .. v3 .. t_mark end end else -- Single vowel or consonant: tone goes after the character text = text .. disp_char .. t_mark end end end -- Return NFC format with proper dotabove insertion insert(result, makeDisplayText(text)) end return result end -- Export: Check if a syllable is heavy or light function export.is_heavy_syllable(syllable) local pagename, clean_syllable = get_pagename(syllable) syllable = clean_syllable -- Validate single syllable local tokens = tokenize(syllable, pagename) local syllables = syllabify(tokens) if #syllables ~= 1 then error("is_heavy_syllable: input must be a single syllable, got " .. #syllables .. " syllables") end local syl = syllables[1] -- Find the vowel token local v_idx = nil for i, tok in ipairs(syl) do if tok.type == "V" then v_idx = i break end end if not v_idx then error("is_heavy_syllable: no vowel found in syllable") end local v_tok = syl[v_idx] local lc_v = ulower(v_tok.char) -- Handle silent i (e.g., "iau" where i is silent) if v_tok.has_silent_i then lc_v = usub(lc_v, 2) end -- Long vowels (inherently long, regardless of accent) local LONG_VOWELS = { ["ą"]=true, ["ę"]=true, ["ė"]=true, ["į"]=true, ["y"]=true, ["ų"]=true, ["ū"]=true, ["o"]=true, ["ɔ"]=true -- o/ɔ are always long (except ò, but we treat all o as long) } if LONG_VOWELS[lc_v] then return true end -- Diphthongs (length > 1) if ulen(lc_v) > 1 then return true end -- Mixed diphthongs: short vowel + liquid in coda position local SHORT_VOWELS = {["a"]=true, ["e"]=true, ["i"]=true, ["u"]=true} if SHORT_VOWELS[lc_v] and v_idx < #syl then local next_tok = syl[v_idx + 1] -- Liquid in coda (not j or v, which don't form mixed diphthongs) if next_tok.type == "R" and next_tok.char ~= "j" and next_tok.char ~= "v" then return true end end -- Otherwise, it's a light syllable return false end -- Export: Change accent of a syllable function export.change_accent(syllable, target_accent) local pagename, clean_syllable = get_pagename(syllable) syllable = clean_syllable -- Validate target_accent parameter local VALID_ACCENTS = {acute=true, tilde=true, grave=true, none=true} if not VALID_ACCENTS[target_accent] then error("change_accent: invalid target_accent '" .. tostring(target_accent) .. "', must be 'acute', 'tilde', 'grave', or 'none'") end -- Validate single syllable local tokens = tokenize(syllable, pagename) local syllables = syllabify(tokens) if #syllables ~= 1 then error("change_accent: input must be a single syllable, got " .. #syllables .. " syllables") end -- Remove all existing accents local clean = remove_all_accents(syllable) -- If target is 'none', return clean syllable if target_accent == "none" then return clean end -- Re-tokenize the clean syllable to analyze structure local clean_tokens = tokenize(clean, pagename) local clean_syllables = syllabify(clean_tokens) local syl = clean_syllables[1] -- Find vowel position and extract vowel part local onset = "" local vowel_part = "" local coda = "" local v_idx = nil for i, tok in ipairs(syl) do if tok.type == "V" then v_idx = i break else onset = onset .. tok.char end end if not v_idx then error("change_accent: no vowel found in syllable") end local v_tok = syl[v_idx] vowel_part = ulower(v_tok.char) -- Handle silent i if v_tok.has_silent_i then vowel_part = usub(vowel_part, 2) end -- Check if this is a mixed diphthong local is_mixed = false if v_idx < #syl then local next_tok = syl[v_idx + 1] if next_tok.type == "R" and next_tok.char ~= "j" and next_tok.char ~= "v" then -- Mixed diphthong: vowel + liquid vowel_part = vowel_part .. ulower(next_tok.char) is_mixed = true -- Collect remaining coda after the liquid for i = v_idx + 2, #syl do coda = coda .. syl[i].char end else -- Regular syllable: collect all coda for i = v_idx + 1, #syl do coda = coda .. syl[i].char end end end -- Look up the accented form in ACCENT_PAIRS if not ACCENT_PAIRS[vowel_part] then error("change_accent: vowel/diphthong '" .. vowel_part .. "' not found in accent pairs table") end local accented_vowel = ACCENT_PAIRS[vowel_part][target_accent] if not accented_vowel then error("change_accent: accent type '" .. target_accent .. "' is not allowed for vowel/diphthong '" .. vowel_part .. "'") end -- Reconstruct the syllable with new accent (in NFD format) local result = onset .. accented_vowel .. coda return result end -- ============================================================================ -- SECTION 8: Module Exports & Template Formatting (Preserved) -- ============================================================================ local q_spec = {store = "insert-flattened", type = "qualifier"} local a_spec = {store = "insert-flattened", type = "labels"} local ref_spec = {store = "insert-flattened", item_dest = "refs", type = "references"} -- Generate audio object, supporting file#caption syntax local function generate_audio_obj(arg) local file, caption = arg:match("^(.-)%s*#%s*(.*)$") file = file or arg return {file = file, caption = caption} end -- Parse rhyme specification with optional syllable count local function parse_rhyme(arg, parse_err) local function generate_obj(term) return {rhyme = term} end local param_mods = { s = { item_dest = "num_syl", type = "number", sublist = true, }, } -- Add q/qq/a/aa/ref support if inline modifiers are present if arg:find("<") then param_mods.q = q_spec param_mods.qq = q_spec param_mods.a = a_spec param_mods.aa = a_spec param_mods.ref = ref_spec end return require(parse_util_module).parse_inline_modifiers(arg, { param_mods = param_mods, generate_obj = generate_obj, parse_err = parse_err, splitchar = ",", }) end -- Parse hyphenation specification (dot-separated syllables) local function parse_hyph(arg, parse_err) local function generate_obj(term) local parts = rsplit(term, "%.") return {hyph = parts, syllabification = term} end local param_mods = {} -- Add q/qq/a/aa/ref support if inline modifiers are present if arg:find("<") then param_mods.q = q_spec param_mods.qq = q_spec param_mods.a = a_spec param_mods.aa = a_spec param_mods.ref = ref_spec end return require(parse_util_module).parse_inline_modifiers(arg, { param_mods = param_mods, generate_obj = generate_obj, parse_err = parse_err, splitchar = ",", }) end -- Parse homophone specification local function parse_homophone(arg, parse_err) local function generate_obj(term) return {term = term} end local param_mods = { t = {item_dest = "gloss"}, gloss = {}, pos = {}, alt = {}, lit = {}, id = {}, g = { item_dest = "genders", sublist = true, }, } -- Add q/qq/a/aa/ref support if inline modifiers are present if arg:find("<") then param_mods.q = q_spec param_mods.qq = q_spec param_mods.a = a_spec param_mods.aa = a_spec param_mods.ref = ref_spec end return require(parse_util_module).parse_inline_modifiers(arg, { param_mods = param_mods, generate_obj = generate_obj, parse_err = parse_err, splitchar = ",", }) end local audio_nested_mods = { ["a"] = a_spec, ["aa"] = a_spec, ["q"] = q_spec, ["qq"] = q_spec, ["text"] = {}, ["IPA"] = {sublist = true}, ["t"] = {item_dest = "gloss"}, ["gloss"] = {}, ["pos"] = {}, ["lit"] = {}, ["g"] = { item_dest = "genders", sublist = true, }, } local function parse_one_term(raw, parse_err) if not raw:find("<") then return {term = raw, audio_list = {}, rhyme_list = {}, hyph_list = {}, pagename = nil} end -- Extract base spelling before parse_inline_modifiers local pagename = nil if raw:find("<base:") then pagename = raw:match("<base:([^>]+)>") raw = raw:gsub("<base:[^>]+>", "") end local parsed = require(parse_util_module).parse_inline_modifiers(raw, { param_mods = { ["q"] = q_spec, ["qq"] = q_spec, ["a"] = a_spec, ["aa"] = a_spec, ["ref"] = ref_spec, ["audio"] = { store = "insert", item_dest = "audio_list", convert = function(arg, perr) if arg:find("<") then local parsed_audio = require(parse_util_module).parse_inline_modifiers(arg, { param_mods = audio_nested_mods, generate_obj = generate_audio_obj, parse_err = perr, }) parsed_audio.lang = get_lang() local textobj = require(audio_module).construct_audio_textobj(parsed_audio) parsed_audio.text = textobj parsed_audio.gloss = nil parsed_audio.pos = nil parsed_audio.lit = nil parsed_audio.genders = nil return parsed_audio end local audio_obj = generate_audio_obj(arg) audio_obj.lang = get_lang() local textobj = require(audio_module).construct_audio_textobj(audio_obj) audio_obj.text = textobj return audio_obj end, }, ["rhyme"] = { store = "insert-flattened", item_dest = "rhyme_list", convert = parse_rhyme, }, ["hyph"] = { store = "insert-flattened", item_dest = "hyph_list", convert = parse_hyph, }, ["hmp"] = { store = "insert-flattened", item_dest = "hmp_list", convert = parse_homophone, }, }, generate_obj = function(t) return {term = t, audio_list = {}, rhyme_list = {}, hyph_list = {}, hmp_list = {}} end, parse_err = parse_err, }) parsed.audio_list = parsed.audio_list or {} parsed.rhyme_list = parsed.rhyme_list or {} parsed.hyph_list = parsed.hyph_list or {} parsed.hmp_list = parsed.hmp_list or {} parsed.pagename = pagename return parsed end -- Format rhyme objects with qualifiers local function fmt_rhyme(rhyme_objs, bullet) if not rhyme_objs or #rhyme_objs == 0 then return nil end local rhyme_data = {} for _, robj in ipairs(rhyme_objs) do insert(rhyme_data, { rhyme = robj.rhyme, num_syl = robj.num_syl, q = robj.q, qq = robj.qq, a = robj.a, aa = robj.aa, }) end return bullet .. require(rhymes_module).format_rhymes({ lang = get_lang(), rhymes = rhyme_data }) end -- Format hyphenation objects with qualifiers local function fmt_hyph(hyph_objs, bullet) if not hyph_objs or #hyph_objs == 0 then return nil end local hyph_data = {} for _, hobj in ipairs(hyph_objs) do insert(hyph_data, { hyph = hobj.hyph, q = hobj.q, qq = hobj.qq, a = hobj.a, aa = hobj.aa, }) end return bullet .. require(hyphenation_module).format_hyphenations({ lang = get_lang(), hyphs = hyph_data, caption = "分綴" }) end -- Format audio object local function fmt_audio(audio_obj, bullet) return bullet .. require(audio_module).format_audio(audio_obj) end -- Format homophone objects with qualifiers local function fmt_hmp(hmp_objs, bullet) if not hmp_objs or #hmp_objs == 0 then return nil end return bullet .. require(homophones_module).format_homophones({ lang = get_lang(), homophones = hmp_objs, }) end local function is_multiword_term(term) -- split_into_segments returns a list of non-empty word strings. return #split_into_segments(term) > 1 end function export.show(frame) local parargs = frame:getParent().args local args = require(parameters_module).process(parargs, { [1] = {default = "nãmas"}, ["bullets"] = {type = "number", default = 1}, }) local input = args[1] local nb = args.bullets local b1 = string.rep("*", nb) .. " " local b2 = string.rep("*", nb + 1) .. " " local raw_terms = require(parse_util_module).split_escaping(input, ",") local parsed_terms = {} for i, raw in ipairs(raw_terms) do raw = raw:match("^%s*(.-)%s*$") local pt = parse_one_term(raw, function(msg) error("lt-pron: " .. msg .. " (term " .. i .. ")") end) parsed_terms[#parsed_terms + 1] = pt end m_IPA = m_IPA or require("Module:IPA") local text_parts = {} for _, pt in ipairs(parsed_terms) do -- Determine bullet level: same level as IPA for single pronunciation, indented for multiple local content_bullet = (#parsed_terms == 1) and b1 or b2 -- Generate IPA local ipa_str = to_ipa(pt.term, pt.pagename) -- Handle rhyme: manual override, suppression, or auto-generation local rhyme_objs = nil local suppress_rhyme = false if #pt.rhyme_list > 0 then for _, robj in ipairs(pt.rhyme_list) do if robj.rhyme == "-" then suppress_rhyme = true break end end if not suppress_rhyme then rhyme_objs = {} for _, robj in ipairs(pt.rhyme_list) do -- If num_syl not specified, try to get from auto-generated hyphenation if not robj.num_syl then local auto_hyph = get_hyphenation(pt.term, pt.pagename) if auto_hyph and #auto_hyph > 0 then -- Use syllable_count field if available (for multi-word phrases), otherwise use array length local syl_count = auto_hyph.syllable_count or #auto_hyph robj.num_syl = {syl_count} end end insert(rhyme_objs, robj) end end else -- Auto-generate rhyme (skip if term ends with - or is a multiword term) if not pt.term:match("%-$") and not is_multiword_term(pt.term) then local rhyme_str = get_rhyme(ipa_str) if rhyme_str then local auto_hyph = get_hyphenation(pt.term, pt.pagename) -- Use syllable_count field if available (for multi-word phrases), otherwise use array length local num_syl = (auto_hyph and #auto_hyph > 0) and {auto_hyph.syllable_count or #auto_hyph} or nil rhyme_objs = {{rhyme = rhyme_str, num_syl = num_syl}} end end end -- Handle hyphenation: manual override, suppression, or auto-generation local hyph_objs = nil local suppress_hyph = false if #pt.hyph_list > 0 then for _, hobj in ipairs(pt.hyph_list) do if hobj.syllabification == "-" then suppress_hyph = true break end end if not suppress_hyph then hyph_objs = pt.hyph_list end else -- Auto-generate hyphenation local auto_hyph = get_hyphenation(pt.term, pt.pagename) if auto_hyph and #auto_hyph > 0 then hyph_objs = {{hyph = auto_hyph, syllabification = concat(auto_hyph, ".")}} end end -- Format IPA with qualifiers and references local ipa_item = {pron = "[" .. ipa_str .. "]"} if pt.q then ipa_item.q = pt.q end if pt.qq then ipa_item.qq = pt.qq end if pt.a then ipa_item.a = pt.a end if pt.aa then ipa_item.aa = pt.aa end if pt.refs then ipa_item.refs = pt.refs end text_parts[#text_parts + 1] = b1 .. m_IPA.format_IPA_full(lang, {ipa_item}) -- Audio for _, aud in ipairs(pt.audio_list or {}) do text_parts[#text_parts + 1] = fmt_audio(aud, content_bullet) end -- Rhyme if rhyme_objs then local r = fmt_rhyme(rhyme_objs, content_bullet) if r then text_parts[#text_parts + 1] = r end end -- Hyphenation if hyph_objs then local h = fmt_hyph(hyph_objs, content_bullet) if h then text_parts[#text_parts + 1] = h end end -- Homophones if pt.hmp_list and #pt.hmp_list > 0 then local hmp = fmt_hmp(pt.hmp_list, content_bullet) if hmp then text_parts[#text_parts + 1] = hmp end end end return concat(text_parts, "\n") end export.toIPA = to_ipa export.hyphenate = get_hyphenation export.rhyme = get_rhyme return export 9who7csu6tqbv2e1xwa8ksrqcjvbg9o 利用者・トーク:となりのふぁいやーくん 3 591282 2313309 2307617 2026-08-09T01:26:51Z となりのふぁいやーくん 129376 ページの白紙化 2313309 wikitext text/x-wiki phoiac9h4m842xq45sp7s6u21eteeq1 僊󠄁 0 600984 2313318 2312995 2026-08-09T01:47:16Z Keikei kanji 129888 2313318 wikitext text/x-wiki {{DEFAULTSORT:U+50CA E0101}} ==漢字== {{kanji|人|11}} {{kanji variants|僊}} === 字源 === * 「[[僊#字源]]」を参照。 === 意義 === *「[[僊]]」に異体字セレクタの[[󠄁|U+E0101]]を指定した字形。 # 「[[僊]]」と同義。 == {{コード}} == {{文字コード}} {{mjmoji|007055}} [[Category:異体字セレクタ]] 9vhrysw04xc0kh9r61mchyr3mhltcxy 2313387 2313318 2026-08-09T07:41:58Z Kuroco2k 84207 見た目単字だが、複数の文字を連ねている以上、{{文字コード}}は不適切。また、意義のみで同義であることは自明と推察できる。 2313387 wikitext text/x-wiki {{DEFAULTSORT:U+50CA E0101}} ==漢字== {{kanji|人|11}} {{kanji variants|僊}} ===字源=== *「[[僊#字源]]」を参照。 === 意義 === #「[[僊]]」に異体字セレクタの[[󠄁|U+E0101]]を指定した字形。 =={{コード}}== {{mjmoji|007055}} [[Category:異体字セレクタ]] 5ukd6onjk00mrew7ejybhkth62y7j17 雁柱 0 601012 2313067 2026-08-08T12:10:36Z うーむ 129171 ページの作成:「{{kana-DEFAULTSORT|がんちゅう}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[がんちゅう]]}} #[[ことじ|琴柱]]。」 2313067 wikitext text/x-wiki {{kana-DEFAULTSORT|がんちゅう}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[がんちゅう]]}} #[[ことじ|琴柱]]。 ll6ddeyfc2j35gzfqfq9idnugmrh8cs 巌中 0 601013 2313068 2026-08-08T12:12:21Z うーむ 129171 ページの作成:「{{kana-DEFAULTSORT|がんちゅう}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[がんちゅう]]}} #[[石室]]。」 2313068 wikitext text/x-wiki {{kana-DEFAULTSORT|がんちゅう}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[がんちゅう]]}} #[[石室]]。 1lrtzt99tfjg1c3yebt7kve9yvwjprv がんちゅう 0 601018 2313073 2026-08-08T12:14:31Z うーむ 129171 ページの作成:「{{kana-DEFAULTSORT}} {{also|かんちゅう}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana|h=y}} *【[[雁柱]]】琴柱。 *【[[巌中]]】石室。 *【[[眼中]]】眼の内。」 2313073 wikitext text/x-wiki {{kana-DEFAULTSORT}} {{also|かんちゅう}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana|h=y}} *【[[雁柱]]】琴柱。 *【[[巌中]]】石室。 *【[[眼中]]】眼の内。 ba7x8r3qdbm09rev3zax5tjdo25380s 再再 0 601022 2313089 2026-08-08T12:38:58Z うーむ 129171 ページの作成:「{{kana-DEFAULTSORT|さいさい}} =={{L|ja}}== ==={{adv}}=== {{ja-adv|[[さいさい]]}} #[[たびたび]]。[[再三]]。何度も。」 2313089 wikitext text/x-wiki {{kana-DEFAULTSORT|さいさい}} =={{L|ja}}== ==={{adv}}=== {{ja-adv|[[さいさい]]}} #[[たびたび]]。[[再三]]。何度も。 j7axt8f53qckweyjnleua1vsnoz0iyg 再々 0 601023 2313090 2026-08-08T12:40:00Z うーむ 129171 [[再再]]への転送ページ 2313090 wikitext text/x-wiki #転送[[再再]] hi1ky01k1u61ekxn908rj5yep5t00sf 細細 0 601024 2313091 2026-08-08T12:47:43Z うーむ 129171 ページの作成:「{{kana-DEFAULTSORT|さいさい}} =={{ja}}== ==={{adjectivenoun}}=== {{ja-adjectival noun|[[さいさい]]}} #[[微細]]なさま。[[詳細]]。 #[[ほそい|細い]]さま。 #[[再再]]に同じ。 ==={{conjug}}=== {{日本語タルト活用}} ==={{wagokanji}}=== {{ja-wagokanji|こまごま|ほそぼそ}} #{{wagokanji of|こまごま}} #{{wagokanji of|ほそぼそ}}」 2313091 wikitext text/x-wiki {{kana-DEFAULTSORT|さいさい}} =={{ja}}== ==={{adjectivenoun}}=== {{ja-adjectival noun|[[さいさい]]}} #[[微細]]なさま。[[詳細]]。 #[[ほそい|細い]]さま。 #[[再再]]に同じ。 ==={{conjug}}=== {{日本語タルト活用}} ==={{wagokanji}}=== {{ja-wagokanji|こまごま|ほそぼそ}} #{{wagokanji of|こまごま}} #{{wagokanji of|ほそぼそ}} sch812kz7ih9kg2rhj9aktcmu1dzhvv 細々 0 601025 2313092 2026-08-08T12:48:51Z うーむ 129171 [[細細]]への転送ページ 2313092 wikitext text/x-wiki #転送[[細細]] hnqckdkd09cfrsgfw2o1xal9s2y5i5w さいさい 0 601026 2313094 2026-08-08T12:54:31Z うーむ 129171 ページの作成:「{{kana-DEFAULTSORT}} {{also|さいざい|ざいざい}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana|h=y}} *【[[再再]]】たびたび。再三。 *【[[済済]]】数が多く盛んなこと。 *【[[細細]]】微細。詳細。 *【[[歳歳]]】毎年。」 2313094 wikitext text/x-wiki {{kana-DEFAULTSORT}} {{also|さいざい|ざいざい}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana|h=y}} *【[[再再]]】たびたび。再三。 *【[[済済]]】数が多く盛んなこと。 *【[[細細]]】微細。詳細。 *【[[歳歳]]】毎年。 8cl9icmu1sff50rb6bvs1dusj6zk8iy 摧挫 0 601027 2313095 2026-08-08T12:56:54Z うーむ 129171 ページの作成:「{{kana-DEFAULTSORT|さいざ}} =={{L|ja}}== ==={{noun}}=== {{ja-noun-suru|さいざ}} #[[くじく|挫く]]こと。 ==={{verb}}=== {{ja-verb-suru|さいざ}} {{日本語サ変活用}}」 2313095 wikitext text/x-wiki {{kana-DEFAULTSORT|さいざ}} =={{L|ja}}== ==={{noun}}=== {{ja-noun-suru|さいざ}} #[[くじく|挫く]]こと。 ==={{verb}}=== {{ja-verb-suru|さいざ}} {{日本語サ変活用}} jg7qd56q8dtiafrluz1022f3wkp1y6l さいざい 0 601028 2313097 2026-08-08T13:03:04Z うーむ 129171 ページの作成:「{{kana-DEFAULTSORT}} {{also|さいさい|ざいざい}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana|h=y}} *【[[裁罪]]】断罪すること。 *【[[歳在]]】木星の位置。」 2313097 wikitext text/x-wiki {{kana-DEFAULTSORT}} {{also|さいさい|ざいざい}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana|h=y}} *【[[裁罪]]】断罪すること。 *【[[歳在]]】木星の位置。 7rf0ehcigd080bg89ugjnzwvd2o4clv 裁罪 0 601029 2313098 2026-08-08T13:03:57Z うーむ 129171 ページの作成:「{{kana-DEFAULTSORT|さいざい}} =={{L|ja}}== ==={{noun}}=== {{ja-noun-suru|[[さいざい]]}} #[[断罪]]すること。 ==={{verb}}=== {{ja-verb-suru|さいざい}} {{日本語サ変活用}}」 2313098 wikitext text/x-wiki {{kana-DEFAULTSORT|さいざい}} =={{L|ja}}== ==={{noun}}=== {{ja-noun-suru|[[さいざい]]}} #[[断罪]]すること。 ==={{verb}}=== {{ja-verb-suru|さいざい}} {{日本語サ変活用}} a7ytx8y2r98soitr9dzdejc1gfynxwz 歳在 0 601030 2313099 2026-08-08T13:04:54Z うーむ 129171 ページの作成:「{{kana-DEFAULTSORT|さいざい}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[さいざい]]}} #[[木星]]の[[位置]]。」 2313099 wikitext text/x-wiki {{kana-DEFAULTSORT|さいざい}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[さいざい]]}} #[[木星]]の[[位置]]。 fcr8bxt53wg92z3gzqtwrb2177ui9co 在在 0 601031 2313100 2026-08-08T13:08:40Z うーむ 129171 ページの作成:「{{kana-DEFAULTSORT|ざいざい}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[ざいざい]]}} #[[あちこち]]の[[むらざと|村里]]。 #いたるところ。[[所所]]。」 2313100 wikitext text/x-wiki {{kana-DEFAULTSORT|ざいざい}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[ざいざい]]}} #[[あちこち]]の[[むらざと|村里]]。 #いたるところ。[[所所]]。 0y9xunsdibwjda386yaatrez1e5eaks ざいざい 0 601032 2313104 2026-08-08T13:14:41Z うーむ 129171 ページの作成:「{{kana-DEFAULTSORT}} {{also|さいさい|さいざい}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana}} *【[[在在]]】あちこちの村里。」 2313104 wikitext text/x-wiki {{kana-DEFAULTSORT}} {{also|さいさい|さいざい}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana}} *【[[在在]]】あちこちの村里。 exqqc5spmsh0zxpqw48ir20tyei41v9 最先 0 601033 2313105 2026-08-08T13:25:39Z うーむ 129171 ページの作成:「{{kana-DEFAULTSORT|さいせん}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[さいせん]]}} #最も[[さき|先]]。[[最前]]。」 2313105 wikitext text/x-wiki {{kana-DEFAULTSORT|さいせん}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[さいせん]]}} #最も[[さき|先]]。[[最前]]。 iylaeat2y27cosmhifqea05lzxn22gc ἔνεμα 0 601037 2313113 2026-08-08T13:57:35Z M-30722 1202 [[en:ἔνεμα]]より 2313113 wikitext text/x-wiki {{DEFAULTSORT:ενεμα}} =={{L|grc}}== ==={{etym}}=== {{affix|grc|ἐνίημι|-μα}}. ==={{pron}}=== {{grc-IPA|ἔνεμᾰ}} ==={{noun}}=== {{grc-noun|head=ἔνεμᾰ|ἐνέμᾰτος|n|third}} #{{タグ|grc|医療}}[[注射]]、[[浣腸]]。 {{grc-decl|form=N|ἔνεμᾰ|ἐνέμᾰτος}} ===={{syn}}==== * {{l|grc|κλύσμα}} ===={{desc}}==== * {{desc|la|enema|bor=1}} ** {{desc|ca|ènema}} ** {{desc|en|enema|bor=1}} hkiwmmiwt2hn5dvj0bhu2n59zvpk98n ènema 0 601038 2313114 2026-08-08T13:59:45Z M-30722 1202 [[en:ènema]]より 2313114 wikitext text/x-wiki {{DEFAULTSORT:enema}} {{also|enema|ę́nemą}} =={{L|ca}}== ==={{etym}}=== {{etyl|LL.|ca}} {{m|la|enema}} < {{etyl|grc|ca}} {{m|grc|ἔνεμα}} < {{m|grc|ἐνίημι}} < {{m|grc|ἐν}} + {{m|grc|ἵημι}} ==={{pron}}=== * {{ca-IPA}} * {{音声|ca|LL-Q7026 (cat)-Marvives-ènema.wav|a=Barcelona}} ==={{noun}}=== {{ca-noun|m|ènemes}} #{{タグ|ca|医療}}[[浣腸]]。 ===={{drv}}==== * {{l|ca|enèmic}} ljmi6jpw65e6mrw0qwmeatp8wxq9bgx ènemes 0 601039 2313115 2026-08-08T14:00:31Z M-30722 1202 新規作成 2313115 wikitext text/x-wiki {{DEFAULTSORT:enemes}} =={{L|ca}}== ==={{noun}}=== {{head|ca|plural}} #{{plural of|ca|ènema}} rhg4ha9ec1ji7m88vxjswiqup54co1p plunge in 0 601040 2313119 2026-08-08T14:07:26Z M-30722 1202 [[en:plunge in]]より 2313119 wikitext text/x-wiki {{DEFAULTSORT:plungein}} =={{L|en}}== ==={{pron}}=== * {{音声|en|En-au-plunge in.ogg|a=AU}} * {{rhymes|lang=en|ɪn|s=2}} ==={{verb}}=== {{英語句動詞|plunge|in}} #{{おくりがな3|飛|と|び|込|こ|む|とびこむ}}、[[突入]]する。 ===={{syn}}==== * {{l|en|dive in}} * {{l|en|plunge into}} gr1v2qgddfwqnww95mdm2e1od6lzu11 plunge into 0 601041 2313120 2026-08-08T14:08:04Z M-30722 1202 新規作成 2313120 wikitext text/x-wiki {{DEFAULTSORT:plungeinto}} =={{L|en}}== ==={{verb}}=== {{英語句動詞|plunge|into}} #{{おくりがな3|飛|と|び|込|こ|む|とびこむ}}、[[突入]]する。 #:{{syn|en|plunge in}} 1j9my21kxyg8eg0crti1fwo66ncq0ic đột nhập 0 601042 2313122 2026-08-08T14:12:09Z M-30722 1202 新規作成 2313122 wikitext text/x-wiki {{vi-DEFAULTSORT|đột|nhập}} =={{L|vi}}== ==={{pron}}=== {{vi-pron}} ==={{verb}}=== {{head|vi|verb}}{{vi-h|突|入}} #[[突入]]する。 3h8qmls90r538nv6mykev039kgl5sjr 사막화 0 601045 2313130 2026-08-08T16:50:16Z 20041027 tatsu 59964 ページの作成:「=={{L|ko}}== {{wikipedia|lang=ko}} ==={{pron}}=== {{ko-IPA}} ==={{noun}}=== {{head|ko|noun}} {{ko-h|沙漠|化}} #{{context|環境|lang=ko}} [[砂漠化]]。」 2313130 wikitext text/x-wiki =={{L|ko}}== {{wikipedia|lang=ko}} ==={{pron}}=== {{ko-IPA}} ==={{noun}}=== {{head|ko|noun}} {{ko-h|沙漠|化}} #{{context|環境|lang=ko}} [[砂漠化]]。 f5owc3o041igzf6tawqr36oada8h29v 沙漠化 0 601046 2313131 2026-08-08T16:51:40Z 20041027 tatsu 59964 ページの作成:「=={{L|ko}}== ==={{noun}}=== {{ko-head|noun|사막화|cat2=環境}} #[[砂漠化]]。」 2313131 wikitext text/x-wiki =={{L|ko}}== ==={{noun}}=== {{ko-head|noun|사막화|cat2=環境}} #[[砂漠化]]。 nx5pny8ylbd0mlu5y9tdn7pemloxjvt カテゴリ:押韻:英語/eɪʃən/6音節 14 601047 2313133 2026-08-08T17:08:04Z 20041027 tatsu 59964 ページの作成:「[[カテゴリ:押韻:{{en}}/eɪʃən|6]]」 2313133 wikitext text/x-wiki [[カテゴリ:押韻:{{en}}/eɪʃən|6]] elszhi1zrthawv7onzu866woqv1lk19 輯製 0 601048 2313134 2026-08-08T22:23:05Z うーむ 129171 ページの作成:「{{kana-DEFAULTSORT|しゅうせい}} =={{L|ja}}== ==={{noun}}=== {{ja-noun-suru|[[しゅうせい]]}} #[[編輯]]して[[つくる]]こと。 ==={{verb}}=== {{ja-verb-suru|しゅうせい}} {{日本語サ変活用}}」 2313134 wikitext text/x-wiki {{kana-DEFAULTSORT|しゅうせい}} =={{L|ja}}== ==={{noun}}=== {{ja-noun-suru|[[しゅうせい]]}} #[[編輯]]して[[つくる]]こと。 ==={{verb}}=== {{ja-verb-suru|しゅうせい}} {{日本語サ変活用}} r85zvlwtcg0uw6o52t1wr0qa82fuuu1 テンプレート:suy 10 601049 2313135 2026-08-08T22:33:23Z Kuroco2k 84207 新規作成 2313135 wikitext text/x-wiki <onlyinclude>キセジェ語</onlyinclude>[[Category:言語表記テンプレート|{{PAGENAME}}]][[Category:ISO 639-3|{{PAGENAME}}]] lshvbo32bjlixg2m5nip384m258kvd5 剤銭 0 601050 2313156 2026-08-08T22:39:57Z うーむ 129171 ページの作成:「{{kana-DEFAULTSORT|ざいせん}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[ざいせん]]}} #[[薬価]]。」 2313156 wikitext text/x-wiki {{kana-DEFAULTSORT|ざいせん}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[ざいせん]]}} #[[薬価]]。 f41w85elrvt7tq01xxb948kl7g5306j 在先 0 601051 2313157 2026-08-08T22:43:09Z うーむ 129171 ページの作成:「{{kana-DEFAULTSORT|ざいせん}} =={{L|ja}}== ==={{adv}}=== {{ja-adv|[[ざいせん]]}} #[[あらかじめ]]。」 2313157 wikitext text/x-wiki {{kana-DEFAULTSORT|ざいせん}} =={{L|ja}}== ==={{adv}}=== {{ja-adv|[[ざいせん]]}} #[[あらかじめ]]。 anlp1kkan2xspvfmlmicj5wfltkg0tf ざいせん 0 601052 2313158 2026-08-08T22:45:19Z うーむ 129171 ページの作成:「{{kana-DEFAULTSORT}} {{also|さいせん|さいぜん}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana|h=y}} *【[[在先]]】あらかじめ。 *【[[剤銭]]】薬価。」 2313158 wikitext text/x-wiki {{kana-DEFAULTSORT}} {{also|さいせん|さいぜん}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana|h=y}} *【[[在先]]】あらかじめ。 *【[[剤銭]]】薬価。 m4ggpyjr07nn53ibts5l0djx4xvr8kx テンプレート・トーク:ISO639-1 11 601053 2313191 2026-08-08T22:53:25Z Kuroco2k 84207 /* テンプレート:ISO 639への一元化 */ 新しい節 2313191 wikitext text/x-wiki == テンプレート:ISO 639への一元化 == {{temp|ISO639-1}}、{{temp|ISO639-2}}、{{temp|ISO639-23}}、{{temp|ISO639-3}}と区分されている4つのテンプレートを{{temp|ISO 639}}へまとめ、これらの非推奨化を提案します。単純に「非推奨のテンプレートを用いており(とくに2、23で顕著です)、現状の方式を避けたい」ことや、「スタイルの統一化」を理由としています。--[[利用者:Kuroco2k|<span style="color:#000000">'''雛宮黒狐'''</span>]]([[利用者‐会話:Kuroco2k|<span style="color:#5a00cc">Talk</span>]]) 2026年8月8日 (土) 22:53 (UTC) gse302ckeucnwcsra2dcdl6y106sp1k Wiktionary:削除依頼/2026年8月/テンプレート:ma 4 601054 2313232 2026-08-08T23:34:56Z Kuroco2k 84207 依頼 2313232 wikitext text/x-wiki === テンプレート:ma === 言語コード誤用。そもそもISO 639-1に<code>ma</code>などというコードはない。誤解から来る誤用を防ぐ意味で、廃止ではなく即刻削除にした方がいいと考え、依頼。対象は以下2つ。 *[[テンプレート:ma]] *[[テンプレート:Ma]] *{{削除}} 依頼者票。--[[利用者:Kuroco2k|<span style="color:#000000">'''雛宮黒狐'''</span>]]([[利用者‐会話:Kuroco2k|<span style="color:#5a00cc">Talk</span>]]) 2026年8月8日 (土) 23:34 (UTC) hp4kyc2vmwo9li0zuonnfjb7rlgdwmo はっとう 0 601055 2313256 2026-08-08T23:49:48Z 鍼灸 112313 ページの作成:「{{kana-DEFAULTSORT}} {{also|はつどう|ばっとう}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana|h=y}} *【[[法堂]]】:[[講堂]]。 *【[[八島]]】:八つの島。 *【[[八等]]】:第八位。 *【[[八頭]]】:(動物が)八匹。」 2313256 wikitext text/x-wiki {{kana-DEFAULTSORT}} {{also|はつどう|ばっとう}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana|h=y}} *【[[法堂]]】:[[講堂]]。 *【[[八島]]】:八つの島。 *【[[八等]]】:第八位。 *【[[八頭]]】:(動物が)八匹。 asgu7qtuzlci8b94rfa00mjat5dslrq 賀慶 0 601056 2313258 2026-08-08T23:53:35Z うーむ 129171 ページの作成:「{{kana-DEFAULTSORT|がけい}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[がけい]]}} #[[めでたい]]こと。喜び[[いわう|祝う]]こと。[[慶賀]]。」 2313258 wikitext text/x-wiki {{kana-DEFAULTSORT|がけい}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[がけい]]}} #[[めでたい]]こと。喜び[[いわう|祝う]]こと。[[慶賀]]。 e29q6elqahgcl4ew7jnlcx9hfq5ypu6 雅兄 0 601057 2313259 2026-08-08T23:57:59Z うーむ 129171 ページの作成:「{{kana-DEFAULTSORT|がけい}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[がけい]]}} #{{タグ|ja|尊敬語}}(主に手紙で)相手の[[男性]]を[[敬愛]]していう語。」 2313259 wikitext text/x-wiki {{kana-DEFAULTSORT|がけい}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[がけい]]}} #{{タグ|ja|尊敬語}}(主に手紙で)相手の[[男性]]を[[敬愛]]していう語。 amoxz1cgylhcq454skh5ankhn97j2p3 俄傾 0 601058 2313261 2026-08-09T00:00:46Z うーむ 129171 ページの作成:「{{kana-DEFAULTSORT|がけい}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[がけい]]}} #[[しばらく]]の[[あいだ|間]]。」 2313261 wikitext text/x-wiki {{kana-DEFAULTSORT|がけい}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[がけい]]}} #[[しばらく]]の[[あいだ|間]]。 1guzs2ahf1usblzy40wzqvqxi6oo3bp 峨髻 0 601059 2313263 2026-08-09T00:02:17Z うーむ 129171 ページの作成:「{{kana-DEFAULTSORT|がけい}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[がけい]]}} #[[たかい|高く]]結った[[かみ|髪]]。」 2313263 wikitext text/x-wiki {{kana-DEFAULTSORT|がけい}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[がけい]]}} #[[たかい|高く]]結った[[かみ|髪]]。 n3sk2h9kbyw9yjbmnl5f6za2myu37uj がけい 0 601060 2313266 2026-08-09T00:06:40Z うーむ 129171 ページの作成:「{{kana-DEFAULTSORT}} {{also|かけい}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana|h=y}} *【[[俄傾]]】しばらくの間。 *【[[峨髻]]】高く結った頭髪。 *【[[賀慶]]】慶賀。 *【[[雅兄]]】(手紙で)相手の男性を敬愛していう語。」 2313266 wikitext text/x-wiki {{kana-DEFAULTSORT}} {{also|かけい}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana|h=y}} *【[[俄傾]]】しばらくの間。 *【[[峨髻]]】高く結った頭髪。 *【[[賀慶]]】慶賀。 *【[[雅兄]]】(手紙で)相手の男性を敬愛していう語。 b06sz8tc8ol8xs0p2nqy9jee40k5n74 2313273 2313266 2026-08-09T00:12:20Z うーむ 129171 2313273 wikitext text/x-wiki {{kana-DEFAULTSORT}} {{also|かけい|かげい}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana|h=y}} *【[[俄傾]]】しばらくの間。 *【[[峨髻]]】高く結った頭髪。 *【[[賀慶]]】慶賀。 *【[[雅兄]]】(手紙で)相手の男性を敬愛していう語。 pdmt8gddj4ai2n38dstbncnnrl9zz81 華鯨 0 601061 2313267 2026-08-09T00:09:18Z うーむ 129171 ページの作成:「{{kana-DEFAULTSORT|かげい}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[かげい]]}} #[[つりがね|釣鐘]]。また、その[[おと|音]]。」 2313267 wikitext text/x-wiki {{kana-DEFAULTSORT|かげい}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[かげい]]}} #[[つりがね|釣鐘]]。また、その[[おと|音]]。 p0jm2ou005zrs09lxfmdc4ssiqujiwy 四頭 0 601062 2313268 2026-08-09T00:10:23Z 鍼灸 112313 ページの作成:「{{kana-DEFAULTSORT|しとう}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[しとう]]|[[よんとう]]}} #([[動物]])が四匹。 #四つの[[頭部]]。 #四人の[[頭首]]。」 2313268 wikitext text/x-wiki {{kana-DEFAULTSORT|しとう}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[しとう]]|[[よんとう]]}} #([[動物]])が四匹。 #四つの[[頭部]]。 #四人の[[頭首]]。 75s1br5fr0lo4j5gf9aatx9ckmoert4 かげい 0 601063 2313270 2026-08-09T00:11:42Z うーむ 129171 ページの作成:「{{kana-DEFAULTSORT}} {{also|かけい|がけい}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana}} *【[[華鯨]]】釣鐘。」 2313270 wikitext text/x-wiki {{kana-DEFAULTSORT}} {{also|かけい|がけい}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana}} *【[[華鯨]]】釣鐘。 7xzmr3bsqh1gv2fxujlyrglcryncmqk 八等 0 601064 2313276 2026-08-09T00:14:16Z 鍼灸 112313 ページの作成:「{{kana-DEFAULTSORT|はっとう}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[はっとう]]}} #八[[番目]]の[[等級]]。」 2313276 wikitext text/x-wiki {{kana-DEFAULTSORT|はっとう}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[はっとう]]}} #八[[番目]]の[[等級]]。 qm8yjy35d8e8cfwup84eul5yctu5qof 九島 0 601065 2313278 2026-08-09T00:19:36Z 鍼灸 112313 ページの作成:「{{kana-DEFAULTSORT|きゅうとう}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[きゅうとう]]|[[くとう]]}} #{{タグ|ja|島}}九つの[[しま|島]]。」 2313278 wikitext text/x-wiki {{kana-DEFAULTSORT|きゅうとう}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[きゅうとう]]|[[くとう]]}} #{{タグ|ja|島}}九つの[[しま|島]]。 ismthwocbmv2z6gcjems3tv18wdr2h6 九等 0 601066 2313279 2026-08-09T00:20:31Z 鍼灸 112313 ページの作成:「{{kana-DEFAULTSORT|きゅうとう}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[きゅうとう]]|[[くとう]]}} #九[[番目]]の[[等級]]。」 2313279 wikitext text/x-wiki {{kana-DEFAULTSORT|きゅうとう}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[きゅうとう]]|[[くとう]]}} #九[[番目]]の[[等級]]。 rrvz8aj4x4owk7vtdr2w0teuhemoffs 六賊 0 601067 2313280 2026-08-09T00:20:43Z うーむ 129171 ページの作成:「{{kana-DEFAULTSORT|ろくぞく}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|ろくぞく}} #{{タグ|ja|仏教}}[[煩悩]]を引き起こす元となる[[六根]]。[[六盗]]。」 2313280 wikitext text/x-wiki {{kana-DEFAULTSORT|ろくぞく}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|ろくぞく}} #{{タグ|ja|仏教}}[[煩悩]]を引き起こす元となる[[六根]]。[[六盗]]。 adu4cpu1s7j1fxego0ndj9w3vo3178m 六盗 0 601068 2313281 2026-08-09T00:21:39Z うーむ 129171 ページの作成:「{{kana-DEFAULTSORT|ろくとう}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[ろくとう]]}} #{{タグ|ja|仏教}}[[煩悩]]を引き起こす元となる[[六根]]。[[六賊]]。」 2313281 wikitext text/x-wiki {{kana-DEFAULTSORT|ろくとう}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[ろくとう]]}} #{{タグ|ja|仏教}}[[煩悩]]を引き起こす元となる[[六根]]。[[六賊]]。 oclsalirh8xbjfphrjh5moogenngi4t 九頭 0 601069 2313282 2026-08-09T00:22:45Z 鍼灸 112313 ページの作成:「{{kana-DEFAULTSORT|きゅうとう}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[きゅうとう]]|[[くず]]|[[くとう]]}} #([[動物]]が)九匹。 #九つの[[頭部]]。 #九つの[[頭首]]。」 2313282 wikitext text/x-wiki {{kana-DEFAULTSORT|きゅうとう}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[きゅうとう]]|[[くず]]|[[くとう]]}} #([[動物]]が)九匹。 #九つの[[頭部]]。 #九つの[[頭首]]。 7fr3bpo1oupe6ds20y8hmocw4bhdv9s 2313298 2313282 2026-08-09T00:42:36Z 鍼灸 112313 2313298 wikitext text/x-wiki {{kana-DEFAULTSORT|きゅうとう}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[きゅうとう]]|[[くず]]|[[くとう]]}} #([[動物]]が)九匹。 #九つの[[頭部]]。 #九人の[[頭首]]。 gro4k9g4tj770ucb738g3px09im4a2r 陸頭 0 601070 2313284 2026-08-09T00:24:04Z うーむ 129171 ページの作成:「{{kana-DEFAULTSORT|ろくとう}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[ろくとう]]}} #[[うし|牛]]の[[あたま|頭]]が平らなこと。」 2313284 wikitext text/x-wiki {{kana-DEFAULTSORT|ろくとう}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[ろくとう]]}} #[[うし|牛]]の[[あたま|頭]]が平らなこと。 cykoojh1tycifhm1oqsnqfk4gsupjjy 禄位 0 601071 2313286 2026-08-09T00:26:56Z うーむ 129171 ページの作成:「{{kana-DEFAULTSORT|ろくい}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|ろくい}} #[[俸禄]]と[[官位]]。[[身分]]。」 2313286 wikitext text/x-wiki {{kana-DEFAULTSORT|ろくい}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|ろくい}} #[[俸禄]]と[[官位]]。[[身分]]。 iwqovehlr2p9luq8ws1xjohpz1uuzk9 はつどう 0 601072 2313287 2026-08-09T00:27:39Z 鍼灸 112313 ページの作成:「{{kana-DEFAULTSORT}} {{also|はっとう|ばっとう}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana}} *【[[発動]]】:始めること。」 2313287 wikitext text/x-wiki {{kana-DEFAULTSORT}} {{also|はっとう|ばっとう}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana}} *【[[発動]]】:始めること。 1x5fcgfj13w4g7hi5gmcgyh5ynlz6el 2313288 2313287 2026-08-09T00:28:56Z 鍼灸 112313 2313288 wikitext text/x-wiki {{kana-DEFAULTSORT}} {{also|はっとう|ばっとう}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana}} *【[[発動]]】:動き始めること。 76kkycqvzybypirm3ezr7kp6x2tramp 禄次 0 601073 2313290 2026-08-09T00:29:47Z うーむ 129171 ページの作成:「{{kana-DEFAULTSORT|ろくじ}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[ろくじ]]}} #[[禄位]]。」 2313290 wikitext text/x-wiki {{kana-DEFAULTSORT|ろくじ}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[ろくじ]]}} #[[禄位]]。 6zaweuffcefvj3wmm0qqjaobipq3f9a 禄等 0 601074 2313291 2026-08-09T00:31:26Z うーむ 129171 ページの作成:「{{kana-DEFAULTSORT|ろくとう}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[ろくとう]]}} #[[禄次]]。」 2313291 wikitext text/x-wiki {{kana-DEFAULTSORT|ろくとう}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[ろくとう]]}} #[[禄次]]。 52j74zayncenvoehx9xg3c73dsh6tle ろくとう 0 601075 2313292 2026-08-09T00:35:43Z うーむ 129171 ページの作成:「{{kana-DEFAULTSORT}} =={{L|ja}}== ==={{noun}}=== {{ja-noun}} #[[にんにく]]。 ==={{kangokana}}=== {{ja-kangokana|h=y}} *【[[六盗]]】[[六賊]]。 *【[[陸頭]]】牛の頭が平らなこと。 *【[[禄等]]】[[禄次]]。」 2313292 wikitext text/x-wiki {{kana-DEFAULTSORT}} =={{L|ja}}== ==={{noun}}=== {{ja-noun}} #[[にんにく]]。 ==={{kangokana}}=== {{ja-kangokana|h=y}} *【[[六盗]]】[[六賊]]。 *【[[陸頭]]】牛の頭が平らなこと。 *【[[禄等]]】[[禄次]]。 7o6wsb0btvs4031t7mubwre2gtxlwxq 2313293 2313292 2026-08-09T00:37:18Z 鍼灸 112313 2313293 wikitext text/x-wiki {{kana-DEFAULTSORT}} =={{L|ja}}== ==={{noun}}=== {{ja-noun}} #[[にんにく]]。 ==={{kangokana}}=== {{ja-kangokana|h=y}} *【[[六盗]]】[[六賊]]。 *【[[六島]]】六つの島。 *【[[六等]]】第六位。 *【[[六頭]]】(動物が)六匹。 *【[[陸頭]]】牛の頭が平らなこと。 *【[[禄等]]】[[禄次]]。 qdz1sl559vbqevfsidxu0bk458ygr7f 2313300 2313293 2026-08-09T00:44:47Z うーむ 129171 /* */ 2313300 wikitext text/x-wiki {{kana-DEFAULTSORT}} {{also|ろくどう}} =={{L|ja}}== ==={{noun}}=== {{ja-noun}} #[[にんにく]]。 ==={{kangokana}}=== {{ja-kangokana|h=y}} *【[[六盗]]】[[六賊]]。 *【[[六島]]】六つの島。 *【[[六等]]】第六位。 *【[[六頭]]】(動物が)六匹。 *【[[陸頭]]】牛の頭が平らなこと。 *【[[禄等]]】[[禄次]]。 7w4r4yxlsx35q26nzapwsrt2v97afw3 六島 0 601076 2313294 2026-08-09T00:38:20Z 鍼灸 112313 ページの作成:「{{kana-DEFAULTSORT|ろくとう}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[ろくとう]]}} #{{タグ|ja|島}}六つの[[しま|島]]。」 2313294 wikitext text/x-wiki {{kana-DEFAULTSORT|ろくとう}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[ろくとう]]}} #{{タグ|ja|島}}六つの[[しま|島]]。 mts7ba7k5wfp0l44y845eqq89nawbzm 六等 0 601077 2313295 2026-08-09T00:40:13Z 鍼灸 112313 ページの作成:「{{kana-DEFAULTSORT|ろくとう}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[ろくとう]]}} #六[[番目]]の[[等級]]。」 2313295 wikitext text/x-wiki {{kana-DEFAULTSORT|ろくとう}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[ろくとう]]}} #六[[番目]]の[[等級]]。 onsxpbyyylv1v8hc592utl7ams2zuat 菉豆 0 601078 2313296 2026-08-09T00:41:04Z うーむ 129171 ページの作成:「{{kana-DEFAULTSORT|ろくどう}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[ろくどう]]}} #「[[緑豆]]」の[[別称]]。」 2313296 wikitext text/x-wiki {{kana-DEFAULTSORT|ろくどう}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[ろくどう]]}} #「[[緑豆]]」の[[別称]]。 9zmn1l06xj2hlpa7ne03b0d6ubilhfp 六頭 0 601079 2313297 2026-08-09T00:41:46Z 鍼灸 112313 ページの作成:「{{kana-DEFAULTSORT|ろくとう}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[ろくとう]]}} #([[動物]]が)六匹。 #六つの[[頭部]]。 #六人の[[頭首]]。」 2313297 wikitext text/x-wiki {{kana-DEFAULTSORT|ろくとう}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[ろくとう]]}} #([[動物]]が)六匹。 #六つの[[頭部]]。 #六人の[[頭首]]。 109vs8f1zhj7xhydpsslc5ugi78kf49 ろくどう 0 601080 2313299 2026-08-09T00:43:42Z うーむ 129171 ページの作成:「{{kana-DEFAULTSORT}} {{also|ろくとう}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana|h=y}} *【[[六道]]】仏教で六つの迷界。 *【[[菉豆]]】「緑豆」の別称。」 2313299 wikitext text/x-wiki {{kana-DEFAULTSORT}} {{also|ろくとう}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana|h=y}} *【[[六道]]】仏教で六つの迷界。 *【[[菉豆]]】「緑豆」の別称。 lr867qnykepiihrbrluf7g81ilikcwl しちとう 0 601081 2313302 2026-08-09T00:46:06Z 鍼灸 112313 ページの作成:「{{kana-DEFAULTSORT}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana|h=y}} *【[[七党]]】:平安時代末期から鎌倉時代にかけて武蔵国で勢力を誇っていた七つの武士団。 *【[[七島]]】:七つの島。 *【[[七等]]】:第七位。 *【[[七頭]]】:(動物が)七匹。」 2313302 wikitext text/x-wiki {{kana-DEFAULTSORT}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana|h=y}} *【[[七党]]】:平安時代末期から鎌倉時代にかけて武蔵国で勢力を誇っていた七つの武士団。 *【[[七島]]】:七つの島。 *【[[七等]]】:第七位。 *【[[七頭]]】:(動物が)七匹。 qktuf8f39crxzi3rsawq9vmw2b5zka7 2313329 2313302 2026-08-09T02:40:03Z うーむ 129171 /* */ 2313329 wikitext text/x-wiki {{kana-DEFAULTSORT}} {{also|しちどう}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana|h=y}} *【[[七党]]】:平安時代末期から鎌倉時代にかけて武蔵国で勢力を誇っていた七つの武士団。 *【[[七島]]】:七つの島。 *【[[七等]]】:第七位。 *【[[七頭]]】:(動物が)七匹。 n4hdg7wi1xsour214r6ej2k9b4mrhwm 七島 0 601082 2313304 2026-08-09T01:04:05Z うーむ 129171 ページの作成:「{{kana-DEFAULTSORT|しちとう}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[しちとう]]}} #七つの[[しま|島]]。特に、ある限られた[[水域]]にある主な七つの島。 #カヤツリグサ科の多年草。畳表などに使用される。 #「{{ふりがな|太藺|ふとい}}」の異称。」 2313304 wikitext text/x-wiki {{kana-DEFAULTSORT|しちとう}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[しちとう]]}} #七つの[[しま|島]]。特に、ある限られた[[水域]]にある主な七つの島。 #カヤツリグサ科の多年草。畳表などに使用される。 #「{{ふりがな|太藺|ふとい}}」の異称。 s48hcajrt787xtq16jx2j6rxkmqm1w9 2313319 2313304 2026-08-09T01:47:21Z 鍼灸 112313 2313319 wikitext text/x-wiki {{kana-DEFAULTSORT|しちとう}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[しちとう]]|ななとう}} #{{タグ|ja|島}}(しちとう、ななとう)七つの[[しま|島]]。特に、ある限られた[[水域]]にある主な七つの島。 #カヤツリグサ科の多年草。畳表などに使用される。 #「{{ふりがな|太藺|ふとい}}」の異称。 q9s1au2k9vyqw2areoi2jb4m3vmkhlq 2313430 2313319 2026-08-09T10:03:46Z M-30722 1202 2313430 wikitext text/x-wiki {{kana-DEFAULTSORT|しちとう}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[しちとう]]|ななとう}} #{{タグ|ja|島}}(しちとう、ななとう)七つの[[しま|島]]。特に、ある限られた[[水域]]にある主な七つの島。 #{{タグ|ja|草}}カヤツリグサ科の多年草。畳表などに使用される。 #{{タグ|ja|草}}「{{ふりがな|太藺|ふとい}}」の異称。 qyub8e35g413a7f41h7mrtse8r189tb 七党 0 601083 2313305 2026-08-09T01:08:21Z うーむ 129171 ページの作成:「{{kana-DEFAULTSORT|しちとう}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[しちとう]]}} #[[平安時代]]から[[鎌倉時代]]にかけて[[武蔵国]]に[[勢力]]をもっていた七つの武士団。」 2313305 wikitext text/x-wiki {{kana-DEFAULTSORT|しちとう}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[しちとう]]}} #[[平安時代]]から[[鎌倉時代]]にかけて[[武蔵国]]に[[勢力]]をもっていた七つの武士団。 od4723abzy87icp1pcgpab04kf4e21h 2313433 2313305 2026-08-09T10:06:15Z M-30722 1202 2313433 wikitext text/x-wiki {{kana-DEFAULTSORT|しちとう}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[しちとう]]}} #{{タグ|ja|日本史}}[[平安時代]]から[[鎌倉時代]]にかけて[[武蔵国]]に[[勢力]]をもっていた七つの武士団。 kx69207oetnvvr7jj3v5zlvxjlnzwho 七頭 0 601084 2313306 2026-08-09T01:14:37Z うーむ 129171 ページの作成:「{{kana-DEFAULTSORT|しちとう}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[しちとう]]|ななとう}} #(しちとう、ななとう)([[動物]]が)七匹。 #(しちとう)[[室町幕府]]で[[三職]]に次ぐ七つの家柄。山名氏、一色氏、土岐氏、赤松氏、京極氏、上杉氏、伊勢氏。」 2313306 wikitext text/x-wiki {{kana-DEFAULTSORT|しちとう}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[しちとう]]|ななとう}} #(しちとう、ななとう)([[動物]]が)七匹。 #(しちとう)[[室町幕府]]で[[三職]]に次ぐ七つの家柄。山名氏、一色氏、土岐氏、赤松氏、京極氏、上杉氏、伊勢氏。 s2v6epkxynxthw7yr0ubr7smlga0how 2313315 2313306 2026-08-09T01:42:18Z 鍼灸 112313 2313315 wikitext text/x-wiki {{kana-DEFAULTSORT|しちとう}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[しちとう]]|ななとう}} #(しちとう、ななとう)([[動物]]が)七匹。 #(しちとう、ななとう)七つの[[頭部]]。 #(しちとう、ななとう)七人の[[頭部]]。 #(しちとう)[[室町幕府]]で[[三職]]に次ぐ七つの家柄。山名氏、一色氏、土岐氏、赤松氏、京極氏、上杉氏、伊勢氏。 8zke80nxm4y6uw3epe4wo9dm256l78k 2313316 2313315 2026-08-09T01:42:34Z 鍼灸 112313 2313316 wikitext text/x-wiki {{kana-DEFAULTSORT|しちとう}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[しちとう]]|ななとう}} #(しちとう、ななとう)([[動物]]が)七匹。 #(しちとう、ななとう)七つの[[頭部]]。 #(しちとう、ななとう)七人の[[頭首]]。 #(しちとう)[[室町幕府]]で[[三職]]に次ぐ七つの家柄。山名氏、一色氏、土岐氏、赤松氏、京極氏、上杉氏、伊勢氏。 9wnaudhn03n2bechwu4x8iewlssusq8 2313432 2313316 2026-08-09T10:05:56Z M-30722 1202 2313432 wikitext text/x-wiki {{kana-DEFAULTSORT|しちとう}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[しちとう]]|ななとう}} #(しちとう、ななとう)([[動物]]が)七匹。 #(しちとう、ななとう)七つの[[頭部]]。 #(しちとう、ななとう)七人の[[頭首]]。 #(しちとう){{タグ|ja|日本史}}[[室町幕府]]で[[三職]]に次ぐ七つの家柄。山名氏、一色氏、土岐氏、赤松氏、京極氏、上杉氏、伊勢氏。 okbimpu1mc029noekbhuaawv0aj0sl7 七等 0 601085 2313317 2026-08-09T01:46:17Z 鍼灸 112313 ページの作成:「{{kana-DEFAULTSORT|しちとう}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[しちとう]]|ななとう}} #七[[番目]]の[[等級]]。 #人として優れた七つの階級。 #孫以下の七世代。」 2313317 wikitext text/x-wiki {{kana-DEFAULTSORT|しちとう}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[しちとう]]|ななとう}} #七[[番目]]の[[等級]]。 #人として優れた七つの階級。 #孫以下の七世代。 l2qodh7pxeytch73qg1teihcq5r1eh3 じっとう 0 601086 2313321 2026-08-09T01:52:05Z 鍼灸 112313 ページの作成:「{{kana-DEFAULTSORT}} {{also|しっとう}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana|h=y}} *【[[十島]]】:十の島。 *【[[十等]]】:第十位。 *【[[十頭]]】:(動物が)十匹。」 2313321 wikitext text/x-wiki {{kana-DEFAULTSORT}} {{also|しっとう}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana|h=y}} *【[[十島]]】:十の島。 *【[[十等]]】:第十位。 *【[[十頭]]】:(動物が)十匹。 jeul86fdjc8a1hae43qx4i0fyig9c6q 2313347 2313321 2026-08-09T03:06:31Z うーむ 129171 /* */ 2313347 wikitext text/x-wiki {{kana-DEFAULTSORT}} {{also|しっとう|じつどう}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana|h=y}} *【[[十島]]】:十の島。 *【[[十等]]】:第十位。 *【[[十頭]]】:(動物が)十匹。 d2m35o7azrjcqhog4hm6lm3j4hjtyzf じゅっとう 0 601087 2313323 2026-08-09T01:54:33Z 鍼灸 112313 ページの作成:「{{kana-DEFAULTSORT}} {{also|しゅっとう|しゅつどう}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana|h=y}} *【[[十島]]】:十の島。 *【[[十等]]】:第十位。 *【[[十頭]]】:(動物が)十匹。」 2313323 wikitext text/x-wiki {{kana-DEFAULTSORT}} {{also|しゅっとう|しゅつどう}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana|h=y}} *【[[十島]]】:十の島。 *【[[十等]]】:第十位。 *【[[十頭]]】:(動物が)十匹。 tpp6ixhno30n1d35tqayhukweoejyh4 2313341 2313323 2026-08-09T02:54:19Z うーむ 129171 /* */ 2313341 wikitext text/x-wiki {{kana-DEFAULTSORT}} {{also|しゅっとう|しゅつどう|じゅつどう}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana|h=y}} *【[[十島]]】:十の島。 *【[[十等]]】:第十位。 *【[[十頭]]】:(動物が)十匹。 7m7euyik9utt07rwn4003t7xh7drgh6 七堂伽藍 0 601088 2313325 2026-08-09T02:35:28Z うーむ 129171 ページの作成:「{{kana-DEFAULTSORT|しちどうがらん}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|しちどうがらん}} #{{タグ|ja|仏教}}[[仏教]][[寺院]]で[[主要]]な七つの建物。[[時代]]や[[宗派]]によって異なる。」 2313325 wikitext text/x-wiki {{kana-DEFAULTSORT|しちどうがらん}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|しちどうがらん}} #{{タグ|ja|仏教}}[[仏教]][[寺院]]で[[主要]]な七つの建物。[[時代]]や[[宗派]]によって異なる。 73ed8jnmeluf6ss8vkn43i3qnimbkhd 2313326 2313325 2026-08-09T02:35:51Z うーむ 129171 2313326 wikitext text/x-wiki {{kana-DEFAULTSORT|しちどうがらん}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|しちどうがらん}} #{{タグ|ja|仏教}}[[仏教]][[寺院]]で[[主要]]な七つの建物。[[時代]]や[[宗派]]によって異なる。[[七堂]]。 qc5ytltxuojkg4ntibg7w68ju2h81bp 七堂 0 601089 2313327 2026-08-09T02:37:16Z うーむ 129171 ページの作成:「{{kana-DEFAULTSORT|しちどう}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[しちどう]]}} #{{タグ|ja|略語|仏教}}「[[七堂伽藍]]」の[[略]]。」 2313327 wikitext text/x-wiki {{kana-DEFAULTSORT|しちどう}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[しちどう]]}} #{{タグ|ja|略語|仏教}}「[[七堂伽藍]]」の[[略]]。 b135up9hchdgkq6qlx4ym6e8vjsl7zw しちどう 0 601090 2313328 2026-08-09T02:39:21Z うーむ 129171 ページの作成:「{{kana-DEFAULTSORT}} {{also|しちとう}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana|h=y}} *【[[七堂]]】七堂伽藍の略。 *【[[七道]]】七つの主要な街道。」 2313328 wikitext text/x-wiki {{kana-DEFAULTSORT}} {{also|しちとう}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana|h=y}} *【[[七堂]]】七堂伽藍の略。 *【[[七道]]】七つの主要な街道。 813n2ebjhjjq8z5jn1dhtbhhcv6nglt しゅっとう 0 601091 2313331 2026-08-09T02:46:34Z うーむ 129171 ページの作成:「{{kana-DEFAULTSORT}} {{also|しゅつどう|じゅっとう|じゅつどう}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana}} *【[[出頭]]】本人自ら出向くこと。」 2313331 wikitext text/x-wiki {{kana-DEFAULTSORT}} {{also|しゅつどう|じゅっとう|じゅつどう}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana}} *【[[出頭]]】本人自ら出向くこと。 egrt7e871qedzn1jt3aq6bzl5sa5xcd 0 601092 2313334 2026-08-09T02:48:58Z Keikei kanji 129888 ページの作成:「{{kana-DEFAULTSORT|えん}} == 漢字 == {{kanji|虫|9}} {{kanji variants|𧒛|𧓱|鼴}} {{wikipedia|ナツゼミ}} === 字源 === * [[形声文字|形声]]。「[[虫]]」 + [[音符]]「[[匽]]{{phoneme|*ʔAN}}」。「[[せみ]]」を[[意味]]する[[漢語]]{[[蝘]]{{phoneme|*ʔanʔ}}}を表す字。 {{字源}} ==== 参考文献 ==== * [[上古音]]は布之道『[http://www.kaom.net/sgy_bzd.php 廣韻形聲考]』による。 === 意義 === # [[蝉]]の…」 2313334 wikitext text/x-wiki {{kana-DEFAULTSORT|えん}} == 漢字 == {{kanji|虫|9}} {{kanji variants|𧒛|𧓱|鼴}} {{wikipedia|ナツゼミ}} === 字源 === * [[形声文字|形声]]。「[[虫]]」 + [[音符]]「[[匽]]{{phoneme|*ʔAN}}」。「[[せみ]]」を[[意味]]する[[漢語]]{[[蝘]]{{phoneme|*ʔanʔ}}}を表す字。 {{字源}} ==== 参考文献 ==== * [[上古音]]は布之道『[http://www.kaom.net/sgy_bzd.php 廣韻形聲考]』による。 === 意義 === # [[蝉]]の一種。なつぜみ。 == {{L|ja}} == [[Category:ja]] {{ja-kanji|呉音=*|漢音=エン|訓=なつぜみ}} ==== {{prov}} ==== {{top}} {{ruby|[[蝘蜓]]|とかげ}} {{bottom}} == {{L|zh}} == {{zh-han |m=yǎn |c=jin2 |mn-t=iēng |pfs=jen3 |hrs=ren3 |gd=jan3 |w=ie2 }} **'''[[上古音]]''': ***'''鄭張''': /*qeːnʔ/,/*qanʔ/ ***'''布之道''': /*ʔanʔ/,/*ʔˤenʔ/ ==== {{prov}} ==== {{top}} * [[蝘蜓]] * [[蝘切]] * [[蝘鼠]] * [[蜿蝘]] {{bottom}} == {{L|ko}} == {{ko-han|언}} == {{コード}} == {{文字コード|jis=2-87-63|mj={{mjmoji|023570|023571}}|gb=CE69|cns=2-536E|big5=E7A7}} {{検字|倉頡=LISAV|四角=5111.4}} {{字典|大漢語林=10129|康煕= 1089.14|新大字典=14797|新潮漢字=11310|諸橋=33268}} e8e2h1t7x98o9u1l634onkyab96lkam 2313335 2313334 2026-08-09T02:49:21Z Keikei kanji 129888 2313335 wikitext text/x-wiki {{kana-DEFAULTSORT|えん}} == 漢字 == {{kanji|虫|9}} {{kanji variants|𧒛|𧓱|鼴}} {{wikipedia|ナツゼミ}} === 字源 === * [[形声文字|形声]]。「[[虫]]」 + [[音符]]「[[匽]]{{phoneme|*ʔAN}}」。「[[せみ]]」を[[意味]]する[[漢語]]{[[蝘]]{{phoneme|*ʔanʔ}}}を表す字。 {{字源}} ==== 参考文献 ==== * [[上古音]]は布之道『[http://www.kaom.net/sgy_bzd.php 廣韻形聲考]』による。 === 意義 === # [[蝉]]の一種。なつぜみ。 == {{L|ja}} == {{ja-kanji|呉音=*|漢音=エン|訓=なつぜみ}} ==== {{prov}} ==== {{top}} {{ruby|[[蝘蜓]]|とかげ}} {{bottom}} == {{L|zh}} == {{zh-han |m=yǎn |c=jin2 |mn-t=iēng |pfs=jen3 |hrs=ren3 |gd=jan3 |w=ie2 }} **'''[[上古音]]''': ***'''鄭張''': /*qeːnʔ/,/*qanʔ/ ***'''布之道''': /*ʔanʔ/,/*ʔˤenʔ/ ==== {{prov}} ==== {{top}} * [[蝘蜓]] * [[蝘切]] * [[蝘鼠]] * [[蜿蝘]] {{bottom}} == {{L|ko}} == {{ko-han|언}} == {{コード}} == {{文字コード|jis=2-87-63|mj={{mjmoji|023570|023571}}|gb=CE69|cns=2-536E|big5=E7A7}} {{検字|倉頡=LISAV|四角=5111.4}} {{字典|大漢語林=10129|康煕= 1089.14|新大字典=14797|新潮漢字=11310|諸橋=33268}} 9syc0hvqzn9cv5ujvewrujlp55m0q13 2313404 2313335 2026-08-09T08:56:10Z ふゆくれ 95641 2313404 wikitext text/x-wiki {{kana-DEFAULTSORT|えん}} ==漢字== {{kanji|虫|9}} {{kanji variants|𧒛|𧓱|鼴}} ===字源=== *[[形声文字|形声]]。「[[虫]]」 + [[音符]]「[[匽]]{{phoneme|*ʔAN}}<ref group="字源" name="上古音">{{R:och:GYXSK}}</ref>」。「[[せみ]]」を[[意味]]する[[漢語]]{[[蝘]]{{phoneme|*ʔanʔ}}}を表す字。 {{字源}} ====参考文献==== <references group="字源"/> ===字義=== #家守。 #[[蝉]]の一種。なつぜみ。 =={{L|ja}}== {{ja-kanji|呉音=*|漢音=エン|訓=やもり,なつぜみ}} ==={{prov}}=== *[[蝘蜒]] *{{ruby|[[蝘蜓]]|[[とかげ]]、えんてい}} ===参考文献=== {{書誌・コトバンク|word=えんやもり|head={{PAGENAME}}|author=普及版 {{w|字通}}|accessdate=2026-08-09}} =={{L|zh}}== {{zh-cat|yan3}} {{yue-cat|yin2}} {{hak-cat|chen3}} {{wuu-cat|i3}} {{ltc-cat|jon3}} {{och-cat|qeen}} {{zh-han|m=yǎn|c=jin2|pfs=chén|hrs=ren3|gd=jan3|w=5i}} **'''[[中古音]]''': 'jonX, 'enX **'''[[上古音]]''': ***'''鄭張''': /*qeːnʔ/,/*qanʔ/ ***'''布之道''': /*ʔanʔ/,/*ʔˤenʔ/ ==={{prov}}=== {{zh-der|蝘蜓|蝘虭|蝘鼠|蝘腹|蜿蝘|蝘蜓座|海蝘}} =={{L|ko}}== {{ko-han|언}} =={{L|vi}}== {{vi-han|yển}} ==={{prov}}=== *{{vi-l|yển đình|蝘蜓}} =={{コード}}== {{文字コード|jis=2-87-63|mj={{mjmoji|023570|023571}}|gb=CE69|cns=2-536E|全={{全字庫|152430}}|big5=E7A7|ksx=1027-1-5C51|kps=10721-7219}} {{検字|倉頡=LISAV|四角=5111.4}} {{字典|大漢語林=10129|康煕= 1089.14|新大字典=14797|大字源=8840|新潮漢字=11310|諸橋=33268|hdz=42868.080|dj= 1555.230|ch=1193.501|広韻=280.25/288.42|matthews=7359|mw=888|cowles=1342|vt=B04322}} 1pkida8zz13yk9edot5eqruyqc9g0uz 2313446 2313404 2026-08-09T10:52:29Z Keikei kanji 129888 2313446 wikitext text/x-wiki {{kana-DEFAULTSORT|えん}} ==漢字== {{kanji|虫|9}} {{kanji variants|𧒛|𧓱|鼴}} ===字源=== *[[形声文字|形声]]。「[[虫]]」 + [[音符]]「[[匽]]{{phoneme|*ʔAN}}<ref group="字源" name="上古音">{{R:och:GYXSK}}</ref>」。「[[せみ]]」を[[意味]]する[[漢語]]{[[蝘]]{{phoneme|*ʔanʔ}}}を表す字。 {{字源}} ====参考文献==== <references group="字源"/> ===字義=== #家守。 #[[蝉]]の一種。なつぜみ。 =={{L|ja}}== {{ja-kanji|呉音=*|漢音=エン|訓=やもり,なつぜみ}} ==={{prov}}=== *[[蝘蜒]] *{{ruby|[[蝘蜓]]|[[とかげ]]、えんてい}} ===参考文献=== {{書誌・コトバンク|word=えんやもり|head={{PAGENAME}}|author=普及版 {{w|字通}}|accessdate=2026-08-09}} =={{L|zh}}== {{zh-cat|yan3}} {{yue-cat|yin2}} {{hak-cat|chen3}} {{wuu-cat|i3}} {{ltc-cat|jon3}} {{och-cat|qeen}} {{zh-han|m=yǎn|c=jin2|pfs=chén|hrs=ren3|gd=jan3|w=5i}} **'''[[中古音]]''': 'jonX, 'enX **'''[[上古音]]''': ***'''鄭張''': /*qeːnʔ/,/*qanʔ/ ***'''布之道''': /*ʔanʔ/,/*ʔˤenʔ/ ==={{prov}}=== {{zh-der|蝘蜓|蝘虭|蝘鼠|蝘腹|蜿蝘|蝘蜓座|海蝘}} =={{L|ko}}== {{ko-han|언}} == {{L|vi}} == {{vi-han|yển}} ==={{prov}}=== *{{vi-l|yển đình|蝘蜓}} =={{コード}}== {{文字コード|jis=2-87-63|mj={{mjmoji|023570|023571}}|gb=CE69|cns=2-536E|全={{全字庫|152430}}|big5=E7A7|ksx=1027-1-5C51|kps=10721-7219}} {{検字|倉頡=LISAV|四角=5111.4}} {{字典|大漢語林=10129|康煕= 1089.14|新大字典=14797|大字源=8840|新潮漢字=11310|諸橋=33268|hdz=42868.080|dj= 1555.230|ch=1193.501|広韻=280.25/288.42|matthews=7359|mw=888|cowles=1342|vt=B04322}} jfrsdke2yxzrp8nmtghjvsn7662mamc 2313449 2313446 2026-08-09T11:09:32Z ふゆくれ 95641 2313449 wikitext text/x-wiki {{kana-DEFAULTSORT|えん}} ==漢字== {{kanji|虫|9}} {{kanji variants|𧒛|𧓱|鼴}} ===字源=== *[[形声文字|形声]]。「[[虫]]」 + [[音符]]「[[匽]]{{phoneme|*ʔAN}}<ref group="字源" name="上古音">{{R:och:GYXSK}}</ref>」。「[[せみ]]」を[[意味]]する[[漢語]]{[[蝘]]{{phoneme|*ʔanʔ}}}を表す字。 {{字源}} ====参考文献==== <references group="字源"/> ===字義=== #家守。 #[[蝉]]の一種。なつぜみ。 =={{L|ja}}== {{ja-kanji|呉音=*|漢音=エン|訓=やもり,なつぜみ|古訓=ゐもり;{{w|名義抄}},とかげ;{{w|字鏡集}}}} ==={{prov}}=== *[[蝘蜒]] *{{ruby|[[蝘蜓]]|[[とかげ]]、えんてい}} ===参考文献=== {{書誌・コトバンク|word=えんやもり|head={{PAGENAME}}|author=普及版 {{w|字通}}|accessdate=2026-08-09}} =={{L|zh}}== {{zh-cat|yan3}} {{yue-cat|yin2}} {{hak-cat|chen3}} {{wuu-cat|i3}} {{ltc-cat|jon3}} {{och-cat|qeen}} {{zh-han|m=yǎn|c=jin2|pfs=chén|hrs=ren3|gd=jan3|w=5i}} **'''[[中古音]]''': 'jonX, 'enX **'''[[上古音]]''': ***'''鄭張''': /*qeːnʔ/,/*qanʔ/ ***'''布之道''': /*ʔanʔ/,/*ʔˤenʔ/ ==={{prov}}=== {{zh-der|蝘蜓|蝘虭|蝘鼠|蝘腹|蜿蝘|蝘蜓座|海蝘}} =={{L|ko}}== {{ko-han|언}} =={{L|vi}}== {{vi-han|yển}} ==={{prov}}=== *{{vi-l|yển đình|蝘蜓}} =={{コード}}== {{文字コード|jis=2-87-63|mj={{mjmoji|023570|023571}}|gb=CE69|cns=2-536E|全={{全字庫|152430}}|big5=E7A7|ksx=1027-1-5C51|kps=10721-7219}} {{検字|倉頡=LISAV|四角=5111.4}} {{字典|大漢語林=10129|康煕= 1089.14|新大字典=14797|大字源=8840|新潮漢字=11310|諸橋=33268|hdz=42868.080|dj= 1555.230|ch=1193.501|広韻=280.25/288.42|matthews=7359|mw=888|cowles=1342|vt=B04322}} 70stmphqpywt3l57ba1uq1hry7n29fa しゅつどう 0 601093 2313336 2026-08-09T02:49:22Z うーむ 129171 ページの作成:「{{kana-DEFAULTSORT}} {{also|しゅっとう|じゅっとう|じゅつどう}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana}} *【[[出動]]】出向いて活動すること。」 2313336 wikitext text/x-wiki {{kana-DEFAULTSORT}} {{also|しゅっとう|じゅっとう|じゅつどう}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana}} *【[[出動]]】出向いて活動すること。 i91coo9h80snouvyav0ulakw70prb5h 術道 0 601094 2313339 2026-08-09T02:51:38Z うーむ 129171 ページの作成:「{{kana-DEFAULTSORT|じゅつどう}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[じゅつどう]]}} #[[祈祷]]や[[まじない]]などの[[術]]。」 2313339 wikitext text/x-wiki {{kana-DEFAULTSORT|じゅつどう}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[じゅつどう]]}} #[[祈祷]]や[[まじない]]などの[[術]]。 9036g1luec97eeu20cm04xhk820k3bs じゅつどう 0 601095 2313340 2026-08-09T02:53:47Z うーむ 129171 ページの作成:「{{kana-DEFAULTSORT}} {{also|しゅっとう|じゅっとう|しゅつどう}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana}} *【[[術道]]】祈祷やまじないなどの術。」 2313340 wikitext text/x-wiki {{kana-DEFAULTSORT}} {{also|しゅっとう|じゅっとう|しゅつどう}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana}} *【[[術道]]】祈祷やまじないなどの術。 tos0hylfyaog4rx7fzv8cbjckjw8cj8 実動 0 601096 2313343 2026-08-09T03:00:14Z うーむ 129171 ページの作成:「{{kana-DEFAULTSORT|じつどう}} =={{L|ja}}== ==={{noun}}=== {{ja-noun-suru|[[じつどう]]}} #[[実際]]に[[機械]]などを[[運転]]すること。 #実際に人が[[活動]]すること。 ==={{verb}}=== {{ja-verb-suru|じつどう}} {{日本語サ変活用}}」 2313343 wikitext text/x-wiki {{kana-DEFAULTSORT|じつどう}} =={{L|ja}}== ==={{noun}}=== {{ja-noun-suru|[[じつどう]]}} #[[実際]]に[[機械]]などを[[運転]]すること。 #実際に人が[[活動]]すること。 ==={{verb}}=== {{ja-verb-suru|じつどう}} {{日本語サ変活用}} q78upd11f08gkts4e6dz8aymox609tf 実道 0 601097 2313344 2026-08-09T03:02:07Z うーむ 129171 ページの作成:「{{kana-DEFAULTSORT|じつどう}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[じつどう]]}} #[[真]]の[[ただしい|正しい]]道。」 2313344 wikitext text/x-wiki {{kana-DEFAULTSORT|じつどう}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[じつどう]]}} #[[真]]の[[ただしい|正しい]]道。 n0k08uoydk4vzocnrevlcq2wihamcs7 じつどう 0 601098 2313345 2026-08-09T03:05:40Z うーむ 129171 ページの作成:「{{kana-DEFAULTSORT}} {{also|しっとう|じっとう}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana|h=y}} *【[[実動]]】実際に活動、運転すること。 *【[[実働]]】実際に仕事で働くこと。 *【[[実道]]】真に正しい道。」 2313345 wikitext text/x-wiki {{kana-DEFAULTSORT}} {{also|しっとう|じっとう}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana|h=y}} *【[[実動]]】実際に活動、運転すること。 *【[[実働]]】実際に仕事で働くこと。 *【[[実道]]】真に正しい道。 2zvt3jik5umr52f9i8b7gfheii8ital はっこん 0 601099 2313368 2026-08-09T05:50:02Z ちょこれ゚いとみんと 129959 ページの作成:「{{kana-DEFAULTSORT}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana}} {{ja-k|発根|t=植物が根を出すこと。根が出ること。}}」 2313368 wikitext text/x-wiki {{kana-DEFAULTSORT}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana}} {{ja-k|発根|t=植物が根を出すこと。根が出ること。}} 89e48040e49fosyus0fycl2ylhcbfvk ていれん 0 601100 2313369 2026-08-09T05:58:10Z ちょこれ゚いとみんと 129959 ページの作成:「=={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana|h=y}} {{ja-k|低廉|t=金額が安いこと。また、そのさま。}} {{ja-k|貞廉|t=節操があっていさぎよいこと。また、そのさま。}}」 2313369 wikitext text/x-wiki =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana|h=y}} {{ja-k|低廉|t=金額が安いこと。また、そのさま。}} {{ja-k|貞廉|t=節操があっていさぎよいこと。また、そのさま。}} j4ohkdvsn2hebh5h8loevrsnhlbdp5w 2313370 2313369 2026-08-09T05:58:44Z ちょこれ゚いとみんと 129959 2313370 wikitext text/x-wiki =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana|h=y}} {{ja-k|低廉|t=金額が安いこと。また、そのさま。}} {{ja-k|貞廉|t=節操があって潔いこと。また、そのさま。}} 2lsdy9vh0b8uuh4lyaelws7ob3g5234 貞廉 0 601101 2313371 2026-08-09T06:00:33Z ちょこれ゚いとみんと 129959 ページの作成:「{{kana-DEFAULTSORT|ていれん}} =={{L|ja}}== ==={{noun}}・{{adjectivenoun}}=== {{ja-noun|[[ていれん]]}} #[[節操]]があって[[いさぎよい|潔い]]こと。また、そのさま。 ===={{conjug}}==== {{日本語ダ活用}}」 2313371 wikitext text/x-wiki {{kana-DEFAULTSORT|ていれん}} =={{L|ja}}== ==={{noun}}・{{adjectivenoun}}=== {{ja-noun|[[ていれん]]}} #[[節操]]があって[[いさぎよい|潔い]]こと。また、そのさま。 ===={{conjug}}==== {{日本語ダ活用}} oy5wa75e88mzcrbrztrut7k3f006v9u 誚譲 0 601102 2313378 2026-08-09T06:46:08Z ちょこれ゚いとみんと 129959 ページの作成:「{{kana-DEFAULTSORT|しょうじょう}} =={{L|ja}}== ==={{noun}}=== {{ja-noun-suru|[[しょうじょう]]}} #[[せめる|責め]][[とがめる|咎める]]こと。 #:{{syn|ja|譴責}} ==={{verb}}=== {{ja-verb-suru|しょうじょう}} {{日本語サ変活用}}」 2313378 wikitext text/x-wiki {{kana-DEFAULTSORT|しょうじょう}} =={{L|ja}}== ==={{noun}}=== {{ja-noun-suru|[[しょうじょう]]}} #[[せめる|責め]][[とがめる|咎める]]こと。 #:{{syn|ja|譴責}} ==={{verb}}=== {{ja-verb-suru|しょうじょう}} {{日本語サ変活用}} esxvft0775xgpb9i5j44clnhj48mp5d テンプレート:ca-conjug 10 601103 2313421 2026-08-09T09:41:31Z Kuroco2k 84207 こっちの名前で出すことに(やむなく...。) 2313421 wikitext text/x-wiki {{#invoke:ca-verb|show}}<noinclude>{{documentation}}[[Category:{{ca}}_テンプレート]]</noinclude> a5ffjqp9qc11oylqiiwz2j3xdekswgo 2313435 2313421 2026-08-09T10:14:35Z Kuroco2k 84207 2313435 wikitext text/x-wiki <includeonly>{{#invoke:ca-verb|show}}</includeonly><noinclude>{{documentation}}[[Category:{{ca}}_テンプレート]]</noinclude> jc9z0cevg3x615dx8byyaeq37jk5ez0 テンプレート・トーク:ca-conjug 11 601104 2313436 2026-08-09T10:16:01Z Kuroco2k 84207 /* エラー */ 新しい節 2313436 wikitext text/x-wiki == エラー == [[モジュール:inflection utilities]]を治さない限り、活用に接中辞がある項目ではうまくいきません。template:ca-conjの代用として作りましたが、これもうまくいかないので端書きとします。--[[利用者:Kuroco2k|<span style="color:#000000">'''雛宮黒狐'''</span>]]([[利用者‐会話:Kuroco2k|<span style="color:#5a00cc">Talk</span>]]) 2026年8月9日 (日) 10:16 (UTC) ogb6bf2m61crs6d5e8kqu5dpgststv0 テンプレート:lt-adj-select 10 601105 2313443 2026-08-09T10:45:58Z Kuroco2k 84207 [[:en:Template:lt-adj-select]] 2313443 wikitext text/x-wiki {{#switch: {{{1|all}}} |all=lt-decl-adj |po=lt-decl-adj-po |{{error|Adjective extent {{{1}}} is undefined.}} }}<noinclude> {{documentation}}[[カテゴリ:{{lt}}_テンプレート]] </noinclude> 9y6opxcaf78scrh1n0rlqat99x3ta7p テンプレート:lt-adj-as-1 10 601106 2313444 2026-08-09T10:46:52Z Kuroco2k 84207 [[:en:Template:lt-adj-as-1]] 2313444 wikitext text/x-wiki {{#invoke:checkparams|error}}<!-- -->{{{{lt-adj-select|{{{e|all}}}}} <!--non-pronominal--> <!--absolute--> <!--nom--> |1={{{2}}}as |2={{{2}}}i |3={{{2}}}a |4={{{2}}}os <!--gen--> |5={{{2}}}o |6={{{2}}}ų |7={{{2}}}os |8={{{2}}}ų <!--dat--> |9={{{2}}}am |10={{{2}}}iems |11={{{2}}}ai |12={{{2}}}oms <!--acc--> |13={{{2}}}ą |14={{{2}}}us |15={{{2}}}ą |16={{{2}}}as <!--ins--> |17={{{2}}}u |18={{{2}}}ais |19={{{2}}}a |20={{{2}}}omis <!--loc--> |21={{{2}}}ame |22={{{2}}}uose |23={{{2}}}oje |24={{{2}}}ose <!--voc--> |25={{{2}}}as |26={{{2}}}i |27={{{2}}}a |28={{{2}}}os <!--comparative--> <!--n--> |29={{{1}}}èsnis |30={{{1}}}esnì |31={{{1}}}èsnė |32={{{1}}}èsnės <!--g--> |33={{{1}}}èsnio |34={{{1}}}esnių̃ |35={{{1}}}esnė̃s |36={{{1}}}esnių̃ <!--d--> |37={{{1}}}esniám |38={{{1}}}esníems |39={{{1}}}èsnei |40={{{1}}}esnė̃ms <!--a--> |41={{{1}}}èsnį |42={{{1}}}esniùs |43={{{1}}}èsnę |44={{{1}}}esnès <!--i--> |45={{{1}}}esniù |46={{{1}}}esniaĩs |47={{{1}}}esnè |48={{{1}}}esnėmìs <!--l--> |49={{{1}}}esniamè |50={{{1}}}esniuosè |51={{{1}}}èsnėje |52={{{1}}}esnėsè <!--superlative--> <!--n--> |53={{{1}}}{{#ifeq:{{#invoke:string/templates|pos|{{{1}}}|-1}}|j||i}}áusias |54={{{1}}}{{#ifeq:{{#invoke:string/templates|pos|{{{1}}}|-1}}|j||i}}áusi |55={{{1}}}{{#ifeq:{{#invoke:string/templates|pos|{{{1}}}|-1}}|j||i}}áusia |56={{{1}}}{{#ifeq:{{#invoke:string/templates|pos|{{{1}}}|-1}}|j||i}}áusios <!--g--> |57={{{1}}}{{#ifeq:{{#invoke:string/templates|pos|{{{1}}}|-1}}|j||i}}áusio |58={{{1}}}{{#ifeq:{{#invoke:string/templates|pos|{{{1}}}|-1}}|j||i}}áusių |59={{{1}}}{{#ifeq:{{#invoke:string/templates|pos|{{{1}}}|-1}}|j||i}}áusios |60={{{1}}}{{#ifeq:{{#invoke:string/templates|pos|{{{1}}}|-1}}|j||i}}áusių <!--d--> |61={{{1}}}{{#ifeq:{{#invoke:string/templates|pos|{{{1}}}|-1}}|j||i}}áusiam |62={{{1}}}{{#ifeq:{{#invoke:string/templates|pos|{{{1}}}|-1}}|j||i}}áusiems |63={{{1}}}{{#ifeq:{{#invoke:string/templates|pos|{{{1}}}|-1}}|j||i}}áusiai |64={{{1}}}{{#ifeq:{{#invoke:string/templates|pos|{{{1}}}|-1}}|j||i}}áusioms <!--a--> |65={{{1}}}{{#ifeq:{{#invoke:string/templates|pos|{{{1}}}|-1}}|j||i}}áusią |66={{{1}}}{{#ifeq:{{#invoke:string/templates|pos|{{{1}}}|-1}}|j||i}}áusius |67={{{1}}}{{#ifeq:{{#invoke:string/templates|pos|{{{1}}}|-1}}|j||i}}áusią |68={{{1}}}{{#ifeq:{{#invoke:string/templates|pos|{{{1}}}|-1}}|j||i}}áusias <!--i--> |69={{{1}}}{{#ifeq:{{#invoke:string/templates|pos|{{{1}}}|-1}}|j||i}}áusiu |70={{{1}}}{{#ifeq:{{#invoke:string/templates|pos|{{{1}}}|-1}}|j||i}}áusiais |71={{{1}}}{{#ifeq:{{#invoke:string/templates|pos|{{{1}}}|-1}}|j||i}}áusia |72={{{1}}}{{#ifeq:{{#invoke:string/templates|pos|{{{1}}}|-1}}|j||i}}áusiomis <!--l--> |73={{{1}}}{{#ifeq:{{#invoke:string/templates|pos|{{{1}}}|-1}}|j||i}}áusiame |74={{{1}}}{{#ifeq:{{#invoke:string/templates|pos|{{{1}}}|-1}}|j||i}}áusiuose |75={{{1}}}{{#ifeq:{{#invoke:string/templates|pos|{{{1}}}|-1}}|j||i}}áusioje |76={{{1}}}{{#ifeq:{{#invoke:string/templates|pos|{{{1}}}|-1}}|j||i}}áusiose <!--pronominal--> <!--absolute--> <!--n--> |77={{{1}}}àsis |78={{{1}}}íeji |79={{{1}}}óji |80={{{2}}}osios <!--g--> |81={{{2}}}ojo |82={{{1}}}ų̃jų |83={{{1}}}õsios |84={{{1}}}ų̃jų <!--d--> |85={{{1}}}ájam |86={{{1}}}íesiems |87={{{2}}}ajai |88={{{1}}}ósioms <!--a--> |89={{{2}}}ąjį |90={{{1}}}úosius |91={{{2}}}ąją |92={{{1}}}ą́sias <!--i--> |93={{{1}}}úoju |94={{{1}}}aĩsiais |95={{{1}}}ą́ja |96={{{1}}}õsiomis <!--l--> |97={{{1}}}ãjame |98={{{1}}}uõsiuose |99={{{1}}}õjoje |100={{{1}}}õsiose <!--v--> |101={{{1}}}àsis |102={{{1}}}íeji |103={{{1}}}óji |104={{{2}}}osios <!--comparative--> <!--n--> |105={{{1}}}esnỹsis |106={{{1}}}esníeji |107={{{1}}}esnióji |108={{{1}}}èsniosios <!--g--> |109={{{1}}}èsniojo |110={{{1}}}esnių̃jų |111={{{1}}}esniõsios |112={{{1}}}esnių̃jų <!--d--> |113={{{1}}}esniájam |114={{{1}}}esníesiems |115={{{1}}}èsniajai |116={{{1}}}esniósioms <!--a--> |117={{{1}}}èsnįjį |118={{{1}}}esniúosius |119={{{1}}}èsniąją |120={{{1}}}esnią́sias <!--i--> |121={{{1}}}esniúoju |122={{{1}}}esniaĩsiais |123={{{1}}}esnią́ja |124={{{1}}}esniõsiomis <!--l--> |125={{{1}}}esniãjame |126={{{1}}}esniuõsiuose |127={{{1}}}esniõjoje |128={{{1}}}esniõsiose <!--superlative--> <!--n--> |129={{{1}}}{{#ifeq:{{#invoke:string/templates|pos|{{{1}}}|-1}}|j||i}}áusiasis |130={{{1}}}{{#ifeq:{{#invoke:string/templates|pos|{{{1}}}|-1}}|j||i}}áusieji |131={{{1}}}{{#ifeq:{{#invoke:string/templates|pos|{{{1}}}|-1}}|j||i}}áusioji |132={{{1}}}{{#ifeq:{{#invoke:string/templates|pos|{{{1}}}|-1}}|j||i}}áusiosios <!--g--> |133={{{1}}}{{#ifeq:{{#invoke:string/templates|pos|{{{1}}}|-1}}|j||i}}áusiojo |134={{{1}}}{{#ifeq:{{#invoke:string/templates|pos|{{{1}}}|-1}}|j||i}}áusiųjų |135={{{1}}}{{#ifeq:{{#invoke:string/templates|pos|{{{1}}}|-1}}|j||i}}áusiosios |136={{{1}}}{{#ifeq:{{#invoke:string/templates|pos|{{{1}}}|-1}}|j||i}}áusiųjų <!--d--> |137={{{1}}}{{#ifeq:{{#invoke:string/templates|pos|{{{1}}}|-1}}|j||i}}áusiajam |138={{{1}}}{{#ifeq:{{#invoke:string/templates|pos|{{{1}}}|-1}}|j||i}}áusiesiems |139={{{1}}}{{#ifeq:{{#invoke:string/templates|pos|{{{1}}}|-1}}|j||i}}áusiajai |140={{{1}}}{{#ifeq:{{#invoke:string/templates|pos|{{{1}}}|-1}}|j||i}}áusiosioms <!--a--> |141={{{1}}}{{#ifeq:{{#invoke:string/templates|pos|{{{1}}}|-1}}|j||i}}áusiąjį |142={{{1}}}{{#ifeq:{{#invoke:string/templates|pos|{{{1}}}|-1}}|j||i}}áusiuosius |143={{{1}}}{{#ifeq:{{#invoke:string/templates|pos|{{{1}}}|-1}}|j||i}}áusiąją |144={{{1}}}{{#ifeq:{{#invoke:string/templates|pos|{{{1}}}|-1}}|j||i}}áusiąsias <!--i--> |145={{{1}}}{{#ifeq:{{#invoke:string/templates|pos|{{{1}}}|-1}}|j||i}}áusiuoju |146={{{1}}}{{#ifeq:{{#invoke:string/templates|pos|{{{1}}}|-1}}|j||i}}áusiaisiais |147={{{1}}}{{#ifeq:{{#invoke:string/templates|pos|{{{1}}}|-1}}|j||i}}áusiąja |148={{{1}}}{{#ifeq:{{#invoke:string/templates|pos|{{{1}}}|-1}}|j||i}}áusiosiomis <!--l--> |149={{{1}}}{{#ifeq:{{#invoke:string/templates|pos|{{{1}}}|-1}}|j||i}}áusiajame |150={{{1}}}{{#ifeq:{{#invoke:string/templates|pos|{{{1}}}|-1}}|j||i}}áusiuosiuose |151={{{1}}}{{#ifeq:{{#invoke:string/templates|pos|{{{1}}}|-1}}|j||i}}áusiojoje |152={{{1}}}{{#ifeq:{{#invoke:string/templates|pos|{{{1}}}|-1}}|j||i}}áusiosiose <!--Neuters---> |153={{{2}}}a |154={{{1}}}{{#ifeq:{{#invoke:string/templates|pos|{{{1}}}|-1}}|j||i}}aũ |155={{{1}}}{{#ifeq:{{#invoke:string/templates|pos|{{{1}}}|-1}}|j||i}}áusia }}<noinclude> {{documentation}}[[カテゴリ:{{lt}}_テンプレート]]</noinclude> 2gkotz4wpzgb0hxlnrshher67gvz7dk 0 601107 2313450 2026-08-09T11:10:39Z Kuroco2k 84207 新規作成 2313450 wikitext text/x-wiki {{kana-DEFAULTSORT|エン}} ==漢字== {{kanji|匸|7}} {{kanji variants|偃=語義1-2|燕=語義1-4|宴=語義2-2|𣈿|𭂾|𭅝}} ===異体字セレクタ=== {{kanjiIVS|ivs=00-02}} ===意義=== #{{q|元韻・上声}} ##[[かくれる|隠れる]]。 ##「[[偃]]」の[[古字]](『{{w|漢語大字典}}』掲載)。 ##古代の兵器の一種。[[戟]]の一種という。 ##「[[燕]]」の[[通字]](『{{w|漢語大字典}}』掲載)。{{w|燕 (春秋)|北燕}}。古代の列国の一つ。 #{{q|元韻・去声}} ##道端の[[かわや|厠]]。 ##*[[暗渠]]とする説もある。 ##「[[宴]]」の[[通字]](『{{w|漢語大字典}}』掲載)。[[くつろぐ]]、[[宴居]]する。 =={{L|ja}}== {{ja-kanji|漢音=エン}} =={{L|zh}}== [[Category:{{zh}}|yan3]] [[Category:{{yue}}|yin2]] [[Category:{{wuu}}|ie2]] {{zh-han|m=yǎn,yàn|c=jin2|w=1i|w-mini=ie2}} ==={{prov}}=== {{zh-der|匽兵|匽武|匽戟|匽薄|女匽|井匽|匽廁|匽溲|匽溷|匽豬|廁匽|渠匽}} =={{L|ko}}== {{ko-han|언|eumhun=[[눕히다|눕힐]] 언}} =={{コード}}== {{文字コード|jis=2-20-20|mj={{mjmoji|007825|007826}}|gb=855D|cns=2-2936|big5=CDF4|全={{全字庫|141622}}|ksx=1002-672C|kps=10721-3897}} {{検字|蒼頡=SAV|四角=7171.4}} {{字典|新潮漢字=1102/1103|諸橋=2684|新大字典=1468|大字源=896|大漢語林=1079|dj=0347.200|hdz=10085.190|康煕=0155.080|matthews=7356|gy=280.22|ch=207.104|vt=B00271}} b6jei5gido3pm2n1hph0tudryhzpq9u send in 0 601108 2313454 2026-08-09T11:27:15Z M-30722 1202 新規作成 2313454 wikitext text/x-wiki {{DEFAULTSORT:sendin}} =={{L|en}}== ==={{pron}}=== * {{音声|en|en-au-send in.ogg|a=AU}} ==={{verb}}=== {{英語句動詞|send|in}} #{{おくりがな2|送|おく|る|おくる}}、[[送付]]する、[[提出]]する。 #(軍や警察を)[[派遣]]する。 #{{おくりがな3|招|まね|き|入|い|れる|まねきいれる}}。 ==={{anag}}=== * {{anagrams|en|a=deinns|Dennis|Sinden|ends in|insend|sinned}} kcs3we0x6p0ygr9l649v7c8glf25bju put in 0 601109 2313459 2026-08-09T11:45:14Z M-30722 1202 新規作成 2313459 wikitext text/x-wiki {{DEFAULTSORT:putin}} {{also|putin|puțin}} =={{L|en}}== ==={{verb}}=== {{英語句動詞|put|in}} #{{タグ|en|他動詞}}{{ふりがな|中|なか}}に{{おくりがな2|入|い|れる|いれる}}、{{おくりがな3|差|さ|し|込|こ|む|さしこむ}}、{{おくりがな3|差|さ|し|入|い|れる|さしいれる}}、[[挿入]]する。 #{{おくりがな3|申|もう|し|込|こ|む|もうしこむ}}、[[提出]]する。 #{{タグ|en|他動詞}}[[寄付]]する。 #{{タグ|en|自動詞|海事|古用法}}[[寄港]]する、[[入港]]する。 #{{タグ|en|他動詞}}[[任命]]する、[[選出]]する。 #{{タグ|en|他動詞}}{{おくりがな3|植|う|え|付|つ|ける|うえつける}}。 #{{タグ|en|他動詞}}[[設置]]する。{{おくりがな3|取|と|り|付|つ|ける|とりつける}}。 #{{タグ|en|他動詞|俗語|AAVE|人を}}{{おくりがな3|傷|きず||付|つ|ける|きずつける}}。 ===={{drv}}==== * {{l|en|put-in}} ==={{anag}}=== * {{anagrams|en|a=inptu|Punti|input}} gl42v2oehvw8m233y3jrin8tks4poim 做爱 0 601110 2313469 2026-08-09T11:55:44Z M-30722 1202 新規作成 2313469 wikitext text/x-wiki =={{L|zh}}== ==={{etym}}=== {{calque|zh|en|make love|sort=zuo4ai4}}か ==={{pron}}=== {{cmn-pron|zuò'ài|z=n}} {{yue-pron|zou6 oi3|h=n}} ==={{verb}}=== {{zhcharl|做|爱|t=做愛}} #[[セックス]]する、[[性行為]]をする。 {{zh-cat|zuo4ai4|動詞|離合詞|性行為}} {{yue-cat|jou6oi3|動詞|離合詞|性行為}} gujyabw259vzuqmyvu2hf2ygvyr8quw 做愛 0 601111 2313470 2026-08-09T11:56:12Z M-30722 1202 新規作成 2313470 wikitext text/x-wiki =={{L|zh}}== ==={{etym}}=== {{calque|zh|en|make love|sort=zuo4ai4}}か ==={{pron}}=== {{cmn-pron|zuò'ài}} {{yue-pron|zou6 oi3}} ==={{verb}}=== {{zhcharl|做|愛|s=做爱}} #[[セックス]]する、[[性行為]]をする。 {{zh-cat|zuo4ai4|動詞|離合詞|性行為}} {{yue-cat|jou6oi3|動詞|離合詞|性行為}} iy8kfi0f8rkm9vy937u5y93kuqhfnus カテゴリ:中国語 英語翻訳借用 14 601112 2313471 2026-08-09T11:58:10Z M-30722 1202 新規作成 2313471 wikitext text/x-wiki <div class="pathnavbox"> * {{Pathnav|カテゴリ|言語|{{zh}}|{{zh}}_語源|disp4=語源|{{zh}}_他言語由来|disp5=他言語由来|{{zh}}_借用語|disp6=借用語|{{zh}}_翻訳借用|disp7=翻訳借用|last={{en}}翻訳借用}} * {{Pathnav|カテゴリ|言語|{{zh}}|{{zh}}_語源|disp4=語源|{{zh}}_他言語由来|disp5=他言語由来|{{zh}}_借用語|disp6=借用語|{{zh}}_{{en}}借用語|disp7={{en}}借用語|last={{en}}翻訳借用}} * {{Pathnav|カテゴリ|語源|由来|{{en}}由来|{{en}}借用語|{{en}}翻訳借用|last={{zh}}}} </div> [[カテゴリ:{{zh}}_翻訳借用|えいこ]] [[カテゴリ:{{zh}}_{{en}}借用語|*ほんやく]] [[カテゴリ:{{en}}翻訳借用|ちゆうこくこ]] sppus0xnaot52mhoftrj69vbj2ar8tp