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.18 case-sensitive メディア 特別 トーク 利用者 利用者・トーク Wiktionary Wiktionary・トーク ファイル ファイル・トーク MediaWiki MediaWiki・トーク テンプレート テンプレート・トーク ヘルプ ヘルプ・トーク カテゴリ カテゴリ・トーク 付録 付録・トーク TimedText TimedText talk モジュール モジュール・トーク Event Event talk こうじょう 0 14196 2340567 2123551 2026-09-01T14:46:13Z M-30722 1202 2340567 wikitext text/x-wiki {{kana-DEFAULTSORT}} {{also|こうしょう|ごうしょう|ごうじょう}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana|h=y}} *【[[交情]]】[[交際]]から[[うまれる|生まれる]][[したしみ|親しみ]]。 *【[[交譲]]】[[たがい|互い]]に[[ゆずりあう|譲り合う]]こと。 *【[[公帖]]】[[禅宗]][[官寺]]の[[住持]]を[[任命]]するための[[命令書]]。 *【[[厚情]]】[[あつい|厚い]][[なさけ|情け]]。 *【[[口上]]・[[口状]]】[[口頭]]で[[のべる|述べ]][[つたえる|伝える]]こと。 *【[[向上]]】[[よい|良い]][[方]]へと[[むかう|向かう]]こと。 *【[[好情]]】[[よい]][[感情]]。 *【[[定考]]】[[平安時代]]の[[朝廷]]における[[毎年]]8月11日の[[儀式]]。 *【[[工場]]】[[原材料]]を[[加工]]・[[くみたてる|組み立てる]]ことにより、[[製品]]を[[製造]]する[[設備]][[および|及び]][[場所]]。 *【[[恒常]]】[[いつも]][[一定]]で[[変化]]が[[ない|無い]]こと。 *【[[攻城]]】[[敵]]の[[しろ|城]]を[[せめる|攻める]]こと。 *【[[江上]]】[[大河]]の[[うえ|上]] *【[[甲仗]]】[[甲冑]]と[[武器]]。 *【[[甲状]]】{{ふりがな|甲|かぶと}}のような[[かたち|形]]。 *【[[皇上]]】[[現在]]の[[天皇]]。 *【[[皇城]]】[[天子]]が[[居住]]する[[しろ|城]]。 *【[[綱常]]】[[ひと|人]]の[[ふむ|踏み]][[おこなう|行う]]べき[[みち|道]]。 *【[[考状]]】[[官吏]]の[[勤務]][[成績]]を[[しるす|記し]]た[[上申書]]。 *【[[膠状]]】{{ふりがな|膠|にかわ}}のような[[ねばりけ|粘り気]]がある[[状態]]。 *【[[荒城]]】[[あれはてる|荒れ果てた]][[しろ|城]]。 *【[[鉤状]]】{{ふりがな|鉤|かぎ}}のように[[まがる|曲がっ]]た[[形状]]。 *【[[鋼条]]】[[硬鋼線]]を[[よりあわせる|より合わせ]]て[[つくる|作った]][[ロープ]]。 *【[[高上]]】[[たかい|高い]][[くらい|位]]。 *【[[黄壌]]】[[きいろい|黄色い]][[つち|土]]。 ads299847rrnz3gg0p9od2v6y3gw043 福音 0 14211 2340561 2338165 2026-09-01T14:42:44Z M-30722 1202 2340561 wikitext text/x-wiki {{kana-DEFAULTSORT|ふくいん}} =={{L|ja}}== {{ja-kanjitab|ふく|いん|yomi=o}} {{wikipedia|福音書}} ==={{etym}}=== 漢訳聖書より。{{etyl|grc|ja}} {{m|grc|εὐαγγέλιον||もとは[[朗報]]の意}} を意訳したもの。 ==={{pron}}=== {{ja-pron|ふくいん|acc=0|acc_ref=DJR}} {{ja-accent-common|region=京阪|h||ふくいん}} ==={{noun}}=== {{ja-noun|[[ふくいん]]}} # {{タグ|ja|キリスト教}} [[w:イエス・キリスト|イエス・キリスト]]の[[言葉]]と[[行動]]により[[啓示]]された[[神]]の[[すくう|救い]]の[[おしえる|教え]]。 #:「福音」について、聖書の第1コリント人への手紙15:3~5では、①キリストが私たちの罪のために死んだこと②葬られたこと③3日目に復活したこと④使徒たちに現れたこと として定義している。また、ローマ人への手紙1:16において、この「福音」は信じる者に救いを与える神の力であるとされている。 # 喜ばしい知らせ。 #* 大道[[蓄音機]]が文化の'''福音'''を[[片田舎]]に広めた事は疑いもないが、同時にあの耳にはさむ管の端が耳の病気を[[伝播]]させはしなかったかと心配する。([[w:寺田寅彦|寺田寅彦]] 『蓄音機』) ===={{comp}}==== * [[福音書]] ===={{trans}}==== {{trans-top|キリスト教の教え}} * {{T|it}}: {{t|it|vangelo}} * {{T|ia}}: {{t|ia|evangelio}} * {{T|id}}: {{t|id|injil}} * {{T|en}}: {{t|en|gospel}} * {{T|eo}}: {{t|eo|evangelio}} * {{T|nl}}: {{t|nl|evangelie}} * {{T|ca}}: {{t|ca|evangeli}} * {{T|scn}}: {{t|scn|vanceli}} * {{T|jv}}: {{t|jv|injil}} * {{T|sv}}: {{t|sv|evangelium}} * {{T|es}}: {{t|es|evangelio}} * {{T|sr}}: {{t|sr|Свето Јеванђеље}} * {{T|cs}}: {{t|cs|evangelium}} * {{T|zh}}: {{t|zh|福音}} * {{T|ko}}: {{t|ko|복음서}} * {{T|da}}: {{t|da|evangelium}} * {{T|de}}: {{t|de|Evangelium}} {{n}} * {{T|tr}}: {{t|tr|İncil}} * {{T|hu}}: {{t|hu|evangélium}} * {{T|fr}}: {{t|fr|évangile}} * {{T|bg}}: {{t|bg|евангелие}} * {{T|he}}: {{t|he|בשורות}} * {{T|pl}}: {{t|pl|ewangelia}} * {{T|pt}}: {{t|pt|evangelho}} * {{T|la}}: {{t|la|evangelium}} * {{T|li}}: {{t|li|evangelie}} * {{T|ro}}: {{t|ro|evanghelie}} * {{T|ru}}: {{t|ru|евангелие|alt=ева́нгелие|n}} * {{T|wa}}: {{t|wa|evandjîle}} {{trans-bottom}} {{trans-top|喜ばしい知らせ}} * {{T|en}}: {{l|en|[[good]] [[news]]}} * {{T|de}}: {{l|de|[[gut|gute]] [[Nachricht]]}}; {{l|de|[[froh|frohe]] [[Botschaft]]}} {{trans-bottom}} ===脚注=== <references /> =={{L|zh}}== {{zh-cat|fu2yin1|名詞|キリスト教}} {{yue-cat|fuk1yam1|名詞|キリスト教}} {{nan-cat|hok4im1|名詞|キリスト教}} {{nan-tws-cat|hog4im1|名詞|キリスト教}} {{cdo-cat|hok4ing1|名詞|キリスト教}} {{mnp-cat|hu6eng1|名詞|キリスト教}} {{cpx-cat|horh6ing1|名詞|キリスト教}} {{hak-cat|fuk5yim1|名詞|キリスト教}} {{hak-hl-cat|fug rhimˋ|名詞|キリスト教}} ==={{pron}}=== {{cmn-pron|fúyīn}} {{yue-pron|fuk1 jam1}} {{nan-pron|hok-im|t=hog4 im1}} {{cdo-pron|hók-ĭng}} {{mnp-pron|hŭ-éng}} {{cpx-pron|pt,xy:horh6 ing1}} {{hak-pron|fuk-yîm|h=fug rhimˋ}} ==={{noun}}=== {{zhchars}} #(日本語に同じ)福音。 =={{L|ko}}== {{ko-hanjatab}} ==={{noun}}=== {{ko-head|noun|복음|cat2=キリスト教}} #(日本語に同じ)福音。 =={{L|vi}}== {{vi-hantutab}} ==={{noun}}=== {{vi-head|noun|phúc|âm|cat2=キリスト教}} #(日本語に同じ)福音。 ojtzcln9ixj67l667app0mu5lvi0i8m sammakko 0 16464 2341182 2211763 2026-09-02T11:47:41Z Kuroco2k 84207 2341182 wikitext text/x-wiki =={{L|krl}}== ==={{alter}}=== * {{l|krl|šammakko}} ==={{etym}}=== ===={{cogn}}==== {{cog|fi|sammakko}} ==={{noun}}=== {{krl-noun|sammakon}} #{{タグ|krl|蛙|label=no|sort=*}}{{ふりがな|蛙|かえる}}。 ===={{syn}}==== * {{l|krl|löttö}} ===参考文献=== * {{R:krl:KKS|sammakko}} =={{L|fi}}== {{wikipedia|lang=fi}} ==={{etym}}=== {{unc|fi}}。{{m|fi|sammas}} との関連ありか ===={{cogn}}==== {{cog|vep|samba}} {{cog|krl|šammakko}} ==={{pron}}=== {{fi-pronunciation}} ==={{noun}}=== {{fi-noun}} #{{タグ|fi|蛙|label=no|sort=*}}{{ふりがな|蛙|かえる}}。 #{{context|frog|lang=fi}}[[ヨーロッパアカガエル]]({{taxfmt|Rana temporaria|species}})。 #{{synonym of|fi|rintauinti}} ===={{decl}}==== {{fi-decl-laatikko|samma|kk|k|o|a}} ===={{drv}}==== {{col3|lang=fi|darwininsammakko|goljatsammakko|härkäsammakko|kellosammakko|koskisammakko|mansikkasammakko|mölysammakko|nuolimyrkkysammakko|päästää sammakko suustaan|pyrstösammakko|rupisammakko|sammakkoeläin|sammakkomies|sammakkoperspektiivi|sammakonkoipi|sammakonkutu|sammakonpoikanen|sammakonreisi|sammakontoukka|stephensaartensammakko|termiittisammakko|viitasammakko}} ===参考文献=== * {{R:KTSK|accessdate=2023-07-03}} fknszrediu18z7apizznuidkpa2nvm2 しんぞく 0 18446 2340529 2219150 2026-09-01T12:15:19Z うーむ 129171 /* */ 2340529 wikitext text/x-wiki {{kana-DEFAULTSORT}} {{also|しんそく|じんそく|じんぞく}} =={{L|ja}}== ==={{homonym}}=== {{head|ja|同音異義}} *【[[親族]], [[親属]]】:[[親子]]関係又は[[婚姻]]関係の[[連鎖]]により関係付けられた人々。 *【[[臣属]]】:[[臣下]]として[[服従]]すること。 *【[[真俗]]】:[[仏教]]において[[宗教]]的なものと[[世俗]]的なもの。 igeer90zmk8eot9rkbqt0vyzs4dyxcv けいじ 0 18462 2340577 2097102 2026-09-01T15:10:55Z M-30722 1202 2340577 wikitext text/x-wiki {{kana-DEFAULTSORT}} {{also|けいし|げいし}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana|h=y}} *【[[兄事]]】{{ふりがな|兄|あに}}のように[[うやまう|敬う]]こと。 *【[[刑事]]】[[犯罪]]の[[捜査]]などを[[任務]]とする[[警察官]]。 *【[[啓事]]】[[天子]]にものを[[もうしあげる|申し上げる]]こと。 *【[[啓示]]】[[あきらか|明らか]]に[[しめす|示す]]こと。 *【[[形似]]】[[かたち|形]]が[[にる|似]]ていること。 *【[[慶事]]】[[いわいごと|祝い事]]。 *【[[掲示]]】[[かかげる|掲げ]][[しめす|示す]]こと。 *【[[携持]]】[[たずさえる|携える]]こと。 *【[[敬事]]】[[つつしむ|謹ん]]で[[つかえる|仕える]]こと。 *【[[繋辞]]】[[卦]]を[[くわしい|詳しく]][[説明]]した[[言葉]]。 *【[[計時]]】[[所要]][[時間]]を[[はかる|計る]]こと。 *【[[京滋]]】[[京都]]と[[滋賀]]。 krhpag74jt3lxwezxfrj1kh7aimufwl Wiktionary:管理者伝言板 4 19372 2340822 2320440 2026-09-02T05:28:33Z Kuroco2k 84207 /* ページ削除 */ 2340822 wikitext text/x-wiki __NOTOC__ {{ショートカット|[[WT:AN]]}} このページは[[Wiktionary:管理者|管理者]]同士が互いに連絡を取ったり、管理者に対し作業依頼などの連絡をするためのページです。管理権限にからむ異議等がある場合もここで議論できます。特定の管理者に連絡が取りたい場合は[[w:Wikipedia:ノートページ#会話ページ|会話ページ]]あるいはウィキメールを使用してください。専用の依頼ページがある場合は、ここではなくそちらに依頼してください。 管理者以外でもできる内容であれば適切に誘導してください。議論はどなたでも参加できます。 {| align="center" style="margin:1em auto 0 auto;background:light-dark(#f7f8ff,#223); color:inherit; border:1px solid #88a" |style="padding:0.3em;text-align:center;background:light-dark(#ccf,#224); color:inherit;"|'''各種要請・報告''' |style="padding:0.3em;text-align:center"| [[#管理者による対処待ち|削除待ち]] | [[#特定版削除後の確認待ち|特定版削除]] | [[#荒らし|荒らし]] | [[#3RR|3RR]] | [[#保護ページの編集依頼|保護ページの編集]] |- |style="padding:0.3em;text-align:center;background:light-dark(#ccf,#224); color:inherit;"|'''[[#投稿ブロック|ブロック関連]]''' |style="padding:0.3em;text-align:center"|[[#不適切なユーザー名|ユーザー名]] | [[#方針文書の要熟読|方針違反]] | [[#公開アカウント|パスワード公開]] | [[#不適切な記載(感情的・誤情報など)|不適切な編集]] |- |style="padding:0.3em;text-align:center;background:light-dark(#ccf,#224); color:inherit;"|'''各種依頼''' |style="padding:0.3em;text-align:center"|[[Wiktionary:削除依頼|削除]] | [[Wiktionary:投稿ブロック依頼|ブロック]] | [[Wiktionary:保護依頼|保護]] | [[Wiktionary:保護解除依頼|保護解除]] | [[Wiktionary:利用者名変更依頼|利用者名変更]] |} == 投稿にあたって == # 投稿時には'''必ず''' "&#126;&#126;&#126;&#126;" を使って[[w:Wikipedia:ノートのページでは投稿に署名をする|日付入りの署名]]をしてください。 # 必ず対象のページを明示、リンクし、'''具体的'''に記載してください。作業に合意が必要な場合は、合意がなされていることをリンクと共に明示してください。 # 質問をする場所ではありません。質問は[[Wiktionary:編集室]]など適切な場所へ。 ---- <p align="center">'''[{{fullurl:{{FULLPAGENAME}}|action=edit&section=new}} 新規投稿する]'''</p> [{{fullurl:Wiktionary:管理者伝言板|action=watch}} watch] / [{{fullurl:Wiktionary:管理者伝言板|action=unwatch}} unwatch] == 備忘録 == <p style="border:#c30 dashed 1px;padding:0.5em;background-color:#fe9"> 管理者同士の伝言、連絡、告知、メモ、スケジューリングなどに使用してください。管理者への要請は[[#その他の伝言]]へどうぞ。</p> == ページ削除 == === 管理者による対処待ち === <!-- *[[記事名]] - (賛成)/(反対)/(中立) --~~~~ の書式で記入してください --> * [[特別:固定リンク/2014895|2014895版]] ― INTERNET YAMEROの歌詞転載--[[User:Tmv|<span style="color: #6EB0F9; text-shadow: 3px 3px 2px #E0E0E0;">Tmv</span>]] ([[User_talk:Tmv|<span style="color: #6EB0F9; text-shadow: 3px 3px 2px #E0E0E0;">会話</span>]]) 2024年10月16日 (水) 07:54 (UTC) ** {{対処}} 遅くなりましたが、著作権侵害のおそれありとして、不可視化しました。--[[利用者:20041027 tatsu|20041027 tatsu]] ([[利用者・トーク:20041027 tatsu|トーク]]) 2026年8月13日 (木) 14:35 (UTC) * [[特別:差分/2150157]]および[[特別:差分/2150177]] - YOASOBI『[[w:アイドル (曲)|アイドル]]』の歌詞記載。著作権侵害として、要約欄も含め、即時版指定削除を依頼します。--[[利用者:20041027 tatsu|20041027 tatsu]] ([[利用者・トーク:20041027 tatsu|トーク]]) 2025年10月23日 (木) 13:11 (UTC) *It's not requere now. No using, because [[Special:Diff/2121806|this change]]. {| class="wikitable" !Title page!!Delete user notice |-- | [[Module:Unicode data/emoji images/000]] || Replaced by [[:commons:Data:Unicode data/emoji images/000.tab]] |- | [[Module:Unicode data/emoji images/002]] || Replaced by [[:commons:Data:Unicode data/emoji images/002.tab]] |- | [[Module:Unicode data/emoji images/003]] || Replaced by [[:commons:Data:Unicode data/emoji images/003.tab]] |- | [[Module:Unicode data/emoji images/01F]] || Replaced by [[:commons:Data:Unicode data/emoji images/01F.tab]] |- | [[Module:Unicode data/images/000]] || Replaced by [[:commons:Data:Unicode data/images/000.tab]] |- | [[Module:Unicode data/images/001]] || Replaced by [[:commons:Data:Unicode data/images/001.tab]] |- | [[Module:Unicode data/images/002]] || Replaced by [[:commons:Data:Unicode data/images/002.tab]] |- | [[Module:Unicode data/images/003]] || Replaced by [[:commons:Data:Unicode data/images/003.tab]] |- | [[Module:Unicode data/images/004]] || Replaced by [[:commons:Data:Unicode data/images/004.tab]] |- | [[Module:Unicode data/images/005]] || Replaced by [[:commons:Data:Unicode data/images/005.tab]] |- | [[Module:Unicode data/images/006]] || Replaced by [[:commons:Data:Unicode data/images/006.tab]] |- | [[Module:Unicode data/images/007]] || Replaced by [[:commons:Data:Unicode data/images/007.tab]] |- | [[Module:Unicode data/images/008]] || Replaced by [[:commons:Data:Unicode data/images/008.tab]] |- | [[Module:Unicode data/images/009]] || Replaced by [[:commons:Data:Unicode data/images/009.tab]] |- | [[Module:Unicode data/images/00A]] || Replaced by [[:commons:Data:Unicode data/images/00A.tab]] |- | [[Module:Unicode data/images/00B]] || Replaced by [[:commons:Data:Unicode data/images/00B.tab]] |- | [[Module:Unicode data/images/00C]] || Replaced by [[:commons:Data:Unicode data/images/00C.tab]] |- | [[Module:Unicode data/images/00D]] || Replaced by [[:commons:Data:Unicode data/images/00D.tab]] |- | [[Module:Unicode data/images/00F]] || Replaced by [[:commons:Data:Unicode data/images/00F.tab]] |- | [[Module:Unicode data/images/010]] || Replaced by [[:commons:Data:Unicode data/images/010.tab]] |- | [[Module:Unicode data/images/011]] || Replaced by [[:commons:Data:Unicode data/images/011.tab]] |- | [[Module:Unicode data/images/012]] || Replaced by [[:commons:Data:Unicode data/images/012.tab]] |- | [[Module:Unicode data/images/013]] || Replaced by [[:commons:Data:Unicode data/images/013.tab]] |- | [[Module:Unicode data/images/014]] || Replaced by [[:commons:Data:Unicode data/images/014.tab]] |- | [[Module:Unicode data/images/016]] || Replaced by [[:commons:Data:Unicode data/images/016.tab]] |- | [[Module:Unicode data/images/017]] || Replaced by [[:commons:Data:Unicode data/images/017.tab]] |- | [[Module:Unicode data/images/018]] || Replaced by [[:commons:Data:Unicode data/images/018.tab]] |- | [[Module:Unicode data/images/01A]] || Replaced by [[:commons:Data:Unicode data/images/01A.tab]] |- | [[Module:Unicode data/images/01B]] || Replaced by [[:commons:Data:Unicode data/images/01B.tab]] |- | [[Module:Unicode data/images/01C]] || Replaced by [[:commons:Data:Unicode data/images/01C.tab]] |- | [[Module:Unicode data/images/01D]] || Replaced by [[:commons:Data:Unicode data/images/01D.tab]] |- | [[Module:Unicode data/images/01E]] || Replaced by [[:commons:Data:Unicode data/images/01E.tab]] |- | [[Module:Unicode data/images/01F]] || Replaced by [[:commons:Data:Unicode data/images/01F.tab]] |- | [[Module:Unicode data/images/020]] || Replaced by [[:commons:Data:Unicode data/images/020.tab]] |- | [[Module:Unicode data/images/021]] || Replaced by [[:commons:Data:Unicode data/images/021.tab]] |- | [[Module:Unicode data/images/022]] || Replaced by [[:commons:Data:Unicode data/images/022.tab]] |- | [[Module:Unicode data/images/023]] || Replaced by [[:commons:Data:Unicode data/images/023.tab]] |- | [[Module:Unicode data/images/024]] || Replaced by [[:commons:Data:Unicode data/images/024.tab]] |- | [[Module:Unicode data/images/025]] || Replaced by [[:commons:Data:Unicode data/images/025.tab]] |- | [[Module:Unicode data/images/026]] || Replaced by [[:commons:Data:Unicode data/images/026.tab]] |- | [[Module:Unicode data/images/027]] || Replaced by [[:commons:Data:Unicode data/images/027.tab]] |- | [[Module:Unicode data/images/028]] || Replaced by [[:commons:Data:Unicode data/images/028.tab]] |- | [[Module:Unicode data/images/029]] || Replaced by [[:commons:Data:Unicode data/images/029.tab]] |- | [[Module:Unicode data/images/02A]] || Replaced by [[:commons:Data:Unicode data/images/02A.tab]] |- | [[Module:Unicode data/images/02B]] || Replaced by [[:commons:Data:Unicode data/images/02B.tab]] |- | [[Module:Unicode data/images/02C]] || Replaced by [[:commons:Data:Unicode data/images/02C.tab]] |- | [[Module:Unicode data/images/02D]] || Replaced by [[:commons:Data:Unicode data/images/02D.tab]] |- | [[Module:Unicode data/images/02E]] || Replaced by [[:commons:Data:Unicode data/images/02E.tab]] |- | [[Module:Unicode data/images/02F]] || Replaced by [[:commons:Data:Unicode data/images/02F.tab]] |- | [[Module:Unicode data/images/030]] || Replaced by [[:commons:Data:Unicode data/images/030.tab]] |- | [[Module:Unicode data/images/031]] || Replaced by [[:commons:Data:Unicode data/images/031.tab]] |- | [[Module:Unicode data/images/032]] || Replaced by [[:commons:Data:Unicode data/images/032.tab]] |- | [[Module:Unicode data/images/0E0]] || Replaced by [[:commons:Data:Unicode data/images/0E0.tab]] |- | [[Module:Unicode data/names/000]] || Replaced by [[:commons:Data:Unicode data/names/000.tab]] |- | [[Module:Unicode data/names/001]] || Replaced by [[:commons:Data:Unicode data/names/001.tab]] |- | [[Module:Unicode data/names/002]] || Replaced by [[:commons:Data:Unicode data/names/002.tab]] |- | [[Module:Unicode data/names/003]] || Replaced by [[:commons:Data:Unicode data/names/003.tab]] |- | [[Module:Unicode data/names/004]] || Replaced by [[:commons:Data:Unicode data/names/004.tab]] |- | [[Module:Unicode data/names/00A]] || Replaced by [[:commons:Data:Unicode data/names/00A.tab]] |- | [[Module:Unicode data/names/00D]] || Replaced by [[:commons:Data:Unicode data/names/00D.tab]] |- | [[Module:Unicode data/names/00F]] || Replaced by [[:commons:Data:Unicode data/names/00F.tab]] |- | [[Module:Unicode data/names/010]] || Replaced by [[:commons:Data:Unicode data/names/010.tab]] |- | [[Module:Unicode data/names/011]] || Replaced by [[:commons:Data:Unicode data/names/011.tab]] |- | [[Module:Unicode data/names/012]] || Replaced by [[:commons:Data:Unicode data/names/012.tab]] |- | [[Module:Unicode data/names/013]] || Replaced by [[:commons:Data:Unicode data/names/013.tab]] |- | [[Module:Unicode data/names/014]] || Replaced by [[:commons:Data:Unicode data/names/014.tab]] |- | [[Module:Unicode data/names/016]] || Replaced by [[:commons:Data:Unicode data/names/016.tab]] |- | [[Module:Unicode data/names/01A]] || Replaced by [[:commons:Data:Unicode data/names/01A.tab]] |- | [[Module:Unicode data/names/01B]] || Replaced by [[:commons:Data:Unicode data/names/01B.tab]] |- | [[Module:Unicode data/names/01C]] || Replaced by [[:commons:Data:Unicode data/names/01C.tab]] |- | [[Module:Unicode data/names/01D]] || Replaced by [[:commons:Data:Unicode data/names/01D.tab]] |- | [[Module:Unicode data/names/01E]] || Replaced by [[:commons:Data:Unicode data/names/01E.tab]] |- | [[Module:Unicode data/names/01F]] || Replaced by [[:commons:Data:Unicode data/names/01F.tab]] |- | [[Module:Unicode data/names/0E0]] || Replaced by [[:commons:Data:Unicode data/names/0E0.tab]] |} --[[利用者:Dušan Kreheľ|Dušan Kreheľ]] ([[利用者・トーク:Dušan Kreheľ|トーク]]) 2025年7月22日 (火) 07:31 (UTC) **{{コメント}} 削除関連のトピックなので、勝手ながら節を移動させていただきました。文字画像にかかわる内容で、{{temp|character info}}・{{temp|文字コード}}以外で用いられることはほぼありません。--[[利用者:Kuroco2k|<span style="color:#000000">'''雛宮黒狐'''</span>]]([[利用者‐会話:Kuroco2k|<span style="color:#5a00cc">Talk</span>]]) 2026年7月28日 (火) 02:17 (UTC) *[[利用者:Kuroco2k/formmaker.js]] - 不要なスクリプト。ケースE: 投稿者本人から依頼がある場合にあたるが、テンプレート貼り付けによる依頼ができないため。--[[利用者:Kuroco2k|<span style="color:#000000">'''雛宮黒狐'''</span>]]([[利用者‐会話:Kuroco2k|<span style="color:#5a00cc">Talk</span>]]) 2026年7月28日 (火) 02:20 (UTC) *[[特別:固定リンク/2340818]] - SWEET STEADY『SWEET STEP』の歌詞転載。--[[利用者:Kuroco2k|<span style="color:#000000">'''雛宮黒狐'''</span>]]([[利用者‐会話:Kuroco2k|<span style="color:#5a00cc">Talk</span>]]) 2026年9月2日 (水) 05:28 (UTC) == 荒らし == <p style="border:#c30 dashed 1px;padding:0.5em;background-color:#fe9"> '''報告前の注意''': [[Wiktionary:投稿ブロックの方針]]をよくお読みください。報告の前に[[Wiktionary:荒らし#荒らしに対処するには|対話あるいは警告すること]]が推奨されます。荒らし内容への差分へのリンクをなるべくつけてください。ここで議論をしないでください。収束した荒らし行為を報告しないでください。 </p> <!-- 報告はこの下 --> === [[特別:投稿記録/まっくすたわし]] === 荒らし。--[[利用者:NekoyamaWataru|NekoyamaWataru]] ([[利用者・トーク:NekoyamaWataru|トーク]]) 2025年2月26日 (水) 03:15 (UTC) :ユーザ名を変更([[特別:投稿記録/なみなみへいへい]])して再度荒らし。--[[利用者:NekoyamaWataru|NekoyamaWataru]] ([[利用者・トーク:NekoyamaWataru|トーク]]) 2025年2月28日 (金) 19:10 (UTC) :ユーザ名を変更([[特別:投稿記録/さかやり]])して再度荒らし。--[[利用者:NekoyamaWataru|NekoyamaWataru]] ([[利用者・トーク:NekoyamaWataru|トーク]]) 2025年3月26日 (水) 01:58 (UTC) :IPV6アドレス([[特別:投稿記録/240A:61:4:3E17:7C2E:8FFF:FED8:8EAA]])での投稿履歴あり。--[[利用者:NekoyamaWataru|NekoyamaWataru]] ([[利用者・トーク:NekoyamaWataru|トーク]]) 2025年4月27日 (日) 03:07 (UTC) :Wikipediaの長期荒らしに関する情報の[[w:LTA:BOQ|LTA:BOQ]]と推定される。--[[利用者:NekoyamaWataru|NekoyamaWataru]] ([[利用者・トーク:NekoyamaWataru|トーク]]) 2025年4月27日 (日) 03:18 (UTC) :[[特別:投稿記録/つぼんたん]]--[[利用者:Nanona15dobato|<span style="color: #0000ff">なノな</span><span style="color: #ffff1a;font-weight:bold;-webkit-text-stroke: 0.7px #0000ff;text-stroke: 0.7px #0000ff;">15</span><span style="color: #0000ff;">どバと</span>]]([[利用者‐会話:Nanona15dobato|会話]]) 2025年6月14日 (土) 13:48 (UTC) :ユーザ名を変更([[特別:投稿記録/내 인생을 보호하기 위한 계정]])して再度荒らし。--[[利用者:ら゚いと|ら゚いと]] ([[利用者・トーク:ら゚いと|トーク]]) 2025年6月21日 (土) 14:58 (UTC) :ユーザ名を変更([[特別:投稿記録/自分の人生は自分で守るしかない]])して再度荒らし。--[[利用者:ら゚いと|ら゚いと]] ([[利用者・トーク:ら゚いと|トーク]]) 2025年6月25日 (水) 05:42 (UTC) : ユーザ名を変更([[特別:投稿記録/幸福追求隊]])して再度荒らし。-- [[利用者:Nanona15dobato|<span style="color: #0000ff">なノな</span><span style="color: #ffff1a;font-weight:bold;-webkit-text-stroke: 0.7px #0000ff;text-stroke: 0.7px #0000ff;">15</span><span style="color: #0000ff;">どバと</span>]]([[利用者‐会話:Nanona15dobato|会話]]) 2025年7月15日 (火) 08:35 (UTC) : ユーザ名を変更([[特別:投稿記録/自分の人生は自分で守るんだ]])して再度荒らし。{{small|[[m:GS/R]]へ依頼した後グローバル管理者によりブロック済み。情報としてコメント。}}-- [[利用者:Nanona15dobato|<span style="color: #0000ff">なノな</span><span style="color: #ffff1a;font-weight:bold;-webkit-text-stroke: 0.7px #0000ff;text-stroke: 0.7px #0000ff;">15</span><span style="color: #0000ff;">どバと</span>]]([[利用者‐会話:Nanona15dobato|会話]]) 2025年7月19日 (土) 16:50 (UTC) :ユーザ名を変更([[特別:投稿記録/ばいとでうまくやってくため]])して再度荒らし。--[[利用者:ら゚いと|ら゚いと]] ([[利用者・トーク:ら゚いと|トーク]]) 2025年7月20日 (日) 06:20 (UTC) :ユーザ名を変更([[特別:投稿記録/ディフィートバットフォーチュン]])して再度荒らし。--[[利用者:NekoyamaWataru|NekoyamaWataru]] ([[利用者・トーク:NekoyamaWataru|トーク]]) 2025年7月29日 (火) 08:37 (UTC) : 以下のアカウントを作成。いずれもGSへ依頼・ブロック済み。 :* {{User|幸福追求隊}} :* {{User|自分の人生は自分で守るんだ}} :* {{User|まもるまいせるふ}} :* {{User|まもるまいじんせい}} :* {{User|自分の人生を守る権利はある}} :* {{User|人生の悪い流れをやっつける}} :* {{User|まもるんだじんせいを}} : -- [[利用者:Nanona15dobato|<span style="color: #0000ff">なノな</span><span style="color: #ffff1a;font-weight:bold;-webkit-text-stroke: 0.7px #0000ff;text-stroke: 0.7px #0000ff;">15</span><span style="color: #0000ff;">どバと</span>]]([[利用者‐会話:Nanona15dobato|会話]]) 2025年11月8日 (土) 14:59 (UTC) : {{User|自分の人生を守るために必要だから}}にて再度荒らし。-- [[利用者:Nanona15dobato|<span style="color: #0000ff">なノな</span><span style="color: #ffff1a;font-weight:bold;-webkit-text-stroke: 0.7px #0000ff;text-stroke: 0.7px #0000ff;">15</span><span style="color: #0000ff;">どバと</span>]]([[利用者‐会話:Nanona15dobato|会話]]) 2025年11月8日 (土) 14:59 (UTC) : {{User|成田中部}}-- [[利用者:Nanona15dobato|<span style="color: #0000ff">なノな</span><span style="color: #ffff1a;font-weight:bold;-webkit-text-stroke: 0.7px #0000ff;text-stroke: 0.7px #0000ff;">15</span><span style="color: #0000ff;">どバと</span>]]([[利用者‐会話:Nanona15dobato|会話]]) 2025年12月3日 (水) 02:36 (UTC) : {{User|まいひとなま防衛}} [[利用者:Nanona15dobato|<span style="color: #0000ff">なノな</span><span style="color: #ffff1a;font-weight:bold;-webkit-text-stroke: 0.7px #0000ff;text-stroke: 0.7px #0000ff;">15</span><span style="color: #0000ff;">どバと</span>]]([[利用者‐会話:Nanona15dobato|会話]]) 2025年12月6日 (土) 13:51 (UTC) : {{User|いたりあんぴっつあ}} [[利用者:Nanona15dobato|<span style="color: #0000ff">なノな</span><span style="color: #ffff1a;font-weight:bold;-webkit-text-stroke: 0.7px #0000ff;text-stroke: 0.7px #0000ff;">15</span><span style="color: #0000ff;">どバと</span>]]([[利用者‐会話:Nanona15dobato|会話]]) 2025年12月6日 (土) 15:06 (UTC) : {{User|うぉーうぉー}} [[利用者:Nanona15dobato|<span style="color: #0000ff">なノな</span><span style="color: #ffff1a;font-weight:bold;-webkit-text-stroke: 0.7px #0000ff;text-stroke: 0.7px #0000ff;">15</span><span style="color: #0000ff;">どバと</span>]]([[利用者‐会話:Nanona15dobato|会話]]) 2025年12月8日 (月) 08:24 (UTC) : {{User|Nanohana 15 Tomato}}--[[利用者:Nanona15dobato|<span style="color: #0000ff">なノな</span><span style="color: #ffff1a;font-weight:bold;-webkit-text-stroke: 0.7px #0000ff;text-stroke: 0.7px #0000ff;">15</span><span style="color: #0000ff;">どバと</span>]]([[利用者‐会話:Nanona15dobato|会話]]) 2025年12月17日 (水) 08:38 (UTC) : {{User|何も知らない人は口出しするな}}--[[利用者:Nanona15dobato|<span style="color: #0000ff">なノな</span><span style="color: #ffff1a;font-weight:bold;-webkit-text-stroke: 0.7px #0000ff;text-stroke: 0.7px #0000ff;">15</span><span style="color: #0000ff;">どバと</span>]]([[利用者‐会話:Nanona15dobato|会話]]) 2026年1月28日 (水) 02:47 (UTC) : {{User|てぃーやま}}--[[利用者:Nanona15dobato|<span style="color: #0000ff">なノな</span><span style="color: #ffff1a;font-weight:bold;-webkit-text-stroke: 0.7px #0000ff;text-stroke: 0.7px #0000ff;">15</span><span style="color: #0000ff;">どバと</span>]]([[利用者‐会話:Nanona15dobato|会話]]) 2026年1月28日 (水) 03:15 (UTC) ===[[特別:投稿記録/133.238.49.236]]=== 固定IPアドレスと思われる長期間の荒らし。--[[利用者:NekoyamaWataru|NekoyamaWataru]] ([[利用者・トーク:NekoyamaWataru|トーク]]) 2025年4月23日 (水) 05:52 (UTC) ===[[特別:投稿記録/240F:6F:5BD7:1:C597:E718:AE2D:A787]]=== 曜日関連の項目を荒らし回っております。先日も同様の事例がありましたので曜日関連の項目を対象に[[Wiktionary:保護依頼#火曜日|保護依頼]]をさせていただきました。 --[[利用者:M-30722|M-30722]] ([[利用者・トーク:M-30722|トーク]]) 2025年7月27日 (日) 10:05 (UTC) :[[特別:投稿記録/240F:6F:5BD7:1::/64]]でレンジブロックする方が良いと思います。--[[利用者:20041027 tatsu|20041027 tatsu]] ([[利用者・トーク:20041027 tatsu|トーク]]) 2025年7月27日 (日) 10:10 (UTC) ::[[特別:投稿記録/240F:6F:5BD7:1::/64]]でレンジブロックしました。--[[利用者:Yapparina|Yapparina]] ([[利用者・トーク:Yapparina|トーク]]) 2025年7月28日 (月) 19:00 (UTC) ===[[特別:投稿記録/アメリカの篠田]]=== [[野球]]で荒らし行為。ウィキペディア、ウィキブックスでブロック済み。--[[利用者:大比叡|大比叡]] ([[利用者・トーク:大比叡|トーク]]) 2025年8月2日 (土) 07:16 (UTC) ===[[特別:投稿記録/110.66.12.249]]=== [[w:WP:VIP#Kikikiki.aka]]。--[[利用者:20041027 tatsu|20041027 tatsu]] ([[利用者・トーク:20041027 tatsu|トーク]]) 2025年8月3日 (日) 02:47 (UTC) ===[[特別:投稿記録/Normal archive]]=== [[w:LTA:KIKI]]またはその模倣。他利用者の会話ページに<nowiki>{{即時削除|阪神優勝!}}</nowiki>を貼る行為。--[[利用者:ホーリーブライト|ホーリーブライト]] ([[利用者・トーク:ホーリーブライト|トーク]]) 2025年8月20日 (水) 01:04 (UTC) ===[[特別:投稿記録/ききききあかの弟]]=== [[w:LTA:KIKI]]またはその模倣。--[[利用者:ホーリーブライト|ホーリーブライト]] ([[利用者・トーク:ホーリーブライト|トーク]]) 2025年8月20日 (水) 10:21 (UTC) ===[[特別:投稿記録/1.73.0.0/16]]=== この帯域による荒らし行為を確認しています。3か月または6か月程度の長期ブロックを依頼します。--[[利用者:20041027 tatsu|20041027 tatsu]] ([[利用者・トーク:20041027 tatsu|トーク]]) 2025年9月29日 (月) 14:54 (UTC) ===[[特別:投稿記録/60.36.163.164]]=== 荒らし行為を確認しました。--[[利用者:20041027 tatsu|20041027 tatsu]] ([[利用者・トーク:20041027 tatsu|トーク]]) 2025年10月6日 (月) 08:07 (UTC) === [[特別:投稿記録/~2025-33681-69]] === 「春眠に怒られてやんの」という名目でわいせつ画像を貼り付ける荒らし行為。--[[利用者:修正俱楽部|修正俱楽部]] ([[利用者・トーク:修正俱楽部|トーク]]) 2025年11月15日 (土) 00:10 (UTC) === [[特別:投稿記録/人生の悪い流れを消すため]] === 悪戯を目的としたページの作成2件。いずれも<nowiki>{{即時削除}}</nowiki>の貼付を済ませています。--[[利用者:なまえみてい|なまえみてい]] ([[利用者・トーク:なまえみてい|トーク]]) 2026年5月13日 (水) 04:53 (UTC) == 3RR == <p style="border:#c30 dashed 1px;padding:0.5em;background-color:#fe9"> '''報告前の注意''': [[Wiktionary:投稿ブロックの方針#方針]]をよくお読みください。ここで議論をしないでください。収束した編集合戦を報告しないでください。<br/> '''※''' 3RR違反となるのは、24時間以内に'''4回'''以上差し戻しが行われた場合です。3回ではないので注意してください。 </p> <!-- 報告はこの下 --> == 投稿ブロック == <p style="border:#c30 dashed 1px;padding:0.5em;background-color:#fe9"> その他投稿ブロック関連はここへ。'''報告前の注意''': [[Wiktionary:投稿ブロックの方針]]をよくお読みください。'''依頼ではありません'''。ここで議論をしないでください。サブページは必要ありません。 </p> === 不適切なユーザー名 === <!-- {{NOINDEX}} --> === 方針文書の要熟読 === * {{User|Praqimu}}: 最近、[[利用者・トーク:M-30722#未作成テンプレート|合意成立前の事柄について遡って追及]]したり、そもそも合意がなされておらず[[利用者・トーク:Praqimu#形容詞のテンプレートについて|義務の無い事柄を強要]]したりするケースが見られます。合意成立前の事柄に関して遡っての追及は「[[w:法の不遡及|法の不遡及]]」の観点からして不合理であると思いますし、合意が成立する前の項目に後の時代に成立した合意を遡って適用することがおかしいことである事を説明しても「そんなの決めつけだ」として理解されず、更には「投稿記録を遡るなんて無駄な時間でしかない」としてそもそも前後関係の確認も怠っているようです。このような行為は'''コミュニティの疲弊を招くおそれがある'''為方針文書の熟読が必要であると考えます。また、もしかすると私の説明が下手で上手く伝わっていない可能性もありますので管理者の方からも説明していただけますと幸いです。 --[[利用者:M-30722|M-30722]] ([[利用者・トーク:M-30722|トーク]]) 2025年3月27日 (木) 16:10 (UTC) * {{User|~2026-46274}} [[朩]]において、「絶対に内容を変えないで」などと記述し、項目の私有化を図っています。[[トーク:朩]]における内容削除なども鑑みて、明らかにクールダウンが必要。一定期間のブロックを依頼します。--[[利用者:20041027 tatsu|20041027 tatsu]] ([[利用者・トーク:20041027 tatsu|トーク]]) 2026年2月18日 (水) 08:44 (UTC) **プロジェクト文書熟読の要請で3か月のブロックとしました。--[[利用者:Yapparina|Yapparina]] ([[利用者・トーク:Yapparina|トーク]]) 2026年2月18日 (水) 11:12 (UTC) * {{User|漢字好きです漢字の資料やりますね}} 保護されていないページに虚偽の保護テンプレート貼り付け、「[[トーク:夁|私が1日かけて作ったページを壊した極悪人集]]」という名目で人を晒し上げ、実質的な私有を図る(と解釈しました)。[[:w:Wikipedia:善意にとる|善意にとって]]荒らしやヴァンダリズムでないとしても、現行の編集姿勢には問題がある。--[[利用者:Kuroco2k|<span style="color:#000000">'''雛宮黒狐'''</span>]]([[利用者‐会話:Kuroco2k|<span style="color:#5a00cc">Talk</span>]]) 2026年6月22日 (月) 09:38 (UTC) === 公開アカウント === === 不適切な記載(感情的・誤情報など) === == 保護ページの編集依頼 == <p style="border:#c30 dashed 1px;padding:0.5em;background-color:#fe9"> 依頼関連テンプレートの貼り付け/削除と、あらかじめノートで提案された単純な修正についてのみ受け付けます。それ以外の場合は[[Wiktionary:保護解除依頼|保護の解除]]を検討してください。 </p> === システムメッセージ修正依頼 === <p style="border:#c30 dashed 1px;padding:0.5em;background-color:#fe9"> SitenoticeなどMediaWiki名前空間にある記事の修正依頼はこちらで行ってください。 </p> ====[[MediaWiki:Titleblacklist]]==== 同音異義語のページとして、[[えんちょうせん]]を作成しようとしたところ、「ちょうせん」に引っかかたようで、作成することができませんでした。お手数をおかけしますが、タイトルブラックリストの修正をお願いします。--[[利用者:20041027 tatsu|20041027 tatsu]] ([[利用者・トーク:20041027 tatsu|トーク]]) 2024年9月9日 (月) 04:53 (UTC) :修正しました。--[[利用者:Yapparina|Yapparina]] ([[利用者・トーク:Yapparina|トーク]]) 2024年9月9日 (月) 14:09 (UTC) ====[[MediaWiki:Titleblacklist]]==== Jiba1219さんが「[[池沼]]」を作成しようとしたところ、タイトルブラックリストに引っかかり、作成できないようです。(詳しくは[[Wiktionary:編集室/2026年Q2#過去に削除された項目について]]を参照)お手数をおかけしますが、タイトルブラックリストの修正をお願いします。--[[利用者:20041027 tatsu|20041027 tatsu]] ([[利用者・トーク:20041027 tatsu|トーク]]) 2026年4月15日 (水) 18:49 (UTC) === [[Wiktionary:長期荒らし行為]] === {{temp|mid3}}の除去。非推奨のテンプレートとなっているが、自力除去が出来ないため。--[[利用者:Kuroco2k|<span style="color:#000000">'''雛宮黒狐'''</span>]]([[利用者‐会話:Kuroco2k|<span style="color:#5a00cc">Talk</span>]]) 2026年8月13日 (木) 07:27 (UTC) :{{対処}} 除去しました。--[[利用者:20041027 tatsu|20041027 tatsu]] ([[利用者・トーク:20041027 tatsu|トーク]]) 2026年8月13日 (木) 14:06 (UTC) == その他の伝言 == {{Notice|上記に当てはまらない管理者への連絡や要請はこちらにお願いします。}} === 利用者:Yutkawaについて === 時々不可解な編集が見られるアカウントで、先日[[利用者・トーク:Yutkawa#不可解な編集]]にて本人に事情を問うたところ、Yutkawaさん本人にも身に覚えのない編集が行われていることがあるらしく、どうやらYutkawaさんの友人が勝手にYutkawaさんのアカウントを使用して編集を行なっている可能性があるとのことです。友人にアカウントを使用されないように対処するよう伝えておりましたが[[梅毒]]にて再び不可解な編集が見られたためこちらに報告させていただきます。今回のようないわゆるアカウントの乗っ取りについてはどのような対処となりますでしょうか?Wikipediaの[[w:Wikipedia:投稿ブロックの方針#共有アカウント]]に記載がある「共有アカウント」に該当するのであれば投稿ブロックの対象になってくるかと思われますが、この点についてはいかがでしょうか? --[[利用者:M-30722|M-30722]] ([[利用者・トーク:M-30722|トーク]]) 2025年1月11日 (土) 13:20 (UTC) 携帯からアカウントがつくれない 携帯付属のプライバシー保護機能(こちらだとアカウント作成はできない方針なのは分かりますが)から失礼します 解除してもだめです : 先日Yutkawaさんより返信がありまして、現在Yutkawaさんのアカウントは乗っ取られている状態で、Yutkawaさん自身は(乗っ取られていない)別アカウントに切り替えられたとのことです。従いまして現在'''「利用者:Yutkawa」のアカウントは第三者により不正利用されている'''状態になっています。ここから先どのように対処するか等につきましては管理者さんに一任いたしますのでよろしくお願いします。 --[[利用者:M-30722|M-30722]] ([[利用者・トーク:M-30722|トーク]]) 2025年1月20日 (月) 17:55 (UTC) :アカウントを消した方がいいのでしょうか?--[[利用者:Kawakwa|Kawakwa]] ([[利用者・トーク:Kawakwa|トーク]]) 2025年2月4日 (火) 09:48 (UTC) ::もしご自身で消せるのでしたらそれも手です。とにかく乗っ取られたアカウントが第三者により使われることがないようにする必要があります。 --[[利用者:M-30722|M-30722]] ([[利用者・トーク:M-30722|トーク]]) 2025年2月4日 (火) 10:05 (UTC) :::了解です--[[利用者:Kawakwa|Kawakwa]] ([[利用者・トーク:Kawakwa|トーク]]) 2025年2月4日 (火) 22:38 (UTC) :::消し方を大至急教えてくださいアカウントを逆乗っとりしました。(メールで)by kawakwa--[[利用者:Yutkawa|私はscratchのyutkawaというユーザーです。]] ([[利用者・トーク:Yutkawa|トーク]]) 2025年2月5日 (水) 10:06 (UTC) ::::です--[[利用者:Kawakwa|Kawakwa]] ([[利用者・トーク:Kawakwa|トーク]]) 2025年2月5日 (水) 10:07 (UTC) :アカウントの停止等は管理者の権限になってくるかと思うので一般の利用者にできるかは分かりません。[[Wiktionary:投稿ブロック依頼]]に事情を説明して依頼するのが良いかなと思います。 --[[利用者:M-30722|M-30722]] ([[利用者・トーク:M-30722|トーク]]) 2025年2月5日 (水) 11:18 (UTC) ::了解です--[[利用者:Yutkawa|私はscratchのyutkawaというユーザーです。]] ([[利用者・トーク:Yutkawa|トーク]]) 2025年2月5日 (水) 11:43 (UTC) :::投稿できるかの確認--[[利用者:Kawakwa|Kawakwa]] ([[利用者・トーク:Kawakwa|トーク]]) 2025年2月11日 (火) 13:12 (UTC) ====自動判定==== [[後熟]]、[[あおかん]]、[[青羹]]を投稿しようとしたら「あなたが行おうとした操作は自動的な判定により有害であると見なされたため実行できませんでした。 これが誤認だと思われる場合はWiktionary:管理者伝言板への新規投稿でお知らせください。 操作に対して発動した規則の概略は次の通りです: ja.wiki abuser」と表示されます。IPを変えても解決しませんでした。 投稿しようとした内容は以下の通りです。 *「後熟」 <nowiki>{{kana-DEFAULTSORT|こうじゅく}}</nowiki><br> <nowiki>=={{L|ja}}==</nowiki><br> <nowiki>{{ja-kanjitab|こう|じゅく|yomi=o}}</nowiki><br> <nowiki>==={{noun}}===</nowiki><br> <nowiki>{{ja-noun-suru|[[こうじゅく]]}}</nowiki><br> <nowiki>#{{context|植物学|lang=ja}}[[乾燥]]により[[種子]]の[[含有]][[水分]][[量]]が[[減少]]すると種子の[[休眠]][[状態]]が[[解除]]されて[[活動]]を[[開始]]する[[生理]][[作用]]。</nowiki><br> <nowiki>#{{context|植物学|農業|lang=ja}}[[収穫]]した[[野菜]]が[[時間]][[経過]]とともに[[成熟]]していく生理作用。</nowiki><br> <nowiki>#{{context|農業|lang=ja}}[[追熟]]。</nowiki><br> <nowiki>==={{verb}}===</nowiki><br> {<nowiki>{ja-verb-suru|こうじゅく}}</nowiki><br> <nowiki>#追熟する。</nowiki><br> <nowiki>===={{conjug}}====</nowiki><br> <nowiki>{{日本語サ変活用}}</nowiki><br> <nowiki>=={{L|zh}}==</nowiki><br> <nowiki>==={{pron}}===</nowiki><br> <nowiki>{{cmn-pron|hòushú}}</nowiki><br> <nowiki>==={{noun}}===</nowiki><br> <nowiki>{{zh-cat|hou4shu2|noun|植物学|農業}}</nowiki><br> <nowiki>{{zhchars}} ({{zh-ts||'''[[后熟]]'''}})</nowiki><br> <nowiki>#(日本語に同じ)追熟。</nowiki> *「あおかん」 <nowiki>{{kana-DEFAULTSORT}}</nowiki><br> <nowiki>=={{L|ja}}==</nowiki><br> <nowiki>==={{homonym}}===</nowiki><br> <nowiki>{{ja-hom}}</nowiki><br> <nowiki>*【[[青看]]】:[[道路]]の[[案内]][[標識]]。</nowiki><br> <nowiki>*【[[青姦]]】:[[野外]]での[[和姦]]。</nowiki><br> <nowiki>*【[[青羹]]】:[[あおい|青い]]色に作り上げた[[水羊羹]]。</nowiki><br> *「青羹」 <nowiki>{{kana-DEFAULTSORT|あおかん}}</nowiki><br> <nowiki>=={{L|ja}}==</nowiki><br> <nowiki>{{ja-kanjitab|あお|かん|yomi=k,kanyo}}</nowiki><br> <nowiki>==={{noun}}===</nowiki><br> {<nowiki>{ja-noun|[[あおかん]]}}</nowiki><br> <nowiki>#[[青野菜]]や木の[[若芽]]などを{{おくりがな3|磨|す|り|潰|つぶ|し|すりつぶす}}て入れ、{{おくりがな2|青|あお|い|あおい|}}色に{{おくりがな3|作|つく|り|上|あ|げ|つくりあげる}}た[[水羊羹]]。</nowiki><br> 管理者様には、これらの内容を投稿できるよう対処してもらえるとありがたいです。 [[特別:投稿記録/2400:4051:3B61:7F00:B9D1:6D90:26E3:94A1|2400:4051:3B61:7F00:B9D1:6D90:26E3:94A1]] 2025年6月13日 (金) 16:31 (UTC) :{{対処}} 代わりに作成を行いました。どうやらIPユーザーの作成が一部の項目で制限が入っており作成出来なかったものと思われます。 --[[利用者:M-30722|M-30722]] ([[利用者・トーク:M-30722|トーク]]) 2025年6月13日 (金) 16:37 (UTC) ::対処ありがとうございます。--[[特別:投稿記録/2400:4051:3B61:7F00:B9D1:6D90:26E3:94A1|2400:4051:3B61:7F00:B9D1:6D90:26E3:94A1]] 2025年6月13日 (金) 16:41 (UTC) :同様の理由で投稿できないので対処をお願いします。 :「玄白」 :<nowiki>{{kana-DEFAULTSORT|げんぱく}}</nowiki> :<nowiki>=={{L|ja}}==</nowiki> :<nowiki>{{ja-kanjitab|げん|ぱく|yomi=o}}</nowiki> :<nowiki>==={{pron}}==</nowiki> :<nowiki>{{ja-pron|げんぱく|acc=0}}</nowiki> :<nowiki>==={{noun}}===</nowiki> :<nowiki>{{ja-noun|[[げんぱく]]}}</nowiki> :<nowiki>#[[藪医者]]。</nowiki> :<nowiki>#{{context|野菜|略語|lang=ja}}[[玄白茄子]]。</nowiki> :<nowiki>===={{alter}}====</nowiki> :<nowiki>*[[玄伯]]</nowiki>--[[特別:投稿記録/&#126;2025-52239-7|&#126;2025-52239-7]] ([[利用者・トーク:&#126;2025-52239-7|会話]]) 2025年9月15日 (月) 23:46 (UTC) ::{{返信|~2025-52239-7}} [[玄白|代わりに作成]]しましたので、ご確認をお願いします。--[[利用者:20041027 tatsu|20041027 tatsu]] ([[利用者・トーク:20041027 tatsu|トーク]]) 2025年9月16日 (火) 11:23 (UTC) :::対処ありがとうございます。--[[特別:投稿記録/&#126;2025-52239-7|&#126;2025-52239-7]] ([[利用者・トーク:&#126;2025-52239-7|会話]]) 2025年9月16日 (火) 12:15 (UTC) :「後熟」で未だに ja.wiki abuser が発動していて、語釈文が不自然に途切れた状態で放置するしかなくなっています。--[[特別:投稿記録/&#126;2025-27136-46|&#126;2025-27136-46]] ([[利用者・トーク:&#126;2025-27136-46|会話]]) 2025年11月11日 (火) 10:09 (UTC) :「[[政策]]」を更新しようとしたら「Repeating Characters」に引っ掛かりました。--[[特別:投稿記録/&#126;2025-27136-46|&#126;2025-27136-46]] ([[利用者・トーク:&#126;2025-27136-46|会話]]) 2025年11月12日 (水) 00:49 (UTC) ::[[後熟]]の編集を行いました。長期間気づかず、申し訳ありません。政策の方に関しては、グローバルフィルターが発動しているようですね。こちらの方も編集して欲しい内容をお伝えいただければ、代理で編集いたします。--[[利用者:20041027 tatsu|20041027 tatsu]] ([[利用者・トーク:20041027 tatsu|トーク]]) 2025年11月14日 (金) 08:47 (UTC) :::対応ありがとうございます。「政策」に関してはKuroco2kさんが編集して下さったので大丈夫ですが、今度は「[[地震]]」でabuser喰らったので加筆をお願いしても宜しいでしょうか。内容は発音節の最後尾に、<br><nowiki>{{ja-accent-common|region=富山県五箇山地域|h|な|え|náè}}</nowiki><br><nowiki>{{ja-accent-common|region=大分県臼杵市野津町|a|な|いぇ|náꜜyè}}</nowiki><br><nowiki>{{ja-accent-common|region=薩摩弁|h|な|え|náè}}</nowiki><br><nowiki>**/nawi/ → */nawʲi/ → /naji/ → /naje/ → /nae/</nowiki><br>です。--[[特別:投稿記録/&#126;2025-32841-32|&#126;2025-32841-32]] ([[利用者・トーク:&#126;2025-32841-32|会話]]) 2025年11月14日 (金) 13:20 (UTC) ::::経験上、非ログインユーザーが弾かれる傾向にありますのでもし今後も編集を続けられるのであればアカウント作成をおすすめします(作成義務は無いので2025-32841-32さんの判断にお任せしますが、ログインすると弾かれることは無くなるかと思います)。--[[利用者:M-30722|M-30722]] ([[利用者・トーク:M-30722|トーク]]) 2025年11月14日 (金) 14:08 (UTC) ====人名のアカウント==== これまで人名のアカウントが許容されていた中で、今日はブロックした意図とは、[[user:Infinite0694]]さん?--[[利用者:Vcvfou698069|Vcvfou698069]] ([[利用者・トーク:Vcvfou698069|トーク]]) 2025年11月20日 (木) 10:56 (UTC) ==== BOT申請 ==== 私は現在、[[Wiktionary:ボット/使用申請#Bcxfubot]]でBOT申請をしていますが、ja wiktionary唯一の[[Wiktionary:ビューロクラット|ビューロクラット]]の[[利用者:Kanjy]]さんが、2024年7月を最後に不在の様子で処理出来ない状態です。これはもう、どうにもならないでしょうか。--[[利用者:Bcxfu75k|Bcxfu75k]] ([[利用者・トーク:Bcxfu75k|トーク]]) 2026年6月22日 (月) 23:59 (UTC) : 可能な対応は次の2つです。1つ目は日本語版ウィクショナリーの誰かにビューロクラットになってもらうことです。現在、Yapparinaさんに推薦しても良いか会話ページでお聞きしています。2つ目はスチュワードに依頼して、権限を付与してもらうことです。ビューロクラット不在の小規模なウィキでボットフラグを付与してもらうには[[:meta:Steward requests/Bot status]]で依頼するのが一般的です。どうにもならないことはないので、ご安心ください。--[[利用者:20041027 tatsu|20041027 tatsu]] ([[利用者・トーク:20041027 tatsu|トーク]]) 2026年6月23日 (火) 01:02 (UTC) 2e2o4b8wkzjoyumq6b1e8219dq68rht 不是 0 19618 2340732 2294469 2026-09-01T20:07:41Z Jiba1219 100610 2340732 wikitext text/x-wiki {{DEFAULTSORT:bu4shi4}} =={{L|zh}}== {{zh-cat|bu4shi4|noun|verb|adv|hsk=丙}} {{yue-cat|bat1si6|noun|verb|adv}} {{nan-cat|put4si7|noun|verb|adv}} {{wuu-cat|peh4zy2|noun|verb|adv}} ==={{pron}}=== *官話: :*標準中国語: ::[[w:拼音|拼音]]: bùshì → '''bú'''shì ::[[w:注音符号|注音符号]]: ㄅㄨˋ ㄕˋ ::[[w:ウェード式|ウェード式]]: pu4 shih4 ::[[w:国語ローマ字|国語ローマ字]]: bushyh ::[[w:通用拼音|通用拼音]]: bùshìh ::{{IPA|pu⁵¹⁻³⁵ ʂʐ̩⁵¹|lang=zh}} :*{{dng}} ::[[w:キリル文字|キリル文字]]: [[бусы]] (busɨ, I-I) ::{{IPA|pou²⁴ sz̩²⁴|lang=dng}} {{yue-pron|bat1 si6}} {{nan-pron|qz:put-sǐ/tw,xm,zz:put-sī}} {{wuu-pron|hz:7peq zy6}} ==={{noun}}=== {{zhchars}} #[[過失]]。 ==={{verb}}=== {{zhchars}} #~でない。 #*{{lang|zh|[[我]]'''不是'''[[日本人]]。}} #*:Wǒ '''bùshì''' Rìběnrén. #*:私は日本人ではありません。 ====語法==== *[[不是...而是...|'''不是'''(甲)'''而是'''(乙)]] *:甲ではなく、乙である。 *[[不是...就是...|'''不是'''(甲)'''就是'''(乙)]] *:甲でなければ、乙である/甲か乙のいずれかである。 ==={{adv}}=== {{zhchars}} #(応答語)[[いいえ]]。 #*{{zh-ex|"你是日本人吗?""不是。"|"你是日本人嗎?""不是。"}} #*:「あなたは日本人ですか?」「いいえ(違います)」 ===={{ant}}==== *[[是]] (shì) gu1vi3fj01or8q3rwp9thqnk0p0o2bv mind 0 20316 2340789 2325145 2026-09-02T00:18:43Z NekoyamaWataru 87354 /* {{hu}} */ 語句の修正 2340789 wikitext text/x-wiki =={{en}}== [[Category:{{en}}]] ==={{pron}}=== *{{IPA|maɪnd}} *{{audio|en|en-us-mind.ogg|音声 (米)}} ==={{noun}}=== {{en-noun}} #{{ふりがな|心|こころ}}。 #[[精神]]。 #[[知性]]。 #[[記憶]]。 #[[理性]]。 #[[正気]]。 #[[意図]]。 #[[意見]]。 #[[見解]]。 ===={{idiom}}==== {{top}} *[[absence of mind]] *[[back of one's mind]] *[[bad mind]] *[[bear in mind]] *[[bicameral mind]] *[[big mind]] *[[blow someone's mind]] *[[bored out of one's mind]] *[[breadth of mind]] *[[bring to mind]] *[[call to mind]] *[[change of mind]] *[[change one's mind]] *[[change someone's mind]] *[[come to mind]] *[[cross someone's mind]] *[[ease one's mind]] *[[frame of mind]] *[[give someone a piece of one's mind]] *[[great minds think alike]] *[[half a mind]] *[[have a mind like a sieve]] *[[have a mind of one's own]] *[[have in mind]] *[[have one's mind about one]] *[[hive mind]] *[[in one's right mind]] *[[in two minds]] *[[Jedi mind trick]] *[[keep in mind]] *[[know one's own mind]] *[[leap to mind]] *[[lose one's mind]] *[[make up one's mind]] *[[meeting of the minds]] *[[mind bleach]] *[[mind candy]] *[[mind control]] *[[mind fuck]] *[[mind game]] *[[mind like a sieve]] *[[mind like a steel trap]] *[[mind map]] *[[mind meld]] *[[mind over matter]] *[[mind palace]] *[[mind rape]] *[[mind rhyme]] *[[mind share]] *[[mind's ear]] *[[mind's eye]] *[[month's mind]] *[[of one mind]] *[[of two minds]] *[[on one's mind]] *[[on someone's mind]] *[[one-track mind]] *[[open mind]] *[[open one's mind]] *[[out of one's cotton-picking mind]] *[[out of one's mind]] *[[out of sight, out of mind]] *[[peace of mind]] *[[philosophy of mind]] *[[presence of mind]] *[[put one's mind to it]] *[[put out of one's mind]] *[[put someone in mind of]] *[[reactive mind]] *[[read someone's mind]] *[[slip someone's mind]] *[[speak one's mind]] *[[spring to mind]] *[[state of mind]] *[[theory of mind]] *[[time out of mind]] *[[to one's mind]] *[[top of mind]] *[[top of mind awareness]] *[[universal mind]] *[[year's mind]] {{bottom}} ===={{rel}}==== *[[heart]] ==={{verb}}=== {{en-verb}} #{{タグ|en|他動詞}}[[いやがる]]。[[迷惑]]に{{おくりがな2|思|おも|う|おもう}}。[[いとう|厭う]]。[[気にする]]。 #*''The corridor looked very long and dark, but she was too excited to '''mind''' that.'' (Frances Hodgson Burnett. "The Secret Garden")〔1911年〕<ref>Frances Hodgson Burnett. "The Secret Garden". 1911. Frederick A. Stokes Company. (Project Gutenberg. August, 1994. https://www.gutenberg.org/files/17396/17396-h/17396-h.htm)</ref> #*:''廊下はとても真っ暗で長く続いてるように見えたが、彼女はそんなことを気にしないほどに興奮していた。'' #[[用心]]する ===={{usage}}==== [[Category:{{en}}_{{verb}}_動名詞のみを目的語とするもの]] *目的語として[[動名詞]]のみ用い、to不定詞を用いない。 ==註== <references/> =={{hu}}== ==={{pron}}=== *{{hu-IPA}} *{{audio|hu|Hu-mind.ogg|音声}} ==={{pronoun}}=== {{head|hu|pronoun}} # {{label|hu|文法的には単数}} その[[すべて|全て]]、それら[[全部]]、[[それぞれ]]。 #: {{uxi|hu|'''Mind(et)''' megettem.|'''それは全部'''食べた。}} #: {{uxi|hu|A fogaim nem jók, de még '''mind''' megvan.|私の歯はあまり良くはないが、まだ'''全部'''ある。}} ===={{usage}}==== {{U:hu:mind-minden}} ===={{decl}}==== {{hu-infl-nom|minde|e|n=sg}} {{hu-partitive|ünk|1b=őnk|őtök|ük|全て}} <!-- http://corpus.nytud.hu/cgi-bin/e-szokincs/alaktan?lid=43896 --> 所有の意味は {{m|hu|minden}} で表現できる。 ===={{syn}}==== {{top3}} *{{l|hu|mindegyikük}} *{{l|hu|mindegyik}} *{{l|hu|[[az]] [[összes]]}} {{bottom}} ==={{adverb}}=== {{hu-adv|-}} # [[みんな|皆]]で、[[全員]]で。 #: {{uxi|hu|'''Mind''' összegyűltek a ház előtt.|彼ら'''皆'''は家の前に集まった。}} # {{label|hu|formal|比較級形を続けて}} [[ますます]]、[[いよいよ]]、[[だんだん]]。 #: {{uxi|hu|'''Mind''' nagy'''obb''' igény van erre a szolgáltatásra.|このサービスには'''ますます'''需要が高まっている。}} # …[[まで]]、…[[いたる|至る]]まで。(~に {{m|hu|-ig}}) #: {{uxi|hu|'''mind''' a mai nap'''ig'''|(まさに)この日'''まで'''}} #: 注意: この意味を持つ他の語句はほとんどの場合一語で書かれる: {{l|hu|mindaddig}}, {{l|hu|mindeddig}}, {{l|hu|mindmáig}}, {{l|hu|mindmostanáig}}, {{l|hu|mindvégig}} ===={{syn}}==== (語義1): *{{l|hu|mindnyájan}} *{{l|hu|mindannyian}} (語義2): *{{l|hu|egyre}} (語義3): *{{l|hu|egészen}} ===={{drv}}==== *{{l|hu|minden}} *{{l|hu|mindig}} ===={{comp}}==== (この項目で始まるもの): {{top4}} *{{l|hu|mindaddig}} *{{l|hu|mindamellett}} *{{l|hu|mindannyi}} *{{l|hu|mindaz}} *{{l|hu|mindazon}} *{{l|hu|mindeddig}} *{{l|hu|mindegy}} *{{l|hu|mindegyik}} *{{l|hu|mindez}} *{{l|hu|mindhárom}} *{{l|hu|mindinkább}} *{{l|hu|mindjárt}} *{{l|hu|mindjobban}} *{{l|hu|mindkét}}, {{l|hu|mindkettő}} *{{l|hu|mindmáig}} *{{l|hu|mindmostanáig}} *{{l|hu|mind-mind}} *{{l|hu|mindörökké}} *{{l|hu|mindössze}} *{{l|hu|minduntalan}} *{{l|hu|mindvégig}} {{bottom}} (この項目で終わるもの): *{{l|hu|egyszersmind}} ===={{idiom}}==== *{{l|hu|nem mind arany, ami fénylik}} ==={{conj}}=== {{head|hu|conjunction}} # {{label|hu|formal}} …[[も]]…も、…は[[もちろん]]。 #: {{uxi|hu|'''mind''' a magánéletben, '''mind''' a munkában|プライベートで'''も'''仕事で'''も'''}} ===={{syn}}==== *{{l|hu|is}} nf48dp3gsj0ij1meeapmdaztpdqae5d carbon 0 20326 2340552 2319801 2026-09-01T14:14:18Z M-30722 1202 2340552 wikitext text/x-wiki =={{L|en}}== ==={{pron}}=== *{{IPA|lang=en|ˈkɑːr.bən}} *{{SAMPA|"kA:r.bən}} ==={{noun}}=== {{en-noun}} #{{タグ|en|元素}}[[炭素]]。 ===={{drv}}==== {{top}} *[[activated carbon]] *[[beta carbon nitride]] *[[carb-]], [[carbo-]] *[[carbinol]] *[[carbinyl]] *[[carbon-12]] *[[carbon-13]] *[[carbon-14]] *[[carbon anhydride]] *[[carbon arc]] *[[carbon audit]] *[[carbon-based]] *[[carbon bisulfide]], [[carbon bisulphide]] *[[carbon black]] *[[carbon copy]] *[[carbon-copy]] *[[carbon cycle]] *[[carbon dating]] *[[carbon debt]] *[[carbon dioxide]] *[[carbon disulfide]], [[carbon disulphide]] *[[carbon emissions trading]] *[[carbon fiber]], [[carbon fibre]] *[[carbon fixation]] *[[carbon footprint]] *[[carbon group]] *[[carbonic]] *[[carbonise]], [[carbonize]] *[[carbonite]] *[[carbonless]] *[[carbon market]] *[[carbon microphone]] *[[carbon monoxide]] *[[carbon nanofiber]] *[[carbon nanofoam]]<!--an allotrope--> *[[carbon nanotube]]<!--an allotrope--> *[[carbon-neutral]] *[[carbon-nitrogen cycle]] *[[carbon offset]] *[[carbonometer]] *[[carbonous]] *[[carbon oxide]] *[[carbon oxychloride]] *[[carbon oxysulfide]], [[carbon oxysulphide]] *[[carbon paper]] *[[carbon printing]] *[[carbon process]] *[[carbon resistor]] *[[carbon sequestering]] *[[carbon star]] *[[carbon steel]] *[[carbon suboxide]] *[[carbon tax]] *[[carbon tetrabromide]] *[[carbon tetrachloride]] *[[carbon tetrafluoride]] *[[carbon tetraiodide]] *[[carbon trade]] *[[carbon transmitter]] *[[carbonyl]] *[[Carborundum]]&reg; *[[carboxyl]] *[[carburet]] *[[chlorocarbon]] *[[chlorofluorocarbon]] *[[chromo-carbon]] *[[ferrocarbon]] *[[fluorocarbon]] *[[fluorochlorohydrocarbon]] *[[glassy carbon]] *[[halocarbon]] *[[hydrocarbon]] *[[sulfide of carbon]], [[sulphide of carbon]] *[[radiocarbon]] {{bottom}} ===={{rel}}==== *[[carbonaceous]] *[[carbonade]] *[[carbonado]] *[[w:Carbonari|Carbonari]] *[[carbonate]] *[[carboniferous]] *[[carbonify]] *[[carbonigenous]] 82kz6ankts96b3k7osgff1mji29afiz じき 0 22240 2340536 2340106 2026-09-01T12:36:17Z Kyube 136 [[Special:Diff/2340102|2340102]] から [[Special:Diff/2340106|2340106]] までの 5 版 を取り消し 復帰不完全 2340536 wikitext text/x-wiki {{kana-DEFAULTSORT}} {{also|しき|しぎ|じぎ}} {{同音の漢字|ジキ}} =={{ja}}== [[Category:{{ja}}]] ==={{noun}}=== [[Category:{{ja}}_{{noun}}]] '''じき'''【[[敷]]き】 #動詞「{{おくりがな2|敷|し|く|しく}}」の連用形名詞化「[[しき]]」の[[連濁]]。 ==={{noun}}・{{adverb}}=== [[Category:{{ja}}_{{noun}}]] [[Category:{{ja}} {{adverb}}]] '''じき'''【直】 #短い時間。また空間的にまたは関係上近いこと。→[[直]] ==={{homonym}}=== [[Category:{{ja}} 同音異義]] '''{{PAGENAME}}''' *【[[事記]]】 *【[[侍姫]]】 *【[[児嬉]]】 *【[[時季]]】 *【[[時期]]】 *【[[時機]]】 *【[[次期]]】 *【[[瓷器]]】 *【[[磁気]]】 *【[[磁器]]】 *【[[自記]]】 *【[[自棄]]】 *【[[自欺]]】 *【[[辞気]]】 {{stub|homonym}} pxm7fyqql7by7hwopqqk68tfbln0jbg 利用者:M-30722 2 24339 2340635 2321482 2026-09-01T16:40:40Z M-30722 1202 更新 2340635 wikitext text/x-wiki 2007年2月9日にアカウントを取得したM-30722です。 {| style="float: right; margin-left: 1em; margin-bottom: 0.5em; width: 242px; border: #99B3FF solid 1px" | style="text-align:center; font-weight:bold;"|[[Wiktionary:バベル]] |- |{{User ja}} |- |{{User en-1}} |- |{{User eo-1}} |- |{{User ko-2}} |- |{{User zh-2}} |- |} ===編集内容=== 東アジアの言語やヨーロッパの言語が中心ですが、最近では非推奨のテンプレートの除去等の整備も並行して編集しています。非推奨のテンプレートについてはpron引数等は数を減らした為か誤付与は落ち着いてきておりますがkanji header等の漢字項目のテンプレートで誤付与が多発しているので漢字項目の整備を重点的にする必要があると感じております。 ===未処理3文字テンプレート=== eng, fas, fra, jpn, lit, nor, sot, sro, zho ===エスペラント基本語根カテゴリテンプレート化予定=== 2026年9月2日現在 *1類: [[-a]], [[-as]], [[-e]], [[-el]], [[-es]], [[ho]], [[-i]], [[-is]], [[-j]], [[-n]], [[nek]], [[-o]], [[-om]], [[-os]], [[-u]], [[-us]] *2類: [[kapo]], [[klara]], [[koro]], [[lando]], [[loko]], [[longa]], [[plena]], [[rapida]], [[tago]], [[tero]] *3類: [[domo]], [[frato]], [[horo]], [[korto]], [[mono]], [[peco]], [[persono]], [[tablo]], [[varma]], [[vesto]] *4類: [[aero]], [[besto]], [[dento]], [[hela]], [[kara]], [[kolo]], [[komuna]], [[minuto]], [[ordo]], [[pano]], [[strato]], [[verda]] *5類: [[folio]], [[ovo]], [[vino]] *6類: [[akra]], [[boli]], [[fiera]], [[kombi]], [[ondo]], [[reto]], [[surda]] *7類: [[dato]], [[kongreso]], [[rizo]], [[turo]], [[vana]] *8類: [[kajo]], [[muso]], [[pupo]] ==主な言語の項目数== <div style="width:50%; background-color:#ddd;"> {{言語毎項目数}} </div> ==管理用== [https://ja.wiktionary.org/wiki/特別:特別ページ一覧 特別ページ] - 以前は画面左のツールにあったがいつの間にか無くなっている ==サブページ== *[[/手話entry name]] *[[/手話表記法の案]] rhjwltkcrci5bmsv3clausw8bo2msdf 爆発 0 26317 2340820 2270778 2026-09-02T05:13:16Z Intolerable situation 84391 /* {{trans}} */ 2340820 wikitext text/x-wiki {{kana-DEFAULTSORT|ばくはつ}} {{also|爆发|爆發}} {{wikipedia}} =={{L|ja}}== {{ja-kanjitab|ばく|はつ|yomi=o,o}} ==={{pron}}=== {{ja-pron|ばくはつ|acc=0|dev=2}} {{ja-accent-common|region=京阪|h||ばくはつ}} ==={{noun}}=== {{ja-noun-suru|ばくはつ}} #[[熱]]や[[おと|音]]・[[ひかり|光]]などを[[ともなう|伴い]]、[[一気]]に[[とびちる|飛び散る]]こと。 #[[たまる|溜まっ]]ていた[[感情]]などが一気に[[そと|外]]へ[[でる|出る]]こと。 #[[人気]]や売上げ、[[数値]]などが[[急上昇]]すること。 #*'''爆発'''的人気 #*人口'''爆発'''。感染'''爆発''' #{{context|スポーツ|lang=ja}}主に攻撃陣が大活躍すること。 #*打線'''爆発''' ===={{trans}}==== ;物理現象 {{top}} *{{T|en}}: {{t|en|explosion}}, {{t|en|blast}} *{{T|sv}}: {{t|sv|explosion|c}} *{{T|ko}}: {{t|ko|폭발(爆發)}} *{{T|de}}: {{t|de|Explosion|f}} *{{T|no}}: *:{{T|nb}}: {{t|no|eksplosjon|m}} *{{T|fr}}: {{t|fr|explosion|f}} *{{T|pl}}: {{t|pl|wybuch|m}} *{{T|ru}}: {{t|ru|взрыв|m}} {{bottom}} ==={{verb}}=== ===={{conjug}}==== {{日本語サ変活用}} ===={{trans}}==== {{top}} *{{T|en}}: {{t|en|explode}}, {{t|en|blast}}, {{t|en|blow up}}, {{t|en|go off}} *{{T|de}}: {{t|de|explodieren}} *{{T|no}}: *:{{T|nb}}: {{t|no|eksplodere}}, {{t|no|springe}}, {{t|no|sprenge|alt=sprenge seg}} *{{T|fr}}: {{t|fr|exploser}} *{{T|pl}}: {{t|pl|wybuchać|impf}} / {{t|pl|wybuchnąć|pf}} *{{T|ru}}: {{t|ru|взрывать|impf}} / {{t|ru|взорвать|pf}} {{bottom}} in142vhsny1jg54sws0y99a7li4zu11 せんたい 0 27981 2340752 2080872 2026-09-01T23:54:06Z 鍼灸 112313 2340752 wikitext text/x-wiki {{kana-DEFAULTSORT}} {{also|せんだい|ぜんたい}} =={{ja}}== ==={{kangokana}}=== {{ja-kangokana|h=y}} *【'''[[選対]]'''】[[選挙]][[対策]]、選挙対策委員会の略。 *【'''[[船体]]'''】[[船]]の[[形体]]。特に船が水に接する部分。 *【'''[[船隊]]'''】[[目的]]を一にし、同時に[[移動]]する[[船舶]]の[[集団]]。 *【'''[[戦隊]]'''】[[軍隊]]の[[組織]][[形態]]のひとつで、[[戦闘]]を目的とするもの。 *【'''[[蘚苔]]'''】'''[[こけ]]'''の[[漢名]]。 *【'''[[先体]]'''・'''[[尖体]]'''】[[動物]]の[[精子]]の[[先端]]にある[[器官]]。 *【'''[[先隊]]'''】[[さき|先]]を[[ゆく|行く]][[たい|隊]]。 *【'''[[千態]]'''】[[さまざま|様々]]な[[形態]]。 *【'''[[浅堆]]'''】[[大陸棚]]の[[水深]]の[[あさい|浅い]][[部分]]。 *【'''[[蟬退]]'''】[[せみ|蝉]]の[[ぬけがら|抜け殻]]。 *【'''[[遷代]]'''・'''[[遷替]]'''】[[任期]]を[[おえる|終え]]、[[た|他]]の[[官職]]に[[てんじる|転じる]]こと。 c1iftbvb2fptayte0l1gmvxpv7za88r 調帳 0 34676 2340749 1362041 2026-09-01T23:42:34Z うーむ 129171 /* 日本語 */ 2340749 wikitext text/x-wiki =={{ja}}== {{wikipedia}} [[category:{{ja}}|ちようちよう]] ==={{noun}}=== [[category:{{ja}}_{{noun}}|ちようちよう]] '''[[調]] [[帳]]'''([[ちょうちょう]]) # [[律令制]]で、{{ふりがな|四度|しど}}の{{ふりがな|公文|くもん}}の一つで、[[国司]]から[[中央]]へ[[おくる|送る]][[調庸]]の[[品目]]を[[しるす|記した]][[帳簿]]。 <!--発音 (日本語) アクセントや発音記号の記載のない限りコメントアウト ===={{pron|ja}}==== ;(アクセント等の記載) :{{IPA|??}} :{{X-SAMPA|??}} --> 1k4lp92bx4f1gs64qowrqkbpt0rjg8j 2340756 2340749 2026-09-01T23:56:05Z うーむ 129171 /* 日本語 */ 2340756 wikitext text/x-wiki =={{ja}}== {{wikipedia}} ==={{noun}}=== {{ja-noun|[[ちょうちょう]]}} # [[律令制]]で、{{ふりがな|四度|しど}}の{{ふりがな|公文|くもん}}の一つで、[[国司]]から[[中央]]へ[[おくる|送る]][[調庸]]の[[品目]]を[[しるす|記した]][[帳簿]]。 <!--発音 (日本語) アクセントや発音記号の記載のない限りコメントアウト ===={{pron|ja}}==== ;(アクセント等の記載) :{{IPA|??}} :{{X-SAMPA|??}} --> f7legap3rhgp70j1gni5tw7rjdc5co6 Wiktionary:サンドボックス 4 37332 2340599 2320845 2026-09-01T15:46:22Z ~2026-47663-13 133307 2340599 wikitext text/x-wiki 2340601 2340599 2026-09-01T15:53:21Z 20041027 tatsu 59964 [[特別:Contributions/~2026-47663-13|~2026-47663-13]]による編集を取り消し、~2026-44542-63による最新版へと差し戻しを行いました。 2320845 wikitext text/x-wiki {{/説明文}} テスト 8bqbojp0sk1a1bltlj4t9267xxm0h1s 2340647 2340601 2026-09-01T16:55:40Z ~2026-47618-09 133310 2340647 wikitext text/x-wiki {{/説明文}} テスト {{ja-pron|ちばけんま}} {{ja-pron|はせがわりょうた}} {{ja-pron|からさわたかひろ}} {{ja-pron|こうしんそうごうほうりつじむしょ}} 6ru31phy1t2zjxhdqfpmz8bf83iwx17 フット 0 42597 2340816 2264515 2026-09-02T04:19:31Z うーむ 129171 /* 日本語 */ 2340816 wikitext text/x-wiki {{also|プット}} =={{L|ja}}== ==={{noun}}=== {{ja-noun}} # [[足]]({{ふりがな|踝|くるぶし}}から下を[[さす|指す]])。[[歩み]]。 # [[フート]]。([[フィート]]の[[単数]]) #[[ページ]]の下。 #[[ヨット]]、[[ウインドサーフィン]]などの[[帆]]で、[[三角形]]の[[下]]の[[辺]]。 ===={{etym}}==== {{bor|ja|en|foot}} ===={{prov}}==== *[[フットサル]] *[[フットボール]] *[[フットワーク]] 7005reyjb5i5twhdbhzec67n8z24gu3 せんだい 0 43854 2340751 1919661 2026-09-01T23:53:28Z 鍼灸 112313 2340751 wikitext text/x-wiki {{kana-DEFAULTSORT}} {{also|せんたい|ぜんたい}} =={{ja}}== ==={{kangokana}}=== {{ja-kangokana|h=y}} *【[[仙台]]】[[宮城県]]の[[県庁所在地]]。 *【[[先代]]】[[ひとつ|一つ]][[まえ|前]]の[[当主]]。[[ひとつ|一つ]][[まえ|前]]の[[時代]]。 *【[[先帝]]】[[先代]]の[[皇帝]]。[[せんてい]]。 *【[[w:川内|川内]]】[[鹿児島県]]の[[地名]]。[[w:川内市|川内市]]。 *【[[船台]]】[[建造]]や[[修理]]するために[[ふね|船]]を[[のせる]][[だい|台]]。 *【[[闡提]]】[[仏法]]を[[しんじる|信じ]]ない[[もの|者]]。 6qlpeub1qf2jby9jlxb8lklp5fuapei ぜんたい 0 43855 2340753 2080788 2026-09-01T23:54:44Z 鍼灸 112313 2340753 wikitext text/x-wiki {{kana-DEFAULTSORT}} {{also|せんたい|せんだい}} =={{ja}}== ==={{kangokana}}=== {{ja-kangokana|h=y}} *【[[全体]]】[[すべて]]の[[部分]]。 *【[[全隊]]】[[全部]]の[[部隊]]。その[[部隊]]の[[すべて|全て]]。 *【[[蟬退]]】[[せみ|蟬]]の[[ぬけがら|抜け殻]]。 39jv5xq331phg8w1l2cb18nwcjy5izr しんそく 0 44379 2340530 1600524 2026-09-01T12:15:42Z うーむ 129171 /* */ 2340530 wikitext text/x-wiki {{also|しんぞく|じんそく|じんぞく}} =={{L|ja}}== ==={{homonym}}=== {{head|ja|同音異義}} *【[[神足]]】[[優秀]]な[[弟子]]。 *【[[神速]]】[[人間業]]とは[[おもう|思えない]]ほど[[はやい|速い]]こと。 foae3tn2cl1khhoswdwtuc4g0mel1ts じんそく 0 44380 2340528 1919719 2026-09-01T12:14:58Z うーむ 129171 /* */ 2340528 wikitext text/x-wiki {{kana-DEFAULTSORT}} {{also|しんそく|しんぞく|じんぞく}} =={{L|ja}}== ==={{homonym}}=== {{head|ja|同音異義}} *【[[神足]]】[[神足通]]の略。 *【[[迅速]]】[[すばやい|素早い]]こと。 cstshff0clag20p46ao2xc7ah2zjr3j けいし 0 44423 2340578 2097101 2026-09-01T15:11:12Z M-30722 1202 2340578 wikitext text/x-wiki {{kana-DEFAULTSORT}} {{also|けいじ|げいし}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana|h=y}} *【[[京師]]】[[帝都]]。 *【[[兄姉]]】{{ふりがな|兄|あに}}と{{ふりがな|姉|あね}}。 *【[[刑屍]]】[[死刑]]に[[処]]せられた[[もの|者]]の[[死体]]。 *【[[刑死]]】[[処刑]]されて[[しぬ|死ぬ]]こと。 *【[[家司]]】[[幕府]]の{{ふりがな|政所|まんどころ}}の[[職員]]。 *【[[屐子]]】{{ふりがな|履物|はきもの}}の[[一種]]。 *【[[w:恵施|恵施]]】[[中国]]の[[宋]][[出身]]の[[思想家]]。 *【[[恵賜]]】[[めした|目下]]の[[もの|者]]に[[金品]]を[[あたえる|与える]]こと。 *【[[桂枝]]】[[肉桂]]の[[樹皮]]。 *【[[桂芝]]】{{ふりがな|万年茸|まんねんたけ}}。 *【[[瓊姿]]】[[たま|玉]]のように[[うつくしい|美しい]][[すがた|姿]]。 *【[[瓊枝]]】[[たま|玉]]の[[み|実]]がなる[[めずらしい|珍しい]][[木]]。 *【[[経伺]]】[[うかがい|伺い]]を[[たてる]]こと。 *【[[経史]]】[[経書]]と[[史書]]。 *【[[経始]]】[[ものごと|物事]]を[[はじめる|始める]]こと。 *【[[経師]]】[[経書]]の[[教師]]。 *【[[経死]]】[[首吊り]][[自殺]]。 *【[[継嗣]]】[[あととり|跡取り]]。 *【[[継子]]】[[ままこ]]。 *【[[罫紙]]】[[罫線]]が[[ひく|引いて]]ある[[かみ|紙]] *【[[警視]]】[[警察官]]の[[階級]]で、[[警部]]の[[上]]で[[警視正]]の[[下]]。 *【[[軽視]]】[[かるい|軽く]][[みる]]こと。 *【[[鶏子]]】[[ひよこ]]。 gxeo7sw2zn3i2gmf97xkxud9qdwcovw 0 46141 2340785 2340317 2026-09-02T00:14:05Z NekoyamaWataru 87354 /* {{hu}} */ 語句の修正 2340785 wikitext text/x-wiki {{DEFAULTSORT:fu}} {{also|fu|Fu|FU|-fu|fū|fú|Fú|fǔ|fû|Fǔ|fù|Fù|fŭ}} =={{hu}}== ==={{pron}}=== * {{hu-IPA}} * {{audio|hu|Hu-fú.ogg|音声}} ==={{etym}}1=== {{etyl|urj-pro|hu}} {{m|urj-pro|*puwe-||吹く}} より ===={{verb}}==== {{hu-verb}} # {{label|hu|ambitransitive|archaic|literary}} {{alternative form of|hu|fúj||吹く}} ====={{conjug}}===== {{hu-conj-vok|f|ú}} ====={{drv}}===== * {{l|hu|fúvós}}, {{l|hu|fafúvós}}, {{l|hu|rézfúvós}} {{hu-verbpref|fú|alá|át|be|bele|el|fel|félre|hátra|hozzá|ide|keresztül|ki|körül|le|meg|neki|oda|össze|rá|szét|tele|tovább|túl|végig|vissza|sep=4}} ==={{etym}}2=== ===={{interj}}==== {{head|hu|interjection}} # {{label|hu|colloquial}} [[うわー]]! ====={{syn}}===== {{top4}} * {{l|hu|ejha}} * {{l|hu|hűha}} * {{l|hu|hű}} * {{l|hu|tyűha}} * {{l|hu|tyű}} * {{l|hu|azta}} * {{l|hu|húha}} * {{l|hu|hú}} * {{l|hu|azt a mindenit}} * {{l|hu|ez igen}} * {{l|hu|ez már döfi}} {{bottom}} ===参考文献=== * {{R:ErtSz}} ---- =={{zh}}== [[category:{{zh}}]] '''[[Wiktionary:漢字索引 ピンイン f#fú]]'''参照。 s976vwrb2mm031tp8cughdfnpaiyfmc しゅうよう 0 49112 2340623 2221687 2026-09-01T16:16:01Z M-30722 1202 2340623 wikitext text/x-wiki {{kana-DEFAULTSORT}} {{also|じゅうよう}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana|h=y}} *【[[修養]]】[[学問]]を[[おさめる|修め]][[品性]]を[[みがく|磨き]][[自分]]の[[人格]]を[[たかめる|高める]]こと。 *【[[収用]]】①[[公共事業]]のために、[[個人]]や[[団体]]の[[財産権]]を[[強制]]的に[[くに|国]]や[[公共団体]]に移すこと。②[[とりあげる|取り上げ]]て[[使用]]すること。 *【[[収容]]】人や物をある[[場所]]や[[施設]]に[[いれる|入れる]]こと。 *【[[秋容]]】[[あき|秋]]の[[風景]]。 *【[[秋陽]]】秋の[[ひざし|日差し]]。 *【[[醜容]]】[[みにくい|醜い]][[容貌]]。 *【[[襲用]]】[[従来]]の物や[[やりかた|やり方]]を[[そのまま]][[うけつぐ|受け継い]]で[[つかう|使う]]こと。 ermj5l0cce56iaf3yc4aavzzhnis4z8 収用 0 51126 2340610 1631499 2026-09-01T16:04:05Z Jiba1219 100610 2340610 wikitext text/x-wiki {{kana-DEFAULTSORT|しゅうよう}} =={{L|ja}}== [[Category:{{ja}}]] ==={{pron}}=== {{ja-pron|しゅうよう|acc=0}} ==={{noun}}=== [[Category:{{ja}} {{noun}}]] [[Category:{{ja}} {{noun}}_サ変動詞]] '''[[収]] [[用]]'''([[しゅうよう]]) # [[公共事業]]のために、[[個人]]や[[団体]]の[[財産権]]を[[強制]]的に[[国]]や[[地方公共団体]]に移すこと。 # 取り上げて[[使用]]すること。 ===={{rel}}==== *{{prov}}:[[公用収用]] {{stub|ja}} 3x30v3mzhrsmolu0wd4xfsdojgbyury pordo 0 61839 2340629 1840088 2026-09-01T16:26:17Z M-30722 1202 2340629 wikitext text/x-wiki =={{L|io}}== ==={{etym}}=== {{etyl|eo|io}} {{m|eo|pordo}} < {{etyl|fr|io}} {{m|fr|porte}}, {{etyl|de|io}} {{m|de|Pforte}}, {{etyl|it|io}} {{m|it|porta}}, {{etyl|es|io}} {{m|es|puerta}} < {{etyl|la|io}} {{m|la|porta}} ==={{noun}}=== {{io-noun|pord}} #{{タグ|io|建築}}{{ふりがな|扉|とびら}}、[[ドア]]。 ===={{drv}}==== * {{l|io|pordego}} * {{l|io|pordisto}} * {{l|io|pordoklosheto}} =={{L|eo}}== ==={{etym}}=== {{etyl|la|eo}} {{m|la|porta}} ==={{pron}}=== {{eo-IPA|a=Eo-pordo.ogg}} ==={{noun}}=== {{eo-noun|root=pord}} #{{タグ|eo|建築}}{{ふりがな|扉|とびら}}、[[ドア]]。 ===={{drv}}==== * {{l|eo|pordego}} * {{l|eo|pordisto}} * {{l|eo|pordeto}} o6rbnb8lizbkepo885w6ybd0t0eovsl angulo 0 62974 2340630 1409661 2026-09-01T16:32:00Z M-30722 1202 [[en:angulo]]より 2340630 wikitext text/x-wiki {{also|ángulo|ângulo|Ângulo|-ângulo}} =={{L|io}}== ==={{etym}}=== {{io-bor|angle|angle||angolo||ángulo}} ==={{pron}}=== * {{IPA|lang=io|/anˈɡulo/}} ==={{noun}}=== {{io-noun|angul}} #{{ふりがな|角|かど}}。 #{{タグ|io|幾何学}}{{ふりがな|角|カク|yomilink=n}}。 =={{L|eo}}== ==={{etym}}=== {{etyl|la|eo}} {{m|la|angulus}} ==={{pron}}=== {{eo-pr|a=Eo-angulo.ogg}} ==={{noun}}=== {{eo-noun|root=angul}} #{{ふりがな|角|かど}}。 #{{タグ|eo|幾何学}}{{ふりがな|角|カク|yomilink=n}}。 ===={{drv}}==== {{top}} * {{l|eo|angula}} * {{l|eo|angulaĵo}} * {{l|eo|angule}} * {{l|eo|anguleca}} * {{l|eo|anguleto}} * {{l|eo|angulfidela}} * {{l|eo|angulilo}} * {{l|eo|angulŝtono}} * {{l|eo|buŝangulo}} * {{l|eo|centra angulo}} * {{l|eo|kaŝangulo}} * {{l|eo|kvarangulo}} * {{l|eo|kvinangulo}} * {{l|eo|lipangulo}} * {{l|eo|multangulo}} * {{l|eo|okangulo}} * {{l|eo|ortangulo}} * {{l|eo|sesangulo}} * {{l|eo|stratangulo}} * {{l|eo|triangulo}} {{bottom}} =={{L|es}}== ==={{pron}}=== {{es-pr}} ==={{verb}}=== {{head|es|verb form}} #{{l|es|angular}}の直説法現在第一人称単数形。 =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{l|pt|angular}}の直説法現在第一人称単数形。 =={{L|la}}== ==={{pron}}=== * {{la-IPA|angulō}} ==={{verb}}=== {{la-verb-form|angulō}} #{{l|la|angulāre}}の直説法能相現在第一人称単数形。 mcf1318pwyr2589d4mqax70b16c0o5f 财产 0 70328 2340621 2280534 2026-09-01T16:09:42Z Jiba1219 100610 2340621 wikitext text/x-wiki {{DEFAULTSORT:cai2chan3}} =={{L|zh}}== {{zh-cat|cai2chan3|noun|hsk=丙|hsk2=5}} {{yue-cat|choi4chaan2|noun}} {{nan-cat|chai5san2|noun}} {{nan-tws-cat|cai5suan2|noun}} {{hak-hl-cat|coi sanˊ|noun}} ==={{pron}}=== {{cmn-pron|cáichǎn|a=Zh-cáichan.ogg|z=n}} {{yue-pron|coi4 caan2|t=toi3 can2|h=n}} {{nan-pron|ml:châi-sán|t=cai5 suan2}} {{hak-pron|h=coi sanˊ}} ==={{noun}}=== {{zhchars|t=財產|mt=財産}} *量詞:{{ZHsim|[[份]], [[批]]}} #[[財産]]。 6cc14enc67v0dpma4qdjhht63p4jcat 財產 0 70330 2340620 2280535 2026-09-01T16:09:41Z Jiba1219 100610 /* {{L|zh}} */ 2340620 wikitext text/x-wiki {{kana-DEFAULTSORT|ざいさん}} =={{L|ja}}== ==={{kyujitai}}=== {{ja-kyujitai|ざいさん}} #{{kyujitai of|財産}} =={{L|zh}}== {{zh-cat|cai2chan3|noun}} {{yue-cat|choi4chaan2|noun}} {{nan-cat|chai5san2|noun}} {{nan-tws-cat|cai5suan2|noun}} {{hak-cat|chhoi2san3|noun}} {{hak-hl-cat|coi sanˊ|noun}} ==={{pron}}=== {{cmn-pron|cáichǎn|a=Zh-cáichan.ogg}} {{yue-pron|coi4 caan2|t=toi3 can2}} {{nan-pron|châi-sán|t=cai5 suan2}} {{hak-pron|chhòi-sán|h=coi sanˊ}} ==={{noun}}=== {{zhchars|s=财产|mt=財産}} *量詞:{{ZHtra|[[份]], [[批]]}} #[[財産]]。 =={{L|vi}}== ==={{noun}}=== {{vi-head|noun|tài|sản}} #[[財産]]。 1f556n10g2r3jxx5bdkobstv7ykhy4t itt 0 70626 2340790 2325138 2026-09-02T00:18:50Z NekoyamaWataru 87354 /* {{hu}} */ 語句の修正 2340790 wikitext text/x-wiki =={{hu}}== ==={{pron}}=== *{{hu-IPA}} *{{audio|hu|Hu-itt.ogg}} ==={{etym}}=== 指示代名詞 {{m|hu|e|e(z)}} の早期の別形 {{m|hu||i}} + 接尾辞 "{{m|hu|-tt}} (場所格接尾辞)" ==={{adverb}}=== {{hu-adv|-}} # {{label|hu|指示副詞}} [[ここ]]に、[[こちら]]に。 #: {{cot|hu|ott|q1=there}} #: {{uxi|hu|'''Itt''' születtem.|'''ここで'''私は生まれた。}} #: {{uxi|hu|'''Itt''' vagyok.|'''ここに'''います。}} ===={{drv}}==== *{{l|hu|itten}} ===={{comp}}==== {{top4}} *{{l|hu|emitt}} *{{l|hu|itthon}} *{{l|hu|ittlét}} *{{l|hu|ittlevő}} *{{l|hu|ittlévő}} *{{l|hu|itt-ott}} *{{l|hu|itt-tartózkodás}} *{{l|hu|ugyanitt}} {{bottom}} ===参考文献=== *{{R:ErtSz}} [[Category:{{hu}}_指示副詞]] otif3qoimwgr1mcrax67utb3yv42qyi 附近 0 74635 2340719 1474226 2026-09-01T18:53:19Z Jiba1219 100610 2340719 wikitext text/x-wiki {{DEFAULTSORT:ふきん}} =={{L|ja}}== [[category:{{ja}}]] ==={{noun}}=== [[category:{{ja}}_{{noun}}]] '''[[附]] [[近]]'''(ふきん [[付近]]) #ある[[地点]]に[[近接]]する[[一帯]]。 ===={{syn}}==== *[[近所]]、[[近辺]] ===={{trans}}==== *{{en}}:[[vicinity]] =={{L|zh}}== {{zh-cat|fu4jin4|noun|hsk=甲|hsk2=3}} {{yue-cat|fu6gan6|noun}} {{nan-cat|hu7kin7|noun}} {{hak-cat|fu-khiun|noun}} {{wuu-cat|vu3jin3|noun}} {{hsn-cat|fu4jin5|noun}} ==={{pron}}=== {{cmn-pron|fùjìn}} {{yue-pron|fu6 gan6}} {{nan-pron|qz,jj,ph:hù-kǔn/tp,xm:hū-kūn/kh,zz:hū-kīn/twvk:hù-kīn/km,twvt,sg:hù-kūn/yc,sg:hù-kērn}} {{hak-pron|fu-khiun|gd=fu4 kiun4}} {{wuu-pron|sh:6vu jin6}} {{hsn-pron|fu4 jin5}} ==={{noun}}=== {{zhchars}} #[[付近]]、[[近所]]。 =={{L|ko}}== ==={{noun}}=== {{ko-head|noun|부근}} #[[付近]]。 =={{L|vi}}== ==={{adjective}}=== {{vi-head|adjective|phụ|cận}} #[[付近]]の。 6x3gzzmki8xodcef1avm5hwhyvxwd91 修养 0 77652 2340605 1579187 2026-09-01T15:57:43Z Jiba1219 100610 2340605 wikitext text/x-wiki {{DEFAULTSORT:xiu1yang3}} =={{L|zh}}== {{zh-cat|xiu1yang3|noun|hsk=丁}} {{yue-cat|sau1yeung5|noun}} {{nan-cat|siu1iong2|noun}} {{nan-tws-cat|siu1iang2|noun}} {{hak-hl-cat|siuˋ rhongˋ|noun}} ==={{pron}}=== {{cmn-pron|xiūyǎng|z=n}} {{yue-pron|sau1 joeng5|h=n}} {{nan-pron|xm,qz:siu-ióng/zz:siu-iáng|t=siu1 iang2}} {{hak-pron|h=siuˋ rhongˋ}} ==={{noun}}=== {{zhchars|t=修養}} #[[修養]]。 #[[教養]]、[[素養]]。 580b30tdugvhj868ybtzc7go6txb3uk 修養 0 77653 2340603 1474831 2026-09-01T15:56:47Z Jiba1219 100610 2340603 wikitext text/x-wiki {{kana-DEFAULTSORT|しゅうよう}} =={{L|ja}}== [[Category:{{ja}}]] ==={{pron}}=== {{ja-pron|しゅうよう|acc=0}} ==={{noun}}=== [[Category:{{ja}} {{noun}}]] [[Category:{{ja}}_{{noun}}_サ変動詞]] {{jachars}}([[しゅうよう]]) #[[学問]]を[[おさめる|修め]][[品性]]を[[みがく|磨き]][[自分]]の[[人格]]を[[たかめる|高める]]こと。 ==={{verb}}=== {{日本語サ変活用}} =={{L|zh}}== {{zh-cat|xiu1yang3|noun}} {{yue-cat|sau1yeung5|noun}} {{nan-cat|siu1iong2|noun}} {{nan-tws-cat|siu1iang2|noun}} {{hak-cat|siû-yông|noun}} {{hak-hl-cat|siuˋ rhongˋ|noun}} ==={{pron}}=== {{cmn-pron|xiūyǎng}} {{yue-pron|sau1 joeng5}} {{nan-pron|xm,qz,tw:siu-ióng/zz:siu-iáng|t=siu1 iang2}} {{hak-pron|siû-yông|h=siuˋ rhongˋ}} ==={{noun}}=== {{zhchars|s=修养}} #修養。 #[[教養]]、[[素養]]。 =={{L|ko}}== ==={{noun}}=== {{ko-head|noun|수양}} #(日本語に同じ)修養。 =={{L|vi}}== ==={{verb}}=== {{vi-head|verb|tu|dưỡng}} #修養する。 i8brlyuurezfid8zmm6t79p755mr90n 弔電 0 80494 2340780 2301803 2026-09-02T00:11:23Z うーむ 129171 /* 日本語 */ 2340780 wikitext text/x-wiki {{kana-DEFAULTSORT|ちょうでん}} =={{L|ja}}== [[Category:{{ja}}]] ==={{noun}}=== [[Category:{{ja}}_{{noun}}]] '''[[弔]][[電]]'''([[ちょうでん]]) #[[弔辞]]を[[しるす|記し]]た[[電報]]。 #*[[わたし]]は[[w:大連市|大連]]で[[その]][[電報]]を[[うけとる|受取っ]]たが、[[何分]][[にも]][[とおい|遠く]][[かけはなれる|懸け離れ]]ている[[ので]]、[[単に]]'''弔電'''を[[発]]したに[[とどまる|とどまっ]]て、その[[葬儀]]にも[[つらなる]][[こと]]が[[できない|出来なかっ]]た。([[w:岡本綺堂|岡本綺堂]]『[https://www.aozora.gr.jp/cards/000082/files/45491_24688.html 深見夫人の死]』) ===={{pron|ja}}==== '''ちょ↗ーでん''' ===={{rel}}==== *[[祝電]] ===={{trans}}==== *[[{{en}}]]<!--* English-->: [[condolence]] [[telegram]] lzrqwy48kex0wpvb3fkkv6ovroxadzk ちょうでん 0 80495 2340786 406656 2026-09-02T00:14:18Z うーむ 129171 /* */ 2340786 wikitext text/x-wiki {{kana-DEFAULTSORT}} {{also|ちょうてん}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana|h=y}} *【[[弔電]]】お悔やみの電報。 *【[[冢田]]】墓地。 l132q1jf4zasxid3jqp27gzs07es8q4 主意 0 82530 2340730 1475997 2026-09-01T19:56:01Z Jiba1219 100610 2340730 wikitext text/x-wiki {{kana-DEFAULTSORT|しゅい}} =={{L|ja}}== [[Category:{{ja}}]] ==={{pron}}=== {{ja-pron|しゅい|acc=1}} ==={{noun}}=== [[Category:{{ja}}_{{noun}}]] '''[[主]] [[意]]'''([[しゅい]]) #[[おも|主]]な[[意味]]。 #[[主君]]の[[意志]]。 #[[理性]]や[[感情]]よりも意志を[[おもんじる|重んじる]]こと。 =={{L|zh}}== {{zh-cat|zhu3yi5|noun|hsk=甲|hsk2=4}} {{zhx-sic-cat|zu3yi4|noun}} {{yue-cat|jyu2yi3|noun}} {{nan-cat|chu2i3|noun}} {{nan-tws-cat|zu2i3|noun}} {{cpx-cat|zou3i4|noun}} {{hak-cat|chu3yi4|noun}} {{hak-hl-cat|zhuˊ rhiˇ|noun}} {{wuu-cat|tsy3i3|noun}} ==={{pron}}=== {{cmn-pron|zhǔyi|zhǔyì|s=zu3yi4}} {{yue-pron|zyu2 ji3}} {{nan-pron|chú-ì|t=zu2 i3}} {{cpx-pron|pt,jk,xy,yy,ft:zou3 i4/nr:zoo3 i4}} {{hak-pron|chú-yi|h=zhuˊ rhiˇ}} {{wuu-pron|sh:5tsy i}} ==={{noun}}=== {{zhchars}} #{{おくりがな2|考|かんが|え|かんがえ}}、[[意見]]。 =={{L|ko}}== ==={{noun}}=== {{ko-head|noun|주의}} #(日本語に同じ)主意。 mw8rudcckt73ktdoc2ncgj2rcnsr0m8 副因 0 83199 2340564 1476193 2026-09-01T14:44:43Z M-30722 1202 2340564 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|ko}}== ==={{noun}}=== {{ko-head|noun|부인}} #(日本語に同じ)副因。 nnm71en07zkbny7wnc6kn8cdmb489zw こうしょう 0 84969 2340566 2231235 2026-09-01T14:45:58Z M-30722 1202 2340566 wikitext text/x-wiki {{kana-DEFAULTSORT}} {{also|こうじょう|ごうしょう|ごうじょう}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana|h=y}} *【[[交唱]]】2つの合唱または2群の歌手の交替による歌い方。 *【[[交床]]】煎茶道で用いる釜敷き。 *【[[交渉]]】ある[[問題]]について[[あいて|相手]]と[[はなしあう|話し合う]]こと。 *【[[交照]]】親しくつきあうこと。 *【[[交牀]]】床几。 *【[[交睫]]】上下のまつげを合わせること。 *【[[交觴]]】酒杯をやりとりすること。[[献酬]]。 *【[[交鈔]]】中国の金・元・明代に使用された紙幣の総称。 *【[[候証]]】あるものとはっきり分かるしるし。 *【[[候鐘]]】時計。 *【[[光勝]]】平安中期の僧空也の諱。 *【[[光照]]・[[光昭]]】光り、輝くこと。 *【{{w|光紹}}】ベトナムの元号の一つ。 *【[[光象]]】光り、輝くこと。/気象学で、日月の周囲に生じるかさ、光環、幻日、虹、蜃気楼などをいう語。 *【[[厚㷖]]】正徳帝の諱。 *【[[厚償]]】十分に償う。 *【[[厚相]]】厚生大臣のこと。 *【[[厚賞]]】厚く賞すること。また、その賞与。 *【[[公傷]]】公務中に受けた傷。/相撲で、取り組み中に負った傷。 *【[[公勝]]】公式戦で勝つこと。 *【{{w|公妾}}】結婚の秘跡に反するために離婚と並んで側室制度が許されなかったキリスト教ヨーロッパ諸国の宮廷で主に近世に採用された歴史的制度。 *【[[公娼]]】おおやけに営業を認められた売春婦。昭和21(1946)年廃止。 *【[[公承]]】室町時代の僧。 *【[[公相]]】三公と宰相。天子を補佐する重職のこと。 *【[[公称]]】表向きに言われていること。一般的に発表されていること。 *【[[公紹]]】鎌倉時代の僧。 *【[[公証]]】[[おおやけ|公]]の[[証拠]]。 *【[[功章]]】旧陸軍で、軍馬、軍犬、軍鳩の名誉ある功績を表彰するために授けられた勲章に相当するもの。 *【[[功賞]]】功績の有無・程度を論じて決めること。 *【[[効祥]]】[[瑞祥]]が現れる。 *【[[勾銷]]】抹殺する。 *【[[口唱]]】歌う。 *【[[口承]]】口づてに伝承すること。 *【[[口証]]】口頭で証明すること。 *【[[口詔]]】詔を口で伝える。 *【[[口誦]]】口ずさむこと、声を出して読むこと。 *【{{w|句章県|句章}}】かつて中国に存在した県。 *【[[吼嘯]]】大声で[[嘯く]]。 *【[[咬傷]]】かみ傷、嚙まれた傷。 *【[[哄笑]]・[[鬨笑]]】多くの人が一斉に[[おおごえ|大声]]をあげて[[わらう|笑う]]こと。 *【[[好将]]】優れた武将。 *【[[好尚]]】好み、嗜好、はやり、流行。 *【[[好笑]]・[[好咲]]】好んで笑うこと。/おかしいこと。 *【{{w|孝昌県|孝昌}}】中国にある県。 *【[[宏敞]]】広平。 *【[[寇抄]]】[[寇掠]]する。 *【[[寇鈔]]】侵入して略奪する。 *【[[幸勝]]】幸せを願うこと。 *【[[幸賞]]】[[僥倖]]の賞。 *【[[工匠]]】[[細工]]や[[工作]]を業とする[[職人]]。 *【[[工商]]】工業と商業、職人と商人。 *【[[工廠]]・[[工厰]]】[[兵器]]などを[[製造]]する[[工場]]。 *【[[巧匠]]】巧みな大工。 *【[[巧笑]]】美しい笑い、愛嬌ある笑い。 *【[[広宵]]】墓穴。 *【{{w|広昌県|広昌}}】中国にある県。 *【[[広精]]】能楽で、物まねの各体にわたり広く深く習熟すること。 *【{{w|康勝}}】鎌倉時代の仏師。 *【{{w|康尚}}】平安中期の仏師、定朝(じょうちょう)の父。 *【[[康正]]】[[日本]]の[[元号]]の一つ。室町の中期、後花園天皇の年号。(1455・7/25~1457・9/28) *【[[弘敝]]】大きくて広いこと。[[広大]]。 *【{{w|弘昌}}】五胡十六国時代、南涼の君主禿髪傉檀の治世で使用された元号。 *【[[後省]]】奥向き。 *【[[後章]]】後の章。 *【[[後証]]】後日の証拠、のちのちの証拠。 *【[[恒象]]】一定の様子。 *【[[惶悚]]】不安。 *【[[慌悚]]】[[恐慌]]。 *【[[抗章]]】貴人や目上の人に意見を記載した書状を奉ること。 *【[[攻鈔]]】掠める。 *【[[昂聳]]】聳える。 *【[[昂霄]]】空の上に高く出る。 *【[[曠敞]]】広やか。 *【[[更嘗]]】[[経験]]。 *【[[更鐘]]】夜の時鐘。 *【[[校章]]】[[学校]]の[[記章]]。 *【[[桁上]]】[[衣桁]]の上。 *【[[構賞]]】賞をかける。 *【[[洪昇]]】中国、清初の劇作家。 *【[[洪腫]]】腫れ上がる。 *【[[洪鍾]]】中国、明の政治家。 *【[[洪鐘]]・[[鴻鐘]]】大きな釣り鐘。大鐘。 *【[[洽浹]]】ゆきわたる。 *【[[爻象]]】易の爻と、爻の相交わる関係。 *【[[犒賞]]】兵をねぎらい、賞を与える。犒賜。 *【[[狡捷]]】ずるくてすばしこい。 *【[[狡商]]】ずるがしこい商人。 *【[[浩唱]]】大声で歌う。 *【[[浩商]]】富を蓄えた大きな商家。[[豪商]]。 *【[[浩笑]]】大いに笑うこと。 *【[[甲勝]]】もっとも優れていること。 *【[[甲匠]]】具足師(ぐそくし)。鎧や兜を作ったり、修理したりする職人。 *【[[甲裳]]】鎧の草摺。 *【{{w|皇象}}】中国三国時代の呉の人物。 *【[[皎晶]]】明白なこと。 *【[[紅晶]]】紅色の水晶。 *【[[紅椒]]】唐辛子。 *【[[紅牆]]】赤壁。 *【[[紅粧]]・[[紅妝]]】紅でよそおうこと。 *【[[紅綃]]】紅色の、つや出しをしない絹。 *【[[紅裳]]】[[緋]]の袴。 *【[[絳裳]]】[[紅裙]]。 *【[[絳霄]]】赤い空。 *【[[綱傷]]】牛、馬が農機具や車などを引く時、引綱の摩擦によって起こる外傷。 *【[[綱掌]]】僧職の一。法会の儀式をつかさどる僧の役名。 *【[[翺翔]]】鳥が空高く飛ぶこと。自由気ままに行動すること。 *【[[考証]]・[[攷証]]】昔のことを調べ考え、証拠を引いて説明すること。 *【[[耗少]]】減少する。 *【[[肴将]]】塩。 *【[[膠庠]]】周代の学。 *【[[膠相]]】無能な大臣。 *【[[興昌]]】盛んにする。 *【[[興昭]]】平安時代前期の僧。 *【[[荒鐘]]】壊れた鐘。 *【[[虹裳]]】美しい[[裳]]。 *【[[行勝]]】脚絆。 *【[[行省]]】「行中書省」の略。中国元代の地方行政機関。 *【[[行粧]]】外出の時の装い。儀式の時などの服装。 *【[[行觴]]】杯をめぐらす。 *【[[行賞]]】賞を与えること。 *【[[行障]]】天皇・神祇の臨幸や霊柩の葬送などのとき、その前後左右を隠す為に用いた白布の幕。 *【[[衡縦]]】[[縦横]]。 *【[[詬笑]]】ののしり笑う。 *【[[講唱]]】唱読。 *【[[講誦]]】詩文を講じ、また声をあげて読むこと。 *【[[講頌]]】宮中の歌会などで、発声が行う初句の朗吟に続いて、2句目以下を発声と同音で合唱する役。 *【[[購賞]]】懸賞をつけて求める。 *【[[鉱床]]】[[工業]]的、[[商業]]的に採掘可能な程度の[[規模]]、[[品位]]を持つ[[鉱石]]を産出する場所。 *【[[鏗鐘]]・[[扣鐘]]・[[考鐘]]】鐘をうつ。 *【[[降将]]】敵に投降した将軍。 *【[[降昇]]】[[上下]]。 *【[[降祥]]】福をくだす。 *【[[降生]]】神仏が現世に生まれること。 *【[[香牀]]】[[香木]]の牀。 *【[[香粧]]】香料と化粧品。 *【[[香蕉]]】バナナの漢名。 *【[[高上]]】位が高いこと。 *【[[高勝]]】勝れる。 *【[[高升]]・[[高陞]]】官位や物価が高くなること。 *【[[高唱]]】大きな声で歌うこと。/声を大きくして主張すること。 *【[[高商]]】「高等商業学校」の略。 *【[[高敞]]】高い場所で見晴らしがよいこと。 *【[[高嘯]]】高く[[嘯く]]。 *【[[高声]]】[[たかい|高い]]声。[[おおきい|大きい]]声。 *【[[高姓]]】身分の高い家柄。/他人の姓を敬っている語。 *【[[高小]]】戦前にあった[[高等小学校]]の略。 *【[[高尚]]】[[知性]]や[[品格]]の[[程度]]が[[たかい|高く]][[上品]]なこと。 *【[[高承]]】他人を敬って、その人が承知することをいう語。手紙に使う。 *【{{w|高敞郡|高敞}}】韓国にある郡。 *【[[高昇]]】自らを高め、発展させること。 *【{{w|高昌}}】5世紀から7世紀にかけて、中国新疆ウイグル自治区トルファン地方に栄えた、漢民族の植民国家。640年、唐に滅ぼされた。 *【[[高松]]】喬松。 *【[[高照]]】高く照らす。 *【[[高姓]]】身分が高い家柄の姓。 *【[[高牆]]・[[高墻]]】高い垣。 *【[[高翔]]】空高く飛翔すること。 *【[[高聳]]・[[高竦]]】高く[[峙つ]]。 *【[[高舂]]】夕暮れ時。夕方。 *【[[高蹤]]】高尚な行跡。 *【{{w|黄勝}}】香港の学者、ジャーナリスト、企業家、政治家。 *【[[黄昇]]】中国、南宋の文学者。 *【[[黄松]]】赤松。 *【[[黄梢]]】黄色く若芽のもえでた梢。 *【[[黄腫]]】黄疸。 *【[[黄裳]]】黄色の裳。 *【{{w|黄邵}}】中国後漢時代末期の黄巾軍頭目の一人。 *【[[黄鐘]]】中国音楽の十二律の一。音律の基本となる音。 *【[[江上]]】大きな川の上、またはほとり。 *【[[蒿蕭]]】寂しい。 *【[[嗥嘯]]】叫ぶ。 *【[[摳裳]]】衣の裾を掲げる。 *【[[殽脀]]】骨付きの細かく切った肉の料理。 *【[[篙漿]]】竿。 *【[[緪升]]】元気。 *【[[虓将]]】猛将。 *【[[賡唱]]】唱酬。 gmfzjhiptxv6i3r73u3ra43168pi0jw 蜻蜓 0 98082 2340724 1477847 2026-09-01T19:34:27Z Jiba1219 100610 2340724 wikitext text/x-wiki {{kana-DEFAULTSORT|せいてい}} =={{L|ja}}== [[Category:{{ja}}]] ==={{noun}}=== [[Category:{{ja}}_{{noun}}]] [[Category:{{ja}}_季語_秋]] [[Category:{{ja}}_蜻蛉]] [[Category:熟字訓]] '''[[蜻]] [[蜓]]'''([[せいてい]]、[[とんぼ]]、[[やんま]]) #[[やんま]]。 ===={{pron|jpn}}==== ;せ↗ーてー =={{L|zh}}== {{zh-cat|qing1ting2|noun|hsk=丁}}{{topcat|zh|蜻蛉}} {{zhx-sic-cat|qin1tin2|noun}}{{topcat|zhx-sic|蜻蛉}} {{yue-cat|ching1ting4|noun}}{{topcat|yue|蜻蛉}} {{nan-cat|chheng1teng5|noun}}{{topcat|nan|蜻蛉}} {{gan-cat|qin1tin2|noun}}{{topcat|gan|蜻蛉}} ==={{pron}}=== {{cmn-pron|qīngtíng|s=qin1tin2}} {{yue-pron|cing1 ting4}} {{nan-pron|ml:chheng-thêng/tw:chheng-têng}} {{gan-pron|qin1 tin2}} ==={{noun}}=== {{zhchars}} #[[とんぼ]] ===={{rel}}==== *{{zh-ts|蜻蜓點水|蜻蜓点水}} {{topcat||蜻蛉}} 8rwrfq89wv9ksj6qd7cior70oee7mht 一身 0 99893 2340733 1657987 2026-09-01T20:14:53Z Jiba1219 100610 2340733 wikitext text/x-wiki {{kana-DEFAULTSORT|いっしん}} =={{L|ja}}== [[Category:{{ja}}]] ==={{pron}}=== {{ja-pron|いっしん|acc=3}} ==={{noun}}=== [[Category:{{ja}}_{{noun}}]] '''[[一]] [[身]]'''([[いっしん]]) #[[自分]]の[[からだ|体]]。 #一人の[[自己]]。[[自身]]の[[すべて]]。 #* 期待を一身に集める #* 責任を一身に背負う #* 一身を捧げる #* 一身を賭す ===={{rel}}==== *[[一身上]] =={{L|zh}}== {{zh-cat|yi1shen1|noun|hsk=丁}} {{yue-cat|yat1san1|noun}} {{nan-cat|it4sin1|noun}} {{hak-cat|yit5siin1|noun}} {{hsn-cat|i6shen1|noun}} ==={{pron}}=== *官話: :*標準中国語: ::[[w:拼音|拼音]]: yīshēn → '''yì'''shēn ::[[w:注音符号|注音符号]]: ㄧ ㄕㄣ ::[[w:ウェード式|ウェード式]]: i1 shên1 ::[[w:国語ローマ字|国語ローマ字]]: ishen ::[[w:通用拼音|通用拼音]]: yishen ::{{IPA|i⁵⁵⁻⁵¹ ʂən⁵⁵|lang=zh}} {{yue-pron|jat1 san1}} {{nan-pron|ml:it-sin/qz:chi̍t-sin}} {{hak-pron|yit-sṳ̂n}} {{hsn-pron|i6 shen1}} ==={{noun}}=== {{zhchars}} #[[全身]]。 =={{L|ko}}== ==={{noun}}=== {{ko-head|noun|일신}} #(日本語に同じ)一身。 adlwb5h7apocnvyra1j7z8mxtb2um5n 愚問 0 108291 2340742 1479369 2026-09-01T21:33:11Z うーむ 129171 /* 日本語 */ 2340742 wikitext text/x-wiki =={{ja}}== [[Category:{{ja}}|くもん ぐもん]] ==={{noun}}=== [[Category:{{ja}}_{{noun}}|くもん ぐもん]] '''[[愚]] [[問]]'''(ぐもん) #[[ばかげる|馬鹿げた]][[質問]]。 #{{タグ|ja|謙譲語}}[[自分]]の質問を[[謙遜]]する語。 ===={{pron|jpn}}==== ;ぐ↗もん ===={{rel}}==== *[[愚問愚答]] =={{ko}}== [[Category:{{ko}}|우문]] ==={{noun}}=== [[Category:{{ko}}_{{noun}}|우문]] {{lang|ko|'''愚問'''([[우문]])}} #(日本語に同じ)愚問 0turgfsf2jzyhkz3ytka5z70nl4idmg 2340748 2340742 2026-09-01T23:40:19Z うーむ 129171 /* 日本語 */ 2340748 wikitext text/x-wiki =={{ja}}== [[Category:{{ja}}|くもん ぐもん]] ==={{noun}}=== [[Category:{{ja}}_{{noun}}|くもん ぐもん]] '''[[愚]] [[問]]'''([[ぐもん]]) #[[ばかげる|馬鹿げた]][[質問]]。 #{{タグ|ja|謙譲語}}[[自分]]の質問を[[謙遜]]する語。 ===={{pron|jpn}}==== ;ぐ↗もん ===={{rel}}==== *[[愚問愚答]] =={{ko}}== [[Category:{{ko}}|우문]] ==={{noun}}=== [[Category:{{ko}}_{{noun}}|우문]] {{lang|ko|'''愚問'''([[우문]])}} #(日本語に同じ)愚問 nw92i9sgbrlmp2oc7tkg0h9xhbejopy 野獣 0 108446 2340809 2112067 2026-09-02T01:57:42Z ~2026-47581-76 133316 2340809 wikitext text/x-wiki {{kana-DEFAULTSORT|やじゅう}} {{also|野兽|野獸}} {{wikipedia}} =={{L|ja}}== {{ja-kanjitab|や|じゅう|yomi=o}} ==={{pron}}=== {{ja-pron|やじゅう|acc=0}} {{ja-accent-common|region=京阪|h|やじゅ|ー}} ==={{noun}}=== {{ja-noun|[[やじゅう]]}} #[[野生]]の[[けもの|獣]]。114514 j90g2h6qz8skxlr8kfwvbtm5pgird5d 2340813 2340809 2026-09-02T02:14:48Z 20041027 tatsu 59964 [[特別:Contributions/~2026-47581-76|~2026-47581-76]]による編集を取り消し、Kuroco2kによる最新版へと差し戻しを行いました。 2112067 wikitext text/x-wiki {{kana-DEFAULTSORT|やじゅう}} {{also|野兽|野獸}} {{wikipedia}} =={{L|ja}}== {{ja-kanjitab|や|じゅう|yomi=o}} ==={{pron}}=== {{ja-pron|やじゅう|acc=0}} {{ja-accent-common|region=京阪|h|やじゅ|ー}} ==={{noun}}=== {{ja-noun|[[やじゅう]]}} #[[野生]]の[[けもの|獣]]。 mm6727ez4kuo4ii7z1cbpb5h6c104a6 2340818 2340813 2026-09-02T04:34:19Z ~2026-47594-96 133318 /* */ 2340818 wikitext text/x-wiki 2340819 2340818 2026-09-02T05:09:43Z Kuroco2k 84207 [[Special:Contributions/~2026-47594-96|~2026-47594-96]] ([[User talk:~2026-47594-96|トーク]]) による版 [[Special:Diff/2340818|2340818]] を取り消し 2340819 wikitext text/x-wiki {{kana-DEFAULTSORT|やじゅう}} {{also|野兽|野獸}} =={{L|ja}}== {{wikipedia}} {{ja-kanjitab|や|じゅう|yomi=o}} ==={{pron}}=== {{ja-pron|やじゅう|acc=0}} {{ja-accent-common|region=京阪|h|やじゅ|ー}} ==={{noun}}=== {{ja-noun|[[やじゅう]]}} #[[野生]]の[[けもの|獣]]。 0vxtzczg1sj2vqfrt6vctym5sdyub5z 2340827 2340819 2026-09-02T06:03:57Z ~2026-47499-78 133320 [[Special:Contributions/Kuroco2k|Kuroco2k]] ([[User talk:Kuroco2k|トーク]]) による版 [[Special:Diff/2340819|2340819]] を取り消し 2340827 wikitext text/x-wiki 2340834 2340827 2026-09-02T06:09:03Z NDG 124532 [[特別:Contributions/~2026-47499-78|~2026-47499-78]]による編集を取り消し、Kuroco2kによる最新版へと差し戻しを行いました。 2340819 wikitext text/x-wiki {{kana-DEFAULTSORT|やじゅう}} {{also|野兽|野獸}} =={{L|ja}}== {{wikipedia}} {{ja-kanjitab|や|じゅう|yomi=o}} ==={{pron}}=== {{ja-pron|やじゅう|acc=0}} {{ja-accent-common|region=京阪|h|やじゅ|ー}} ==={{noun}}=== {{ja-noun|[[やじゅう]]}} #[[野生]]の[[けもの|獣]]。 0vxtzczg1sj2vqfrt6vctym5sdyub5z 2340837 2340834 2026-09-02T06:09:58Z 20041027 tatsu 59964 「[[野獣]]」を保護しました ([編集=自動承認された利用者のみ許可] (2026年9月9日 (水) 06:09(UTC)で自動的に解除) [移動=自動承認された利用者のみ許可] (2026年9月9日 (水) 06:09(UTC)で自動的に解除)) 2340819 wikitext text/x-wiki {{kana-DEFAULTSORT|やじゅう}} {{also|野兽|野獸}} =={{L|ja}}== {{wikipedia}} {{ja-kanjitab|や|じゅう|yomi=o}} ==={{pron}}=== {{ja-pron|やじゅう|acc=0}} {{ja-accent-common|region=京阪|h|やじゅ|ー}} ==={{noun}}=== {{ja-noun|[[やじゅう]]}} #[[野生]]の[[けもの|獣]]。 0vxtzczg1sj2vqfrt6vctym5sdyub5z 付録:ゲルマン祖語/warmaz 100 109172 2341185 2315766 2026-09-02T11:47:56Z Kuroco2k 84207 2341185 wikitext text/x-wiki {{DEFAULTSORT:warmaz}} =={{L|gem-pro}}== ==={{etym}}=== {{uncertain|gem-pro}}。以下の説がある。 #{{etyl|ine-pro|-}} {{term|ine-pro|*gʷʰer-}}か #{{etyl|ine-pro|-}} {{term|ine-pro|*wer-}}か ==={{pron}}=== * {{IPA|ˈwɑr.mɑz}} ==={{adjective}}=== {{gem-adj}} #{{おくりがな2|暖|あたた|かい|あたたかい}} {{gem-decl-adj-a|warm}} ===={{drv}}==== * [[付録:ゲルマン祖語/warmijanan|*warmijaną]] ===={{desc}}==== *{{ang}}: {{l|ang|wearm}} **{{en}}: {{l|en|warm}} *{{ofs}}: {{l|ofs|warm}} **西フリジア語: {{l|fy|waarm}} *{{osx}}: {{l|osx|warm}} *{{odt}}: *warm **{{nl}}: {{l|nl|warm}} ***{{af}}: {{l|af|warm}} *{{goh}}: {{l|goh|warm}} **{{de}}: {{l|de|warm}} *{{non}}: {{l|non|varmr}} **{{is}}: {{l|is|varmur}} **{{fo}}: {{l|fo|varmur}} **{{no}}: {{l|no|varm}} **{{sv}}: {{l|sv|varm}} **{{da}}: {{l|da|varm}} *{{got}}: {{l|got|𐍅𐌰𐍂𐌼𐍃|tr=warms}} [[en:Appendix:Proto-Germanic/warmaz]] ll9oaavg6o6rlvmodyaulxv4upc3fp9 涅槃寂静 0 110979 2340677 1697482 2026-09-01T17:30:52Z ~2026-47618-09 133310 2340677 wikitext text/x-wiki {{kana-DEFAULTSORT|ねはんじゃくじょう}} {{wikipedia}} =={{L|ja}}== ==={{etym}}=== {{compound|lang=ja|涅槃|寂静}} ==={{pron}}=== {{ja-pron|acc=4|ねはんじゃくじょう|acc_ref=DJR4}} {{ja-pron|acc=ねはん+じゃくじょう 0+0|ねはんじゃくじょう}} ==={{idiom}}=== [[Category:{{ja}} {{idiom}}]] {{ja-idiom|ねはんじゃくじょう|head=[[涅槃]][[寂静]]|reki=ねはんじやくじやう}} #{{context|lang=ja|仏教}}[[仏教]]の基本的・哲学的な主張を表わす[[成句]]の一つで、「[[煩悩]]の炎の吹き消された[[さとり]]の境地([[ニルヴァーナ]]:涅槃)は心が安らかに落ちついた(至福の)状態である」という意味。仏教が目標とする[[救済]]のありようを、[[個人]]の[[精神]]([[心]])についての[[観点]]からやや文学的に述べたもの。→[[涅槃]]。 #*涅槃寂静は[[三法印]]または[[四法印]]の一つ。 #*:古代インドにおいて伝統宗教である[[バラモン教]]でも、さとり(悟){{wp|悟り}}や涅槃について独自の[[思想]]・主張が展開されていた。涅槃寂静という語句にも、それらに対する[[アンチテーゼ]]としての、より明確な意味があったと考えられる。 ===={{rel}}==== *[[仏教]]、[[三法印]]、[[彼岸]] *{{syn}}: [[寂滅為楽]] ====備考==== *10のマイナス24乗などに相当する[[数詞]]としても用いるとされるが、古い[[文献]]における[[記載]]は[[確認]]されておらず、数詞としての[[根拠]]には[[疑義]]がある。 ==脚注== {{Reflist}} 4w3up2u1umg3k4xi2uekt2mgvycezd5 ふくいん 0 112533 2340562 2143774 2026-09-01T14:43:34Z M-30722 1202 2340562 wikitext text/x-wiki {{kana-DEFAULTSORT}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana|h=y}} *【[[副因]]】[[主因]]に次いで[[重要]]な[[要因]]。 *【[[幅員]]】[[はば|幅]]。 *【[[福音]]】[[かみ|神]]の[[すくう|救い]]の[[おしえる|教え]]。 *【[[福因]]】[[幸運]]を[[もたらす|齎した]][[原因]]や[[おこない|行い]]。 *【[[復員]]】[[兵役]]を[[とく|解かれ]]ること。 *【[[伏陰]]】[[陰気]]が[[こもる|籠もった]]ままで、[[さむい|寒い]][[なつ|夏]]。また、陰気が[[体内]]にあるさま。 cxf7gl9htqzxyfe1qet7btcgqkdgqdv rock 0 121947 2341184 2203289 2026-09-02T11:47:41Z Kuroco2k 84207 2341184 wikitext text/x-wiki {{also|Rock|röck}} =={{L|it}}== ==={{etym}}=== {{bor|it|en|rock}} ==={{pron}}=== {{it-pr|ròck}} ==={{noun}}=== {{it-noun|rock|m||invariable}} #{{context|music|lang=it}}[[ロック]]、[[ロックンロール]]。 ===参考文献=== * {{R:it:Treccani}} =={{L|en}}== ==={{pron}}=== * {{IPA|lang=en|/ɹɒk/|a=RP}} * {{enPR|rŏk|a=GA}}, {{IPA|lang=en|/ɹɑk/}} * {{音声|en|en-us-rock.ogg|a=US}} * {{IPA|lang=en|/ɹɔk/|a=AusE}} * {{homophones|lang=en|roc|rawk}} * {{rhymes|lang=en|ɒk|s=1}} ==={{etym}}1=== {{etyl|enm|en}} {{m|enm|rocke}}, {{m|enm|rokke}} < {{etyl|ang|en}} {{m|ang|*rocc}} および 後期{{etyl|xno|en}} {{m|xno|roche}}, {{m|xno|roque}} < {{etyl|ML.|en}} {{m|la-med|rocca}} (767年) < 語源{{unc|en|nocap=1}}。{{etyl|cel|en}}由来であると言われることもある(特に、おそらく{{etyl|cel-gau|en}})<ref>{{R:Etymonline|rock}}</ref>。{{etyl|gml|-}} {{m|gml|rocke}} とも関係あり。また{{etyl|VL.|en}} {{m|VL.||*rupica}} < {{m|la|rupes}} と推測されることもある<ref>https://www.etymonline.com/word/rock</ref>。 ===={{noun}}==== {{en-noun|s|-}} #{{ふりがな|岩|いわ}}、[[岩石]]。 #[[岩礁]]。 #{{context|UK|lang=en}}[[巨石]]。 #{{context|US|Canada|lang=en}}{{ふりがな|小石|こいし}}。 #{{context|landform|lang=en}}(草木のない){{ふりがな|島|しま}}、{{ふりがな|丘|おか}}。 #{{context|figuratively|lang=en}}[[堅固]]なもの。 #{{context|slang|lang=en}}[[宝石]]、[[ダイヤモンド]]。 #[[角氷]]。 #{{context|British|不可算|菓子|lang=en}}[[棒飴]]。 #{{context|US|slang|lang=en}}[[クラックコカイン]]。 #{{context|US|slang|lang=en}}(失敗を繰り返すような)[[ばか]]な人。 #{{context|South Africa|slang|derogatory|lang=en}}[[アフリカーナー]]。 #{{context|US|_|ポーカー|_|slang|lang=en}}[[ロック]]。 #{{context|basketball|informal|lang=en}}[[バスケットボール]]。 ====={{syn}}===== * {{sense|語義1}} {{l|en|stone}} * {{sense|語義2}} {{l|en|cliff}} * {{sense|語義3}} {{l|en|boulder}}, {{l|en|pebble}}, {{l|en|stone}} * {{sense|語義6}} {{l|en|foundation}}, {{l|en|support}} * {{sense|語義7}} {{l|en|gem}}, {{l|en|diamond}} * {{sense|語義8}} {{l|en|ice}}, {{l|en|ice cube}} * {{sense|語義10}} {{l|en|crack}} * {{l|en|bedrock}} ====={{drv}}===== {{col3|lang=en|abyssal rock|alum rock|ayers rock|azoic rock|badgerin rock|beaver rock|bedrock|between a rock and a hard place|big rock|blackhall rocks|blackrock|black rock|blue rocks|bonnie rock|bruce rock|burran rock|cap rock|caprock|carpenter rocks|carvel rock|castle rock|castlerock|chimney rock|cock of the rock|cock-of-the-rock|couta rocks|doctors rocks|dog rocks|dolomite rock|duck on a rock|dumb as a box of rocks|dumb as a rock|dumb as rocks|dumber than a box of rocks|dumber than a rock|dunnrock|dunn rock|dyke-rock|eagle rock|ear rocks|east rockingham|edinburgh rock|farallon rock|flatrock|flat rock|fly like a rock|frog rock|get one's rocks off|gibraltar rock|glenrock|glen rock|gorge rock|granite rock|gray rock method|gritrock|gyprock|hanging rock|hard as a rock|hardrock|hit rock bottom|hit the rock|hit the rocks|holt rock|honeycomb rock|host rock|igneous rock|indian paint rock|kick rocks|kirk rock|like a cow on a flat rock|like a cow pissing on a flat rock|lillian rock|lionrock|lion rock|little rock|liverock|live under a rock|living rock|logging rock|long rock|longrock|look under rocks|mantle rock|meatrock|metamorphic rock|moon rock|moorine rock|mudrock|ninja rock|north rocks|on the rocks|painting rocks|paint rock|pawnee rock|pet rock|plymouth rock|pyroclastic rock|quinns rocks|rackarock|red rock|red rocks|rendrock|rimrock|rock-alum|rock alum|rock and rye|rock ape|rock armour|rock armor|rock art|rock badger|rockbank|rock barnacle|rock bass|rock bee|rockberry|rock blenny|rock borer|rock bottom|rock-bound|rockbound|rockbrake|rock brake|rock broom|rock bun|rockbun|rock bunting|rockburst|rock bush quail|rock butter|rock cake|rock cam|rock candy|rock catchfly|rock catfish|rock cavy|rock cedar|rock centaury|rock chat|rock chestnut oak|rock chuck|rock climber|rock climbing|rock club moss|rock cocaine|rock cockle|rock cock|rock cod|rock conure|rock cork|rock cormorant|rock county|rock crab|rockcraft|rock cranberry|rock crawler|rockcress|rockcrusher|rock crystal|rock cycle|rockdale|rock dassie|rock dormouse|rock dots|röck döts|rock dove|rock drill|rock duck|rock-dumb|rockdumping|rock dust|rock eagle-owl|rock eel|rock elegant|rock elm|rock english|rockery|rockesque|rock face|rock falcon|rockfall|rock fall|rock falls|rock fern|rock ferry|rock fever|rockfill|rockfinch|rock firefinch|rockfish|rock flat|rock flour|rockflow|rock flower|rockfoil|rock forest|rock formation|rockfowl|rock frog|rock garden|rock geranium|rock glacier|rock glass|rockglass|rock goat|rock goby|rock goldenrod|rock goose|rock grape|rock greenling|rock grouper|rock grouse|rock guano|rock guenon|rock gunnel|rock gym|rockhampton|rock happy|rock-hard|rock hard|rock hare|rock hawk|rockhead|rockheaded|rockhearted|rock herring|rock hind|rockhole|rockhopper|rockhopper penguin|rock horned lizard|rock hound|rockhounding|rock house|rock hyrax|rock iguana|rockingham|rockish|rock island|rockist|rock jasmine|rock jock|rock-jumper|rockjumper|rock kangaroo|rock kelp|rock kestrel|rockland|rocklands|rock lark|rock larkspur|rocklea|rockleigh|rockless|rocklet|rockley|rockley mount|rock licker|rocklike|rock-like|rock lily|rockling|rock lizard|rock lobster|rock louse|rock madwort|rock manakin|rock maple|rock martin|rockmass|rockmeal|rock mechanics|rockmelon|rock milk|rock moss|rockmount|rock mouse|rock mulching|rockness|rock of ages|rock of gibraltar|rock oil|rock opossum|rock ousel|rockover|rock oyster|rock paper scissors|rock parakeet|rock parrot|rock partridge|rock penstemon|rock peppler|rock petronia|rockpicker|rockpicking|rock pigeon|rockpile|rock pine|rock pink|rock pipit|rock plant|rock plover|rock pocket mouse|rock poison|rock polypody|rockpool|rock port|rockport|rock pratincole|rock prickleback|rockproof|rock ptarmigan|rock purslane|rock python|rock quarry|rock rabbit|rock rapids|rock rat|rock rattlesnake|rock record|rock-ribbed|rock ringtail possum|rock river|rockrose|rock ruby|rock run|rockrunner|rock salmon|rock salt|rock samphire|rock sandpiper|rock sandwort|rock saxifrage|rocksberg|rockscape|rock scorpion|rock sea bass|rock sea lavender|rock seal|rock sequence|rocks for jocks|rocks glass|rock shag|rock shandy|rock shed|rockshelf|rock shell|rock shelter|rock shrike|rock shrimp|rockside|rocks in one's head|rock skipper|rock slide|rockslide|rocksnail|rock snail|rock snake|rock snipe|rock snot|rock soap|rock soapwort|rock solid|rock-solid|rock sparrow|rock spider|rockspider|rock spikemoss|rock spiraea|rocksprings|rock squirrel|rockstar|rock starling|rocksteady|rock-steady|rockstone|rockstop|rock sturgeon|rocksucker|rock sugar|rock sunfish|rock swallow|rock tapaculo|rock tar|rock thrush|rockton|rock tripe|rock trout|rock valley|rock varnish|rockville|rock violet|rock vole|rockwall|rock-wallaby|rockwarbler|rockward|rockwards|rock water|rockweed|rockwheel|rock whiting|rockwood|rock wool|rockwool|rockwork|rockwren|rock wren|rocky|rocky camp|rocky cape|rocky creek|rocky glen|rocky gully|rocky hall|rocky hills|rocky plain|rocky point|rocky river|rockyview|round rock|saba rock|saddle rock|scholar's rock|schooner on the rocks|seal rocks|seaside rock|sedimentary rock|see rocks ahead|seventeen mile rocks|sheetrock|sheet rock|shiprock|shot rock|skeleton rock|sleep like a rock|slickrock|soaprock|socotra rock|soldado rock|solid as a rock|south rock|south west rocks|split on a rock|split rock|steady as a rock|suck rocks|sunken rock|tarin rocks|tarpeian rock|tent rock|the rock|the rocks|tv rock|two rocks|victoria rock|wallace rockhole|water-rock|weeping rock|west rockhampton|white rock|window rock|woodrock|yellow rock}} ====脚注==== <references/> ==={{etym}}2=== {{etyl|enm|en}} {{m|enm|rokken}} < {{etyl|ang|en}} {{m|ang|roccian}} < {{etyl|gmw-pro|en}} {{m|gmw-pro|*rokkōn}} < {{etyl|gem-pro|en}} {{m|gem-pro|*rukkōną}} < {{etyl|ine-pro|en}} {{m|ine-pro|*h₃ruknéh₂ti}} < {{m|ine-pro|*h₃rewk-}}, {{m|ine-pro|*h₃runk-}} ===={{cogn}}==== {{cog|is|rukka}} {{cog|nl|rokken}} * 現代{{etyl|de|-}} {{m|de|rücken}} {{cog|gmh|rocken}} {{cog|la|runcāre}} {{cog|lv|rũķēt}} ===={{verb}}==== {{en-verb}} #{{context|transitive|and||intransitive|lang=en}}{{おくりがな2|優|やさ|しく|やさしい}}{{おくりがな3|揺|ゆ|り|動|うご|かす|ゆりうごかす}}。 #{{context|transitive|lang=en}}{{おくりがな2|激|はげ|しく|はげしい}}[[振動]]させる。 #{{context|intransitive|lang=en}}{{おくりがな2|揺|ゆ|れる|ゆれる}}。 #{{context|transitive|lang=en}}[[震撼]]させる。 #{{context|ambitransitive|euphemistic|slang|sex|lang=en}}{{おくりがな3|愛|あい|し|合|あ|う|あいしあう}}、[[性行為]]をする。 ====={{drv}}===== {{col3|lang=en|outrock|r0x0r|rerock|rockable|rockabye|rock along|rock and roll|rock 'n' roll|rocker|rocking|rock on|rock out|rock someone's socks|rock someone's socks off|rock someone's world|rock the boat|rock the house|rock up|rock with laughter|rocky|the hand that rocks the cradle is the hand that rules the world|the hand that rocks the cradle rules the world|unrocked}} ===={{noun}}==== {{en-noun}} #{{おくりがな2|揺|ゆ|れ|ゆれ}}、[[動揺]]。 ==={{etym}}3=== {{m|en|rock and roll}} の短縮形。{{m|en||rock}} という言葉の意味が、よりシンプルかつ現代的な、あるいは[[メタル]]に近いジャンルを指すようになったため {{m|en||rock and roll}} という言葉の意味が一般的には1950年代に起源を持つ、初期の形態を指すようになった。特に[[スイング感]]の強いものを指す。 ===={{noun}}==== {{en-noun|-}} #{{context|music|lang=en}}[[ロック]]、[[ロックンロール]]。 ====={{hypo}}===== {{col3|lang=en|acid rock|acoustic rock|active rock|adult-oriented rock|afro-rock|album-oriented rock|alternarock|alternative rock|alt-rock|anatolian rock|arena rock|art rock|blog rock|blues-rock|britrock|butt-rock|celtic rock|christian rock|classic rock|cock rock|country rock|dadrock|deathrock|desert rock|doom rock|electronic rock|folk rock|funk-rock|garage rock|glam rock|glitter rock|gothic rock|hard rock|indie rock|industrial rock|jazz-rock|j-rock|kindie rock|krautrock|light rock|lover's rock|math rock|mellow rock|noise rock|pop rock|post-rock|progressive rock|prog rock|psychedelic rock|pub rock|punk rock|raga rock|rap rock|reggae rock|rockadelic|rock against communism|rocktronic|rocktronica|roots-rock|shock rock|soft rock|southern rock|space rock|stadium rock|stoner rock|surf rock|synth rock|technorock|trap rock|trop rock|tropical rock|wizard rock|wrock|yacht rock|zamrock}} ===={{drv}}==== {{col3|lang=en|antirock|post-rock|postrock|prerock|rockability|rockabilly|rockathon|rock band|rockfest|rock group|rockhead|rockify|rockish|rockism|rock music|rock opera|rocksploitation|rock star|rocktastic|rockumentary|rock violin|rock whore}} ===={{verb}}==== {{en-verb}} #{{context|intransitive|lang=en}}ロックを[[演奏]]する。 #{{context|transitive|stative|lang=en}}ロックで{{おくりがな2|痺|しび|れ|しびれる}}させる、[[興奮]]させる。 #{{context|intransitive|lang=en}}ロックで踊り、楽しんでいる状態にある。 #{{context|transitive|lang=en}}[[エネルギッシュ]]に、かつ{{おくりがな|巧|み|たくみ}}に何かを{{おくりがな|熟|す|こなす}}。 #{{context|transitive|fashion|lang=en}}{{おくりがな3|着|き||熟|こな|す|きこなす}} #: {{syn|en|sport}} ====={{rel}}===== * {{l|en|ready to rock}} * {{l|en|rock and roll}} ==={{etym}}4=== {{etyl|enm|en}} {{m|enm|rok}}, {{m|enm|rocke}}, {{m|enm|rokke}} おそらく{{etyl|dum|en}} {{m|dum|rocke}} < {{etyl|gml|en}} {{m|gml|rocken}}, または {{etyl|non|en}} {{m|non|rokkr}} ===={{noun}}==== {{en-noun|s|-}} #{{context|countable|lang=en}}[[糸巻き棒]]。 ====={{syn}}===== * {{l|en|distaff}} ==={{etym}}5=== ===={{noun}}==== {{en-noun}} #{{l|en|roc}}の旧綴り。 ==={{anag}}=== * {{anagrams|en|a=ckor|Cork|Kroc|cork}} =={{L|nl}}== ==={{etym}}=== {{bor|nl|en|rock|dot=1}}{{doublet|nl|rots}} ==={{pron}}=== * {{IPA|lang=nl|/rɔk/}} * {{音声|nl|Nl-rock.ogg}} * {{rhymes|lang=nl|ɔk|s=1}} ==={{noun}}=== {{nl-noun|g=m|-|-}} #{{context|music|lang=nl}}[[ロック]]、[[ロックンロール]]。 ===={{drv}}==== {{col|lang=nl|rocken|rockconcert|rockmuzie}} =={{L|ca}}== ==={{etym}}=== {{bor|ca|en|rock}} ==={{pron}}=== * {{ca-IPA|ròc}}<!-- per DNV --> ==={{noun}}=== {{ca-noun|m|-}} #{{context|music|lang=ca}}[[ロック]]、[[ロックンロール]]。 ===参考文献=== * {{R:ca:IEC2}} * {{R:ca:GDLC}} * {{R:ca:DNV}} =={{L|sv}}== ==={{pron}}=== * {{IPA|lang=sv|/¹rɔk/|[¹rɔkː]}} * {{音声|sv|Sv-rock.ogg}} * {{rhymes|lang=sv|ɔk}} ==={{etym}}1=== {{etyl|gmq-osw|sv}} {{m|gmq-osw|rokker}} < {{etyl|gml|sv}} {{m|gml|rock}} < {{etyl|osx|sv}} {{m|osx|rok}} < {{etyl|gmw-pro|sv}} {{m|gmw-pro|*(h)rokk}} < {{etyl|gem-pro|sv}} {{m|gem-pro|*rukkaz}} ===={{noun}}==== {{sv-noun|c}} #{{context|clothing|lang=sv}}[[コート]]、[[外套]]。 ====={{decl}}===== {{sv-infl-noun-c-ar}} ====={{syn}}===== * {{l|sv|kappa}} * {{l|sv|päls}} * {{l|sv|trenchcoat}} * {{l|sv|ulster}} ====={{rel}}===== {{col3|lang=sv|rockslag|svartrock|söndagsrock|vinterrock|vitrock|ytterrock|överrock}} ==={{etym}}2=== {{bor|sv|en|rock}} ===={{noun}}==== {{sv-noun|c|2=-}} #{{context|music|uncountable|lang=sv}}[[ロック]]、[[ロックンロール]]。 ====={{decl}}===== {{sv-noun-unc-irreg-c|2=rocken}} ====={{drv}}===== * {{l|sv|könsrock}} * {{l|sv|punkrock}} * {{l|sv|rockband}} * {{l|sv|rockmusik}} * {{l|sv|rockring}} ====={{seealso}}===== * {{l|sv|rock'n'roll}} ===参考文献=== * {{R:svenska.se|so}} * {{R:svenska.se|saol}} * {{R:svenska.se|saob}} * {{R:runeberg.org|svetym|0738.html rock}} =={{L|es}}== {{wikipedia|lang=es}} ==={{etym}}=== {{bor|es|en|rock}} ==={{pron}}=== {{es-pr}} ==={{noun}}=== {{es-noun|m}} #{{context|music|lang=es}}[[ロック]]、[[ロックンロール]]。 ===={{usage}}==== {{es-unadapted}} ===={{drv}}==== * {{l|es|roquero|g=m}}, {{l|es|roquera|g=f}} * {{l|es|rockero|g=m}}, {{l|es|rockera|g=f}} * {{l|es|rockear}} * {{l|es|rockódromo|g=m}} * {{l|es|rock pesado}} ===={{rel}}==== {{col|lang=es|rocanrol|rocanrolero|rock and roll}} ===参考文献=== * {{R:es:DRAE}} =={{L|cs}}== ==={{etym}}=== {{bor|cs|en|rock}} ==={{pron}}=== * {{cs-IPA|rok}} ==={{noun}}=== {{cs-noun|m-in}} #{{context|music|lang=cs}}[[ロック]]、[[ロックンロール]]。 ===={{decl}}==== {{cs-decl-noun|rock|rocku|rocku|rock|rocku|rocku|rockem|rocky|rocků|rockům|rocky|rocky|[[rocích]], [[rockách]]|rocky}} ===={{drv}}==== * {{l|cs|rockový}} =={{L|hu}}== ==={{etym}}=== {{bor|hu|en|rock}} ==={{pron}}=== * {{hu-IPA|rokk}} * {{hyph|hu|rock}} ==={{noun}}=== {{hu-noun|ok}} #{{context|music|lang=hu}}[[ロック]]、[[ロックンロール]]。 #: {{syn|hu|rockzene}} ===={{decl}}==== {{hu-infl-nom|rocko|o}}{{hu-pos-otok|rock|j|jai}} ===={{drv}}==== * {{l|hu|rockos}} {{col3|lang=hu|dzsesszrock|rockalbum|rockbanda|rockcsillag|rockdal|rockegyüttes|rockénekes|rockfesztivál|rockgitár|rockgitáros|rockmusical|rockopera|rocksztár|rockvilág|rockzene|rockzenekar|rockzenész}} ===={{colloc}}==== {{col3|lang=hu|alternatív rock|progresszív rock|pszichedelikus rock}} ===={{rel}}==== {{col3|lang=hu|rock and roll|rocker}} =={{L|fi}}== ==={{etym}}=== {{bor|fi|en|rock}} ==={{pron}}=== {{fi-pronunciation|rok|h=rock}} ==={{noun}}=== {{fi-noun}} #{{context|music|lang=fi}}[[ロック]]、[[ロックンロール]]。 ===={{decl}}==== {{fi-decl-risti|rock|||a|i=0}} ===={{syn}}==== * {{l|fi|rock-musiikki}} * {{l|fi|rokki}} ===={{drv}}==== {{col3|lang=fi|goottirock|gospelrock|hevirock|instrumentaalirock|rockbändi|rockelokuva|rockklubi|rocklyriikka|rockmusiikki|rockooppera|rocktähti|rockvideo|rockyhtye|suomirock}} ===参考文献=== * {{R:KTSK|accessdate=2023-07-03}} =={{L|fr}}== ==={{etym}}=== {{bor|fr|en|rock}} ==={{pron}}=== * {{fr-IPA}} * {{音声|fr|Fr-rock.ogg|text=le rock}} * {{音声|fr|LL-Q150 (fra)-GrandCelinien-rock.wav|a=Paris}} * {{音声|fr|LL-Q150 (fra)-Poslovitch-rock.wav|a=Vosges}} * {{音声|fr|LL-Q150 (fra)-Jérémy-Günther-Heinz Jähnick-rock.wav|a=Somain}} ==={{noun}}=== {{fr-noun|m|-}} #{{context|music|lang=fr}}[[ロック]]、[[ロックンロール]]。 ===={{drv}}==== * {{l|fr|rockeur|g=m|pos=n}} / {{l|fr|rockeuse|g=f|pos=n}} * {{l|fr|rocker|pos=v}} ===参考文献=== * {{R:fr:TLFi}} =={{L|pl}}== {{wikipedia|lang=pl}} ==={{etym}}=== {{bor|pl|en|rock}} ==={{pron}}=== {{pl-pr|rok|a=LL-Q809 (pol)-Poemat-rock.wav|hh=rok,Rok|h=rock}} ==={{noun}}=== {{pl-noun|m-in}} #{{context|music|lang=pl}}[[ロック]]、[[ロックンロール]]。 ===={{decl}}==== {{pl-decl-noun-m-in|gens=rocka|accs=rocka|tantum=s}} ===={{drv}}==== {{col|lang=pl|rockowy|rockowiec}} ===={{rel}}==== {{col|lang=pl|rocker|rockerka|rockers|rockman|rockmanka|rockmen|rockmenka}} ===参考文献=== * {{R:pl:WSJP}} * {{R:pl:PWN}} =={{L|pt}}== {{wikipedia|lang=pt}} ==={{alter}}=== * {{l|pt|roque}} ==={{etym}}=== {{bor|pt|en|rock}} ==={{pron}}=== * {{音声|pt|LL-Q5146 (por)-Cathodography-rock.wav|a=Brazil}} * {{音声|pt|LL-Q5146 (por)-Santamarcanda-rock.wav|a=Porto}} * {{rhyme|lang=pt|ɔki|a1=ブラジル|ɔk|a2=ポルトガル|s=2}} ==={{noun}}=== {{pt-noun|m|-}} #{{context|music|lang=pt}}[[ロック]]、[[ロックンロール]]。 #: {{syn|pt|rock and roll}} ===={{drv}}==== {{col|lang=pt|roqueiro|rocalhada}} ===参考文献=== * {{R:pt:Aulete}} * {{R:pt:Priberam}} =={{L|ro}}== ==={{etym}}=== {{bor|ro|en|rock}} ==={{noun}}=== {{ro-noun|n|rockuri}} #{{context|music|lang=ro}}[[ロック]]、[[ロックンロール]]。 ===={{decl}}==== {{ro-noun-n-uri}} 6mxjq6d7akkpeklm38n934pvwv80n8d kaha 0 128758 2341183 2202682 2026-09-02T11:47:40Z Kuroco2k 84207 2341183 wikitext text/x-wiki {{also|kahá}} =={{L|ain}}== {{ain-kana}} ==={{pron}}=== * {{ain-IPA}} ==={{noun}}=== {{head|ain|noun|cat2=名詞 所属形}} #{{noun form of|ain|ka||所属形|tr={{ain-kana-conv|ka}}}} =={{L|agr}}== ==={{noun}}=== {{head|agr|noun}} #{{context|sleep|lang=agr}}{{ふりがな|夢|ゆめ}}。 =={{L|en}}== ==={{noun}}=== {{en-noun|?}} #{{l|en|proboscis monkey}}に同じ。 =={{L|ceb}}== ==={{pron}}=== * {{hyph|ceb|ka|ha}} ==={{etym}}1=== おそらく{{etyl|ms|ceb}} {{m|ms|kawah}} ===={{noun}}==== {{head|ceb|noun}} #{{context|kitchenware|lang=ceb}}[[中華鍋]]。 ====={{rel}}===== * {{l|ceb|kalaha}}, {{l|ceb|kawa}} ==={{etym}}2=== {{bor|ceb|es|caja}} < {{etyl|la|ceb}} {{m|la|capsa}} ===={{noun}}==== {{head|ceb|noun}} #{{ふりがな|箱|はこ}}、[[保管]]するためのもの。 #[[車体]]。 ==={{etym}}3=== {{unc|ceb}}。 ===={{adverb}}==== {{head|ceb|adverb}} #{{おくりがな|恐|らく|おそらく}}、[[きっと]]、[[多分]]。 =={{L|tl}}== ==={{etym}}=== {{bor|tl|es|caja}} < {{etyl|ca|tl}} {{m|ca|caixa}} または {{etyl|oc|tl}} {{m|oc|caissa}} < {{etyl|la|tl}} {{m|la|capsa}} ==={{pron}}=== {{tl-IPA}} ==={{noun}}=== {{tl-noun|b=ᜃᜑ}} #{{タグ|tl|容器|label=no|sort=*}}[[容器]]、[[ケース]]。 #{{ふりがな|箱|はこ}}、[[保管]]するためのもの。 #[[金庫]]。 #(タバコなどの)[[パック]]、箱。 #[[カート]]の{{おくりがな3|骨|ほね||組|ぐ|み|ほねぐみ}}、[[土台]]。 #[[車体]]。 ===={{rel}}==== {{col3|lang=tl|kahon|kahita|kahetilya|kahera|kahero|kason|kahoneriya|kahonsito|kaha talega|kaha rehistro|kaha de-yero|kahuwela|kahista}} ===参考文献=== * {{R:Pambansang Diksiyonaryo}} ==={{anag}}=== * {{anagrams|tl|a=aahk|haka}} =={{L|tet}}== ==={{noun}}=== {{head|tet|noun}} #{{context|ウリ科|lang=tet}}{{ふりがな|胡瓜|きゅうり}}。 ===={{syn}}==== * {{l|tet|pepinu}} =={{L|haw}}== ==={{pron}}=== * {{haw-IPA}} ==={{etym}}1=== {{etyl|poz-pol-pro|haw}} {{m|poz-pol-pro|*tafa}} < {{etyl|poz-oce-pro|haw}} {{m|poz-oce-pro|*tapa(s)}}<ref>{{R:Pollex|tafa.2}}</ref> < {{etyl|poz-pro|haw}} {{m|poz-pro|*tabas}}<ref>{{cite-book |pages=251-2 | last = Ross | first = Malcolm D. |first2=Andrew |first3=Meredith |last3=Osmond |last2=Pawley | year= 1998年 | title = The lexicon of Proto-Oceanic|volume=1: Material Culture | location = Canberra | publisher = Australian National University | isbn = 978-0-85883-507-8}}</ref> ===={{verb}}==== {{head|haw|verb}}{{context|transitive|lang=haw}} #{{おくりがな3|切|き|り|開|ひら|く|きりひらく}}、{{おくりがな3|切|き|り|裂|さ|く|きりさく}}。 #[[手術]]する、[[切開]]する。 #{{おくりがな3|引|ひ|っ|搔|か|く|ひっかく}}、{{おくりがな|刻|む|きざむ}}、{{おくりがな|彫|る|ほる}}。 #{{おくりがな|描|く|かく}}、[[描写]]する、[[スケッチ]]する。 #{{ふりがな|印|しるし}}をつける、{{おくりがな|記|す|しるす}}、[[マーク]]する。 #[[評価]]する、[[採点]]する、{{おくりがな3|格|かく||付|づ|け|格付け}}する。 ====={{drv}}===== * {{l|haw|hoʻokaha}} * {{l|haw|kaha kiʻi|pos=v}} * {{l|haw|kahakaha}} ===={{noun}}==== {{head|haw|noun}} #[[句読点]]、[[ダイアクリティカルマーク]]、[[発音区別符号]]。 #{{ふりがな|筋|すじ}}、[[線]]、[[ライン]]。 ====={{drv}}===== {{col3|lang=haw|kaha ana|kaha hoʻolawe|kaha hiō|kaha hoʻokomo|kaha hoʻonui|kaha kiko|kaha maha|kaha moe|kaha puʻunaue}} ==={{etym}}2=== {{etyl|poz-pol-pro|haw}} {{m|poz-pol-pro|*tafa}} < 東部{{etyl|poz-oce-pro|-}} *''tapa-'' ===={{cogn}}==== {{cog|sm|tafa}} {{cog|mi|taha}} {{cog|rap|taha}} ===={{noun}}==== {{head|haw|noun}} #[[場所]]。 ====={{drv}}===== * {{l|haw|kahaone}} * {{l|haw|kahawai}} ====={{rel}}===== * {{l|haw|kahakai}} ==={{etym}}3=== {{etyl|poz-pol-pro|haw}} {{m|poz-pol-pro|*tafa}} < {{etyl|poz-oce-pro|haw}} {{m|poz-oce-pro|*tap(w)a-}} ===={{cogn}}==== {{cog|mi|tataha}} ===={{verb}}==== {{head|haw|verb}}{{context|intransitive|lang=haw}} #{{おくりがな|翔|ぶ|とぶ}}、[[飛翔]]する。 #[[急降下]]する。 #〜のそばを{{おくりがな|通|る|とおる}}、{{おくりがな3|通|とお|り|過|す|ぎる|とおりすぎる}}。 #{{context|surfing|lang=haw}}[[ボディサーフィン]]する。 #{{context|basketball|lang=haw}}[[ドリブル]]する。 ====={{drv}}===== * {{l|haw|hoʻokaha}} * {{l|haw|papa kaha nalu}} ===脚注=== <references /> ===参考文献=== * {{R:haw:CHD}} =={{L|fi}}== ==={{etym}}=== {{etyl|urj-fin-pro|fi}} {{m|fiu-fin-pro|*kaha}} < おそらく{{etyl|gem-pro|fi}} {{m|gem-pro|*kazą}} ==={{pron}}=== {{fi-pronunciation}} ==={{noun}}=== {{fi-noun}} #(鳥、特に黒雷鳥を捕獲するための){{ふりがな|罠|わな}}、{{おくりがな3|仕|し||掛|か|け|しかけ}}、[[トラップ]]。 ===={{decl}}==== {{fi-decl-kala|kah|||a}} ===={{drv}}==== * {{l|fi|aurinkokaha}} ==={{anag}}=== * {{anagrams|fi|a=aahk|Haka|haka}} =={{L|mi}}== ==={{pron}}=== * {{IPA|lang=mi|/ˈkaha/|[ˈkɐhɐ]}} ==={{etym}}1=== {{etyl|poz-pol-pro|mi}} {{m|poz-pol-pro|*kafa}} < {{etyl|poz-pro|mi}} {{m|poz-pro|*kabal}} ===={{cogn}}==== {{cog|ms|kebal}} ===={{noun}}==== {{mi-noun}} #{{おくりがな|強|さ|つよさ}}、{{おくりがな|強|み|つよみ}}、[[パワー]]、[[エナジー]]。 ===={{verb}}==== {{mi-verb}} #{{おくりがな2|強|つよ|く|つよい}}なる、{{おくりがな2|逞|たくま|しく|たくましい}}なる。 ==={{drv}}=== {{col|lang=mi|kahanga|whakakaha|kahakore}} ==={{etym}}2=== {{etyl|poz-pol-pro|mi}} {{m|poz-pol-pro|*kafa}}<ref>{{cite-book|url=https://www.temarareo.org/PPN-Niu.html|title=Niu|year=2023年|site=Te Māra Reo|publisher=Benson Family Trust}}</ref> < {{etyl|poz-pro|mi}} {{m|poz-pro|*kapas}} ~ {{m|poz-pro|*kapat}}<ref>{{R:Pollex|KAFA.1|kafa.1}}</ref><ref name=RPO>{{cite-book |page=85 | last = Ross | first = Malcolm D. |first2=Andrew |first3=Meredith |last3=Osmond |last2=Pawley | year= 1998年 | title = The lexicon of Proto-Oceanic|volume=1: Material Culture | location = Canberra | publisher = Australian National University | isbn = 978-0-85883-507-8}}</ref> < {{etyl|aav|mi}}の言語 ===={{cogn}}==== {{cog|sm|kafa}} {{cog|ty|ʻaha}} {{cog|haw|ʻaha}} {{cog|ms|kapas}} {{cog|rar|kaʻa}} ===={{noun}}==== {{mi-noun}} #{{ふりがな|縄|なわ}}、{{ふりがな|輪|わ}}、{{おくりがな3|結|むす|び|目|め||むすびめ}}。 #: {{syn|mi|taura}} ===={{seealso}}==== * {{l|mi|puru}} ====脚注==== <references /> ==={{etym}}3=== {{rfe|mi}} ===={{noun}}==== {{mi-noun}} #{{context|landform|lang=mi}}{{ふりがな|尾根|おね}}、[[山陵]]、[[稜線]]。 #: {{syn|mi|kaka}} #[[家系]]、[[血統]]。 #: {{syn|mi|tāhuhu|kaka}} ===参考文献=== * {{cite-book|pages=96-7|entry=kaha|entryurl=https://digital.soas.ac.uk/CB00000037/00001/124x|title=A Dictionary of the Maori Language|first=Herbert William |last=Williams|year= 1917年}} * {{R:Te Aka 3}} 0z46kqhg2e8h0iprptsjd5o10iseh6a モジュール:ru-noun 828 130409 2340826 2140816 2026-09-02T05:54:00Z Kuroco2k 84207 2340826 Scribunto text/plain --[=[ This module contains functions for creating inflection tables for Russian nouns. Author: Benwing, rewritten from early version by Wikitiki89 Form of arguments: One of the following: 1. LEMMA|DECL|PLSTEM (all arguments optional) 2. ACCENT|LEMMA|DECL|PLSTEM (all arguments optional) 3. multiple sets of arguments separated by the literal word "or" Arguments: ACCENT: Accent pattern (a b c d e f b' d' f' f''). Multiple values can be specified, separated by commas. If omitted, defaults to a or b depending on the position of stress on the lemma or explicitly-specified declension. LEMMA: Lemma form (i.e. nom sg or nom pl), with appropriately-placed stress; or the stem, if an explicit declension is specified (in this case, the declension usually looks like an ending, and the stem is the portion of the lemma minus the ending). In the first argument set (i.e. first set of arguments separated by "or"), defaults to page name; in later sets, defaults to lemma of previous set. A plural form can be given, and causes argument n= to default to n=p (plural only). Normally, an accent is required if multisyllabic, and unaccented monosyllables with automatically be stressed; prefix with * to override both behaviors. DECL: Declension field. Normally omitted to autodetect based on the lemma form; see below. PLSTEM: special plural stem (defaults to stem of lemma) Additional named arguments: a: animacy (a/an/anim = animate, i/in/inan = inanimate, b/bi/both/ai = both (listing animate first in the headword), ia = both (listing inanimate first in the headword), otherwise inanimate) n: number restriction (p = plural only, s = singular only, b = both; defaults to both unless the lemma is plural, in which case it defaults to plural only) CASE_NUM or acc_NUM_ANIM or par/loc/voc: override (or multiple values separated by commas) for case/number combination; forms auto-linked; can have raw links in it, can have an ending "note" (*, +, 1, 2, 3, etc.) pltail: Specify something (usually a * or similar) to attach to the end of the last plural form when there's more than one. Used in conjunction with notes= to indicate that alternative plural forms are obsolete, poetic, etc. pltailall: Similar pltail= but attaches to all plural forms. Typically used in conjunction with notes= to make a comment about the plural as a whole (e.g. it's mostly hypothetical, rare and awkward, etc.). sgtail, sgtailall: Same as pltail=, pltailall= but for the singular. obltail, obltailall: Same as pltail=, pltailall= but for oblique cases (not the nominative or accusative). CASE_NUM_tail: Attach the argument to the end of the last form (whether there's one or more than one) for the particular case/number combination. Note that this doesn't work quite like pltail= or sgtail= in that it doesn't skip adding the argument when there's only one form. CASE_NUM_tailall: Attach the argument to the end of all forms specified for the particular case/number combination. Similar to pltailall= or sgtailall=. suffix: Add a suffix such as ся to all forms. prefix: Add a prefix to all forms. plhyp, plhypall, CASE_NUM_hyp, etc.: Same as pltail, pltailall, CASE_NUM_tal, etc. but specify that the marked forms are mostly hypothetical or rare/awkard. Generally you will want plhypall=y to mark the plural as hypothetical. Per word named arguments: All of the above named arguments have per-word variants, e.g. a1, a2, ...; n1, n2, ...; CASE_NUM1, CASE_NUM2, ...; pltail1, pltail2, ...; etc. These apply to the individual words of a form. Case abbreviations: nom: nominative gen: genitive dat: dative acc: accusative ins: instrumental pre: prepositional par: partitive loc: locative voc: vocative Number abbreviations: sg: singular pl: plural Animacy abbreviations: an: animate in: inanimate Declension field: One of the following for regular nouns: (blank) GENDER -VARIANT GENDER-VARIANT $ DECLTYPE DECLTYPE/DECLTYPE (also, can append various special-case markers to any of the above) Or one of the following for adjectival nouns: + +ь $ +short, +mixed or +proper +DECLTYPE GENDER if present is m, f, n or 3f; for regular nouns, required if the lemma ends in -ь or is plural, ignored otherwise. 3f is the same as f but in the case of a plural lemma in -и, detects a third-declension feminine with singular in -ь rather than a first-declension feminine with singular in -а or -я. VARIANT is one way of requesting variant declensions (see also special case (1) for variant nom pls, and special case (2) for variant gen pls). The currently allowed values are -ья (will select a mixed declension that has some normal declension in its singular and the -ья plural declension); -ин (for animate masculine nouns in -ин with plural in -е -- note that this is autodetected in the majority of cases where the ending in -янин or -анин); -ишко (used for inanimate neuter-form diminutive masculine nouns in -ишко [also сараю́шко] with nom pl -и and colloquial feminine-ending alternants in some singular cases); -ище (similar to -ишко but used for *animate* augmentative masculine neuter-form nouns in -ище). Variants -ишко and -ище must be given with with special case (1). $ is indeclinable words. It is principally useful in multiword expressions where some of the words are indeclinable. DECLTYPE is an explicit declension type. Normally you shouldn't use this, and should instead let the declension type be autodetected based on the ending, supplying the appropriate hint if needed (gender for regular nouns, +ь for adjectives). If provided, the declension type is usually the same as the ending, and if present, the lemma field should be just the stem, without the ending. Possibilities for regular nouns are (blank) or # for hard-consonant declension, а, я, о, е or ё, е́, й, ья, ье or ьё, ь-m, ь-f, ин, ёнок or онок or енок, ёночек or оночек or еночек, мя, -а or #-а, ь-я, й-я, о-и or о-ы, -ья or #-ья, $ (indeclinable). Old-style (pre-reform) declensions use ъ instead of (blank), ъ-а instead of -а, ъ-ья instead of -ья, and инъ, ёнокъ/онокъ/енокъ, ёночекъ/оночекъ/еночекъ instead of the same without terminating ъ. The declensions can also be written with an accent on them; this chooses the same declension (except for е vs. е́), but causes ACCENT to default to pattern b instead of a. For adjectival nouns, you should normally supply just + and let the ending determine the declension; supply +ь in the case of a possessive adjectival noun in -ий, which have an extra -ь- in most endings compared with normal adjectival nouns in -ий, but which can't be distinguished based on the nominative singular. You can also supply +short, +mixed or +proper, which constrains the declension appropriately but still autodetects the gender-specific and stress-specific variant. If you do supply a specific declension type, as with regular nouns you need to omit the ending from the lemma field and supply just the stem. Possibilities are +ый, +ое, +ая, +ій, +ее, +яя, +ой, +о́е, +а́я, +ьій, +ье, +ья, +-short or +#-short (masc), +о-short, +о-stressed-short or +о́-short, +а-short, +а-stressed-short or +а́-short, and similar for -mixed and -proper (except there aren't any stressed mixed declensions). DECLTYPE/DECLTYPE is used for nouns with one declension in the singular and a different one in the plural, for cases that PLVARIANT and special case (1) below don't cover. Special-case markers: (1) for Zaliznyak-style alternate nominative plural ending: -а or -я for masculine, -и or -ы for neuter (2) for Zaliznyak-style alternate genitive plural ending: -ъ/none for masculine, -ей for feminine, -ов(ъ) for neuter, -ей for plural variant -ья * for reducibles (nom sg or gen pl has an extra vowel before the final consonant as compared with the stem found in other cases) ;ё for Zaliznyak-style alternation between last е in stem and ё TODO: 1. Multi-word issues: -- FIXME: Make sure internal_notes handled correctly; we may run into issues with multiple internal notes from different words, if we're not careful to use different footnote symbols for each type of footnote (which we don't do currently). [NOT DONE, MAY NOT DO] -- Handling default lemma: With multiple words, we should probably split the page name on spaces and default each word in turn [NOT DONE, MAY NOT DO] 2a. FIXME: For -ишко diminutives and -ище augmentatives, should add an appropriate category of some sort (currently marked by colloqfem= in category). 2b. FIXME: Adding a note to dat_sg also adds it to loc_sg when it exists; seems wrong. See луг. 2c. FIXME: When you have both d' and f in feminines and you use sgtail=*, you get two *'s. See User:Benwing2/test-ru-noun-debug. 3. ADJECTIVE FIXMES: 3a. FIXME: Change calls to ru-adj11 to use the new proper name support in ru-adjective. 3b. FIXME: Test that omitting a manual form in ru-adjective leaves the form as a big dash. 3c. FIXME: какой-либо and какой-то display genitives with translit -go instead of -vo. To fix this properly requires implementing real manual translit for adjectives. 3d. FIXME: Implement real manual translit for adjectives. 5. [FIXME: Consider adding an indicator in the header line when the ё/e alternation occurs. This is a bit tricky to calculate: If special case ;ё is given, but also if ё occurs in the stem and the accent pattern is as follows -- for sg-only, b' d' f' f'', also b d f if the noun is masc or 3rd-decl fem (i.e. nom-sg ending is non-syllabic); for pl-only, e f f' f'', also b b' c if the gen pl is non-syllabic; for sg/pl, any but a or b, also b if either nom sg or gen pl is non-syllabic. But it gets more complicated due to overrides. An alternative is to check all forms to see if ё is present in some but not all; but this is tricky also because e.g. reducibles frequently have ё/null alternation, which doesn't count, and some endings have е or ё in them, which also doesn't count. If we were to do it this way, we'd have to (a) count the number of е's in the form(s) with ё and verify that there's at least one form without ё and with one more е than in the form(s) with ё (and it gets trickier if different forms with ё have different numbers of е in them, although that is probably rare); and (b) ignore the appropriate endings (the best way to do this would probably be to look at the actual suffixes that were generated in args.suffixes and chop off any matching ending in the actual form(s), but also chop off final -е/ё, as well as -ев(ъ)/-ёв(ъ)/-ей/-ёй in the gen pl, which is frequently overridden, unless perhaps the stem ends in the same way). It'd probably not possible to do this in a 100% foolproof way but can be "good enough" for nearly all circumstances.] [MIGHT BE TOO MUCH WORK] 6. HEADWORD FIXMES: 6a. FIXME: In ru-headword, create a category for words whose gender doesn't match the form. (This is easy to do for ru-noun+ but harder for ru-noun. We would need to do limited autodetection of the ending: for singulars, -а/я should be feminine, -е/о/ё should be neuter, -ь should be masculine or feminine, anything else should be masculine; for plurals, -и/ы should be masculine or feminine, -а/я should be neuter except that -ія can be feminine or neuter due to old-style adjectival pluralia tantum nouns, anything else can be any gender.) 6b. FIXME: Recognize indeclinable nouns and indicate as indeclinable. Probably should work by checking the case forms to see if they're the same. 9. FIXME: Change stress-pattern detection and overriding to happen inside of looping over the two parts of a slash decl. Requires that the loop over the two parts happen outside of the loop over stress patterns. Requires that the category code get split into two parts, one to handle combined singular/plural categories that goes outside the two loops, and one to handle everything else that goes inside the two loops. 10. FIXME: override_matches_suffix() had a free variable reference to ARGS in it, which should have triggered an error whenever there was a nom_sg or nom_pl override but didn't. Is there an error causing this never to be called? Check. 11a. FIXME: In a multiword lemma, using loc2=+ causes only the second word to get linked instead of the whole expression. Same for par2=+, voc2=+. 11b. FIXME: Using loc=+ with a multiword lemma should do the right thing, same as if locN=+ is specified for each individual word. Instead it generates the locative as a whole from the dative, which fails e.g. if some of the words are adjectival. Same for par=+, voc=+. 13. Multi-word issues: -- Setting n=pl when auto-detecting a plural lemma. How does that interact with multi-word stuff? (DONE) -- compute_heading() -- what to do with multiple words? I assume we should display info on the first noun (non-indeclinable, non-adjectival), and on the first adjectival word otherwise, and finally on an indeclinable word (DONE) -- args.genders -- it should presumably come from the same word as is used in compute_heading(); but we should allow the overall gender to be overridden, at least in ru-noun+ (DONE) -- Bug in args.suffix: Gets added to every word in attach_with() and then again at the end, after pltail and such. Needs to be added to the last word only, before pltail. Need also suffixN for individual words. (DONE, NEEDS TESTING) -- Should have ..N versions of pltail and variants. (DONE, NEEDS TESTING) -- Need to handle overrides of acc_sg, acc_pl (DONE) -- Overrides of nom_sg/nom_pl should also override acc_sg/acc_pl if it was originally empty and the animacy is inanimate; similarly for gen_sg/gen_pl and animates; this needs to work both for per-word and overall overrides. (DONE) -- do_generate_forms(_multi) need to run part of make_table(), enough to combine all per_word_info into single lists of forms and store back into args[case]. (DONE, NEEDS TESTING) -- In generate_forms, should probably check if a=="i" and only return acc_sg_in as acc_sg=; or if a=="a" and only return acc_sg_an as acc_sg=; in old/new comparison code, do something similar, also when a=="b" check if acc_sg_in==acc_sg_an and make it acc_sg; when a=="b" and the _in and _an variants are different, might need to ignore them or check that acc_sg_in==nom_sg and acc_sg_an==gen_sg; similarly for _pl (DONE, NEEDS TESTING) -- Need to test with multiple words! [DONE] -- Current handling of <adj> won't work properly with multiple words; will need to translate word-by-word in that case (should be solved by manual-translit branch) [DONE] 14. In multiple-words branch, fix ru-decl-noun-multi so it recognizes things like *, (1), (2) and ; without the need for a separator. Consider using semicolon as a separator, since we already use it to separate ё from a previous declension. Maybe use $ or ~ for an indeclinable word; don't use semicolon. [IMPLEMENTED. NEED TO TEST.] 16. [Consider having ru-noun+ treat par= as a second genitive in the headword, as is done with край] [WON'T DO] 17. [FIXME: Consider removing slash patterns and instead handling them by allowing additional declension flags 'sg' and 'pl'. This simplifies the various special cases caused by slash declensions. It would also be possible to remove the special plural stem, which would get rid of more special cases. On the other hand, it makes it more complicated to support plural variant -ья with all singular types, and the category code that displays things like "Russian nouns with singular -X and plural -Y" also gets more complicated, and there's something convenient and intuitive about plural stems, and slash declensions are also convenient and at least somewhat intuitive. One possibility is to externally allow slash declensions and special plural stems and rewrite them internally to separate stems with 'sg' and 'pl' declension flags; but there are still the two coding issues mentioned above.] 18. [FIXME: Consider redoing slash patterns so they operate at the outer level, i.e. things like special cases apply separately in the singular and plural part of the slash pattern.] 19. In ru-noun, don't recognize -а with m as plural unless (1) or n=pl is also given, because there are masculine words with the feminine ending. Check using the test code whether this changes anything. Also check if there are other similar cases (neuter with -и isn't parallel because -и is always plural). [IMPLEMENTED. NEED TO TEST.] 19a. Internal notes weren't propagated properly from adjectives. [IMPLEMENTED. NEED TO TEST.] 19b. Add support for -ишко and -ище variants (p. 74 of Z), which conversationally and/or colloquially have feminine endings in certain cases. [IMPLEMENTED. NEED TO TEST. MAKE SURE THE INTERNAL NOTES APPEAR.] 19d. For masculine animate neuter-form nouns, the accusative singular ends in -а (-я soft) instead of -о. [IMPLEMENTED. NEED TO TEST. NOTE: Currently this variant only can be selected using new-style arguments where the gender can be given. Perhaps we should consider allowing gender to be specified with old-style explicit declensions.] 21. Put back gender hints for pl adjectival nouns; used by ru-noun+. [IMPLEMENTED. NEED TO TEST.] 23. Mixed and proper-noun adjectives have built-in notes. We need to handle those notes with an "internal_notes" section similar to what is used in the adjective module. [IMPLEMENTED. NEED TO TEST.] 24. Adjective detection code here needs to work the same as for the adjective module, in particular in the handling of short, stressed-short, mixed, proper, stressed-proper. [IMPLEMENTED. NEED TO TEST.] 25. Consider simplifying plural-variant code to only allow -ья as a plural variant [and maybe even change that to be something like (1')]. [IMPLEMENTED REDUCTION OF PLURAL VARIANTS TO -ья; PLURAL-VARIANT CODE STILL COMPLEX, THOUGH. NEED TO TEST.] 26. Automatically superscript *, numbers and similar things at the beginning of a note. Also do this in adjective module. [IMPLEMENTED. NEED TO TEST.] 28. Make the check for multiple stress patterns (categorizing/tracking) smarter, to keep a list of them and check at the end, so we handle multiple stress patterns specified through different arg sets. [IMPLEMENTED; NEED TO TEST.] 29. More sophisticated handling of user-requested plural variant vs. special case (1) vs. plural-detected variant. [IMPLEMENTED. NEED TO TEST FURTHER.] 30. Solution to ambiguous plural involving gender spec "3f". [IMPLEMENTED; NEED TO TEST. Use запчасти, новости.] 33. With pluralia tantum adjectival nouns, we don't know the gender. By default we assume masculine (or feminine for old-style -ія nouns) and currently this goes into the category, but shouldn't. [IMPLEMENTED.] 39. [Eventually: Even with decl type explicitly given, the full stem with ending should be included.] [MAY NEVER IMPLEMENT] 40. [Get error "Unable to dereduce" with strange noun ва́йя, what should happen?] [WILL NOT FIX; USE AN OVERRIDE] 41. In творог, module generates partitive творогу́ when it should copy the dative творогу́,тво́рогу. (DONE) 42. [[груз 200]] doesn't work. Interprets 200 as a footnote symbol. 43. When converting е -> ё not after cons and with translit, we should convert e -> o to avoid double j. (DONE) 44. FIXME: In ро́вня/ровня́, similarly with неровня, marks genitive plural ровня́ as irregular even though it isn't. (NOT OUR ERROR; THE DECLENSIONS OF THESE NOUNS MARKED THE ENDING-STRESSED VARIANTS WITH (2).) ]=]-- local m_utilities = require("モジュール:utilities") local ut = require("モジュール:utils") local m_links = require("モジュール:links") local com = require("モジュール:ru-common") local nom = require("モジュール:ru-nominal") local m_ru_adj = require("モジュール:ru-adjective") local m_ru_translit = require("モジュール:ru-translit") local strutils = require("モジュール:string utilities") local scriptutils = require("モジュール:script utilities") local m_table_tools = require("モジュール:table tools") local m_debug = require("モジュール:debug") local export = {} local lang = require("モジュール:languages").getByCode("ru") local Latn = require("モジュール:scripts").getByCode("Latn") local u = mw.ustring.char local rfind = mw.ustring.find local rsubn = mw.ustring.gsub local rmatch = mw.ustring.match local rsplit = mw.text.split local ulower = mw.ustring.lower local usub = mw.ustring.sub local ulen = mw.ustring.len local AC = u(0x0301) -- acute = ́ local CFLEX = u(0x0302) -- circumflex = ̂ local PSEUDOCONS = u(0xFFF2) -- pseudoconsonant placeholder, matching ru-common local IRREGMARKER = "△" local HYPMARKER = "⟐" -- text class to check lowercase arg against to see if Latin text embedded in it local latin_text_class = "[a-zščžěáéíóúýàèìòùỳâêîôûŷạẹịọụỵȧėȯẏ]" -- 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 -- version of rfind() that lowercases its string first, for case-insensitive matching local function rlfind(term, foo) return rfind(ulower(term), foo) end local function track(page) m_debug.track("ru-noun/" .. page) return true end -- version of ut.insert_if_not() that makes sure 'false' doesn't get inserted by mistake local function insert_if_not(foo, bar) assert(bar ~= false) ut.insert_if_not(foo, bar) end -- Fancy version of ine() (if-not-empty). Converts empty string to nil, -- but also strips leading/trailing space and then single or double quotes, -- to allow for embedded spaces. local function ine(arg) if not arg then return nil end arg = rsub(arg, "^%s*(.-)%s*$", "%1") if arg == "" then return nil end local inside_quotes = rmatch(arg, '^"(.*)"$') if inside_quotes then return inside_quotes end inside_quotes = rmatch(arg, "^'(.*)'$") if inside_quotes then return inside_quotes end return arg end -- FIXME: Move to utils -- Iterate over a chain of parameters, FIRST then PREF2, PREF3, ..., -- inserting into LIST (newly created if omitted). Return LIST. local function get_arg_chain(args, first, pref, list) if not list then list = {} end local val = args[first] local i = 2 while val do table.insert(list, val) val = args[pref .. i] i = i + 1 end return list end -- synthesize a frame so that exported functions meant to be called from -- templates can be called from the debug console. local function debug_frame(parargs, args) return {args = args, getParent = function() return {args = parargs} end} end local function rutr_pairs_equal(term1, term2) local ru1, tr1 = term1[1], term1[2] local ru2, tr2 = term2[1], term2[2] local ru1entry, ru1notes = m_table_tools.separate_notes(m_links.remove_links(ru1)) local ru2entry, ru2notes = m_table_tools.separate_notes(m_links.remove_links(ru2)) if ru1entry ~= ru2entry then return false end local tr1entry, tr1notes local tr2entry, tr2notes if tr1 then tr1entry, tr1notes = m_table_tools.separate_notes(tr1) end if tr2 then tr2entry, tr2notes = m_table_tools.separate_notes(tr2) end if tr1entry == tr2entry then return true elseif type(tr1entry) == type(tr2entry) then return false else tr1entry = tr1entry or nom.translit_no_links(ru1entry) tr2entry = tr2entry or nom.translit_no_links(ru2entry) return tr1entry == tr2entry end end local function contains_rutr_pair(list, pair) for _, item in ipairs(list) do if rutr_pairs_equal(item, pair) then return true end end return false end -- Clone parent's args while also assigning nil to empty strings. local function clone_args(frame) local args = {} for pname, param in pairs(frame:getParent().args) do args[pname] = ine(param) end return args end -- Old-style declensions. local declensions_old = {} -- New-style declensions; computed automatically from the old-style ones, -- for the most part. local declensions = {} -- Internal notes for old-style declensions. local internal_notes_table_old = {} -- Same for new-style declensions. local internal_notes_table = {} -- Category and type information corresponding to declensions: These may -- contain the following fields: 'singular', 'plural', 'decl', 'hard', 'g', -- 'suffix', 'gensg', 'irregpl', 'alt_nom_pl', 'cant_reduce', 'ignore_reduce', -- 'stem_suffix'. -- -- 'singular' is used to construct a category of the form -- "Russian nouns SINGULAR". If omitted, a category is constructed of the -- form "Russian nouns ending in -ENDING", where ENDING is the actual -- nom sg ending shorn of its acute accents; or "Russian nouns ending -- in suffix -ENDING", if 'suffix' is true. The value of SINGULAR can be -- one of the following: a single string, a list of strings, or a function, -- which is passed one argument (the value of ENDING that would be used to -- auto-initialize the category), and should return a single string or list -- of strings. Such a category is only constructed if 'gensg' is true. -- -- 'plural' is analogous but used to construct a category of the form -- "Russian nouns with PLURAL", and if omitted, a category is constructed -- of the form "Russian nouns with plural -ENDING", based on the actual -- nom pl ending shorn of its acute accents. Currently no plural category -- is actually constructed. -- -- In addition, a category may normally constructed from the combination of -- 'singular' and 'plural', appropriately defaulted; e.g. if both are present, -- the combined category will be "Russian nouns SINGULAR with PLURAL" and -- if both are missing, the combined category will be -- "Russian nouns ending in -SGENDING with plural -PLENDING" (or -- "Russian nouns ending in suffix -SGENDING with plural -PLENDING" if -- 'suffix' is true). Note that if either singular or plural or both -- specifies a list, looping will occur over all combinations. Such a -- category is constructed only if 'irregpl' or 'alt_nom_pl' or 'suffix' -- is true or if the declension class is a slash class. -- -- 'decl' is "1st", "2nd", "3rd" or "indeclinable"; 'hard' is "hard", "soft" -- or "none"; 'g' is "m", "f", "n" or "none"; these are all traditional -- declension categories. -- -- If 'suffix' is true, the declension type includes a long suffix -- added to the string that itself undergoes reducibility and such, and so -- reducibility cannot occur in the stem minus the suffix. Categories will -- be created for the suffix. -- -- 'alt_nom_pl' indicates that the declension has an alternative nominative -- plural (corresponding to Zaliznyak's special case 1; compare special case 2 -- for alternative genitive plural). 'irregpl' indicates that the entire -- plural is irregular. -- -- In addition to the above categories, additional more specific categories -- are constructed based on the final letter of the stem, e.g. -- "Russian velar-stem 1st-declension hard nouns". See calls to -- com.get_stem_trailing_letter_type(). 'stem_suffix', if present, is added to -- the end of the stem when get_stem_trailing_letter_type() is called. -- This is the only place that 'stem_suffix' is used. This is for use with -- the '-ья' and '-ье' declension types, so that the trailing letter is -- 'ь' and not whatever precedes it. -- -- 'enable_categories' is a special hack for testing, which disables all -- category insertion if false. Delete this as soon as we've verified the -- working of the category code and created all the necessary categories. local enable_categories = true -- Category/type info corresponding to old-style declensions; see above. local declensions_old_cat = {} -- Category/type info corresponding to new-style declensions. Computed -- automatically from the old-style ones, for the most part. Same format -- as the old-style ones. local declensions_cat = {} -- Table listing aliases of old-style declension classes. local declensions_old_aliases = {} -- Table listing aliases of new-style declension classes; computed -- automatically from the old-style ones. local declensions_aliases = {} local stress_patterns = {} -- Set of patterns with ending-stressed genitive plural. local ending_stressed_gen_pl_patterns = {} -- Set of patterns with ending-stressed prepositional singular. local ending_stressed_pre_sg_patterns = {} -- Set of patterns with ending-stressed dative singular. local ending_stressed_dat_sg_patterns = {} -- Set of patterns with all singular forms ending-stressed. local ending_stressed_sg_patterns = {} -- Set of patterns with all plural forms ending-stressed. local ending_stressed_pl_patterns = {} -- List of all cases, including those that are declined normally -- (nom/gen/dat/acc/ins/pre sg and pl), plus animate/inanimate accusative -- variants (computed automatically as appropriate from the previous cases), -- plus additional overridable cases (loc/par/voc), plus the "linked" lemma -- case variants used in ru-noun+ headwords (nom_sg_linked, nom_pl_linked, -- whose values come from nom_sg and nom_pl but may have additional embedded -- links if they were given in the lemma). local all_cases -- List of all cases that are declined normally. local decl_cases -- List of all cases that can be displayed (includes all cases except -- plain accusatives). local displayable_cases -- List of all cases that can be overridden (includes all cases except the -- "linked" lemma case variants). Also currently the same as the cases -- returned by export.generate_forms(). local overridable_cases -- Type of trailing letter, for tracking purposes local trailing_letter_type -- If enabled, compare this module with new version of module to make -- sure all declensions are the same. Eventually consider removing this; -- but useful as new code is created. local test_new_ru_noun_module = false -- Forward functions local generate_forms_1 local determine_decl local handle_forms_and_overrides local handle_overall_forms_and_overrides local concat_word_forms local make_table local detect_adj_type local detect_stress_pattern local override_stress_pattern local determine_stress_variant local determine_stem_variant local is_reducible local is_dereducible local add_bare_suffix local attach_stressed local do_stress_pattern local canonicalize_override -------------------------------------------------------------------------- -- Tracking and categorization -- -------------------------------------------------------------------------- -- FIXME! Move below the main code -- FIXME!! Consider deleting most of this tracking code once we've enabled -- all the categories. Note that some of the tracking categories aren't -- completely redundant; e.g. we have tracking pages that combine decl and -- stress classes, such as "а/a" or "о-и/d'", which are more or less -- equivalent to stem/gender/stress categories, but we also have the same -- prefixed by "reducible-stem/" for reducible stems. local function tracking_code(stress, orig_decl, decl, args, n, islast) assert(orig_decl) assert(decl) local hint_types = com.get_stem_trailing_letter_type(args.stem) if orig_decl == decl then orig_decl = nil end if args.notes then track("notes") end local function all_pl_irreg() track("irreg") for _, case in ipairs(overridable_cases) do if rfind(case, "_pl") then track("irreg/" .. case) end end end local function track_prefix(prefix) local function dotrack(suf) track(prefix .. suf) end dotrack(stress) dotrack(decl) dotrack(decl .. "/" .. stress) if orig_decl then dotrack(orig_decl) dotrack(orig_decl .. "/" .. stress) end for _, hint_type in ipairs(hint_types) do dotrack(hint_type) dotrack(decl .. "/" .. hint_type) if orig_decl then dotrack(orig_decl .. "/" .. hint_type) end end end track_prefix("") if args.reducible then track("reducible-stem") track_prefix("reducible-stem/") end if rlfind(args.stem, "и́?н$") and (decl == "" or decl == "#") then track("irregular-in") end if args.pltail then track("pltail") end if args.sgtail then track("sgtail") end if args.pltailall then track("pltailall") end if args.sgtailall then track("sgtailall") end if args.pl ~= args.stem then track("irreg-pl-stem") track("irreg") end if args.alt_gen_pl then track("alt-gen-pl") track("irreg") track("irreg/gen_pl") end if args.want_sc1 then track("want-sc1") track("irreg") track("irreg/nom_pl") end if rfind(decl, "-и$") or rfind(decl, "-а$") or rfind(decl, "-я$") then track("irreg") track("irreg/nom_pl") end if rfind(decl, "-ья$") then track("variant-ья") all_pl_irreg() end if rfind(decl, "%(ишк%)$") then track("variant-ишко") end if rfind(decl, "%(ищ%)$") then track("variant-ище") end if args.jo_special then track("jo-special") end if args.manual then track("manual") end if args.explicit_gender then track("explicit-gender") track("explicit-gender/" .. args.explicit_gender) end for _, case in ipairs(overridable_cases) do if args[case .. n] and not args.manual then track("override") track("override/" .. case .. n) track("irreg") track("irreg/" .. case .. n) -- questionable use: track_prefix("irreg/" .. case .. "/") -- questionable use: track_prefix("irreg/" .. case .. n .. "/") end if islast and args[case] and not args.manual then track("override") track("override/" .. case) track("irreg") track("irreg/" .. case) -- questionable use: track_prefix("irreg/" .. case .. "/") end if args[case .. "_tail"] then track("casenum-tail") track("casenum-tail/" .. case) end if args[case .. "_tailall"] then track("casenum-tailall") track("casenum-tailall/" .. case) end end end local gender_to_full = {m="男性", f="女性", n="中性"} local gender_to_short = {m="男性", f="女性", n="中性"} -- Insert the category CAT (a string) into list CATEGORIES. String will -- have "Russian " prepended and ~ substituted for the plural part of speech. local function insert_category(categories, cat, pos, atbeg) if enable_categories then local fullcat = "ロシア語 " .. rsub(cat, "~", pos .. "") if atbeg then table.insert(categories, 1, fullcat) else table.insert(categories, fullcat) end end end -- Insert categories into ARGS.CATEGORIES corresponding to the specified -- stress and declension classes and to the form of the stem (e.g. velar, -- sibilant, etc.). Also initialize values used to compute the declension -- heading that describes similar information. N is the number of the -- word being processed; ISLAST is true if this is the last word. local function categorize_and_init_heading(stress, decl, args, n, islast) local function cat_to_list(cat) if not cat then return {} elseif type(cat) == "string" then return {cat} else assert(type(cat) == "table") return cat end end -- Insert category CAT into the list of categories in ARGS. -- CAT may be nil, a single string or a list of strings. We call -- insert_category() on each string. The strings will have "Russian " -- prepended and "~" replaced with the plural part of speech. local function insert_cat(cat) for _, c in ipairs(cat_to_list(cat)) do insert_category(args.categories, c, args.pos) end end -- "Resolve" the category spec CATSPEC into the sort of category spec -- accepted by insert_cat(), i.e. nil, a single string or a list of -- strings. CATSPEC may be any of these or a function, which takes one -- argument (SUFFIX) and returns another CATSPEC. local function resolve_cat(catspec, suffix) if type(catspec) == "function" then return resolve_cat(catspec(suffix), suffix) else return catspec end end -- Check whether an override for nom_sg or nom_pl still contains the -- normal suffix (which should already have accents removed) in at least -- one of its entries. If no override then of course we return true. local function override_matches_suffix(args, case, n, suffix) assert(suffix == com.remove_accents(suffix)) -- NOTE: It might not be completely correct to pass in args.forms -- here when n == ""; this is different behavior from -- handle_overall_forms_and_overrides(). But args.forms is only used -- to retrieve the dat_sg for handling loc/par, and we're never -- called with loc or par as the value of CASE, so it doesn't matter. -- We add an assert to make sure of this. assert(case ~= "loc" and case ~= "par") local override = canonicalize_override(args, case, args.forms, n) if not override then return true end for _, x in ipairs(override) do local ru, tr = x[1], x[2] local entry, notes = m_table_tools.separate_notes(ru) entry = com.remove_accents(m_links.remove_links(entry)) if rlfind(entry, suffix .. "$") then return true end end return false end if args.manual then return end local h = args.heading_info assert(decl) local decl_cats = args.old and declensions_old_cat or declensions_cat local sgdecl, pldecl local is_slash_decl = rfind(decl, "/") if is_slash_decl then local indiv_decls = rsplit(decl, "/") sgdecl, pldecl = indiv_decls[1], indiv_decls[2] else sgdecl, pldecl = decl, decl end local sgdc = decl_cats[sgdecl] local pldc = decl_cats[pldecl] assert(sgdc) assert(pldc) local sghint_types = com.get_stem_trailing_letter_type( args.stem .. (sgdc.stem_suffix or "")) -- insert English version of Zaliznyak stem type if sgdc.decl == "indeclinable" then insert_cat("indeclinable ~") insert_if_not(h.stemetc, "indecl") else local stem_type = sgdc.decl == "3rd" and "第三変化" or ut.contains(sghint_types, "velar") and "軟口蓋語幹" or ut.contains(sghint_types, "sibilant") and "歯擦語幹" or ut.contains(sghint_types, "c") and "ц-語幹" or ut.contains(sghint_types, "i") and "i-語幹" or ut.contains(sghint_types, "vowel") and "母音語幹" or ut.contains(sghint_types, "soft-cons") and "母音語幹" or ut.contains(sghint_types, "palatal") and "母音語幹" or sgdc.hard == "soft" and "軟語幹" or "硬語幹" local short_stem_type = stem_type == "3rd-declension" and "3rd-decl" or stem_type if sgdc.adj then -- Don't include gender for pluralia tantum because it's mostly -- indeterminate (certainly when specified using a plural lemma, -- which will be usually; technically it's partly or completely -- determinate in certain old-style adjectives that distinguish -- masculine from feminine/neuter, but this is too rare a case -- to worry about) local gendertext = args.thisn == "p" and "plural-only" or gender_to_full[sgdc.g] insert_if_not(h.adjectival, "yes") if args.thisn ~= "p" then insert_if_not(h.gender, gender_to_short[sgdc.g]) end if sgdc.possadj then insert_cat(sgdc.decl .. " possessive " .. gendertext .. " " .. stress .. "型アクセント 形容詞的~") insert_if_not(h.stemetc, sgdc.decl .. " poss") insert_if_not(h.stress, stress) elseif stem_type == "軟語幹" or stem_type == "母音語幹" then insert_cat(stem_type .. " " .. gendertext .. " 形容詞的~") insert_if_not(h.stemetc, short_stem_type) else insert_cat(stem_type .. " " .. gendertext .. " " .. stress .. "型アクセント 形容詞的~") insert_if_not(h.stemetc, short_stem_type) insert_if_not(h.stress, stress) end else -- NOTE: There are 8 Zaliznyak-style stem types and 3 genders, but -- we don't create a category for masculine-form 3rd-declension -- nouns (there is such a noun, путь, but it mostly behaves -- like a feminine noun), so there are 23. insert_cat(stem_type .. " " .. gender_to_full[sgdc.g] .. "~") -- NOTE: Here we are creating categories for the combination of -- stem, gender and accent. There are 10 accent patterns and 23 -- combinations of stem and gender, which potentially makes for -- 10*23 = 230 such categories, which is a lot. Not all such -- categories should actually exist; there were maybe 75 former -- declension templates, each of which was essentially categorized -- by the same three variables, but some of which dealt with -- ancillary issues like irregular plurals; this amounts to 67 -- actual stem/gender/accent categories, although there are more -- of them in Zaliznyak (FIXME, how many? See generate_cats.py). insert_cat(stem_type .. " " .. gender_to_full[sgdc.g] .. "~ " .. stress .. "型アクセント") insert_if_not(h.adjectival, "no") insert_if_not(h.gender, gender_to_short[sgdc.g]) insert_if_not(h.stemetc, short_stem_type) insert_if_not(h.stress, stress) end insert_cat(stress .. "型アクセントの~") end local sgsuffix = args.suffixes.nom_sg if sgsuffix then assert(#sgsuffix == 1) -- If this ever fails, then implement a loop sgsuffix = com.remove_accents(sgsuffix[1]) -- If we are plural only or if nom_sg is overridden and has -- an unusual suffix, then don't create category for sg suffix if args.thisn == "p" or not override_matches_suffix(args, "nom_sg", n, sgsuffix) or islast and not override_matches_suffix(args, "nom_sg", "", sgsuffix) then sgsuffix = nil end end local plsuffix = args.suffixes.nom_pl if plsuffix then assert(#plsuffix == 1) -- If this ever fails, then implement a loop plsuffix = com.remove_accents(plsuffix[1]) -- If we are a singulare tantum or if nom_pl is overridden and has -- an unusual suffix, then don't create category for pl suffix if args.thisn == "s" or not override_matches_suffix(args, "nom_pl", n, plsuffix) or islast and not override_matches_suffix(args, "nom_pl", "", plsuffix) then plsuffix = nil end end sgsuffix = sgsuffix and rsub(sgsuffix, "ъ$", "") plsuffix = plsuffix and rsub(plsuffix, "ъ$", "") local sgcat = sgsuffix and (resolve_cat(sgdc.singular, sgsuffix) or "ending in " .. (sgsuffix == "" and "a consonant" or (sgdc.suffix and "suffix " or "") .. "-" .. sgsuffix)) local plcat = plsuffix and (resolve_cat(pldc.plural, suffix) or "plural -" .. plsuffix) if sgcat and sgdc.gensg then for _, cat in ipairs(cat_to_list(sgcat)) do insert_cat("~ " .. cat) end end if sgcat and plcat and (sgdc.suffix or sgdc.alt_nom_pl or sgdc.irregpl or is_slash_decl and plsuffix == "-ья") then for _, scat in ipairs(cat_to_list(sgcat)) do for _, pcat in ipairs(cat_to_list(plcat)) do insert_cat("~ " .. scat .. " with " .. pcat) end end end if args.pl ~= args.stem then insert_cat("~ 不規則な複数形の語幹あり") end if args.reducible and not sgdc.ignore_reduce then insert_cat("~ with reducible stem") insert_if_not(h.reducible, "yes") else insert_if_not(h.reducible, "no") end if args.alt_gen_pl then insert_cat("~ 複数生格に異形あり") end if sgdc.adj then insert_cat("形容詞的~") end end local function compute_heading(args) local headings = {} local h = args.heading_info table.insert(headings, args.a == "a" and "活動体" or args.a == "i" and "不活動体" or "bian") table.insert(headings, args.nonumber and "不加算" or args.n == "s" and "単数形のみ" or args.n == "p" and "複数形のみ" or nil) if #h.gender > 0 then table.insert(headings, table.concat(h.gender, "/") .. "名詞型") end if #h.stemetc > 0 then table.insert(headings, table.concat(h.stemetc, "/")) end if #h.stress > 0 then local stresses = {} for _, stress in ipairs(h.stress) do table.insert(stresses, rsub(stress, "'", "&#39;")) end table.insert(headings, table.concat(stresses, "/") .. "型アクセント") end local function handle_bool(boolvals, text, into) into = into or headings if ut.contains(boolvals, "yes") and ut.contains(boolvals, "no") then table.insert(into, "[" .. text .. "]") elseif ut.contains(boolvals, "yes") then table.insert(into, text) end end handle_bool(h.adjectival, "adj") handle_bool(h.reducible, "reduc") return headings end local function compute_overall_heading_categories_and_genders(args) local hinfo = args.per_word_heading_info local index = 0 -- First try for non-adjectival, non-indeclinable for i=1,#hinfo do if not ut.contains(hinfo[i].stemetc, "indecl") and not ut.contains(hinfo[i].adjectival, "yes") then index = i break end end if index == 0 then -- Then just non-indeclinable for i=1,#hinfo do if not ut.contains(hinfo[i].stemetc, "indecl") then index = i break end end end -- Finally, do anything if index == 0 then index = 1 end -- Compute final heading local headings = args.per_word_headings[index] local categories = args.per_word_categories[index] if args.any_irreg then table.insert(headings, "不規則変化") insert_category(categories, "不規則変化~", args.pos) end for _, case in ipairs(overridable_cases) do local is_pl = rfind(case, "_pl") if args.n == "s" and is_pl or args.n == "p" and not is_pl then -- Don't create singular categories when plural-only or vice-versa elseif (case == "loc" or case == "voc" or case == "par") then if args.any_overridden[case] then local engcase = rsub(case, "^([a-z]*)", { par="分格", loc="処格", voc="呼格" }) insert_category(categories, engcase .. "のある~", args.pos) end elseif args.any_irreg_case[case] then local engcase = rsub(case, "^([a-z]*)", { nom="主格", gen="生格", dat="与格", acc="対格", ins="造格", pre="前置格", par="分格", loc="処格", voc="呼格" }) engcase = rsub(engcase, "(_[a-z]*)", { _sg="単数", _pl="複数", _an="", _in="", --_an=" animate", _in=" inanimate" }) insert_category(categories, "不規則な" .. engcase .. "のある~", args.pos) end end local heading = args.manual and "" or "(<span style=\"font-size: smaller;\">[[付録:ロシア語の名詞#格変化表|" .. table.concat(headings, " ") .. "]]</span>)" args.heading = heading args.categories = categories args.genders = args.per_word_genders[index] end -------------------------------------------------------------------------- -- Main code -- -------------------------------------------------------------------------- -- Used by do_generate_forms(). local function arg1_is_stress(arg1) if not arg1 then return false end for _, arg in ipairs(rsplit(arg1, ",")) do if not rfind(arg, "^[a-f]'?'?$") then return false end end return true end -- Used by do_generate_forms(), handling a word joiner argument -- of the form 'join:JOINER'. local function extract_word_joiner(spec) word_joiner = rmatch(spec, "^join:(.*)$") assert(word_joiner) return nom.split_russian_tr(word_joiner, "dopair") end local function determine_headword_gender(args, sgdc, gender) -- If gender unspecified, use normal gender of declension, except when -- adjectival nouns that are pluralia tantum, where the gender is -- mostly indeterminate (FIXME, not completely with old-style declensions -- but we don't handle that currently). if not gender then if sgdc.adj and args.thisn == "p" then gender = nil else gender = sgdc.g end end -- Determine headword genders gender = gender and gender ~= "none" and gender .. "-" or "" local plsuffix = args.n == "p" and "-p" or "" local hgens if args.a == "a" then hgens = {gender .. "an" .. plsuffix} elseif args.a == "i" then hgens = {gender .. "in" .. plsuffix} elseif args.a == "ai" then hgens = {gender .. "an" .. plsuffix, gender .. "in" .. plsuffix} else hgens = {gender .. "in" .. plsuffix, gender .. "an" .. plsuffix} end -- Insert into list of genders for _, hgen in ipairs(hgens) do insert_if_not(args.genders, hgen) end end function export.do_generate_forms(args, old) old = old or args.old args.old = old args.pos = args.pos or "名詞" -- This is a list with each element corresponding to a word and -- consisting of a two-element list, ARG_SETS and JOINER, where ARG_SETS -- is a list of ARG_SET objects, one per alternative stem, and JOINER -- is a string indicating how to join the word to the next one. local per_word_info = {} -- Gather arguments into a list of ARG_SET objects, containing (potentially) -- elements 1, 2, 3, 4, corresponding to accent pattern, stem, declension -- type, pl stem and coming from consecutive numbered parameters. Sets of -- declension parameters are separated by the word "or". local arg_sets = {} -- Find maximum-numbered arg, allowing for holes local max_arg = 0 for k, v in pairs(args) do if type(k) == "number" and k > max_arg then max_arg = k end end -- Now gather the arguments. local offset = 0 local arg_set = {} for i=1,(max_arg + 1) do local end_arg_set = false local end_word = false -- FIXME, is this correct? local word_joiner if i == max_arg + 1 then end_arg_set = true end_word = true word_joiner = {""} elseif args[i] == "_" then end_arg_set = true end_word = true word_joiner = {" "} elseif args[i] == "-" then end_arg_set = true end_word = true word_joiner = {"-"} elseif args[i] and rfind(args[i], "^join:") then end_arg_set = true end_word = true word_joiner = extract_word_joiner(args[i]) elseif args[i] == "or" then end_arg_set = true end if end_arg_set then table.insert(arg_sets, arg_set) arg_set = {} offset = i if end_word then table.insert(per_word_info, {arg_sets, word_joiner}) arg_sets = {} end else -- If the first argument isn't stress, that means all arguments -- have been shifted to the left one. We want to shift them -- back to the right one, so we change the offset so that we -- get the same effect of skipping a slot in the arg set. if i - offset == 1 and not arg1_is_stress(args[i]) then offset = offset - 1 end if i - offset > 4 then error("Too many arguments for argument set: arg " .. i .. " = " .. (args[i] or "(blank)")) end arg_set[i - offset] = args[i] end end return generate_forms_1(args, per_word_info) end function export.do_generate_forms_multi(args, old) old = old or args.old args.old = old args.pos = args.pos or "noun" -- This is a list with each element corresponding to a word and -- consisting of a two-element list, ARG_SET and JOINER, where ARG_SET -- is a list of ARG_SET objects, one per alternative stem, and JOINER -- is a string indicating how to join the word to the next one. local per_word_info = {} -- Find maximum-numbered arg, allowing for holes (FIXME: Is this needed -- here? Will there be holes?) local max_arg = 0 for k, v in pairs(args) do if type(k) == "number" and k > max_arg then max_arg = k end end -- Gather arguments into a list of ARG_SET objects, containing -- (potentially) elements 1, 2, 3, corresponding to accent pattern, -- lemma+declension spec, pl stem, exactly as with do_generate_forms() -- and {{ru-noun-table}} except that the values come from a single argument -- of the form ACCENTPATTERN:LEMMADECL:PL where all but LEMMADECL may (and -- probably will be) omitted and LEMMADECL may be of the following forms: -- LEMMA (for a noun with empty decl spec), -- LEMMADECL (for a noun with non-empty decl spec beginning with a -- *, left paren or semicolon), -- LEMMA^DECL (for a noun with non-empty decl spec), -- LEMMA$ (for an indeclinable word) -- LEMMA+ (for an adjective with auto-detected decl class) -- LEMMA+DECL (for an adjective with explicit decl class) -- Sets of parameters for the same word are separated by the word "or". local arg_sets = {} local continue_arg_sets = true for i=1,(max_arg + 1) do local end_word = false local word_joiner local process_arg = false if i == max_arg + 1 then end_word = true word_joiner = {""} elseif args[i] == "-" then end_word = true word_joiner = {"-"} continue_arg_sets = true elseif rfind(args[i], "^join:") then end_word = true word_joiner = extract_word_joiner(args[i]) continue_arg_sets = true elseif args[i] == "or" then continue_arg_sets = true else if continue_arg_sets then continue_arg_sets = false else end_word = true word_joiner = {" "} end process_arg = true end if end_word then table.insert(per_word_info, {arg_sets, word_joiner}) arg_sets = {} end if process_arg then local vals = rsplit(args[i], ":") if #vals > 3 then error("Can't specify more than 3 colon-separated params of param set: " .. args[i]) end local arg_set = {} if arg1_is_stress(vals[1]) then arg_set[1] = vals[1] arg_set[2] = vals[2] arg_set[4] = vals[3] else arg_set[2] = vals[1] arg_set[4] = vals[2] end -- recognize indeclinable local indecl_stem = rmatch(arg_set[2], "^(.-)%$$") if indecl_stem then arg_set[2] = indecl_stem arg_set[3] = "$" else -- recognize adjective local adj_stem, adj_type = rmatch(arg_set[2], "^(.*)(%+.*)$") if adj_stem then arg_set[2] = adj_stem arg_set[3] = adj_type else -- recognize noun with ^ local noun_stem, noun_type = rmatch(arg_set[2], "^(.*)%^(.*)$") if noun_stem then arg_set[2] = noun_stem arg_set[3] = noun_type else -- recognize noun without ^ but with decl spec noun_stem, noun_type = rmatch(arg_set[2], "^(..-)([;*(].*)$") if noun_stem then arg_set[2] = noun_stem arg_set[3] = noun_type else -- noun without ^ or decl spec; nothing to do end end end end table.insert(arg_sets, arg_set) end end return generate_forms_1(args, per_word_info) end -- Implementation of do_generate_forms() and do_generate_forms_multi(), -- which have equivalent functionality but different calling sequence. -- Implementation of do_generate_forms() and do_generate_forms_multi(), -- which have equivalent functionality but different calling sequence, -- as well as show_z() for template {{ru-decl-noun-z}}, which has a -- subset of the functionality of the other two. generate_forms_1 = function(args, per_word_info) local orig_args if test_new_ru_noun_module then orig_args = mw.clone(args) end local SUBPAGENAME = mw.title.getCurrentTitle().subpageText local old = args.old local function verify_animacy_value(val) if not val then return nil end if val == "a" or val == "an" or val == "anim" then return "a" elseif val == "i" or val == "in" or val == "inan" then return "i" elseif val == "b" or val == "bi" or val == "both" or val == "ai" then return "ai" elseif val == "ia" then return "ia" end error("Animacy value " .. val .. " should be empty or a/an/anim (animate), i/in/inan (inanimate), b/bi/both/ai (bianimate, listing animate first), or ia (bianimate, listing inanimate first)") return nil end local function verify_number_value(val, allow_none) if not val then return nil end local short = usub(val, 1, 1) if short == "s" or short == "p" or short == "b" or (allow_none and short == "n" or false) then return short end if allow_none then error("Number value " .. val .. " should be empty or start with 's' (singular), 'p' (plural), 'b' (both) or 'n' (none)") else error("Number value " .. val .. " should be empty or start with 's' (singular), 'p' (plural), or 'b' (both)") end return nil end -- Verify and canonicalize animacy, number, prefix, suffix assert(#per_word_info >= 1) for i=1,#per_word_info do args["a" .. i] = verify_animacy_value(args["a" .. i]) args["n" .. i] = verify_number_value(args["n" .. i]) args["prefix" .. i] = nom.split_russian_tr(args["prefix" .. i] or "", "dopair") args["suffix" .. i] = nom.split_russian_tr(args["suffix" .. i] or "", "dopair") end args.a = verify_animacy_value(args.a) or "i" -- args.ndef, if set, is the default value for args.n; if unset, it defaults -- to "both". It is set to "singular" in ru-proper noun+. We store the value -- of args.n in args.orign before defaulting to args.ndef because we may -- change it to plural-only later on if it was unspecified (this happens if -- an individual word's lemma is plural), and to determine whether it was -- unspecified, we need the original value before defaulting. args.n = verify_number_value(args.n, "allow none") -- treat n=none like n=sg but set a flag so "singular" isn't displayed if args.n == "n" then args.n = "s" args.nonumber = true end args.ndef = verify_number_value(args.ndef) args.orign = args.n args.n = args.n or args.ndef args.prefix = nom.split_russian_tr(args.prefix or "", "dopair") args.suffix = nom.split_russian_tr(args.suffix or "", "dopair") -- Attach overall prefix to first per-word prefix, similarly for suffix args.prefix1 = nom.concat_paired_russian_tr(args.prefix, args.prefix1) args["suffix" .. #per_word_info] = nom.concat_paired_russian_tr( args["suffix" .. #per_word_info], args.suffix) -- Initialize non-word-specific arguments. -- -- The following is a list of WORD_INFO items, one per word, each of -- which is a two element list of WORD_FORMS (a table listing the forms for -- each case) and JOINER (a string, indicating how to join the word with -- the next one). args.per_word_info = {} -- List of HEADING_INFO items, one per word, containing the raw material -- used to generate the header. Initialized from 'args.heading_info', -- which is initialized in categorize_and_init_heading(). args.per_word_heading_info = {} -- List of CATEGORIES items, one per word, containing the categories -- used to initialize the page categories. Initialized from -- 'args.categories', which is initialized in categorize_and_init_heading(). args.per_word_categories = {} -- List of HEADINGS items, one per word, containing the actual words that -- go into the header if we were to use that word to construct the header. -- Comes from compute_heading(). We use this to generate the actual header -- string, which goes into 'args.heading' at the end (done in -- compute_overall_heading_categories_and_genders()). args.per_word_headings = {} -- List of GENDERS items, one per word, containing the headword genders -- for each word (where "headword gender" is in the format used in -- headwords and actually includes animacy and number as well, e.g. -- 'm-in' or 'f-an-p'). We end up selecting one such item and putting -- it into 'args.genders' at the end -- (in compute_overall_heading_categories_and_genders()). args.per_word_genders = {} args.any_overridden = {} args.any_non_nil = {} args.any_irreg = false args.any_irreg_case = {} local function insert_cat(cat) insert_category(args.categories, cat, args.pos) end args.internal_notes = {} local decl_sufs = old and declensions_old or declensions local decl_cats = old and declensions_old_cat or declensions_cat local intable = old and internal_notes_table_old or internal_notes_table -- Default lemma defaults to previous lemma, first one to page name. -- FIXME: With multiple words, we should probably split the page name -- on spaces and default each word in turn local default_lemma local all_stresses_seen -- Made into a function to avoid having to indent a lot of code. -- Process a single arg set of a single word. This inserts the forms -- for the word into args.forms and sets categories and tracking pages. local function do_arg_set(arg_set, n, islast) local stress_arg = arg_set[1] local decl = arg_set[3] or "" local pl, pltr if arg_set[4] then pl, pltr = nom.split_russian_tr(arg_set[4]) end -- Extract special markers from declension class. if decl == "manual" then decl = "$" args.manual = true if #per_word_info > 1 or #per_word_info[1][1] > 1 then error("Can't specify multiple words or argument sets when manual") end if pl then error("Can't specify optional stem parameters when manual") end end decl, args.jo_special = rsubb(decl, "([^/%a])ё$", "%1") if not args.jo_special then decl, args.jo_special = rsubb(decl, "([^/%a])ё([^/%a])", "%1%2") end decl, args.want_sc1 = rsubb(decl, "%(1%)", "") decl, args.alt_gen_pl = rsubb(decl, "%(2%)", "") decl, args.reducible = rsubb(decl, "%*", "") decl = rsub(decl, ";", "") -- Get the lemma. local lemma = args.manual and "-" or arg_set[2] or default_lemma if not lemma then error("Lemma in first argument set must be specified") end default_lemma = lemma local lemmatr lemma, lemmatr = nom.split_russian_tr(lemma) -- If we're conjugating a suffix, insert a pseudoconsonant at the beginning -- of all forms, so they get conjugated as if ending in a consonant. -- We remove the pseudoconsonant later. local is_suffix = rfind(lemma, "^%-") args.any_suffix = args.any_suffix or is_suffix local asif_prefix = args["asif_prefix" .. n] or args.asif_prefix or is_suffix and PSEUDOCONS if asif_prefix then lemma = rsub(lemma, "^%-", "-" .. asif_prefix) if lemmatr then lemmatr = rsub(lemmatr, "^%-", "-" .. com.translit(asif_prefix)) end end args.thisa = args["a" .. n] or args.a args.thisn = args["n" .. n] or args.n -- Check for explicit allow-unaccented indication. lemma, args.allow_unaccented = rsubb(lemma, "^%*", "") if args.allow_unaccented then track("allow-unaccented") end args.orig_lemma = lemma lemma = m_links.remove_links(lemma) args.lemma_no_links = lemma args.lemmatr = lemmatr -- Treat suffixes without an accent, and suffixes with an accent on the -- initial hyphen, as if they were preceded with a *, which overrides -- all the logic that normally (a) normalizes the accent, and (b) -- complains about multisyllabic words without an accent. Don't do this -- if lemma is just -, which is used specially in manual declension -- tables (e.g. сто, три). if lemma ~= "-" and (rfind(lemma, "^%-́") or (com.is_unstressed(lemma) and rfind(lemma, "^%-"))) then args.allow_unaccented = true end -- Convert lemma and decl arg into stem and canonicalized decl. -- This will autodetect the declension from the lemma if an explicit -- decl isn't given. local stem, tr, gender, was_accented, was_plural, was_autodetected if rfind(decl, "^%+") then stem, tr, decl, gender, was_accented, was_plural, was_autodetected = detect_adj_type(lemma, lemmatr, decl, old) else stem, tr, decl, gender, was_accented, was_plural, was_autodetected = determine_decl(lemma, lemmatr, decl, args) end if was_plural then args.n = args.orign or "p" args.thisn = args["n" .. n] or args.n elseif decl ~= "$" then args.thisn = args.thisn or "b" end args.explicit_gender = gender -- If allow-unaccented not given, maybe check for missing accents. if not args.allow_unaccented and not stress_arg and was_autodetected and com.needs_accents(lemma) then -- If user gave the full word and expects us to determine the -- declension and stress, the word should have an accent on the -- stem or ending. We have a separate check farther below for -- an accent on a multisyllabic stem, after stripping off any -- ending; but this way we get an error if the user e.g. writes -- "гора" without an accent rather than assuming it's stem -- stressed, as would otherwise happen. error("Lemma must have an accent in it: " .. lemma) end -- If stress not given, auto-determine; else validate/canonicalize -- stress arg, override in certain cases and convert to list. if not stress_arg then stress_arg = {detect_stress_pattern(stem, decl, decl_cats, args.reducible, was_plural, was_accented)} else stress_arg = rsplit(stress_arg, ",") for i=1,#stress_arg do local stress = stress_arg[i] stress = override_stress_pattern(decl, stress) if not stress_patterns[stress] then error("Unrecognized accent pattern " .. stress) end stress_arg[i] = stress end end -- parse slash decl to list local sub_decls if rfind(decl, "/") then track("mixed-decl") insert_cat("~ with mixed declension") local indiv_decls = rsplit(decl, "/") -- Should have been caught in canonicalize_decl() assert(#indiv_decls == 2) sub_decls = {{indiv_decls[1], "sg"}, {indiv_decls[2], "pl"}} else sub_decls = {{decl}} end -- Get singular declension and corresponding category. local sgdecl = sub_decls[1][1] local sgdc = decl_cats[sgdecl] assert(sgdc) -- Compute headword gender(s). We base it off the singular declension -- if we have a slash declension -- it's the best we can do. determine_headword_gender(args, sgdc, gender) local original_stem, original_tr = stem, tr local original_pl, original_pltr = pl, pltr -- Loop over accent patterns in case more than one given. for _, stress in ipairs(stress_arg) do args.suffixes = {} stem, tr = original_stem, original_tr local bare, baretr local stem_for_bare, tr_for_bare pl, pltr = original_pl, original_pltr insert_if_not(all_stresses_seen, stress) local stem_was_unstressed = com.is_unstressed(stem) -- If special case ;ё was given and stem is unstressed, -- add ё to the stem now; but don't let this interfere with -- restressing, to handle cases like железа́ with gen pl желёз -- but nom pl же́лезы. if stem_was_unstressed and args.jo_special then -- Beware, Cyrillic еЕ in first rsub, Latin eE in second local new_stem = rsub(stem, "([еЕ])([^еЕ]*)$", function(e, rest) return (e == "Е" and "Ё" or "ё") .. rest end ) if stem == new_stem then error("No е in stem to replace with ё") end stem = new_stem if tr then local subbed -- e after j -> o, e not after j -> jo; don't just convert e -> jo -- and then map jjo -> jo because we want to preserve double j tr, subbed = rsubb(tr, "([jJ])([eE])([^eE]*)$", function(j, e, rest) return j .. (e == "E" and "O" or "o") .. AC .. rest end ) if not subbed then tr = rsub(tr, "([eE])([^eE]*)$", function(e, rest) return (e == "E" and "Jo" or "jo") .. AC .. rest end ) end tr = com.j_correction(tr) end -- This is used to handle железа́ with gen pl желёз and nom pl -- же́лезы. We have two stressed stems, one for the gen pl and -- one for the remaining pl cases, and the variable 'stem' can -- handle only one, so we put the second (gen pl) stem in -- stem_for_bare, which goes into the value of 'bare' (used -- only for gen pl here). stem_for_bare, tr_for_bare = stem, tr end -- Maybe add stress to the stem, depending on whether the -- stem was unstressed and the stress pattern. Stem pattern f -- and variants call for initial stress (голова́ -> го́ловы); -- stem pattern d and variants call for stem-final stress -- (сапожо́к -> сапо́жки). Stem patterns b and b' apparently -- call for stem-final stress as well but it's unlikely to -- make much of a difference (pattern b' only occurs in 3rd-decl -- feminines, which should already have stress in the stem, -- and the only place pattern b gets stem stress is in bare -- forms, i.e. nom sg and/or gen pl depending on the decl type, -- and nom sg stress should already be in the lemma while -- gen pl stress is handled by a different ending-stressing -- mechanism in attach_unstressed(); however, the user is -- free to leave a masc or 3rd-decl fem lemma completely -- unstressed with pattern b, and then the stem-final stress -- *will* make a difference). local function restress_stem(stem, tr, stress, stem_unstressed) -- If the user has indicated they purposely are leaving the -- word unstressed by putting a * at the beginning of the main -- stem, leave it unstressed. This might indicate lack of -- knowledge of the stress or a truly unaccented word -- (e.g. an unaccented suffix). if args.allow_unaccented then return stem, tr end if tr and com.is_unstressed(stem) ~= com.is_unstressed(tr) then error("Stem " .. stem .. " and translit " .. tr .. " must have same accent pattern") end -- it's safe to accent monosyllabic stems if com.is_monosyllabic(stem) then stem, tr = com.make_ending_stressed(stem, tr) -- For those patterns that are ending-stressed in the singular -- nominative (and hence are likely to be expressed without an -- accent on the stem) it's safe to put a particular accent on -- the stem depending on the stress type. Otherwise, give an -- error if no accent. elseif stem_unstressed then if rfind(stress, "^f") then stem, tr = com.make_beginning_stressed(stem, tr) elseif (rfind(stress, "^[bd]") or args.thisn == "p" and ending_stressed_pl_patterns[stress]) then stem, tr = com.make_ending_stressed(stem, tr) elseif com.needs_accents(stem) then error("Stem " .. stem .. " requires an accent") end end return stem, tr end stem, tr = restress_stem(stem, tr, stress, stem_was_unstressed) -- Leave pl unaccented if user wants this; see restress_stem(). if pl and not args.allow_unaccented then if pltr and com.is_unstressed(pl) ~= com.is_unstressed(pltr) then error("Plural stem " .. pl .. " and translit " .. pltr .. " must have same accent pattern") end if com.is_monosyllabic(pl) then pl, pltr = com.make_ending_stressed(pl, pltr) end -- I think this is safe. if com.needs_accents(pl) then if ending_stressed_pl_patterns[stress] then pl, pltr = com.make_ending_stressed(pl, pltr) elseif not args.allow_unaccented then error("Plural stem " .. pl .. " requires an accent") end end end local resolved_bare, resolved_baretr -- Handle (de)reducibles -- FIXME! We are dereducing based on the singular declension. -- In a slash declension things can get weird and we don't -- handle that. We are also computing the bare value from the -- singular stem, and again things can get weird with a plural -- stem. Note that we don't compute a bare value unless we have -- to (either (de)reducible or stress pattern f/f'/f'' combined -- with ё special case); the remaining times we generate the bare -- value directly from the plural stem. if args.reducible and not sgdc.ignore_reduce then -- Zaliznyak treats all nouns in -ье and -ья as being -- reducible. We handle this automatically and don't require -- the user to specify this, but ignore it if so for -- compatibility. if is_reducible(sgdc) then -- If we derived the stem from a nom pl form, then -- it's already reduced, and we need to dereduce it to -- get a bare form; otherwise the stem comes from the -- nom sg and we need to reduce it to get the real stem. if was_plural then resolved_bare, resolved_baretr = export.dereduce_nom_sg_stem(stem, tr, sgdc, stress, old, "error") else resolved_bare, resolved_baretr = stem, tr stem, tr = export.reduce_nom_sg_stem(stem, tr, sgdecl, "error") -- Stem will be unstressed if stress was on elided -- vowel; restress stem the way we did above. (This is -- needed in at least one word, сапожо́к 3*d(2), with -- plural stem probably сапо́жк- and gen pl probably -- сапо́жек.) stem, tr = restress_stem(stem, tr, stress, com.is_unstressed(stem)) if stress ~= "a" and stress ~= "b" and args.alt_gen_pl and not pl then -- Nouns like рожо́к, глазо́к of type 3*d(2) have -- gen pl's ро́жек, гла́зок; to handle this, -- dereduce the reduced stem and store in a -- special place. args.gen_pl_bare, args.gen_pl_baretr = export.dereduce_nom_sg_stem(stem, tr, sgdc, stress, old, "error") end end elseif is_dereducible(sgdc) then resolved_bare, resolved_baretr = export.dereduce_nom_sg_stem(stem, tr, sgdc, stress, old, "error") else error("Declension class " .. sgdecl .. " not (de)reducible") end elseif stem_for_bare and stem ~= stem_for_bare then resolved_bare, resolved_baretr = add_bare_suffix(stem_for_bare, tr_for_bare, old, sgdc, false) end -- Leave unaccented if user wants this; see restress_stem(). -- FIXME, we no longer allow the user to specify the bare value -- so it's unclear if this is needed any more. if resolved_bare and not args.allow_unaccented then if resolved_baretr and com.is_unstressed(resolved_bare) ~= com.is_unstressed(resolved_baretr) then error("Resolved bare stem " .. resolved_bare .. " and translit " .. resolved_baretr .. " must have same accent pattern") end if com.is_monosyllabic(resolved_bare) then resolved_bare, resolved_baretr = com.make_ending_stressed(resolved_bare, resolved_baretr) else if com.needs_accents(resolved_bare) then error("Resolved bare stem " .. resolved_bare .. " requires an accent") end end end args.stem, args.stemtr = stem, tr args.bare, args.baretr = resolved_bare, resolved_baretr args.ustem, args.ustemtr = com.make_unstressed_once(stem, tr) if pl then args.pl, args.pltr = pl, pltr else args.pl, args.pltr = stem, tr end args.upl, args.upltr = com.make_unstressed_once(args.pl, args.pltr) -- Special hack for любо́вь and other reducible 3rd-fem nouns, -- which have the full stem in the ins sg args.ins_sg_stem = sgdecl == "ь-f" and args.reducible and resolved_bare args.ins_sg_tr = sgdecl == "ь-f" and args.reducible and resolved_baretr -- Loop over declension classes (we may have two of them, one for -- singular and one for plural, in the case of a mixed declension -- class of the form SGDECL/PLDECL). for _,decl_spec in ipairs(sub_decls) do local orig_decl = decl_spec[1] local number = decl_spec[2] local real_decl = determine_stress_variant(orig_decl, stress) real_decl = determine_stem_variant(real_decl, number == "pl" and args.pl or args.stem) -- sanity checking; errors should have been caught in -- canonicalize_decl() assert(decl_cats[real_decl], "real_decl " .. real_decl .. " nonexistent") assert(decl_sufs[real_decl], "real_decl " .. real_decl .. " nonexistent") tracking_code(stress, orig_decl, real_decl, args, n, islast) do_stress_pattern(stress, args, real_decl, number, n, islast) -- handle internal notes local internal_note = intable[real_decl] if internal_note then insert_if_not(args.internal_notes, internal_note) end end categorize_and_init_heading(stress, decl, args, n, islast) end end local n = 0 for _, word_info in ipairs(per_word_info) do n = n + 1 local islast = n == #per_word_info local arg_sets, joiner = word_info[1], word_info[2] args.forms = {} args.heading_info = {animacy={}, number={}, gender={}, stress={}, stemetc={}, adjectival={}, reducible={}} args.categories = {} args.genders = {} args.this_any_non_nil = {} args.any_suffix = false if #arg_sets > 1 then track("multiple-arg-sets") insert_cat("~ with multiple argument sets") track("multiple-declensions") insert_cat("~ with multiple declensions") end default_lemma = SUBPAGENAME all_stresses_seen = {} -- Loop over all arg sets. for _, arg_set in ipairs(arg_sets) do do_arg_set(arg_set, n, islast) end if #all_stresses_seen > 1 then track("multiple-accent-patterns") insert_cat("~ with multiple accent patterns") track("multiple-declensions") insert_cat("~ with multiple declensions") end table.insert(args.per_word_heading_info, args.heading_info) table.insert(args.per_word_categories, args.categories) local headings = compute_heading(args) table.insert(args.per_word_headings, headings) table.insert(args.per_word_genders, args.genders) handle_forms_and_overrides(args, n, islast) if args.any_suffix then -- If we're conjugating a suffix, remove the pseudoconsonant or asif_prefix -- that we previously inserted at the beginning. local asif_prefix = args["asif_prefix" .. n] or args.asif_prefix or PSEUDOCONS local asif_prefix_tr = com.translit(asif_prefix) for _, case in ipairs(all_cases) do if args.forms[case] then local newforms = {} for _, form in ipairs(args.forms[case]) do local formru = form[1] local formtr = form[2] formru = rsub(formru, "^%-" .. asif_prefix, "-") if formtr then formtr = rsub(formtr, "^%-" .. asif_prefix_tr, "-") end if formru == "-" then -- if no ending, insert "(no suffix)". table.insert(newforms, {"(no suffix)"}) else table.insert(newforms, {formru, formtr}) end end args.forms[case] = newforms end end end table.insert(args.per_word_info, {args.forms, joiner}) end handle_overall_forms_and_overrides(args) compute_overall_heading_categories_and_genders(args) for _, case in ipairs(all_cases) do if args[case] then for _, form in ipairs(args[case]) do local ru, tr = form[1], form[2] local ruentry, runotes = m_table_tools.separate_notes(ru) ruentry = m_links.remove_links(ruentry) if rfind(ulower(ruentry), latin_text_class) then --error("Found Latin text " .. ruentry .. " in case " .. case) track("latin-text") track("latin-text/" .. case) end end end end -- Test code to compare existing module to new one. if test_new_ru_noun_module then local m_new_ru_noun = require("モジュール:User:Benwing2/ru-noun") local newargs = m_new_ru_noun.do_generate_forms(orig_args, old) local difdecl = false for _, case in ipairs(all_cases) do local arg = args[case] local newarg = newargs[case] local is_pl = rfind(case, "_pl") if args.thisn == "s" and is_pl or args.thisn == "p" and not is_pl then -- Don't need to check cases that won't be displayed. elseif not ut.equals(arg, newarg) then local monosyl_accent_diff = false -- Differences only in monosyllabic accents. Enable if we -- change the algorithm for these. --if arg and newarg and #arg == 1 and #newarg == 1 then -- local ru1, tr1 = arg[1][1], arg[1][2] -- local ru2, tr2 = newarg[1][1], newarg[1][2] -- if com.is_monosyllabic(ru1) and com.is_monosyllabic(ru2) then -- ru1, tr1 = com.remove_accents(ru1, tr1) -- ru2, tr2 = com.remove_accents(ru2, tr2) -- if ru1 == ru2 and tr1 == tr2 then -- monosyl_accent_diff = true -- end -- end --end if monosyl_accent_diff then track("monosyl-accent-diff") difdecl = true else -- Uncomment this to display the particular case and -- differing forms. --error(case .. " " .. (arg and nom.concat_forms(arg) or "nil") .. " || " .. (newarg and nom.concat_forms(newarg) or "nil")) track("different-decl") difdecl = true end break end end if not difdecl then track("same-decl") end end return args end -- Implementation of main entry point local function do_show(frame, old) local args = clone_args(frame) local args = export.do_generate_forms(args, old) return make_table(args) .. m_utilities.format_categories(args.categories, lang) end -- The main entry point for modern declension tables. function export.show(frame) return do_show(frame, false) end -- The main entry point for old declension tables. function export.show_old(frame) return do_show(frame, true) end -- Implementation of new entry point, esp. for multiple words local function do_show_multi(frame) local args = clone_args(frame) local args = export.do_generate_forms_multi(args) return make_table(args) .. m_utilities.format_categories(args.categories, lang) end -- The new entry point, esp. for multiple words (but works fine for -- single words). function export.show_multi(frame) return do_show_multi(frame) end local function get_form(forms, preserve_links, raw) local canon_forms = {} for _, form in ipairs(forms) do if raw then local ru, tr = form[1], form[2] ru = rsub(ru, "|", "<!>") if tr then tr = rsub(tr, "|", "<!>") end insert_if_not(canon_forms, {ru, tr}) else local ru, tr = form[1], form[2] local ruentry, runotes = m_table_tools.separate_notes(ru) -- Skip hypothetical forms (but include in the raw versions) if not rfind(runotes, HYPMARKER) then local trentry, trnotes if tr then trentry, trnotes = m_table_tools.separate_notes(tr) end if not preserve_links then ruentry = m_links.remove_links(ruentry) end ruentry = rsub(ruentry, "|", "<!>") if trentry then trentry = rsub(trentry, "|", "<!>") end insert_if_not(canon_forms, {ruentry, trentry}) end end end return nom.concat_forms(canon_forms) end local function case_will_be_displayed(args, case) local ispl = rfind(case, "_pl") local caseok = true if args.n == "p" then caseok = ispl elseif args.n == "s" then caseok = not ispl end if case == "loc" and not args.any_overridden.loc or case == "par" and not args.any_overridden.par or case == "voc" and not args.any_overridden.voc then caseok = false end if args.a == "a" or args.a == "i" then if rfind(case, "_[ai]n") then caseok = false end else -- bianimate -- don't include inanimate/animate variants if combined variant exists -- (typically because inanimate/animate variants are the same); -- FIXME: This could conceivably be different from how the display -- code works, which just checks that the inanimate/animate variants -- are the same when deciding whether to display them, in particular -- if there is an override. Here we are following the algorithm of -- handle_overall_forms_and_overrides(). if (case == "acc_sg_in" or case == "acc_sg_an") and args.acc_sg or (case == "acc_pl_in" or case == "acc_pl_an") and args.acc_pl then caseok = false end end if not args[case] then caseok = false end return caseok end local function concat_case_args(args, do_all, raw) local ins_text = {} for _, case in ipairs(do_all and all_cases or overridable_cases) do if case_will_be_displayed(args, case) then local forms = get_form(args[case], rfind(case, "_linked"), raw) if forms ~= "" then table.insert(ins_text, case .. (raw and "_raw" or "") .. "=" .. forms) end end end return table.concat(ins_text, "|") end -- The entry point for 'ru-noun-forms' to generate all noun forms. -- This returns a single string, with | separating arguments and named -- arguments of the form NAME=VALUE. function export.generate_forms(frame) local args = clone_args(frame) args = export.do_generate_forms(args, false) return concat_case_args(args) end -- The entry point to generate multiple sets of noun forms. This is a hack -- to speed up calling from a bot, where we often want to compare old and new -- argument results to make sure they're the same. Each set of arguments is -- jammed together into a single argument with individual values separated by -- <!>; named arguments are of the form NAME<->VALUE. The return value for -- each set of arguments is as in export.generate_forms(), and the return -- values are concatenated with <!> separating them. NOTE: This will fail if -- the exact sequences <!> or <-> happen to occur in values (which is unlikely, -- esp. as we don't even use the characters <, ! or > for anything) and aren't -- HTML-escaped. function export.generate_multi_forms(frame) local retvals = {} for _, argset in ipairs(frame.args) do local args = {} local i = 0 local argvals = rsplit(argset, "<!>") for _, argval in ipairs(argvals) do local split_arg = rsplit(argval, "<%->") if #split_arg == 1 then i = i + 1 args[i] = ine(split_arg[1]) else assert(#split_arg == 2) args[split_arg[1]] = ine(split_arg[2]) end end args = export.do_generate_forms(args, false) table.insert(retvals, concat_case_args(args)) end return table.concat(retvals, "<!>") end -- The entry point for 'ru-noun-form' to generate a particular noun form. function export.generate_form(frame) local args = clone_args(frame) if not args.form then error("Must specify desired form using form=") end local form = args.form if not ut.contains(all_cases, form) then error("Unrecognized form " .. form) end local args = export.do_generate_forms(args, false) if not args[form] then return "" else return get_form(args[form]) end end -- The entry point for generating arguments of various sorts, including -- the case forms, gender, number and animacy. function export.generate_args(frame) local args = clone_args(frame) args = export.do_generate_forms(args, false) local retargs = {} table.insert(retargs, concat_case_args(args, "doall")) table.insert(retargs, concat_case_args(args, "doall", "raw")) table.insert(retargs, "g=" .. table.concat(args.genders, ",")) -- The following is correct even with ndef because if ndef is -- set we will set it in args.n. table.insert(retargs, "n=" .. (args.n or "b")) table.insert(retargs, "a=" .. (args.a or "i")) return table.concat(retargs, "|") end -- The entry point for compatibility with {{ru-decl-noun-z}}. function export.show_z(frame) local args = clone_args(frame) local stem = args[1] local stress = args[2] local specific = args[4] or "" -- Parse gender/animacy spec local gender, anim = rmatch(args[3], "^([mfn])-([a-z]+)") if not gender then error("Unrecognized gender/anim spec " .. args[3]) end if anim ~= "an" and anim ~= "in" then anim = "both" end args.a = anim -- Handle specific specific = rsub(specific, "ё", ";ё") -- Compute decl; special case for семьянин (perhaps not necessary) local decl = com.make_unstressed_once(stem) == "семьянин" and "#" .. specific or gender .. specific -- Handle overrides args.pre_sg = args.prp_sg args.pre_pl = args.prp_pl args.notes = args.note if args.par then args.par = "+" end if args.loc then if args.loc == "в" then args.loc = "в +" elseif args.loc == "на" then args.loc = "на +" else args.loc = "в +,на +" end end local arg_set = {} table.insert(arg_set, stress) table.insert(arg_set, stem) table.insert(arg_set, decl) local per_word_info = {{{arg_set}, ""}} return generate_forms_1(args, per_word_info) end local stem_expl = { ["軟口蓋語幹"] = "軟口蓋音 (-к, -г or –x)", ["歯擦語幹"] = "歯擦音 (-ш, -ж, -ч or -щ)", ["ц-語幹"] = "-ц", ["i-語幹"] = "-и (古形は -і)", ["母音語幹"] = "-и、-і、-й、-ь 以外の母音", ["軟語幹"] = "軟子音", ["硬語幹"] = "硬子音", } local zaliznyak_stem_type = { ["軟口蓋語幹"] = "3", ["歯擦語幹"] = "4", ["ц-語幹"] = "5", ["i-語幹"] = "7", ["母音語幹"] = "6", ["軟語幹"] = "2", ["硬語幹"] = "1", ["第三変化"] = "8", } local stem_gender_endings = { masculine = { ["硬語幹"] = {"a hard consonant (-ъ old-style)", "-ы"}, ["ц-語幹"] = {"-ц (-цъ old-style)", "-ы"}, ["軟口蓋語幹"] = {"a velar (plus -ъ old-style)", "-и"}, ["歯擦語幹"] = {"a sibilant (plus -ъ old-style)", "-и"}, ["軟語幹"] = {"-ь", "-и"}, ["i-語幹"] = {"-й", "-и"}, ["母音語幹"] = {"-й", "-и"}, ["第三変化"] = {"-ь", "-и"}, }, feminine = { ["硬語幹"] = {"-а", "-ы"}, ["ц-語幹"] = {"-а", "-ы"}, ["軟口蓋語幹"] = {"-а", "-и"}, ["歯擦語幹"] = {"-а", "-и"}, ["軟語幹"] = {"-я", "-и"}, ["i-語幹"] = {"-я", "-и"}, ["母音語幹"] = {"-я", "-и"}, ["第三変化"] = {"-ь", "-и"}, }, neuter = { ["硬語幹"] = {"-о", "-а"}, ["ц-語幹"] = {"-е", "-а"}, ["軟口蓋語幹"] = {"-о", "-а"}, ["歯擦語幹"] = {"-е", "-а"}, ["軟語幹"] = {"-е", "-я"}, ["i-語幹"] = {"-е", "-я"}, ["母音語幹"] = {"-е", "-я"}, ["第三変化"] = {"-мя", "-мена"}, }, } -- Implementation of template 'runouncatboiler'. function export.catboiler(frame) local SUBPAGENAME = mw.title.getCurrentTitle().subpageText local args = clone_args(frame) local cats = {} local function get_stem_gender_text(stem, gender) if not stem_gender_endings[gender] then error("無効な性 " .. gender) end local endings = stem_gender_endings[gender][stem] if not endings then error("Invalid stem type " .. stem) end local sgending, plending = endings[1], endings[2] local stemtext = stem == "第三変化" and "" or " The stem ends in " .. stem_expl[stem] .. " and is Zaliznyak's type " .. zaliznyak_stem_type[stem] .. "." local decltext = stem == "第三変化" and "" or " This is traditionally considered to belong to the " .. (gender == "feminine" and "1st" or "2nd") .. " declension." return stem .. ", usually " .. gender .. " ~, normally ending in " .. sgending .. " in the nominative singular " .. " and " .. plending .. " in the nominative plural." .. stemtext .. decltext end local function get_pos() local pos = rmatch(SUBPAGENAME, "^ロシア語.- ([^ ]*)s ") if not pos then pos = rmatch(SUBPAGENAME, "^ロシア語.- ([^ ]*)s$") end if not pos then error("Invalid category name, should be e.g. \"Russian nouns with ...\" or \"Russian ... nouns\"") end return pos end local function get_sort_key() local pos, sort_key = rmatch(SUBPAGENAME, "^ロシア語.- ([^ ]*)s with (.*)$") if sort_key then return sort_key end pos, sort_key = rmatch(SUBPAGENAME, "^ロシア語 ([^ ]*)s (.*)$") if sort_key then return sort_key end return rsub(SUBPAGENAME, "^ロシア語 ", "") end local maintext, pos if args[1] == "stemgenderstress" then local stem, gender, stress stem, gender, stress, pos = rmatch(SUBPAGENAME, "^ロシア語 (.-) (.-)%-form accent%-(.-) (.*)s$") if not stem then error("Invalid category name, should be e.g. \"Russian velar-stem masculine-form accent-a nouns\"") end local stem_gender_text = get_stem_gender_text(stem, gender) local accent_text = " This " .. pos .. " is stressed according to accent pattern " .. rsub(stress, "'", "&#39;") .. "." maintext = stem_gender_text .. accent_text insert_category(cats, "~ by stem type, gender and accent pattern|" .. get_sort_key(), pos) elseif args[1] == "stemgender" then if rfind(SUBPAGENAME, "indeclinable") then maintext = "indeclinable ~, which normally have the same form for all cases and numbers." pos = rmatch(SUBPAGENAME, "^Russian indeclinable (.*)s$") if not pos then error("Invalid category name, should be e.g. \"Russian indeclinable nouns\"") end else local stem, gender stem, gender, pos = rmatch(SUBPAGENAME, "^Russian (.-) (.-)%-form (.*)s$") if not stem then error("Invalid category name, should be e.g. \"Russian velar-stem masculine-form nouns\"") end maintext = get_stem_gender_text(stem, gender) end insert_category(cats, "~ by stem type and gender|" .. get_sort_key(), pos) elseif args[1] == "adj" then local stem, gender, stress stem, gender, stress, pos = rmatch(SUBPAGENAME, "^Russian (.*) (.-) accent%-(.-) adjectival (.*)s$") if not stem then stem, gender, pos = rmatch(SUBPAGENAME, "^Russian (.*) (.-) adjectival (.*)s$") end if not stem then error("Invalid category name, should be e.g. \"Russian velar-stem masculine accent-a adjectival nouns\"") end local stemtext if rfind(stem, "possessive") then possessive = "possessive " stem = rsub(stem, " possessive", "") stemtext = "" else if not stem_expl[stem] then error("Invalid stem type " .. stem) end possessive = "" stemtext = " The stem ends in " .. stem_expl[stem] .. " and is Zaliznyak's type " .. zaliznyak_stem_type[stem] .. "." end local stresstext = stress == "a" and "This " .. pos .. " is stressed according to accent pattern a (stress on the stem)." or stress == "b" and "This " .. pos .. " is stressed according to accent pattern b (stress on the ending)." or "All ~ of this class are stressed according to accent pattern a (stress on the stem)." maintext = stem .. " " .. gender .. " ~, with " .. possessive .. "adjectival endings, ending in " .. (gender == "plural-only" and "" or args[2] .. " in the nominative singular and ") .. args[3] .. " in the nominative plural." .. stemtext .. " " .. stresstext insert_category(cats, "~ by stem type, gender and accent pattern|" .. get_sort_key(), pos) else pos = get_pos() if args[1] == "sg" then local sg = rmatch(SUBPAGENAME, "^Russian .* ending in (.*)$") if not sg then error("Invalid category name, should be e.g. \"Russian nouns ending in stressed -е\"") end maintext = "~ ending in " .. (args[2] or sg) .. " in the nominative singular." insert_category(cats, "~ by singular ending", pos) elseif args[1] == "pl" then local pl = rmatch(SUBPAGENAME, "^Russian .* with plural (.*)$") if not pl then error("Invalid category name, should be e.g. \"Russian nouns with plural -е\"") end maintext = "~ ending in " .. (args[2] or pl) .. " in the nominative plural." insert_category(cats, "~ by plural ending|" .. pl, pos) elseif args[1] == "sgpl" then local sg, pl = rmatch(SUBPAGENAME, "^Russian .* ending in (.*) with plural (.*)$") if not sg then error("Invalid category name, should be e.g. \"Russian nouns ending in -о with plural -и\"") end maintext = "~ ending in " .. (args[2] or sg) .. " in the nominative singular, and " .. (args[3] or pl) .. " in the nominative plural." insert_category(cats, "~ by singular and plural ending|" .. sg .. " " .. pl, pos) elseif args[1] == "stress" then local stress = rmatch(SUBPAGENAME, "^Russian .* with accent pattern (.*)$") if not stress then error("Invalid category name, should be e.g. \"Russian nouns with accent pattern d\"") end maintext = "~ with accent pattern " .. rsub(stress, "'", "&#39;") .. "." insert_category(cats, "~ by accent pattern|" .. stress, pos) elseif args[1] == "extracase" then local case = rmatch(SUBPAGENAME, "^Russian .* with (.*)$") if not case then error("Invalid category name, should be e.g. \"Russian nouns with vocative\"") end maintext = "~ with a separate " .. case .. " singular case." insert_category(cats, "~ by case form|" .. case, pos) elseif args[1] == "irregcase" then local case = rmatch(SUBPAGENAME, "^Russian .* with irregular (.*)$") if not case then error("Invalid category name, should be e.g. \"Russian nouns with irregular nominative plural\"") end maintext = "~ with an irregular " .. case .. " case." insert_category(cats, "~ by case form|" .. case, pos) else maintext = "~ " .. args[1] end end insert_category(cats, "~|" .. get_sort_key(), pos, "at beginning") -- format_categories doesn't work in category space so we need to hack our own local categories = {} for _, cat in ipairs(cats) do table.insert(categories, "[[Category:" .. cat .. "]]") end return "This category contains Russian " .. rsub(maintext, "~", pos .. "s") .. "\n" .. mw.getCurrentFrame():expandTemplate{title="ru-categoryTOC", args={}} .. table.concat(categories, "") .. "__EXPECTUNUSEDCATEGORY__" end -------------------------------------------------------------------------- -- Autodetection and lemma munging -- -------------------------------------------------------------------------- -- Attempt to detect the type of the lemma based on its ending, separating -- off the stem and the ending. GENDER must be present with -ь and plural -- stems, and is otherwise ignored. Return up to three values: The stem -- (lemma minus ending), the singular lemma ending, and if the lemma was -- plural, the plural lemma ending. If the lemma was singular, the singular -- lemma ending will contain any user-given accents; likewise, if the -- lemma was plural, the plural ending will contain such accents. -- VARIANT comes from the declension spec and controls certain declension -- variants. local function detect_lemma_type(lemma, tr, gender, args, variant) local base, ending = rmatch(lemma, "^(.*)([еЕ]́)$") -- accented if base then return base, nom.strip_tr_ending(tr, ending), ulower(ending) end base, ending = rmatch(lemma, "^(.*[" .. com.sib_c .. "])([еЕ])$") -- unaccented if base then if variant == "-ище" and not rfind(lemma, "[щЩ][еЕ]$") then error("With declension variant -ище, lemma should end in -ще: " .. lemma) end return base, nom.strip_tr_ending(tr, ending), variant == "-ище" and "(ищ)е-и" or "о" end if variant == "-ишко" then base, ending = rmatch(lemma, "^(.*[шШ][кК])([оО])$") -- unaccented if not base then error("With declension variant -ишко, lemma should end in -шко: " .. lemma) end return base, nom.strip_tr_ending(tr, ending), "(ишк)о-и" end if variant == "-ин" then base, ending = rmatch(lemma, "^(.*)([иИ]́?[нН][ъЪ]?)$") -- maybe accented if not base then error("With declension variant -ин, lemma should end in -ин(ъ): " .. lemma) end return base, nom.strip_tr_ending(tr, ending), ulower(ending) end -- Now autodetect -ин; only animate and in -анин/-янин base, ending = rmatch(lemma, "^(.*[аяАЯ]́?[нН])([иИ]́?[нН][ъЪ]?)$") -- Need to check the animacy to avoid nouns like маиганин, цианин, -- меланин, соланин, etc. if base and args.thisa == "a" then return base, nom.strip_tr_ending(tr, ending), ulower(ending) end base, ending = rmatch(lemma, "^(.*)([ёЁ]́?[нН][оО][кК][ъЪ]?)$") if base then return base, nom.strip_tr_ending(tr, ending), ulower(ending) end base, ending = rmatch(lemma, "^(.*[" .. com.sib_c .. "])([оО]́[нН][оО][кК][ъЪ]?)$") if base then return base, nom.strip_tr_ending(tr, ending), ulower(ending) end base, ending = rmatch(lemma, "^(.*)([ёЁ]́?[нН][оО][чЧ][еЕ][кК][ъЪ]?)$") if base then return base, nom.strip_tr_ending(tr, ending), ulower(ending) end base, ending = rmatch(lemma, "^(.*[" .. com.sib_c .. "])([оО]́[нН][оО][чЧ][еЕ][кК][ъЪ]?)$") if base then return base, nom.strip_tr_ending(tr, ending), ulower(ending) end base, ending = rmatch(lemma, "^(.*)([мМ][яЯ]́?)$") if base then return base, nom.strip_tr_ending(tr, ending), ulower(ending) end --recognize plural endings if gender == "n" then base, ending = rmatch(lemma, "^(.*)([ьЬ][яЯ]́?)$") if base then -- Don't do this; о/-ья is too rare -- error("Ambiguous plural lemma " .. lemma .. " in -ья, singular could be -о or -ье/-ьё; specify the singular") return base, nom.strip_tr_ending(tr, ending), "ье", ending end base, ending = rmatch(lemma, "^(.*)([аяАЯ]́?)$") if base then return base, nom.strip_tr_ending(tr, ending), rfind(ending, "[аА]") and "о" or "е", ending end base, ending = rmatch(lemma, "^(.*)([ыиЫИ]́?)$") if base then if rfind(ending, "[ыЫ]") or rfind(base, "[" .. com.sib .. com.velar .. "]$") then return base, nom.strip_tr_ending(tr, ending), "о-и", ending else -- FIXME, should we return a slash declension? error("No neuter declension е-и available; use a slash declension") end end end if gender == "f" then base, ending = rmatch(lemma, "^(.*)([ьЬ][иИ]́?)$") if base then return base, nom.strip_tr_ending(tr, ending), "ья", ending end end -- Recognize masculines with irregular plurals, but only if the user -- either explicitly specified that this noun is plural (n=p) or -- specifically requested the irregular plural. This is necessary -- because some masculine nouns have feminine endings, which look -- like irregular plurals. if gender == "m" then if args.thisn == "p" or variant == "-ья" then base, ending = rmatch(lemma, "^(.*)([ьЬ][яЯ]́?)$") if base then return base, nom.strip_tr_ending(tr, ending), (args.old and "ъ-ья" or "-ья"), ending end end if args.thisn == "p" or args.want_sc1 then base, ending = rmatch(lemma, "^(.*)([аА]́?)$") if base then return base, nom.strip_tr_ending(tr, ending), (args.old and "ъ-а" or "-а"), ending end base, ending = rmatch(lemma, "^(.*)([яЯ]́?)$") if base then if rfind(base, "[" .. com.vowel .. "]́?$") then return base, nom.strip_tr_ending(tr, ending), "й-я", ending else return base, nom.strip_tr_ending(tr, ending), "ь-я", ending end end end end if gender == "m" or gender == "f" then base, ending = rmatch(lemma, "^(.*[" .. com.sib .. com.velar .. "])([иИ]́?)$") if not base then base, ending = rmatch(lemma, "^(.*)([ыЫ]́?)$") end if base then return base, nom.strip_tr_ending(tr, ending), gender == "m" and (args.old and "ъ" or "") or "а", ending end base, ending = rmatch(lemma, "^(.*[" .. com.vowel .. "й]́?)([иИ]́?)$") if base then return base, nom.strip_tr_ending(tr, ending), gender == "m" and "й" or "я", ending end base, ending = rmatch(lemma, "^(.*)([иИ]́?)$") if base then return base, nom.strip_tr_ending(tr, ending), gender == "m" and "ь-m" or "я", ending end end if gender == "3f" then base, ending = rmatch(lemma, "^(.*)([иИ]́?)$") if base then return base, nom.strip_tr_ending(tr, ending), "ь-f", ending end end -- end of recognize-plurals code base, ending = rmatch(lemma, "^(.*)([ьЬ][яеёЯЕЁ]́?)$") if base then return base, nom.strip_tr_ending(tr, ending), ulower(ending) end base, ending = rmatch(lemma, "^(.*)([йаяеоёъЙАЯЕОЁЪ]́?)$") if base then return base, nom.strip_tr_ending(tr, ending), ulower(ending) end base, ending = rmatch(lemma, "^(.*)([ьЬ])$") if base then if gender == "m" or gender == "f" then return base, nom.strip_tr_ending(tr, ending), "ь-" .. gender elseif gender == "3f" then return base, nom.strip_tr_ending(tr, ending), "ь-f" else error("Need to specify gender m or f with lemma in -ь: ".. lemma) end end if rfind(lemma, "[ыиЫИ]́?$") then error("If this is a plural lemma, gender must be specified: " .. lemma) elseif rfind(lemma, "[уыэюиіѣѵУЫЭЮИІѢѴ]́?$") then error("Don't know how to decline lemma ending in this type of vowel: " .. lemma) end return lemma, tr, "" end local plural_variant_detection_map = { [""] = {["-ья"]="-ья"}, ["ъ"] = {["-ья"]="ъ-ья"}, } local special_case_1_to_plural_variant = { [""] = "-а", ["ъ"] = "ъ-а", ["й"] = "й-я", ["ь-m"] = "ь-я", ["о"] = "о-и", -- these last two are here to avoid getting errors in that checks for -- compatibility with special case 1; the basic variants of these decls -- don't actually exist ["(ишк)о"] = "(ишк)о-и", ["(ищ)е"] = "(ищ)е-и", } local function map_decl(decl, fun) if rfind(decl, "/") then local split_decl = rsplit(decl, "/") if #split_decl ~= 2 then error("Mixed declensional class " .. decl .. "needs exactly two classes, singular and plural") end return fun(split_decl[1]) .. "/" .. fun(split_decl[2]) else return fun(decl) end end -- Canonicalize decl class into non-accented and alias-resolved form; -- but note that some canonical decl class names with an accent in them -- (e.g. е́, not the same as е, whose accented version is ё; and various -- adjective declensions). local function canonicalize_decl(decl, old) local function do_canon(decl) -- remove accents, but not from е́ (for adj decls, accent matters -- as well but we handle that by mapping the accent to a stress pattern -- and then to the accented version in determine_stress_variant()) if decl ~= "е́" then decl = com.remove_accents(decl) end local decl_aliases = old and declensions_old_aliases or declensions_aliases local decl_cats = old and declensions_old_cat or declensions_cat if decl_aliases[decl] then -- If we find an alias, map it. decl = decl_aliases[decl] elseif not decl_cats[decl] then error("Unrecognized declension class " .. decl) end return decl end return map_decl(decl, do_canon) end -- Attempt to determine the actual declension (including plural variants) -- based on a combination of the declension the user specified, what can be -- detected from the lemma, and special case (1), if given in the declension. -- DECL is the value the user passed for the declension field, after -- extraneous annotations (special cases (1) and (2), * for reducible, -- ё for ё/ё alternation and a ; that may precede ё) have been stripped off. -- What's left is one of the following: -- -- 1. Blank, meaning to autodetect the declension from the lemma -- 2. A hyphen followed by a declension variant (-ья, -ин, -ишко, -ище; see -- long comment at top of file) -- 3. A gender (m, f, n, 3f) -- 4. A gender plus declension variant (e.g. f-ья) -- 5. An actual declension, possibly including a plural variant (e.g. о-и) or -- a slash declension (e.g. я/-ья, used for the noun дядя). -- -- Return seven args: stem (lemma minus ending), translit, canonicalized -- declension, explicitly specified gender if any (m, f, n or nil), whether -- the specified declension or detected ending was accented, whether the -- detected ending was pl, and whether the declension was autodetected -- (corresponds to cases where a full word with ending attached is required -- in the lemma field). "Canonicalized" means after autodetection, with -- accents removed, with any aliases mapped to their canonical versions -- and with any requested declension variants applied. The result is either a -- declension that will have a categorization entry (in declensions_cat[] or -- declensions_old_cat[]) or a slash declension where each part similarly has -- a categorization entry. -- -- Note that gender is never required when an explicit declension is given, -- and in connection with stem autodetection is required only when the lemma -- either ends in -ь or is plural. determine_decl = function(lemma, tr, decl, args) -- Assume we're passed a value for DECL of types 1-4 above, and -- fetch gender and requested declension variant. local stem local want_ya_plural, orig_pl_ending, variant local was_autodetected local gender = rmatch(decl, "^(3?[mfn]?)$") if not gender then gender, variant = rmatch(decl, "^(3?[mfn]?)(%-[^%-]+)$") -- But be careful with explicit declensions like -а that look like -- variants without gender (FIXME, eventually we should maybe do -- something about the potential ambiguity). if gender == "" and not ut.contains({"-ья", "-ин", "-ишко", "-ище"}, variant) then gender, variant = nil, nil end end -- If DECL is of type 1-4, handle declension variants and detect -- the actual declension from the lemma. if gender then -- Check for declension variants if variant then if variant == "-ья" then want_ya_plural = "-ья" else -- Sanity-check remaining declension variants, which need -- specific values of animacy, gender and special-case (1) local sc1_needed local animate_needed if variant == "-ишко" then animate_needed = false sc1_needed = true elseif variant == "-ище" then animate_needed = true sc1_needed = true elseif variant == "-ин" then animate_needed = true sc1_needed = false else -- WARNING: If adding another variant, you need to also -- add to the list farther above. error("Unrecognized declension variant " .. variant .. ", should be -ья, -ин, -ишко or -ище") end if sc1_needed and not args.want_sc1 then error("Declension variant " .. variant .. " must be used with special case (1)") elseif sc1_needed == false and args.want_sc1 then error("Declension variant " .. variant .. " must not be used with special case (1)") end if animate_needed and args.thisa ~= "a" then error("Declension variant " .. variant .. " must be specified as animate") elseif animate_needed == false and args.thisa == "a" then error("Declension variant " .. variant .. " must not be specified as animate") end if gender ~= "" and gender ~= "m" then error("Declension variant " .. variant .. " should be used with the masculine gender") end end end stem, tr, decl, orig_pl_ending = detect_lemma_type(lemma, tr, gender, args, variant) was_autodetected = true else stem, tr = lemma, tr end -- Now canonicalize gender if gender == "3f" then gender = "f" elseif gender == "" then gender = nil end -- The ending should be treated as accented if either the original singular -- or plural ending was accented, or if the stem is non-syllabic. local was_accented = com.is_stressed(decl) or orig_pl_ending and com.is_stressed(orig_pl_ending) or com.is_nonsyllabic(stem) local was_plural = not not orig_pl_ending decl = canonicalize_decl(decl, args.old) -- The rest of this code concerns plural variants. It's somewhat -- complicated because there are potentially four sources of plural -- variants (not to mention plural variants constructed using slash -- notation): -- -- 1. A user-requested plural variant in declension types 2 or 4 above -- (currently only -ья) -- 2. An explicit plural variant encoded in an explicit declension of -- type 5 above -- 3. An autodetected plural variant (which will happen in some cases -- when autodetection is performed on a nominative plural) -- 4. A plural variant derived using special case (1). -- -- Up to three actual plural variants might exist (e.g. if the user -- specifies a DECL value or 'm-ья(1)' and a STEM ending in -а, -- although not all three can ever be compatible because -ья and (1) -- are never compatible). We can't have all four because if there's -- an explicit plural variant, there won't be a user-requested or -- autodetected plural variant. -- -- The goal below is to do two things: Check that all available plural -- variants are the same, and generate the actual declension. -- If we have a type-2 or type-3 variant, we already have the actual -- declension; else we need to use a table to map the basic declension -- to the one with the plural variant encoded in it. -- -- NOTE: The code below was written with a more general plural-variant -- system. It probably can be simplified a lot now. -- 1: Handle explicit decl with slash variant if rfind(decl, "/") then if want_ya_plural then -- Don't think this can happen error("Plural variant " .. want_ya_plural .. " not compatible with slash declension " .. decl) end if args.want_sc1 then error("Special case (1) not compatible with slash declension" .. decl) end return stem, tr, decl, gender, was_accented, was_plural, was_autodetected end -- 2: Retrieve explicitly specified or autodetected decl and pl. variant local basic_decl, detected_or_explicit_plural = rmatch(decl, "^(.*)(%-[^mf]+)$") if basic_decl == "ь" then basic_decl = "ь-m" end basic_decl = basic_decl or decl -- 3: Any user-requested plural variant must agree with explicit or -- autodetected variant. if want_ya_plural and detected_or_explicit_plural and want_ya_plural ~= detected_or_explicit_plural then error("Plural variant " .. want_ya_plural .. " requested but plural variant " .. detected_or_explicit_plural .. " detected from plural stem") end -- 4: Handle special case (1). Derive the full declension, make sure its -- plural variant matches any other available plural variants, and -- return the declension. if args.want_sc1 then local sc1_decl = special_case_1_to_plural_variant[basic_decl] or error("Special case (1) not compatible with declension " .. basic_decl) local sc1_plural = rsub(sc1_decl, "^.*%-", "-") local other_plural = want_ya_plural or detected_or_explicit_plural if other_plural and sc1_plural ~= other_plural then error("Plural variant " .. other_plural .. " specified or detected, but special case (1) calls for plural variant " .. sc1_plural) end return stem, tr, sc1_decl, gender, was_accented, was_plural, was_autodetected end -- 5: Handle user-requested plural variant without explicit or detected -- one. (If an explicit or detected one exists, we've already checked -- that it agrees with the user-requested one, and so we already have -- our full declension.) if want_ya_plural and not detected_or_explicit_plural then local variant_decl if plural_variant_detection_map[decl] then variant_decl = plural_variant_detection_map[decl][want_ya_plural] end if variant_decl then return stem, tr, variant_decl, gender, was_accented, was_plural, was_autodetected else return stem, tr, decl .. (args.old and "/ъ-ья" or "/-ья"), gender, was_accented, was_plural, was_autodetected end end -- 6: Just return the full declension, which will include any available -- plural variant in it. return stem, tr, decl, gender, was_accented, was_plural, was_autodetected end -- Convert soft adjectival declensions into hard ones following certain -- stem-final consonants. FIXME: We call this in two places, once -- to handle auto-detection and once to handle explicit declensions; but -- in the former case we end up calling it twice. function determine_adj_stem_variant(decl, stem) local iend = rmatch(decl, "^%+[іи]([йея]?)$") -- Convert ій/ий to ый after velar or sibilant. This is important for -- velars; doesn't really matter one way or the other for sibilants as -- the sibilant rules will convert both sets of endings to the same -- thing (whereas there will be a difference with о vs. е for velars). if iend and rfind(stem, "[" .. com.velar .. com.sib .. "]$") then decl = "+ы" .. iend -- The following is necessary for -ц, unclear if makes sense for -- sibilants. (Would be necessary -- I think -- if we were -- inferring short adjective forms, but we're not.) elseif decl == "+ее" and rfind(stem, "[" .. com.sib_c .. "]$") then decl = "+ое" end return decl end -- Attempt to determine the actual adjective declension based on a -- combination of the declension the user specified and what can be detected -- from the stem. DECL is the value the user passed for the declension field, -- after extraneous annotations have been removed (although none are probably -- relevant here). What's left is one of the following, which always begins -- with +: -- -- 1. +, meaning to autodetect the declension from the stem -- 2. +ь, same as + but selects +ьий instead of +ий if lemma ends in -ий -- 3. +short, +mixed or +proper, with the declension partly specified but -- the particular gender/number-specific short/mixed variant to be -- autodetected -- 4. A gender (+m, +f or +n), used only for detecting the singular of -- plural-form lemmas (this is primarily used in conjunction with template -- ru-noun+, to explicitly specify the gender; for the actual declension, -- it doesn't much matter what singular gender we pick since we're a -- plural only) -- 5. A gender plus short/mixed/proper/ь (e.g. +f-mixed), again with the gender -- used only for detecting the singular of plural-form short/mixed lemmas -- 6. An actual declension, possibly including a slash declension -- (WARNING: Unclear if slash declensions will work, especially those -- that are adjective/noun combinations) -- -- Returns the same seven args as for determine_decl(). The returned -- declension will always begin with +. detect_adj_type = function(lemma, tr, decl, old) local was_autodetected local base, ending local basedecl, g = rmatch(decl, "^(%+)([mfn])$") if not basedecl then g, basedecl = rmatch(decl, "^%+([mfn])%-([a-zь]+)$") if basedecl then basedecl = "+" .. basedecl end end decl = basedecl or decl if decl == "+" or decl == "+ь" then base, ending = rmatch(lemma, "^(.*)([ыиіьаяое]́?[йея])$") if ending == "ий" and decl == "+ь" then decl = "+ьий" elseif ending == "ій" and decl == "+ь" then decl = "+ьій" elseif ending then decl = "+" .. ending else base, ending = rmatch(lemma, "^(.-)([оаыъ]?́?)$") assert(base) local shortmixed = rfind(base, "^[" .. com.uppercase .. "].*[иы]́н$") and "stressed-proper" or -- accented rfind(base, "^[" .. com.uppercase .. "].*[иы]н$") and "proper" or --not accented rlfind(base, "[ёео]́?в$") and "short" or rlfind(base, "[ыи]́н$") and "stressed-short" or -- accented rlfind(base, "[ыи]н$") and "mixed" --not accented if not shortmixed then error("Cannot determine stem type of adjective: " .. lemma) end decl = "+" .. ending .. "-" .. shortmixed end was_autodetected = true elseif ut.contains({"+short", "+mixed", "+proper"}, decl) then base, ending = rmatch(lemma, "^(.-)([оаыъ]?́?)$") assert(base) local shortmixed = usub(decl, 2) if rlfind(base, "[ыи]́н$") then -- accented if shortmixed == "short" then shortmixed = "stressed-short" elseif shortmixed == "proper" then shortmixed = "stressed-proper" end end decl = "+" .. ending .. "-" .. shortmixed was_autodetected = true else base = lemma end if ending and ending ~= "" then tr = nom.strip_tr_ending(tr, ending) end -- Remove any accents from the declension, but not their presence. -- We will convert was_accented into stress pattern b, and convert that -- back to an accented version in determine_stress_variant(). This way -- we end up with the stressed version whether the user placed an accent -- in the ending or decl or specified stress pattern b. -- FIXME, might not work in the presence of slash declensions local was_accented = com.is_stressed(decl) decl = com.remove_accents(decl) decl = map_decl(decl, function(decl) return determine_adj_stem_variant(decl, base) end) local singdecl if decl == "+ые" then singdecl = (g == "m" or not g) and (was_accented and "+ой" or "+ый") or not old and g == "f" and "+ая" or not old and g == "n" and "+ое" elseif decl == "+ыя" and old then singdecl = (g == "f" or not g) and "+ая" or g == "n" and "+ое" elseif decl == "+ие" and not old then singdecl = (g == "m" or not g) and "+ий" or g == "f" and "+яя" or g == "n" and "+ее" elseif decl == "+іе" and old and (g == "m" or not g) then singdecl = "+ій" elseif decl == "+ія" and old then singdecl = (g == "f" or not g) and "+яя" or g == "n" and "+ее" elseif decl == "+ьи" then singdecl = (g == "m" or not g) and (old and "+ьій" or "+ьий") or g == "f" and "+ья" or g == "n" and "+ье" elseif rfind(decl, "^%+ы%-") then -- decl +ы-mixed or similar local beg = (g == "m" or not g) and (old and "ъ" or "") or g == "f" and "а" or g == "n" and "о" singdecl = beg and "+" .. beg .. usub(decl, 3) end if singdecl then was_plural = true decl = singdecl end return base, tr, canonicalize_decl(decl, old), g, was_accented, was_plural, was_autodetected end -- If stress pattern omitted, detect it based on whether ending is stressed -- or the decl class or stem accent calls for inherent stress, defaulting to -- pattern a. This is run after alias resolution and accent removal of DECL; -- WAS_ACCENTED indicates whether the ending was originally stressed. -- FIXME: This is run before splitting slash patterns but should be run after. detect_stress_pattern = function(stem, decl, decl_cats, reducible, was_plural, was_accented) -- ёнок and ёночек always bear stress if rfind(decl, "ёнокъ?") or rfind(decl, "ёночекъ?") then return "b" -- stressed suffix и́н; missing in plural and true endings don't bear stress -- (except for exceptional господи́н) elseif rfind(decl, "инъ?") and was_accented then return "d" -- Adjectival -ой always bears the stress elseif rfind(decl, "%+ой") then return "b" -- Adjectival stressed-short, stressed-proper bears the stress elseif rfind(decl, "^%+.*%-stressed") then return "b" -- Pattern b if ending was accented by user elseif was_accented then return "b" -- Nonsyllabic stem means pattern b elseif com.is_nonsyllabic(stem) then return "b" -- Accent on reducible vowel in masc nom sg (not plural) means pattern b. -- Think about whether we want to enable this. -- elseif reducible and not was_plural then -- -- FIXME hack. Eliminate plural part of slash declension. -- decl = rsub(decl, "/.*", "") -- if decl_cats[decl] and decl_cats[decl].g == "m" then -- if com.is_ending_stressed(stem) or com.is_monosyllabic(stem) then -- return "b" -- end -- end end return "a" end -- In certain special cases, depending on the declension, we override the -- user-specified stress pattern and convert it to something else. -- NOTE: This function is run after alias resolution and accent removal. -- FIXME: It's also run before splitting slash patterns but should be run after. override_stress_pattern = function(decl, stress) -- ёнок and ёночек always bear stress; if user specified a, -- convert to b. Don't do this with slash patterns (see FIXME above). if stress == "a" and (rfind(decl, "^ёнокъ?$") or rfind(decl, "^ёночекъ?$")) then return "b" end return stress end -- Canonicalize an adjectival declension to either the stressed or unstressed -- variant depending on the stress. Ultimately this is what ensures that -- the user's stress mark on an adjectival ending is respected. determine_stress_variant = function(decl, stress) if stress == "b" then if decl == "+ая" then return "+а́я" elseif decl == "+ое" then return "+о́е" else -- Convert +...-short to +...-stressed-short and same for -proper local b, e = rmatch(decl, "^%+(.*)%-(short)$") if not b then b, e = rmatch(decl, "^%+(.*)%-(proper)$") end if b and not rfind(b, "%-stressed") then return "+" .. b .. "-stressed-" .. e end end end return decl end -- Canonicalize a declension based on the final stem consonant, in -- particular converting soft declensions to hard ones after velars and/or -- sibilants. FIXME: We also do this canonicalization earlier on during -- auto-detection (determine_adj_stem_variant() is called by -- detect_adj_type(), and code in detect_lemma_type() does the equivalent -- of the first clause below). Doing it here ensures that explicitly -- specified declensions get handled as well, but it would be nice to not -- do the same thing twice in the auto-detection case. determine_stem_variant = function(decl, stem) if decl == "е" and rfind(stem, "[" .. com.sib_c .. "]$") then return "о" end return determine_adj_stem_variant(decl, stem) end is_reducible = function(decl_cat) if decl_cat.suffix or decl_cat.cant_reduce or decl_cat.adj then return false elseif decl_cat.decl == "3rd" and decl_cat.g == "f" or decl_cat.g == "m" then return true else return false end end -- Reduce nom sg to stem by eliminating the "epenthetic" vowel. Applies to -- masculine 2nd-declension hard and soft, and 3rd-declension feminine in -- -ь. STEM and DECL are after determine_decl(), before converting -- outward-facing declensions to inward ones. function export.reduce_nom_sg_stem(stem, tr, decl, can_err) local full_stem = stem .. (decl == "й" and decl or "") local full_tr = tr and tr .. (decl == "й" and "j" or "") local ret, rettr = com.reduce_stem(full_stem, full_tr) if not ret and can_err then error("Unable to reduce stem " .. stem) end return ret, rettr end is_dereducible = function(decl_cat) if decl_cat.suffix or decl_cat.cant_reduce or decl_cat.adj then return false elseif decl_cat.decl == "1st" or decl_cat.decl == "2nd" and decl_cat.g == "n" then return true else return false end end -- Add a possible suffix to the bare stem, according to the declension and -- value of OLD. This may be -ь, -ъ, -й or nothing. We need to do this here -- because we don't actually attach such a suffix in attach_unstressed() due -- to situations where we don't want the suffix added, e.g. dereducible nouns -- in -ня. add_bare_suffix = function(bare, baretr, old, sgdc, dereduced) if old and sgdc.hard == "hard" then -- Final -ъ isn't transliterated return bare .. "ъ", baretr elseif sgdc.hard == "soft" or sgdc.hard == "palatal" then -- This next clause corresponds to a special case in Vitalik's module. -- It says that nouns in -ня (accent class a) have gen pl without -- trailing -ь. It appears to apply to most nouns in -ня (possibly -- all in -льня), but ку́хня (gen pl ку́хонь) and дерéвня (gen pl -- дереве́нь) is an exception. (Vitalik's module has an extra -- condition here 'stress == "a"' that would exclude дере́вня but I -- don't think this condition is in Zaliznyak, as he indicates -- дере́вня as having an exceptional genitive plural.) if dereduced and rfind(bare, "[нН]$") and sgdc.decl == "1st" then -- FIXME: What happens in this case old-style? I assume that -- -ъ is added, but this is a guess. -- Final -ъ isn't transliterated return bare .. (old and "ъ" or ""), baretr elseif rfind(bare, "[" .. com.vowel .. "]́?$") then return bare .. "й", baretr and (baretr .. "j") else return bare .. "ь", baretr and (baretr .. "ʹ") end else return bare, baretr end end -- Dereduce stem to the form found in the gen pl (and maybe nom sg) by -- inserting an epenthetic vowel. Applies to 1st declension and 2nd -- declension neuter, and to 2nd declension masculine when the stem was -- specified as a plural form (in which case we're deriving the nom sg, -- and also the gen pl in the alt-gen-pl scenario). STEM and DECL are -- after determine_decl(), before converting outward-facing declensions -- to inward ones. STRESS is the stess pattern. function export.dereduce_nom_sg_stem(stem, tr, sgdc, stress, old, can_err) local epenthetic_stress = ending_stressed_gen_pl_patterns[stress] local ret, rettr = com.dereduce_stem(stem, tr, epenthetic_stress) if not ret then if can_err then error("Unable to dereduce stem " .. stem) else return nil, nil end end return add_bare_suffix(ret, rettr, old, sgdc, true) end -------------------------------------------------------------------------- -- Second-declension masculine -- -------------------------------------------------------------------------- ----------------- Masculine hard ------------------- -- Hard-masculine declension, ending in a hard consonant -- (ending in -ъ, old-style). declensions_old["ъ"] = { ["nom_sg"] = "ъ", ["gen_sg"] = "а́", ["dat_sg"] = "у́", ["acc_sg"] = nil, ["ins_sg"] = "о́мъ", ["pre_sg"] = "ѣ́", ["nom_pl"] = "ы́", ["gen_pl"] = function(stem, stress) return nom.sibilant_suffixes[ulower(usub(stem, -1))] and "е́й" or "о́въ" end, ["alt_gen_pl"] = "ъ", ["dat_pl"] = "а́мъ", ["acc_pl"] = nil, ["ins_pl"] = "а́ми", ["pre_pl"] = "а́хъ", } declensions_old_cat["ъ"] = { decl="2nd", hard="hard", g="m" } -- Normal mapping of old ъ would be "" (blank), but we set up "#" as an alias -- so we have a way of referring to it without defaulting if need be and -- distinct from auto-detection (e.g. in the second stem of a word, or to -- override autodetection of -ёнок or -ин -- the latter is necessary in the -- case of семьянин). declensions_aliases["#"] = "" ----------------- Masculine hard, irregular plural ------------------- -- Hard-masculine declension, ending in a hard consonant -- (ending in -ъ, old-style), with irreg nom pl -а. declensions_old["ъ-а"] = mw.clone(declensions_old["ъ"]) declensions_old["ъ-а"]["nom_pl"] = "а́" declensions_old_cat["ъ-а"] = { decl="2nd", hard="hard", g="m", alt_nom_pl=true } declensions_aliases["#-a"] = "-a" -- Hard-masculine declension, ending in a hard consonant -- (ending in -ъ, old-style), with irreg soft pl -ья. -- Differs from the normal declension throughout the plural. declensions_old["ъ-ья"] = { ["nom_sg"] = "ъ", ["gen_sg"] = "а́", ["dat_sg"] = "у́", ["acc_sg"] = nil, ["ins_sg"] = "о́мъ", ["pre_sg"] = "ѣ́", ["nom_pl"] = "ья́", ["gen_pl"] = "ьёвъ", ["alt_gen_pl"] = "е́й", ["dat_pl"] = "ья́мъ", ["acc_pl"] = nil, ["ins_pl"] = "ья́ми", ["pre_pl"] = "ья́хъ", } declensions_old_cat["ъ-ья"] = { decl="2nd", hard="hard", g="m", irregpl=true } declensions_aliases["#-ья"] = "-ья" ----------------- Masculine hard, suffixed, irregular plural ------------------- declensions_old["инъ"] = { ["nom_sg"] = "и́нъ", ["gen_sg"] = "и́на", ["dat_sg"] = "и́ну", ["acc_sg"] = nil, ["ins_sg"] = "и́номъ", ["pre_sg"] = "и́нѣ", ["nom_pl"] = "е́", ["gen_pl"] = "ъ", ["dat_pl"] = "а́мъ", ["acc_pl"] = nil, ["ins_pl"] = "а́ми", ["pre_pl"] = "а́хъ", } declensions_old_cat["инъ"] = { decl="2nd", hard="hard", g="m", suffix=true } declensions_old["ёнокъ"] = { ["nom_sg"] = "ёнокъ", ["gen_sg"] = "ёнка", ["dat_sg"] = "ёнку", ["acc_sg"] = nil, ["ins_sg"] = "ёнкомъ", ["pre_sg"] = "ёнкѣ", ["nom_pl"] = "я́та", ["gen_pl"] = "я́тъ", ["dat_pl"] = "я́тамъ", ["acc_pl"] = nil, ["ins_pl"] = "я́тами", ["pre_pl"] = "я́тахъ", } declensions_old_cat["ёнокъ"] = { decl="2nd", hard="hard", g="m", suffix=true } declensions_old_aliases["онокъ"] = "ёнокъ" declensions_old_aliases["енокъ"] = "ёнокъ" declensions_old["ёночекъ"] = { ["nom_sg"] = "ёночекъ", ["gen_sg"] = "ёночка", ["dat_sg"] = "ёночку", ["acc_sg"] = nil, ["ins_sg"] = "ёночкомъ", ["pre_sg"] = "ёночкѣ", ["nom_pl"] = "я́тки", ["gen_pl"] = "я́токъ", ["dat_pl"] = "я́ткамъ", ["acc_pl"] = nil, ["ins_pl"] = "я́тками", ["pre_pl"] = "я́ткахъ", } declensions_old_cat["ёночекъ"] = { decl="2nd", hard="hard", g="m", suffix=true } declensions_old_aliases["оночекъ"] = "ёночекъ" declensions_old_aliases["еночекъ"] = "ёночекъ" ----------------- Masculine soft ------------------- -- Normal soft-masculine declension in -ь declensions_old["ь-m"] = { ["nom_sg"] = "ь", ["gen_sg"] = "я́", ["dat_sg"] = "ю́", ["acc_sg"] = nil, ["ins_sg"] = "ёмъ", ["pre_sg"] = "ѣ́", ["nom_pl"] = "и́", ["gen_pl"] = "е́й", ["alt_gen_pl"] = "ь", ["dat_pl"] = "я́мъ", ["acc_pl"] = nil, ["ins_pl"] = "я́ми", ["pre_pl"] = "я́хъ", } declensions_old_cat["ь-m"] = { decl="2nd", hard="soft", g="m" } -- Soft-masculine declension in -ь with irreg nom pl -я declensions_old["ь-я"] = mw.clone(declensions_old["ь-m"]) declensions_old["ь-я"]["nom_pl"] = "я́" declensions_old_cat["ь-я"] = { decl="2nd", hard="soft", g="m", alt_nom_pl=true } ----------------- Masculine palatal ------------------- -- Masculine declension in palatal -й declensions_old["й"] = { ["nom_sg"] = "й", ["gen_sg"] = "я́", ["dat_sg"] = "ю́", ["acc_sg"] = nil, ["ins_sg"] = "ёмъ", ["pre_sg"] = function(stem, stress) return rlfind(stem, "[іи]́?$") and not ending_stressed_pre_sg_patterns[stress] and "и" or "ѣ́" end, ["nom_pl"] = "и́", ["gen_pl"] = "ёвъ", ["alt_gen_pl"] = "й", ["dat_pl"] = "я́мъ", ["acc_pl"] = nil, ["ins_pl"] = "я́ми", ["pre_pl"] = "я́хъ", } declensions_old_cat["й"] = { decl="2nd", hard="palatal", g="m" } declensions_old["й-я"] = mw.clone(declensions_old["й"]) declensions_old["й-я"]["nom_pl"] = "я́" declensions_old_cat["й-я"] = { decl="2nd", hard="palatal", g="m", alt_nom_pl=true } -------------------------------------------------------------------------- -- First-declension feminine -- -------------------------------------------------------------------------- ----------------- Feminine hard ------------------- -- Hard-feminine declension in -а declensions_old["а"] = { ["nom_sg"] = "а́", ["gen_sg"] = "ы́", ["dat_sg"] = "ѣ́", ["acc_sg"] = "у́", ["ins_sg"] = {"о́й<insa>", "о́ю<insb>"}, -- see concat_word_forms_1() ["pre_sg"] = "ѣ́", ["nom_pl"] = "ы́", ["gen_pl"] = function(stem, stress) return nom.sibilant_suffixes[ulower(usub(stem, -1))] and ending_stressed_gen_pl_patterns[stress] and "е́й" or "ъ" end, ["alt_gen_pl"] = "е́й", ["dat_pl"] = "а́мъ", ["acc_pl"] = nil, ["ins_pl"] = "а́ми", ["pre_pl"] = "а́хъ", } declensions_old_cat["а"] = { decl="1st", hard="hard", g="f" } ----------------- Feminine soft ------------------- -- Soft-feminine declension in -я declensions_old["я"] = { ["nom_sg"] = "я́", ["gen_sg"] = "и́", ["dat_sg"] = function(stem, stress) return rlfind(stem, "[іи]́?$") and not ending_stressed_dat_sg_patterns[stress] and "и" or "ѣ́" end, ["acc_sg"] = "ю́", ["ins_sg"] = {"ёй<insa>", "ёю<insb>"}, -- see concat_word_forms_1() ["pre_sg"] = function(stem, stress) return rlfind(stem, "[іи]́?$") and not ending_stressed_pre_sg_patterns[stress] and "и" or "ѣ́" end, ["nom_pl"] = "и́", ["gen_pl"] = function(stem, stress) return ending_stressed_gen_pl_patterns[stress] and not rlfind(stem, "[" .. com.vowel .. "]́?$") and "е́й" or "й" end, ["alt_gen_pl"] = "е́й", ["dat_pl"] = "я́мъ", ["acc_pl"] = nil, ["ins_pl"] = "я́ми", ["pre_pl"] = "я́хъ", } declensions_old_cat["я"] = { decl="1st", hard="soft", g="f" } -- Soft-feminine declension in -ья. -- Almost like ь + -я endings except for genitive plural. declensions_old["ья"] = { ["nom_sg"] = "ья́", ["gen_sg"] = "ьи́", ["dat_sg"] = "ьѣ́", ["acc_sg"] = "ью́", ["ins_sg"] = {"ьёй<insa>", "ьёю<insb>"}, -- see concat_word_forms_1() ["pre_sg"] = "ьѣ́", ["nom_pl"] = "ьи́", ["gen_pl"] = function(stem, stress) -- circumflex accent is a signal that forces stress, particularly -- in accent pattern d/d'. return (ending_stressed_gen_pl_patterns[stress] or stress == "d" or stress == "d'") and "е̂й" or "ий" end, ["dat_pl"] = "ья́мъ", ["acc_pl"] = nil, ["ins_pl"] = "ья́ми", ["pre_pl"] = "ья́хъ", } declensions_old_cat["ья"] = { decl="1st", hard="soft", g="f", stem_suffix="ь", gensg=true, ignore_reduce=true -- already has dereduced gen pl } -------------------------------------------------------------------------- -- Second-declension neuter -- -------------------------------------------------------------------------- ----------------- Neuter hard ------------------- -- Normal hard-neuter declension in -о declensions_old["о"] = { ["nom_sg"] = "о́", ["gen_sg"] = "а́", ["dat_sg"] = "у́", ["acc_sg"] = function(stem, stress, args) return not (args.explicit_gender == "m" and args.thisa == "a") and "о́" or nil end, ["ins_sg"] = "о́мъ", ["pre_sg"] = "ѣ́", ["nom_pl"] = "а́", ["gen_pl"] = function(stem, stress) return nom.sibilant_suffixes[ulower(usub(stem, -1))] and ending_stressed_gen_pl_patterns[stress] and "е́й" or "ъ" end, ["alt_gen_pl"] = "о́въ", ["dat_pl"] = "а́мъ", ["acc_pl"] = nil, ["ins_pl"] = "а́ми", ["pre_pl"] = "а́хъ", } declensions_old_cat["о"] = { decl="2nd", hard="hard", g="n" } -- Hard-neuter declension in -о with irreg nom pl -и declensions_old["о-и"] = mw.clone(declensions_old["о"]) declensions_old["о-и"]["nom_pl"] = "ы́" declensions_old_cat["о-и"] = { decl="2nd", hard="hard", g="n", alt_nom_pl=true } declensions_old_aliases["о-ы"] = "о-и" -- Masculine-gender neuter-form declension in -(ишк)о with irreg nom pl -и, -- with colloquial feminine endings in some of the singular cases -- (§5 p. 74 of Zaliznyak) declensions_old["(ишк)о-и"] = mw.clone(declensions_old["о-и"]) declensions_old["(ишк)о-и"]["gen_sg"] = {"а́", "ы́1"} declensions_old["(ишк)о-и"]["dat_sg"] = {"у́", "ѣ́1"} declensions_old["(ишк)о-и"]["ins_sg"] = {"о́мъ", "о́й1"} declensions_old_cat["(ишк)о-и"] = { decl="2nd", hard="hard", g="n", colloqfem=true, alt_nom_pl=true } internal_notes_table_old["(ишк)о-и"] = "<sup>1</sup> Colloquial." -- Masculine-gender animate neuter-form declension in -(ищ)е with irreg -- nom pl -и, with colloquial feminine endings in some of the singular cases -- (§4 p. 74 of Zaliznyak) declensions_old["(ищ)е-и"] = mw.clone(declensions_old["о-и"]) declensions_old["(ищ)е-и"]["acc_sg"] = {"а́", "у́1"} declensions_old["(ищ)е-и"]["gen_sg"] = {"а́", "ы́2"} declensions_old["(ищ)е-и"]["dat_sg"] = {"у́", "ѣ́2"} declensions_old["(ищ)е-и"]["ins_sg"] = {"о́мъ", "о́й2"} declensions_old_cat["(ищ)е-и"] = { decl="2nd", hard="hard", g="n", colloqfem=true, alt_nom_pl=true } internal_notes_table_old["(ищ)е-и"] = "<sup>1</sup> Colloquial.<br /><sup>2</sup> Less common, more colloquial." ----------------- Neuter soft ------------------- -- Soft-neuter declension in -е (stressed -ё) declensions_old["е"] = { ["nom_sg"] = "ё", ["gen_sg"] = "я́", ["dat_sg"] = "ю́", ["acc_sg"] = function(stem, stress, args) return not (args.explicit_gender == "m" and args.thisa == "a") and "ё" or nil end, ["ins_sg"] = "ёмъ", ["pre_sg"] = function(stem, stress) return rlfind(stem, "[іи]́?$") and not ending_stressed_pre_sg_patterns[stress] and "и" or "ѣ́" end, ["nom_pl"] = "я́", ["gen_pl"] = function(stem, stress) return ending_stressed_gen_pl_patterns[stress] and not rlfind(stem, "[" .. com.vowel .. "]́?$") and "е́й" or "й" end, ["alt_gen_pl"] = "ёвъ", ["dat_pl"] = "я́мъ", ["acc_pl"] = nil, ["ins_pl"] = "я́ми", ["pre_pl"] = "я́хъ", } declensions_old_cat["е"] = { singular = function(suffix) if suffix == "ё" then return "ending in -ё" else return {} end end, decl="2nd", hard="soft", g="n", gensg=true } -- User-facing declension type "ё" = "е" declensions_old_aliases["ё"] = "е" -- Rare soft-neuter declension in stressed -е́ (e.g. муде́, бытие́) declensions_old["е́"] = { ["nom_sg"] = "е́", ["gen_sg"] = "я́", ["dat_sg"] = "ю́", ["acc_sg"] = function(stem, stress, args) return not (args.explicit_gender == "m" and args.thisa == "a") and "е́" or nil end, ["ins_sg"] = "е́мъ", ["pre_sg"] = function(stem, stress) -- FIXME!!! Are we sure about this condition? This is what was -- found in the old template, but the related -е declension has -- -ие prep sg ending -(и)и only when *not* stressed. return rlfind(stem, "[іи]́?$") and "и́" or "ѣ́" end, ["nom_pl"] = "я́", ["gen_pl"] = function(stem, stress) return rlfind(stem, "[" .. com.vowel .. "]́?$") and "й" or "е́й" end, ["alt_gen_pl"] = "ёвъ", ["dat_pl"] = "я́мъ", ["acc_pl"] = nil, ["ins_pl"] = "я́ми", ["pre_pl"] = "я́хъ", } declensions_old_cat["е́"] = { singular = "ending in stressed -е", decl="2nd", hard="soft", g="n", gensg=true } -- Soft-neuter declension in unstressed -ье (stressed -ьё). declensions_old["ье"] = { ["nom_sg"] = "ьё", ["gen_sg"] = "ья́", ["dat_sg"] = "ью́", ["acc_sg"] = function(stem, stress, args) return not (args.explicit_gender == "m" and args.thisa == "a") and "ьё" or nil end, ["ins_sg"] = "ьёмъ", ["pre_sg"] = "ьѣ́", ["nom_pl"] = "ья́", ["gen_pl"] = function(stem, stress) return ending_stressed_gen_pl_patterns[stress] and "е́й" or "ий" end, ["alt_gen_pl"] = "ьёвъ", ["dat_pl"] = "ья́мъ", ["acc_pl"] = nil, ["ins_pl"] = "ья́ми", ["pre_pl"] = "ья́хъ", } declensions_old_cat["ье"] = { decl="2nd", hard="soft", g="n", stem_suffix="ь", gensg=true, ignore_reduce=true -- already has dereduced gen pl } declensions_old_aliases["ьё"] = "ье" -------------------------------------------------------------------------- -- Third declension -- -------------------------------------------------------------------------- declensions_old["ь-f"] = { ["nom_sg"] = "ь", ["gen_sg"] = "и́", ["dat_sg"] = "и́", ["acc_sg"] = "ь", ["ins_sg"] = "ью́", ["pre_sg"] = "и́", ["nom_pl"] = "и́", ["gen_pl"] = "е́й", ["dat_pl"] = "я́мъ", ["acc_pl"] = nil, ["ins_pl"] = "я́ми", ["pre_pl"] = "я́хъ", } declensions_old_cat["ь-f"] = { decl="3rd", hard="soft", g="f" } declensions_old["мя"] = { ["nom_sg"] = "мя", ["gen_sg"] = "мени", ["dat_sg"] = "мени", ["acc_sg"] = nil, ["ins_sg"] = "менемъ", ["pre_sg"] = "мени", ["nom_pl"] = "мена́", ["gen_pl"] = "мёнъ", ["dat_pl"] = "мена́мъ", ["acc_pl"] = nil, ["ins_pl"] = "мена́ми", ["pre_pl"] = "мена́хъ", } declensions_old_cat["мя"] = { decl="3rd", hard="soft", g="n", cant_reduce=true } -------------------------------------------------------------------------- -- Indeclinable -- -------------------------------------------------------------------------- -- Indeclinable declension; no endings. declensions_old["$"] = { ["nom_sg"] = "", ["gen_sg"] = "", ["dat_sg"] = "", ["acc_sg"] = nil, ["ins_sg"] = "", ["pre_sg"] = "", ["nom_pl"] = "", ["gen_pl"] = "", ["dat_pl"] = "", ["acc_pl"] = nil, ["ins_pl"] = "", ["pre_pl"] = "", } declensions_old_cat["$"] = { decl="indeclinable", hard="none", g="none" } -------------------------------------------------------------------------- -- Adjectival -- -------------------------------------------------------------------------- -- This needs to be up here because it is called just below. local function old_to_new(v) v = rsub(v, "ъ$", "") v = rsub(v, "^ъ", "") v = rsub(v, "(%A)ъ", "%1") v = rsub(v, "ъ(%A)", "%1") v = rsub(v, "і", "и") v = rsub(v, "ѣ", "е") return v end -- Meaning of entry is: -- 1. The declension name in module ru-adjective -- 2. The masculine declension name in this module -- 3. The neuter declension name in this module -- 4. The feminine declension name in this module -- 5. The value of hard= for the declensions_cat entry -- 6. The value of decl= for the declensions_cat entry -- 7. The value of possadj= for the declensions_cat entry (true if possessive -- or similar type of adjective) local adj_decl_map = { {"ый", "ый", "ое", "ая", "hard", "long", false}, {"ій", "ій", "ее", "яя", "soft", "long", false}, {"ой", "ой", "о́е", "а́я", "hard", "long", false}, {"ьій", "ьій", "ье", "ья", "palatal", "long", true}, {"short", "ъ-short", "о-short", "а-short", "hard", "short", true}, {"mixed", "ъ-mixed", "о-mixed", "а-mixed", "hard", "mixed", true}, {"proper", "ъ-proper", "о-proper", "а-proper", "hard", "proper", true}, {"stressed-short", "ъ-stressed-short", "о-stressed-short", "а-stressed-short", "hard", "short", true}, {"stressed-proper", "ъ-stressed-proper", "о-stressed-proper", "а-stressed-proper", "hard", "proper", true}, } local function get_adjectival_decl(adjtype, gender, old) local decl, intnotes = m_ru_adj.get_nominal_decl(adjtype, gender, old) -- hack fem ins_sg to insert <insa>, <insb>; see concat_word_forms_1() if gender == "f" and type(decl["ins_sg"]) == "table" and #decl["ins_sg"] == 2 then decl["ins_sg"][1] = decl["ins_sg"][1] .. "<insa>" decl["ins_sg"][2] = decl["ins_sg"][2] .. "<insb>" end return decl, intnotes end for _, declspec in ipairs(adj_decl_map) do local oadjdecl = declspec[1] local nadjdecl = old_to_new(oadjdecl) local odecl_by_gender = {m="+" .. declspec[2], n="+" .. declspec[3], f="+" .. declspec[4]} local hard = declspec[5] local decltype = declspec[6] local possadj = declspec[7] for _, g in ipairs({"m", "n", "f"}) do local odecl = odecl_by_gender[g] local ndecl = old_to_new(odecl) declensions_old[odecl], internal_notes_table_old[odecl] = get_adjectival_decl(oadjdecl, g, true) declensions[ndecl], internal_notes_table[ndecl] = get_adjectival_decl(nadjdecl, g, false) declensions_old_cat[odecl] = { decl=decltype, hard=hard, g=g, adj=true, possadj=possadj } declensions_cat[ndecl] = { decl=decltype, hard=hard, g=g, adj=true, possadj=possadj } end end -- Set up some aliases. declensions_old_aliases["+о́-short"] = "+о-stressed-short" declensions_old_aliases["+а́-short"] = "+а-stressed-short" declensions_old_aliases["+о́-proper"] = "+о-stressed-proper" declensions_old_aliases["+а́-proper"] = "+а-stressed-proper" declensions_aliases["+#-short"] = "+-short" declensions_aliases["+#-mixed"] = "+-mixed" declensions_aliases["+#-proper"] = "+-proper" declensions_aliases["+#-stressed-short"] = "+-stressed-short" declensions_aliases["+#-stressed-proper"] = "+-stressed-proper" -------------------------------------------------------------------------- -- Populate new from old -- -------------------------------------------------------------------------- -- Function to convert an entry in an old declensions table to new. local function old_decl_entry_to_new(v) if not v then return nil elseif type(v) == "table" then local new_entry = {} for _, i in ipairs(v) do table.insert(new_entry, old_decl_entry_to_new(i)) end return new_entry elseif type(v) == "function" then return function(stem, suffix, args) return old_decl_entry_to_new(v(stem, suffix, args)) end else return old_to_new(v) end end -- Function to convert an old declensions table to new. local function old_decl_to_new(odecl) local ndecl = {} for k, v in pairs(odecl) do ndecl[k] = old_decl_entry_to_new(v) end return ndecl end -- Function to convert an entry in an old declensions_cat table to new. local function old_decl_cat_entry_to_new(odecl_cat_entry) if not odecl_cat_entry then return nil elseif type(odecl_cat_entry) == "function" then return function(suffix) return old_decl_cat_entry_to_new(odecl_cat_entry(suffix)) end elseif type(odecl_cat_entry) == "table" then local ndecl_cat_entry = {} for k, v in pairs(odecl_cat_entry) do ndecl_cat_entry[k] = old_decl_cat_entry_to_new(v) end return ndecl_cat_entry elseif type(odecl_cat_entry) == "boolean" then return odecl_cat_entry else assert(type(odecl_cat_entry) == "string") return old_to_new(odecl_cat_entry) end end -- Function to convert an old declensions_cat table to new. local function old_decl_cat_to_new(odeclcat) local ndeclcat = {} for k, v in pairs(odeclcat) do ndeclcat[k] = old_decl_cat_entry_to_new(v) end return ndeclcat end -- populate declensions[] from declensions_old[] for odecltype, odecl in pairs(declensions_old) do local ndecltype = old_to_new(odecltype) if not declensions[ndecltype] then declensions[ndecltype] = old_decl_to_new(odecl) end end -- populate declensions_cat[] from declensions_old_cat[] for odecltype, odeclcat in pairs(declensions_old_cat) do local ndecltype = old_to_new(odecltype) if not declensions_cat[ndecltype] then declensions_cat[ndecltype] = old_decl_cat_to_new(odeclcat) end end -- populate declensions_aliases[] from declensions_old_aliases[] for ofrom, oto in pairs(declensions_old_aliases) do local from = old_to_new(ofrom) if not declensions_aliases[from] then declensions_aliases[from] = old_to_new(oto) end end -- populate internal_notes_table[] from internal_notes_table_old[] for odecl, note in pairs(internal_notes_table_old) do local ndecl = old_to_new(odecl) if not internal_notes_table[ndecl] then -- FIXME, should we be calling old_to_new() here? internal_notes_table[ndecl] = note end end -------------------------------------------------------------------------- -- Inflection functions -- -------------------------------------------------------------------------- -- Attach the stressed stem (or plural stem, or barestem) out of ARGS -- to the unstressed suffix SUF, modifying the suffix as necessary for the -- last letter of the stem (e.g. if it is velar, sibilant or ц). CASE is -- the case form being created and is used to select the plural stem if -- needed. Returns two values, the combined form and the modified suffix. local function attach_unstressed(args, case, suf, was_stressed) if suf == nil then return nil, nil elseif rfind(suf, CFLEX) then -- if suf has circumflex accent, it forces stressed return attach_stressed(args, case, suf) end local stem, tr if rfind(case, "_pl") then stem, tr = args.pl, args.pltr end if not stem and case == "ins_sg" then stem, tr = args.ins_sg_stem, args.ins_sg_tr end if not stem then stem, tr = args.stem, args.stemtr end if nom.nonsyllabic_suffixes[suf] then -- If gen_pl, use special args.gen_pl_bare if given, else regular -- args.bare if there isn't a plural stem. If nom_sg, always use -- regular args.bare. local barearg, bareargtr if case == "gen_pl" then barearg, bareargtr = args.gen_pl_bare, args.gen_pl_baretr if not barearg and args.pl == args.stem then barearg, bareargtr = args.bare, args.baretr end else barearg, bareargtr = args.bare, args.baretr end local barestem = barearg or stem local barestem, baretr if barearg then barestem, baretr = barearg, bareargtr else barestem, baretr = stem, tr end if was_stressed and case == "gen_pl" then if not barearg then local gen_pl_stem, gen_pl_tr = com.make_ending_stressed(stem, tr) barestem, baretr = gen_pl_stem, gen_pl_tr end end if rlfind(barestem, "[йьъ]$") then suf = "" else if suf == "ъ" then -- OK elseif suf == "й" or suf == "ь" then if barearg and case == "gen_pl" then -- explicit bare or reducible, don't add -ь suf = "" elseif rfind(barestem, "[" .. com.vowel .. "]́?$") then -- not reducible, do add -ь and correct to -й if necessary suf = "й" else suf = "ь" end end end return nom.concat_russian_tr(barestem, baretr, suf, nil, "dopair"), suf end suf = com.make_unstressed(suf) local rules = nom.unstressed_rules[ulower(usub(stem, -1))] return nom.combine_stem_and_suffix(stem, tr, suf, rules, args.old) end -- Analogous to attach_unstressed() but for the unstressed stem and a -- stressed suffix. attach_stressed = function(args, case, suf) if suf == nil then return nil, nil end -- circumflex forces stress even when the accent pattern calls for no stress suf = rsub(suf, "̂", "́") if not rfind(suf, "[ё́]") then -- if suf has no "ё" or accent marks return attach_unstressed(args, case, suf, "was stressed") end local stem, tr if rfind(case, "_pl") then stem, tr = args.upl, args.upltr end if not stem then stem, tr = args.ustem, args.ustemtr end local rules = nom.stressed_rules[ulower(usub(stem, -1))] return nom.combine_stem_and_suffix(stem, tr, suf, rules, args.old) end -- Attach the appropriate stressed or unstressed stem (or plural stem as -- determined by CASE, or barestem) out of ARGS to the suffix SUF, which may -- be a list of alternative suffixes (e.g. in the inst sg of feminine nouns). -- Calls FUN (either attach_stressed() or attach_unstressed()) to do the work -- for an individual suffix. Returns two values, a list of combined forms -- and a list of the real suffixes used (which may be modified from the -- passed-in suffixes, e.g. by removing stress marks or modifying vowels in -- various ways after a stem-final velar, sibilant or ц). Each combined form -- is a two-element list {stem, tr} (or a one-element list if tr is nil). -- IRREG is true if this is an irregular form. We are handling the Nth word; -- ISLAST is true if this is the last one. local function attach_with(args, case, suf, fun, irreg, n, islast) if type(suf) == "table" then local all_combineds = {} local all_realsufs = {} for _, x in ipairs(suf) do local combineds, realsufs = attach_with(args, case, x, fun, irreg, n, islast) for _, combined in ipairs(combineds) do table.insert(all_combineds, combined) end for _, realsuf in ipairs(realsufs) do table.insert(all_realsufs, realsuf) end end return all_combineds, all_realsufs else local combined, realsuf = fun(args, case, suf) local irregsuf = irreg and {IRREGMARKER} or {""} return {combined and nom.concat_paired_russian_tr( nom.concat_paired_russian_tr(args["prefix" .. n], combined), nom.concat_paired_russian_tr(args["suffix" .. n], irregsuf)) or nil}, {realsuf and realsuf .. args["suffix" .. n][1] or nil} end end -- Generate the form(s) and suffix(es) for CASE according to the declension -- table DECL, using the attachment function FUN (one of attach_stressed() -- or attach_unstressed()). IS_SLASH is true if this is a slash declension -- (different declensions for singular and plural). We are handling the Nth -- word; ISLAST is true if this is the last one. local function gen_form(args, decl, case, stress, fun, is_slash, n, islast) local irreg = false if not args.suffixes[case] then args.suffixes[case] = {} end local decl_sufs = args.old and declensions_old or declensions decl_sufs = decl_sufs[decl] local suf = decl_sufs[case] local decl_cats = args.old and declensions_old_cat or declensions_cat local ispl = rfind(case, "_pl") if ispl and (decl_cats[decl].irregpl or args.pl and args.pl ~= args.stem or is_slash) then irreg = true end if case == "nom_pl" and decl_cats[decl].alt_nom_pl then irreg = true end if type(suf) == "function" then suf = suf(ispl and args.pl or args.stem, stress, args) end if case == "gen_pl" and args.alt_gen_pl then suf = decl_sufs.alt_gen_pl irreg = true if not suf then error("No alternate genitive plural available for this declension class") end end local combineds, realsufs = attach_with(args, case, suf, fun, irreg, n, islast) for _, realsuf in ipairs(realsufs) do args.any_non_nil[case] = true args.this_any_non_nil[case] = true insert_if_not(args.suffixes[case], realsuf) end return combineds end local attachers = { ["+"] = attach_stressed, ["-"] = attach_unstressed, } do_stress_pattern = function(stress, args, decl, number, n, islast) local f = {} for _, case in ipairs(decl_cases) do if not number or (number == "sg" and rfind(case, "_sg")) or (number == "pl" and rfind(case, "_pl")) then f[case] = gen_form(args, decl, case, stress, attachers[stress_patterns[stress][case]], not not number, n, islast) -- Turn empty form lists into nil to facilitate computation of -- animate/inanimate accusatives below if f[case] and #f[case] == 0 then f[case] = nil end -- Compute linked versions of potential lemma cases, for use -- in the ru-noun+ headword. We substitute the original lemma -- (before removing links) for forms that are the same as the -- lemma, if the original lemma has links. if f[case] and (case == "nom_sg" or case == "nom_pl") then local linked_forms = {} for _, form in ipairs(f[case]) do -- Return true if FORM is "close enough" to LEMMA that we can substitute the -- linked form of the lemma. Currently this means exactly the same except that -- we ignore acute and grave accent differences in monosyllables, and ignore -- notes that may have been appended (e.g. the triangle marking irregularity). local entry, notes = m_table_tools.separate_notes(form[1]) local lemma = args.lemma_no_links local close_enough_to_lemma = entry == lemma or (com.is_monosyllabic(entry) and com.is_monosyllabic(lemma) and com.remove_accents(entry) == com.remove_accents(lemma)) if close_enough_to_lemma and rfind(args.orig_lemma, "%[%[") then table.insert(linked_forms, {args.orig_lemma .. notes, args.lemmatr and args.lemmatr .. notes}) else table.insert(linked_forms, form) end end f[case .. "_linked"] = linked_forms end end end -- Set acc an/in variants now as appropriate. We used to do this in -- handle_forms_and_overrides(), which simplified the handling of -- nom/gen/acc overrides but caused problems for words like мазло and -- трепло that had a mixture of nil and non-nil accusative forms. local an = args.thisa if not number or number == "sg" then f.acc_sg_an = f.acc_sg_an or f.acc_sg or an == "i" and f.nom_sg or f.gen_sg f.acc_sg_in = f.acc_sg_in or f.acc_sg or an == "a" and f.gen_sg or f.nom_sg end if not number or number == "pl" then f.acc_pl_an = f.acc_pl_an or f.acc_pl or an == "i" and f.nom_pl or f.gen_pl f.acc_pl_in = f.acc_pl_in or f.acc_pl or an == "a" and f.gen_pl or f.nom_pl end for case, forms in pairs(f) do if not args.forms[case] then args.forms[case] = {} end for _, form in ipairs(forms) do insert_if_not(args.forms[case], form) end end end stress_patterns["a"] = { nom_sg="-", gen_sg="-", dat_sg="-", acc_sg="-", ins_sg="-", pre_sg="-", nom_pl="-", gen_pl="-", dat_pl="-", acc_pl="-", ins_pl="-", pre_pl="-", } stress_patterns["b"] = { nom_sg="+", gen_sg="+", dat_sg="+", acc_sg="+", ins_sg="+", pre_sg="+", nom_pl="+", gen_pl="+", dat_pl="+", acc_pl="+", ins_pl="+", pre_pl="+", } stress_patterns["b'"] = { nom_sg="+", gen_sg="+", dat_sg="+", acc_sg="+", ins_sg="-", pre_sg="+", nom_pl="+", gen_pl="+", dat_pl="+", acc_pl="+", ins_pl="+", pre_pl="+", } stress_patterns["c"] = { nom_sg="-", gen_sg="-", dat_sg="-", acc_sg="-", ins_sg="-", pre_sg="-", nom_pl="+", gen_pl="+", dat_pl="+", acc_pl="+", ins_pl="+", pre_pl="+", } stress_patterns["d"] = { nom_sg="+", gen_sg="+", dat_sg="+", acc_sg="+", ins_sg="+", pre_sg="+", nom_pl="-", gen_pl="-", dat_pl="-", acc_pl="-", ins_pl="-", pre_pl="-", } stress_patterns["d'"] = { nom_sg="+", gen_sg="+", dat_sg="+", acc_sg="-", ins_sg="+", pre_sg="+", nom_pl="-", gen_pl="-", dat_pl="-", acc_pl="-", ins_pl="-", pre_pl="-", } stress_patterns["e"] = { nom_sg="-", gen_sg="-", dat_sg="-", acc_sg="-", ins_sg="-", pre_sg="-", nom_pl="-", gen_pl="+", dat_pl="+", acc_pl="+", ins_pl="+", pre_pl="+", } stress_patterns["f"] = { nom_sg="+", gen_sg="+", dat_sg="+", acc_sg="+", ins_sg="+", pre_sg="+", nom_pl="-", gen_pl="+", dat_pl="+", acc_pl="+", ins_pl="+", pre_pl="+", } stress_patterns["f'"] = { nom_sg="+", gen_sg="+", dat_sg="+", acc_sg="-", ins_sg="+", pre_sg="+", nom_pl="-", gen_pl="+", dat_pl="+", acc_pl="+", ins_pl="+", pre_pl="+", } stress_patterns["f''"] = { nom_sg="+", gen_sg="+", dat_sg="+", acc_sg="+", ins_sg="-", pre_sg="+", nom_pl="-", gen_pl="+", dat_pl="+", acc_pl="+", ins_pl="+", pre_pl="+", } ending_stressed_gen_pl_patterns = ut.list_to_set({"b", "b'", "c", "e", "f", "f'", "f''"}) ending_stressed_pre_sg_patterns = ut.list_to_set({"b", "b'", "d", "d'", "f", "f'", "f''"}) ending_stressed_dat_sg_patterns = ending_stressed_pre_sg_patterns ending_stressed_sg_patterns = ending_stressed_pre_sg_patterns ending_stressed_pl_patterns = ut.list_to_set({"b", "b'", "c"}) local numbers = { ["s"] = "単数", ["p"] = "複数", } local old_title_temp = [=[''<b lang="ru" class="Cyrl">{lemma}</b>'' の格変化 (正書法改正前)]=] local title_temp = [=[''<b lang="ru" class="Cyrl">{lemma}</b>'' の格変化]=] local partitive = nil local locative = nil local vocative = nil local internal_notes_template = nil local notes_template = nil local templates = {} -- all cases, period all_cases = { "nom_sg", "gen_sg", "dat_sg", "acc_sg", "ins_sg", "pre_sg", "nom_pl", "gen_pl", "dat_pl", "acc_pl", "ins_pl", "pre_pl", "nom_sg_linked", "nom_pl_linked", "acc_sg_an", "acc_sg_in", "acc_pl_an", "acc_pl_in", "par", "loc", "voc", } -- cases that can be declined normally decl_cases = { "nom_sg", "gen_sg", "dat_sg", "acc_sg", "ins_sg", "pre_sg", "nom_pl", "gen_pl", "dat_pl", "acc_pl", "ins_pl", "pre_pl", } -- all cases displayable displayable_cases = { "nom_sg", "gen_sg", "dat_sg", "ins_sg", "pre_sg", "nom_pl", "gen_pl", "dat_pl", "ins_pl", "pre_pl", "nom_sg_linked", "nom_pl_linked", "acc_sg_an", "acc_sg_in", "acc_pl_an", "acc_pl_in", "par", "loc", "voc", } -- all cases that can be overridden overridable_cases = { "nom_sg", "gen_sg", "dat_sg", "acc_sg", "ins_sg", "pre_sg", "nom_pl", "gen_pl", "dat_pl", "acc_pl", "ins_pl", "pre_pl", "acc_sg_an", "acc_sg_in", "acc_pl_an", "acc_pl_in", "par", "loc", "voc", } -- Convert a raw override into a canonicalized list of individual overrides. -- If input is nil, so is output. Certain junk (e.g. <br/>) is removed, -- and ~ and ~~ are substituted appropriately; ARGS and CASE are required for -- this purpose. FORMS is the list of existing case forms and is currently -- used only to retrieve the dat_sg for handling + in loc/par (this means -- that any overrides of the dat_sg have to be handled before handling -- overrides of loc/par). N is the suffix used to retrieve the override -- -- either a number for word-specific overrides, or an empty string for -- overall overrides. -- -- It will still be necessary to call m_table_tools.separate_notes() to separate -- off any trailing "notes" (asterisks, superscript numbers, etc.), and -- m_links.remove_links() to remove any links to get the raw override form. canonicalize_override = function(args, case, forms, n) local val = args[case .. n] if not val then return nil end -- clean <br /> that's in many multi-form entries and messes up linking val = rsub(val, "<br%s*/>", "") -- substitute ~ and ~~ and split by commas local stem, tr if rfind(case, "_pl") then stem, tr = args.pl, args.pltr end if not stem then stem, tr = args.stem, args.stemtr end local ustem, utr = com.make_unstressed_once(stem, tr) local vals = rsplit(val, "%s*,%s*") local retvals = {} for _, val in ipairs(vals) do local valru, valtr = nom.split_russian_tr(val) valru = rsub(valru, "~~", ustem) valru = rsub(valru, "~", com.is_stressed(val) and ustem or stem) if rfind(valru, "^%*") then valru = rsub(valru, "^%*", "") .. HYPMARKER end if valtr then tr = tr or nom.translit_no_links(stem) utr = utr or nom.translit_no_links(ustem) valtr = rsub(valtr, "~~", utr) valtr = rsub(valtr, "~", com.is_stressed(val) and utr or tr) if rfind(valtr, "^%*") then valtr = rsub(valtr, "^%*", "") .. HYPMARKER end end table.insert(retvals, {valru, valtr}) end vals = retvals -- handle + in loc/par meaning "the expected form"; NOTE: This requires -- that dat_sg has already been processed! if case == "loc" or case == "par" then local new_vals = {} for _, rutr in ipairs(vals) do -- don't just handle + by itself in case the arg has в or на -- or whatever attached to it if rfind(rutr[1], "^%+") or rfind(rutr[1], "[%s%[|]%+") then for _, dat in ipairs(forms["dat_sg"]) do local ru, tr = rutr[1], rutr[2] local datru, dattr = dat[1], dat[2] local valru, valtr -- separate off any footnote symbols (which may have been -- introduced by a *tail or *tailall argument, which we need -- to process before this stage so overrides don't get -- automatically marked with footnote symbols); if par, -- try to preserve them, but with loc this can cause -- problems in case there are multiple dative forms -- (stress variants) and the last one is marked with a -- footnote symbol (occurs in грудь) local datru_entry, datru_notes = m_table_tools.separate_notes(datru) local dattr_entry, dattr_notes if dattr then dattr_entry, dattr_notes = m_table_tools.separate_notes(dattr) end if case == "par" then valru, valtr = datru_entry, dattr_entry else valru, valtr = com.make_ending_stressed(datru_entry, dattr_entry) datru_notes = "" dattr_notes = "" end -- wrap the word in brackets so it's linked; but not if it -- appears to already be linked ru = rsub(ru, "^%+", "[[" .. valru .. "]]") ru = rsub(ru, "([%[|])%+", "%1" .. valru) ru = rsub(ru, "(%s)%+", "%1[[" .. valru .. "]]") ru = ru .. datru_notes -- do the translit; but it shouldn't have brackets in it if tr or valtr then tr = tr or nom.translit_no_links(rutr[1]) valtr = valtr or nom.translit_no_links(valru) tr = rsub(tr, "^%+", valtr) tr = rsub(tr, "(%s)%+", "%1" .. valtr) tr = tr .. dattr_notes end table.insert(new_vals, {ru, tr}) end else table.insert(new_vals, rutr) end end vals = new_vals end -- auto-accent/check for necessary accents local newvals = {} for _, v in ipairs(vals) do local ru, tr = v[1], v[2] if not args.allow_unaccented then if tr and com.is_unstressed(ru) ~= com.is_unstressed(tr) then error("Override " .. ru .. " and translit " .. tr .. " must have same accent pattern") end -- it's safe to accent monosyllabic stems if com.is_monosyllabic(ru) then ru, tr = com.make_ending_stressed(ru, tr) elseif com.needs_accents(ru) then error("Override " .. ru .. " for case " .. case .. n .. " requires an accent") end end table.insert(newvals, {ru, tr}) end vals = newvals return vals end local function process_overrides(args, f, n) local function process_override(case) if args[case .. n] then local overrides = canonicalize_override(args, case, f, n) if not f[case] then f[case] = {} end local new_overrides = {} for _, form in ipairs(overrides) do -- Don't consider overrides of loc/par/voc irregular since -- they're only specified through overrides; FIXME: Theoretically -- we could consider loc/par irregular if they don't follow the -- expected forms; but we'd have to figure out how to eliminate -- the preposition that may be specified if case ~= "loc" and case ~= "par" and case ~= "voc" and not args.manual and not contains_rutr_pair(f[case], form) then local formru, formnotes = m_table_tools.separate_notes(form[1]) if formru ~= "-" then -- don't mark an override of - as irregular, even if -- it has an attached footnote symbol form = nom.concat_paired_russian_tr(form, {IRREGMARKER}) end end table.insert(new_overrides, form) end f[case] = new_overrides args.any_overridden[case] = true end end -- do dative singular first because it will be used by loc/par process_override("dat_sg") -- now do the rest for _, case in ipairs(overridable_cases) do if case ~= "dat_sg" then process_override(case) end end -- if the nominative is overridden, use it to set the linked version unless -- that is also specifically overridden if args["nom_sg" .. n] and not args["nom_sg_linked" .. n] then f.nom_sg_linked = f.nom_sg end if args["nom_pl" .. n] and not args["nom_pl_linked" .. n] then f.nom_pl_linked = f.nom_pl end -- convert empty lists to nil to facilitate computation of accusative -- case variants below. for _, case in ipairs(all_cases) do if f[case] then if type(f[case]) ~= "table" then error("Logic error, args[case] should be nil or table") end if #f[case] == 0 then f[case] = nil end end end end local function process_tail_args(args, f, n) local function append_note_all(case, value) value = nom.split_russian_tr(value, "dopair") local function append1(case) if f[case] then for i=1,#f[case] do f[case][i] = nom.concat_paired_russian_tr(f[case][i], value) end end end append1(case) if case == "acc_sg" then append1("acc_sg_in") append1("acc_sg_an") elseif case == "acc_pl" then append1("acc_pl_in") append1("acc_pl_an") end end local function append_note_last(case, value, gt_one) value = nom.split_russian_tr(value, "dopair") local function append1(case) if f[case] then local lastarg = #f[case] if lastarg > (gt_one and 1 or 0) then f[case][lastarg] = nom.concat_paired_russian_tr(f[case][lastarg], value) end end end append1(case) if case == "acc_sg" then append1("acc_sg_in") append1("acc_sg_an") elseif case == "acc_pl" then append1("acc_pl_in") append1("acc_pl_an") end end local function handle_tail_hyp(suf) local arg, val for _, case in ipairs(all_cases) do arg = args[case .. "_" .. suf .. n] if arg then append_note_last(case, suf == "hyp" and HYPMARKER or arg) end arg = args[case .. "_" .. suf .. "all" .. n] if arg then append_note_all(case, suf == "hyp" and HYPMARKER or arg) end if not rfind(case, "_pl") then arg = args["sg" .. suf .. "all" .. n] if arg then append_note_all(case, suf == "hyp" and HYPMARKER or arg) end arg = args["sg" .. suf .. n] if arg then append_note_last(case, suf == "hyp" and HYPMARKER or arg, ">1") end else arg = args["pl" .. suf .. "all" .. n] if arg then append_note_all(case, suf == "hyp" and HYPMARKER or arg) end arg = args["pl" .. suf .. n] if arg then append_note_last(case, suf == "hyp" and HYPMARKER or arg, ">1") end end if not rfind(case, "nom_") and not rfind(case, "acc_") then arg = args["obl" .. suf .. "all" .. n] if arg then append_note_all(case, suf == "hyp" and HYPMARKER or arg) end arg = args["obl" .. suf .. n] if arg then append_note_last(case, suf == "hyp" and HYPMARKER or arg, ">1") end end end end handle_tail_hyp("tail") handle_tail_hyp("hyp") end handle_forms_and_overrides = function(args, n, islast) local f = args.forms process_tail_args(args, f, n) process_overrides(args, f, n) local an = args.thisa -- Maybe set the value of the animate/inanimate accusative variants based -- on nom/acc/gen overrides. Don't do this if there was a specific override -- of this form. Otherwise, always propagate an accusative singular -- override, and propagate the nom/gen sg if there wasn't a specific -- accusative suffix anywhere (occurs in the fem sg and sometimes the neut -- sg). This logic duplicates logic in handle_overall_forms_and_overrides(); -- see long comment there. We need to duplicate the whole logic here to -- handle words like мать-одиночка, which has an override of acc_sg1. if not args["acc_sg_an" .. n] then if args["acc_sg" .. n] then f.acc_sg_an = f.acc_sg elseif not args.this_any_non_nil.acc_sg then f.acc_sg_an = f.acc_sg or an == "i" and f.nom_sg or f.gen_sg or f.acc_sg_an end end if not args["acc_sg_in" .. n] then if args["acc_sg" .. n] then f.acc_sg_in = f.acc_sg elseif not args.this_any_non_nil.acc_sg then f.acc_sg_in = f.acc_sg or an == "a" and f.gen_sg or f.nom_sg or f.acc_sg_in end end if not args["acc_pl_an" .. n] then if args["acc_pl" .. n] then f.acc_pl_an = f.acc_pl elseif not args.this_any_non_nil.acc_pl then f.acc_pl_an = f.acc_pl or an== "i" and f.nom_pl or f.gen_pl or f.acc_pl_an end end if not args["acc_pl_in" .. n] then if args["acc_pl" .. n] then f.acc_pl_in = f.acc_pl elseif not args.this_any_non_nil.acc_pl then f.acc_pl_in = f.acc_pl or an == "a" and f.gen_pl or f.nom_pl or f.acc_pl_in end end f.loc = f.loc or f.pre_sg f.par = f.par or f.gen_sg f.voc = f.voc or f.nom_sg -- Set these in case we have plural only, in which case the -- singular will also get set to these same values in case we are -- a plural-only word in a singular-only expression. NOTE: It's actually -- unnecessary to do "f.loc_pl = f.loc_pl or f.pre_pl" as f.loc_pl should -- never previously be set. f.loc_pl = f.loc_pl or f.pre_pl f.par_pl = f.par_pl or f.gen_pl f.voc_pl = f.voc_pl or f.nom_pl local nu = args.thisn -- If we have a singular-only, set the plural forms to the singular forms, -- and vice-versa. This is important so that things work in multi-word -- expressions that combine different number restrictions (e.g. -- singular-only with singular/plural or singular-only with plural-only, -- compare "St. Vincent and the Grenadines" [Сент-Винсент и Гренадины]). if nu == "s" then f.nom_pl_linked = f.nom_sg_linked f.nom_pl = f.nom_sg f.gen_pl = f.gen_sg f.dat_pl = f.dat_sg f.acc_pl = f.acc_sg f.acc_pl_an = f.acc_sg_an f.acc_pl_in = f.acc_sg_in f.ins_pl = f.ins_sg f.pre_pl = f.pre_sg f.nom_pl = f.nom_sg -- Unnecessary because only used below to initialize singular -- loc/par/voc with pluralia tantum. -- f.loc_pl = f.loc -- f.par_pl = f.par -- f.voc_pl = f.voc elseif nu == "p" then f.nom_sg_linked = f.nom_pl_linked f.nom_sg = f.nom_pl f.gen_sg = f.gen_pl f.dat_sg = f.dat_pl f.acc_sg = f.acc_pl f.acc_sg_an = f.acc_pl_an f.acc_sg_in = f.acc_pl_in f.ins_sg = f.ins_pl f.pre_sg = f.pre_pl f.nom_sg = f.nom_pl f.loc = f.loc_pl f.par = f.par_pl f.voc = f.voc_pl end end handle_overall_forms_and_overrides = function(args) local overall_forms = {} for _, case in ipairs(displayable_cases) do overall_forms[case] = concat_word_forms(args.per_word_info, case) end local acc_sg_overridden = args.acc_sg local acc_pl_overridden = args.acc_pl process_tail_args(args, overall_forms, "") process_overrides(args, overall_forms, "") -- if IRREGMARKER is anywhere in text, remove all instances and put -- at the end before any notes. local function clean_irreg_marker(case, text) if rfind(text, IRREGMARKER) then text = rsub(text, IRREGMARKER, "") local entry, notes = m_table_tools.separate_notes(text) if case_will_be_displayed(args, case) then insert_if_not(args.internal_notes, IRREGMARKER .. " 不規則") args.any_irreg = true args.any_irreg_case[case] = true end return entry .. IRREGMARKER .. notes else return text end end -- set final args[case] and clean up IRREGMARKER. for _, case in ipairs(all_cases) do args[case] = overall_forms[case] if args[case] then local cleaned_forms = {} for _, form in ipairs(args[case]) do local ru, tr = form[1], form[2] ru = clean_irreg_marker(case, ru) if tr then tr = clean_irreg_marker(case, tr) end table.insert(cleaned_forms, {ru, tr}) end args[case] = cleaned_forms end end -- Maybe set the value of the animate/inanimate accusative variants based -- on nom/acc/gen overrides. Don't do this if there was a specific override -- of this form. Otherwise, always propagate an accusative singular -- override, and propagate the nom/gen sg if there wasn't a specific -- accusative suffix anywhere (occurs in the fem sg and sometimes the neut -- sg). We need to do this somewhat complicated procedure to get overrides -- to work correctly, e.g. acc_sg overrides of feminine and neuter nouns -- (such as мать and полслова) and gen_sg/gen_pl overrides of masculine -- animate nouns. We also ran into an issue with words like мазло that are -- neuter-form but can be both masculine animate (in which case the -- acc sg inherits from the genitive) and neuter animate (in which case the -- acc sg has the fixed ending -о, same as nominative, despite the animacy). -- Remember also that the animate/inanimate accusative variants are the ones -- displayed, not the plain acc_sg/acc_pl ones. if not args.any_overridden.acc_sg_an then if acc_sg_overridden then args.acc_sg_an = args.acc_sg elseif not args.any_non_nil.acc_sg then args.acc_sg_an = args.acc_sg or args.a == "i" and args.nom_sg or args.gen_sg or args.acc_sg_an end end if not args.any_overridden.acc_sg_in then if acc_sg_overridden then args.acc_sg_in = args.acc_sg elseif not args.any_non_nil.acc_sg then args.acc_sg_in = args.acc_sg or args.a == "a" and args.gen_sg or args.nom_sg or args.acc_sg_in end end if not args.any_overridden.acc_pl_an then if acc_pl_overridden then args.acc_pl_an = args.acc_pl elseif not args.any_non_nil.acc_pl then args.acc_pl_an = args.acc_pl or args.a == "i" and args.nom_pl or args.gen_pl or args.acc_pl_an end end if not args.any_overridden.acc_pl_in then if acc_pl_overridden then args.acc_pl_in = args.acc_pl elseif not args.any_non_nil.acc_pl then args.acc_pl_in = args.acc_pl or args.a == "a" and args.gen_pl or args.nom_pl or args.acc_pl_in end end -- Try to set the values of acc_sg and acc_pl. The only time we can't is -- when the noun is bianimate and the anim/inan values are different. -- This is used primarily for generate_forms() and generate_multi_forms(), -- since we don't actually display these forms. if args.a == "a" then args.acc_sg = args.acc_sg or args.acc_sg_an args.acc_pl = args.acc_pl or args.acc_pl_an elseif args.a == "i" then args.acc_sg = args.acc_sg or args.acc_sg_in args.acc_pl = args.acc_pl or args.acc_pl_in else -- bianimate args.acc_sg = args.acc_sg or ut.equals(args.acc_sg_in, args.acc_sg_an) and args.acc_sg_in or nil args.acc_pl = args.acc_pl or ut.equals(args.acc_pl_in, args.acc_pl_an) and args.acc_pl_in or nil end end -- Generate a string to substitute into a particular form in a Wiki-markup -- table. FORMS is the list of forms, generated by concat_word_forms(). -- OLD is true if we're dealing with a pre-reform declension (in this case, -- the page we link to has е in place of ё, for reasons I'm not completely -- sure of). LEMMA is true is we're formatting the entry for use in displaying -- the lemma in the declension table title. In this case, we don't include -- the translit, and remove monosyllabic accents from the Cyrillic (but not -- in multiword expressions). local function show_form(forms, old, is_lemma, accel_form, lemma_forms) local russianvals = {} local latinvals = {} local lemmavals = {} -- Accumulate separately the Russian and transliteration into -- RUSSIANVALS and LATINVALS, then concatenate each down below. -- However, if LEMMA, we put each transliteration directly -- after the corresponding Russian, in parens, and put the results -- in LEMMAVALS, which get concatenated below. (This is used in the -- title of the declension table.) (Actually, currently we don't -- include the translit in the declension table title.) local lemmaru, lemmatr if accel_form and lemma_forms then local lemma_form = lemma_forms[1] if lemma_form[1] ~= "-" then lemmaru, lemmatr = lemma_form[1], lemma_form[2] lemmaru, _ = m_table_tools.separate_notes(lemmaru) if lemmatr then lemmatr, _ = m_table_tools.separate_notes(lemmatr) end end end local is_missing = false for _, form in ipairs(forms) do local ru, tr = form[1], form[2] local ruentry, runotes = m_table_tools.separate_notes(ru) local trentry, trnotes if tr then trentry, trnotes = m_table_tools.separate_notes(tr) trnotes = rsub(trnotes, HYPMARKER, "") end if is_lemma and com.is_monosyllabic(ruentry) then ruentry = com.remove_accents(ruentry) if trentry then trentry = com.remove_accents(trentry) end end local accel = lemmaru and {form = accel_form, translit = tr, lemma = lemmaru, lemma_translit = lemmatr} or nil local ishyp = rfind(runotes, HYPMARKER) if ishyp then runotes = rsub(runotes, HYPMARKER, "") end runotes = m_table_tools.superscript_notes(runotes) if trnotes then trnotes = m_table_tools.superscript_notes(trnotes) end local ruspan, trspan if ruentry == "-" and #forms == 1 then ruspan = "&mdash;" is_missing = true elseif ishyp then -- no accelerator for hypothetical forms ruspan = m_links.full_link({lang = lang, term = nil, alt = ruentry, tr = "-"}, "hypothetical") elseif old then ruspan = m_links.full_link({lang = lang, term = com.remove_jo(ruentry), alt = not ruentry:find("[[", 1, true) and ruentry, tr = "-", accel = accel}) else ruspan = m_links.full_link({lang = lang, term = ruentry, tr = "-", accel = accel}) end ruspan = ruspan .. runotes if not trentry then trentry = nom.translit_no_links(ruentry) end if not trnotes then trnotes = nom.translit_no_links(runotes) end trspan = m_links.remove_links(trentry) if ishyp then trspan = scriptutils.tag_text(trspan, lang, Latn, "hypothetical") end trspan = scriptutils.tag_translit(trspan .. trnotes, lang, "default", ' style="color: #888"') if is_lemma then -- insert_if_not(lemmavals, ruspan .. " (" .. trspan .. ")") insert_if_not(lemmavals, ruspan) else insert_if_not(russianvals, ruspan) insert_if_not(latinvals, trspan) end end if is_lemma then return table.concat(lemmavals, ", ") else local russian_span = table.concat(russianvals, ", ") if is_missing then return russian_span else local latin_span = table.concat(latinvals, ", ") return russian_span .. "<br />" .. latin_span end end end -- Subfunction of concat_word_forms(), used to implement recursively -- generating all combinations of elements from WORD_FORMS (a list, one -- element per word, of a list of the forms for a word, each of which is a -- two-element list of {RUSSIAN, TR}) and TRAILING_FORMS (a list of forms, the -- accumulated suffixes for trailing words so far in the recursion process, -- again where each form is a two-element list {RUSSIAN, TR}). Each time we -- recur we take the last FORMS item off of WORD_FORMS and to each form in -- FORMS we add all elements in TRAILING_FORMS, passing the newly generated -- list of items down the next recursion level with the shorter WORD_FORMS. -- We end up returning a list of concatenated forms, where each list item -- is a two-element list {RUSSIAN, TR}. local function concat_word_forms_1(word_forms, trailing_forms) if #word_forms == 0 then local retforms = {} for _, form in ipairs(trailing_forms) do local ru, tr = form[1], form[2] -- Remove <insa> and <insb> markers; they've served their purpose. ru = rsub(ru, "<ins[ab]>", "") tr = tr and rsub(tr, "<ins[ab]>", "") table.insert(retforms, {ru, tr}) end return retforms else local last_form_info = table.remove(word_forms) local last_forms, joiner = last_form_info[1], last_form_info[2] local new_trailing_forms = {} for _, form in ipairs(last_forms) do for _, trailing_form in ipairs(trailing_forms) do -- If form to prepend is empty, don't add the joiner; this -- is principally used in overall overrides, where we stuff -- the entire override into the last word local full_form = form[1] == "" and trailing_form or nom.concat_paired_russian_tr(form, nom.concat_paired_russian_tr(joiner, trailing_form), "movenotes") if rfind(full_form[1], "<insa>") and rfind(full_form[1], "<insb>") then -- REJECT! So we don't get mixtures of the two feminine -- instrumental singular endings. else table.insert(new_trailing_forms, full_form) end end end return concat_word_forms_1(word_forms, new_trailing_forms) end end -- Generate a list of overall forms by concatenating the per-word forms. -- PER_WORD_INFO comes from args.per_word_info and is a list of -- WORD_INFO items, one per word, each of which a two element list of -- WORD_FORMS (a table listing the forms for each case) and JOINER (a string). -- We loop over all possible combinations of elements from each word's list -- of forms for the given case; this requires recursion. concat_word_forms = function(per_word_info, case) local word_forms = {} -- Gather the appropriate word forms. We have to recreate this anew -- because it will be destructively modified by concat_word_forms_1(). for _, word_info in ipairs(per_word_info) do table.insert(word_forms, {word_info[1][case], word_info[2]}) end -- We need to start the recursion with the second parameter containing -- one blank element rather than no elements, otherwise no elements -- will be propagated to the next recursion level. return concat_word_forms_1(word_forms, {{""}}) end local accel_forms = { nom_sg = "主格|s", nom_sg_linked = "主格|s", nom_pl = "主格|p", nom_pl_linked = "主格|p", gen_sg = "生格|s", gen_pl = "生格|p", dat_sg = "与格|s", dat_pl = "与格|p", acc_sg_an = "活動体|対格|s", acc_pl_an = "活動体|対格|p", acc_sg_in = "非活動体|対格|s", acc_pl_in = "非活動体|対格|p", ins_sg = "造格|s", ins_pl = "造格|p", pre_sg = "前置格|s", pre_pl = "前置格|p", loc = "処格|s", loc_pl = "処格|p", voc = "呼格|s", voc_pl = "呼格|p", par = "par|s", par_pl = "par|p", } -- Make the table make_table = function(args) local data = {} data.after_title = " " .. args.heading data.number = args.nonumber and "" or numbers[args.n] local lemma_forms = args[args.n == "p" and "nom_pl" or "nom_sg"] data.lemma = show_form(args[args.n == "p" and "nom_pl_linked" or "nom_sg_linked"], args.old, "lemma", nil, nil) data.title = args.title or strutils.format(args.old and old_title_temp or title_temp, data) local sg_an_in_equal = ut.equals(args.acc_sg_an, args.acc_sg_in) local pl_an_in_equal = ut.equals(args.acc_pl_an, args.acc_pl_in) for _, case in ipairs(displayable_cases) do local accel_form = accel_forms[case] if not accel_form then error("Something wrong, can't find accelerator form for " .. case) end if (sg_an_in_equal and (case == "acc_sg_an" or case == "acc_sg_in") or pl_an_in_equal and (case == "acc_pl_an" or case == "acc_pl_in")) then accel_form = rsub(accel_form, "^[ai]n|", "") end if args.n == "p" then accel_form = rsub(accel_form, "|p$", "") end data[case] = show_form(args[case], args.old, false, accel_form, lemma_forms) end local temp = nil if args.n == "s" then data.nom_x = data.nom_sg data.gen_x = data.gen_sg data.dat_x = data.dat_sg data.acc_x_an = data.acc_sg_an data.acc_x_in = data.acc_sg_in data.ins_x = data.ins_sg data.pre_x = data.pre_sg if sg_an_in_equal then temp = "half" else temp = "half_a" end elseif args.n == "p" then data.nom_x = data.nom_pl data.gen_x = data.gen_pl data.dat_x = data.dat_pl data.acc_x_an = data.acc_pl_an data.acc_x_in = data.acc_pl_in data.ins_x = data.ins_pl data.pre_x = data.pre_pl data.par = nil data.loc = nil data.voc = nil if pl_an_in_equal then temp = "half" else temp = "half_a" end else if pl_an_in_equal then temp = "full" elseif sg_an_in_equal then temp = "full_af" else temp = "full_a" end end data.par_clause = args.any_overridden.par and strutils.format(partitive, data) or "" data.loc_clause = args.any_overridden.loc and strutils.format(locative, data) or "" data.voc_clause = args.any_overridden.voc and strutils.format(vocative, data) or "" local notes = get_arg_chain(args, "notes", "notes") local all_notes = {} for _, note in ipairs(args.internal_notes) do -- Superscript footnote marker at beginning of note, similarly to what's -- done at end of forms. local symbol, entry = m_table_tools.get_initial_notes(note) table.insert(all_notes, symbol .. entry) end for _, note in ipairs(notes) do -- Here too. local symbol, entry = m_table_tools.get_initial_notes(note) table.insert(all_notes, symbol .. entry) end data.notes = table.concat(all_notes, "<br />") data.notes_clause = data.notes ~= "" and strutils.format(notes_template, data) or "" return strutils.format(templates[temp], data) end partitive = [===[ ! style="background:#eff7ff; color:#000000;" | 分格 | {par} |-]===] locative = [===[ ! style="background:#eff7ff; color:#000000;" | 処格 | {loc} |-]===] vocative = [===[ ! style="background:#eff7ff; color:#000000;" | 呼格 | {voc} |-]===] notes_template = [===[ <div style="width:100%;text-align:left;background:#d9ebff;color:#000000;"> <div style="display:inline-block;text-align:left;padding-left:1em;padding-right:1em"> {notes} </div></div> ]===] local function template_prelude(min_width) min_width = min_width or "70" return rsub([===[ <div> <div class="NavFrame" style="display:inline-block; min-width:MINWIDTHem"> <div class="NavHead" style="background:#eff7ff; color:#000000;">{title}<span style="font-weight:normal;">{after_title}</span>&nbsp;</div> <div class="NavContent"> {\op}| style="background:#F9F9F9; color:#000000; text-align:center; min-width:MINWIDTHem; width:100%;" class="inflection-table" |- ]===], "MINWIDTH", min_width) end local function template_postlude() return [===[|-{par_clause}{loc_clause}{voc_clause} |{\cl}{notes_clause}</div></div></div>]===] end templates["full"] = template_prelude("45") .. [===[ ! style="width:10em;background:#d9ebff; color:#000000;" | ! style="background:#d9ebff; color:#000000;" | 単数 ! style="background:#d9ebff; color:#000000;" | 複数 |- ! style="background:#eff7ff; color:#000000;" | 主格 | {nom_sg} | {nom_pl} |- ! style="background:#eff7ff; color:#000000;" | 生格 | {gen_sg} | {gen_pl} |- ! style="background:#eff7ff; color:#000000;" | 与格 | {dat_sg} | {dat_pl} |- ! style="background:#eff7ff; color:#000000;" | 対格 | {acc_sg_an} | {acc_pl_an} |- ! style="background:#eff7ff; color:#000000;" | 造格 | {ins_sg} | {ins_pl} |- ! style="background:#eff7ff; color:#000000;" | 前置格 | {pre_sg} | {pre_pl} ]===] .. template_postlude() templates["full_a"] = template_prelude("50") .. [===[ ! style="width:15em;background:#d9ebff; color:#000000;" | ! style="background:#d9ebff; color:#000000;" | 単数 ! style="background:#d9ebff; color:#000000;" | 複数 |- ! style="background:#eff7ff; color:#000000;" | 主格 | {nom_sg} | {nom_pl} |- ! style="background:#eff7ff; color:#000000;" | 生格 | {gen_sg} | {gen_pl} |- ! style="background:#eff7ff; color:#000000;" | 与格 | {dat_sg} | {dat_pl} |- ! style="background:#eff7ff; color:#000000;" rowspan="2" | 対格 <span style="padding-left:1em;display:inline-block;vertical-align:middle">活動体<br/><br/>不活動体</span> | {acc_sg_an} | {acc_pl_an} |- | {acc_sg_in} | {acc_pl_in} |- ! style="background:#eff7ff; color:#000000;" | 造格 | {ins_sg} | {ins_pl} |- ! style="background:#eff7ff; color:#000000;" | 前置格 | {pre_sg} | {pre_pl} ]===] .. template_postlude() templates["full_af"] = template_prelude("50") .. [===[ ! style="width:15em;background:#d9ebff; color:#000000;" | ! style="background:#d9ebff; color:#000000;" | 単数 ! style="background:#d9ebff; color:#000000;" | 複数 |- ! style="background:#eff7ff; color:#000000;" | 主格 | {nom_sg} | {nom_pl} |- ! style="background:#eff7ff; color:#000000;" | 生格 | {gen_sg} | {gen_pl} |- ! style="background:#eff7ff; color:#000000;" | 与格 | {dat_sg} | {dat_pl} |- ! style="background:#eff7ff; color:#000000;" rowspan="2" | 対格 <span style="padding-left:1em;display:inline-block;vertical-align:middle">活動体<br/><br/>不活動体</span> | rowspan="2" | {acc_sg_an} | {acc_pl_an} |- | {acc_pl_in} |- ! style="background:#eff7ff; color:#000000;" | 造格 | {ins_sg} | {ins_pl} |- ! style="background:#eff7ff; color:#000000;" | 前置格 | {pre_sg} | {pre_pl} ]===] .. template_postlude() templates["half"] = template_prelude("30") .. [===[ ! style="width:10em;background:#d9ebff; color:#000000;" | ! style="background:#d9ebff; color:#000000;" | {number} |- ! style="background:#eff7ff; color:#000000;" | 主格 | {nom_x} |- ! style="background:#eff7ff; color:#000000;" | 生格 | {gen_x} |- ! style="background:#eff7ff; color:#000000;" | 与格 | {dat_x} |- ! style="background:#eff7ff; color:#000000;" | 対格 | {acc_x_an} |- ! style="background:#eff7ff; color:#000000;" | 造格 | {ins_x} |- ! style="background:#eff7ff; color:#000000;" | 前置格 | {pre_x} ]===] .. template_postlude() templates["half_a"] = template_prelude("35") .. [===[ ! style="width:15em;background:#d9ebff;color:#000000;" | ! style="background:#d9ebff; color:#000000;" | {number} |- ! style="background:#eff7ff; color:#000000;" | 主格 | {nom_x} |- ! style="background:#eff7ff; color:#000000;" | 生格 | {gen_x} |- ! style="background:#eff7ff; color:#000000;" | 与格 | {dat_x} |- ! style="background:#eff7ff; color:#000000;" rowspan="2" | 対格 <span style="padding-left:1em;display:inline-block;vertical-align:middle">活動体<br/><br/>不活動体</span> | {acc_x_an} |- | {acc_x_in} |- ! style="background:#eff7ff; color:#000000;" | 造格 | {ins_x} |- ! style="background:#eff7ff; color:#000000;" | 前置格 | {pre_x} ]===] .. template_postlude() return export -- For Vim, so we get 4-space tabs -- vim: set ts=4 sw=4 noet: 2hyjvqmnqhy27g16sjtgo8szq89itx4 2340881 2340826 2026-09-02T08:35:58Z Kuroco2k 84207 2340881 Scribunto text/plain --[=[ This module contains functions for creating inflection tables for Russian nouns. Author: Benwing, rewritten from early version by Wikitiki89 Form of arguments: One of the following: 1. LEMMA|DECL|PLSTEM (all arguments optional) 2. ACCENT|LEMMA|DECL|PLSTEM (all arguments optional) 3. multiple sets of arguments separated by the literal word "or" Arguments: ACCENT: Accent pattern (a b c d e f b' d' f' f''). Multiple values can be specified, separated by commas. If omitted, defaults to a or b depending on the position of stress on the lemma or explicitly-specified declension. LEMMA: Lemma form (i.e. nom sg or nom pl), with appropriately-placed stress; or the stem, if an explicit declension is specified (in this case, the declension usually looks like an ending, and the stem is the portion of the lemma minus the ending). In the first argument set (i.e. first set of arguments separated by "or"), defaults to page name; in later sets, defaults to lemma of previous set. A plural form can be given, and causes argument n= to default to n=p (plural only). Normally, an accent is required if multisyllabic, and unaccented monosyllables with automatically be stressed; prefix with * to override both behaviors. DECL: Declension field. Normally omitted to autodetect based on the lemma form; see below. PLSTEM: special plural stem (defaults to stem of lemma) Additional named arguments: a: animacy (a/an/anim = animate, i/in/inan = inanimate, b/bi/both/ai = both (listing animate first in the headword), ia = both (listing inanimate first in the headword), otherwise inanimate) n: number restriction (p = plural only, s = singular only, b = both; defaults to both unless the lemma is plural, in which case it defaults to plural only) CASE_NUM or acc_NUM_ANIM or par/loc/voc: override (or multiple values separated by commas) for case/number combination; forms auto-linked; can have raw links in it, can have an ending "note" (*, +, 1, 2, 3, etc.) pltail: Specify something (usually a * or similar) to attach to the end of the last plural form when there's more than one. Used in conjunction with notes= to indicate that alternative plural forms are obsolete, poetic, etc. pltailall: Similar pltail= but attaches to all plural forms. Typically used in conjunction with notes= to make a comment about the plural as a whole (e.g. it's mostly hypothetical, rare and awkward, etc.). sgtail, sgtailall: Same as pltail=, pltailall= but for the singular. obltail, obltailall: Same as pltail=, pltailall= but for oblique cases (not the nominative or accusative). CASE_NUM_tail: Attach the argument to the end of the last form (whether there's one or more than one) for the particular case/number combination. Note that this doesn't work quite like pltail= or sgtail= in that it doesn't skip adding the argument when there's only one form. CASE_NUM_tailall: Attach the argument to the end of all forms specified for the particular case/number combination. Similar to pltailall= or sgtailall=. suffix: Add a suffix such as ся to all forms. prefix: Add a prefix to all forms. plhyp, plhypall, CASE_NUM_hyp, etc.: Same as pltail, pltailall, CASE_NUM_tal, etc. but specify that the marked forms are mostly hypothetical or rare/awkard. Generally you will want plhypall=y to mark the plural as hypothetical. Per word named arguments: All of the above named arguments have per-word variants, e.g. a1, a2, ...; n1, n2, ...; CASE_NUM1, CASE_NUM2, ...; pltail1, pltail2, ...; etc. These apply to the individual words of a form. Case abbreviations: nom: nominative gen: genitive dat: dative acc: accusative ins: instrumental pre: prepositional par: partitive loc: locative voc: vocative Number abbreviations: sg: singular pl: plural Animacy abbreviations: an: animate in: inanimate Declension field: One of the following for regular nouns: (blank) GENDER -VARIANT GENDER-VARIANT $ DECLTYPE DECLTYPE/DECLTYPE (also, can append various special-case markers to any of the above) Or one of the following for adjectival nouns: + +ь $ +short, +mixed or +proper +DECLTYPE GENDER if present is m, f, n or 3f; for regular nouns, required if the lemma ends in -ь or is plural, ignored otherwise. 3f is the same as f but in the case of a plural lemma in -и, detects a third-declension feminine with singular in -ь rather than a first-declension feminine with singular in -а or -я. VARIANT is one way of requesting variant declensions (see also special case (1) for variant nom pls, and special case (2) for variant gen pls). The currently allowed values are -ья (will select a mixed declension that has some normal declension in its singular and the -ья plural declension); -ин (for animate masculine nouns in -ин with plural in -е -- note that this is autodetected in the majority of cases where the ending in -янин or -анин); -ишко (used for inanimate neuter-form diminutive masculine nouns in -ишко [also сараю́шко] with nom pl -и and colloquial feminine-ending alternants in some singular cases); -ище (similar to -ишко but used for *animate* augmentative masculine neuter-form nouns in -ище). Variants -ишко and -ище must be given with with special case (1). $ is indeclinable words. It is principally useful in multiword expressions where some of the words are indeclinable. DECLTYPE is an explicit declension type. Normally you shouldn't use this, and should instead let the declension type be autodetected based on the ending, supplying the appropriate hint if needed (gender for regular nouns, +ь for adjectives). If provided, the declension type is usually the same as the ending, and if present, the lemma field should be just the stem, without the ending. Possibilities for regular nouns are (blank) or # for hard-consonant declension, а, я, о, е or ё, е́, й, ья, ье or ьё, ь-m, ь-f, ин, ёнок or онок or енок, ёночек or оночек or еночек, мя, -а or #-а, ь-я, й-я, о-и or о-ы, -ья or #-ья, $ (indeclinable). Old-style (pre-reform) declensions use ъ instead of (blank), ъ-а instead of -а, ъ-ья instead of -ья, and инъ, ёнокъ/онокъ/енокъ, ёночекъ/оночекъ/еночекъ instead of the same without terminating ъ. The declensions can also be written with an accent on them; this chooses the same declension (except for е vs. е́), but causes ACCENT to default to pattern b instead of a. For adjectival nouns, you should normally supply just + and let the ending determine the declension; supply +ь in the case of a possessive adjectival noun in -ий, which have an extra -ь- in most endings compared with normal adjectival nouns in -ий, but which can't be distinguished based on the nominative singular. You can also supply +short, +mixed or +proper, which constrains the declension appropriately but still autodetects the gender-specific and stress-specific variant. If you do supply a specific declension type, as with regular nouns you need to omit the ending from the lemma field and supply just the stem. Possibilities are +ый, +ое, +ая, +ій, +ее, +яя, +ой, +о́е, +а́я, +ьій, +ье, +ья, +-short or +#-short (masc), +о-short, +о-stressed-short or +о́-short, +а-short, +а-stressed-short or +а́-short, and similar for -mixed and -proper (except there aren't any stressed mixed declensions). DECLTYPE/DECLTYPE is used for nouns with one declension in the singular and a different one in the plural, for cases that PLVARIANT and special case (1) below don't cover. Special-case markers: (1) for Zaliznyak-style alternate nominative plural ending: -а or -я for masculine, -и or -ы for neuter (2) for Zaliznyak-style alternate genitive plural ending: -ъ/none for masculine, -ей for feminine, -ов(ъ) for neuter, -ей for plural variant -ья * for reducibles (nom sg or gen pl has an extra vowel before the final consonant as compared with the stem found in other cases) ;ё for Zaliznyak-style alternation between last е in stem and ё TODO: 1. Multi-word issues: -- FIXME: Make sure internal_notes handled correctly; we may run into issues with multiple internal notes from different words, if we're not careful to use different footnote symbols for each type of footnote (which we don't do currently). [NOT DONE, MAY NOT DO] -- Handling default lemma: With multiple words, we should probably split the page name on spaces and default each word in turn [NOT DONE, MAY NOT DO] 2a. FIXME: For -ишко diminutives and -ище augmentatives, should add an appropriate category of some sort (currently marked by colloqfem= in category). 2b. FIXME: Adding a note to dat_sg also adds it to loc_sg when it exists; seems wrong. See луг. 2c. FIXME: When you have both d' and f in feminines and you use sgtail=*, you get two *'s. See User:Benwing2/test-ru-noun-debug. 3. ADJECTIVE FIXMES: 3a. FIXME: Change calls to ru-adj11 to use the new proper name support in ru-adjective. 3b. FIXME: Test that omitting a manual form in ru-adjective leaves the form as a big dash. 3c. FIXME: какой-либо and какой-то display genitives with translit -go instead of -vo. To fix this properly requires implementing real manual translit for adjectives. 3d. FIXME: Implement real manual translit for adjectives. 5. [FIXME: Consider adding an indicator in the header line when the ё/e alternation occurs. This is a bit tricky to calculate: If special case ;ё is given, but also if ё occurs in the stem and the accent pattern is as follows -- for sg-only, b' d' f' f'', also b d f if the noun is masc or 3rd-decl fem (i.e. nom-sg ending is non-syllabic); for pl-only, e f f' f'', also b b' c if the gen pl is non-syllabic; for sg/pl, any but a or b, also b if either nom sg or gen pl is non-syllabic. But it gets more complicated due to overrides. An alternative is to check all forms to see if ё is present in some but not all; but this is tricky also because e.g. reducibles frequently have ё/null alternation, which doesn't count, and some endings have е or ё in them, which also doesn't count. If we were to do it this way, we'd have to (a) count the number of е's in the form(s) with ё and verify that there's at least one form without ё and with one more е than in the form(s) with ё (and it gets trickier if different forms with ё have different numbers of е in them, although that is probably rare); and (b) ignore the appropriate endings (the best way to do this would probably be to look at the actual suffixes that were generated in args.suffixes and chop off any matching ending in the actual form(s), but also chop off final -е/ё, as well as -ев(ъ)/-ёв(ъ)/-ей/-ёй in the gen pl, which is frequently overridden, unless perhaps the stem ends in the same way). It'd probably not possible to do this in a 100% foolproof way but can be "good enough" for nearly all circumstances.] [MIGHT BE TOO MUCH WORK] 6. HEADWORD FIXMES: 6a. FIXME: In ru-headword, create a category for words whose gender doesn't match the form. (This is easy to do for ru-noun+ but harder for ru-noun. We would need to do limited autodetection of the ending: for singulars, -а/я should be feminine, -е/о/ё should be neuter, -ь should be masculine or feminine, anything else should be masculine; for plurals, -и/ы should be masculine or feminine, -а/я should be neuter except that -ія can be feminine or neuter due to old-style adjectival pluralia tantum nouns, anything else can be any gender.) 6b. FIXME: Recognize indeclinable nouns and indicate as indeclinable. Probably should work by checking the case forms to see if they're the same. 9. FIXME: Change stress-pattern detection and overriding to happen inside of looping over the two parts of a slash decl. Requires that the loop over the two parts happen outside of the loop over stress patterns. Requires that the category code get split into two parts, one to handle combined singular/plural categories that goes outside the two loops, and one to handle everything else that goes inside the two loops. 10. FIXME: override_matches_suffix() had a free variable reference to ARGS in it, which should have triggered an error whenever there was a nom_sg or nom_pl override but didn't. Is there an error causing this never to be called? Check. 11a. FIXME: In a multiword lemma, using loc2=+ causes only the second word to get linked instead of the whole expression. Same for par2=+, voc2=+. 11b. FIXME: Using loc=+ with a multiword lemma should do the right thing, same as if locN=+ is specified for each individual word. Instead it generates the locative as a whole from the dative, which fails e.g. if some of the words are adjectival. Same for par=+, voc=+. 13. Multi-word issues: -- Setting n=pl when auto-detecting a plural lemma. How does that interact with multi-word stuff? (DONE) -- compute_heading() -- what to do with multiple words? I assume we should display info on the first noun (non-indeclinable, non-adjectival), and on the first adjectival word otherwise, and finally on an indeclinable word (DONE) -- args.genders -- it should presumably come from the same word as is used in compute_heading(); but we should allow the overall gender to be overridden, at least in ru-noun+ (DONE) -- Bug in args.suffix: Gets added to every word in attach_with() and then again at the end, after pltail and such. Needs to be added to the last word only, before pltail. Need also suffixN for individual words. (DONE, NEEDS TESTING) -- Should have ..N versions of pltail and variants. (DONE, NEEDS TESTING) -- Need to handle overrides of acc_sg, acc_pl (DONE) -- Overrides of nom_sg/nom_pl should also override acc_sg/acc_pl if it was originally empty and the animacy is inanimate; similarly for gen_sg/gen_pl and animates; this needs to work both for per-word and overall overrides. (DONE) -- do_generate_forms(_multi) need to run part of make_table(), enough to combine all per_word_info into single lists of forms and store back into args[case]. (DONE, NEEDS TESTING) -- In generate_forms, should probably check if a=="i" and only return acc_sg_in as acc_sg=; or if a=="a" and only return acc_sg_an as acc_sg=; in old/new comparison code, do something similar, also when a=="b" check if acc_sg_in==acc_sg_an and make it acc_sg; when a=="b" and the _in and _an variants are different, might need to ignore them or check that acc_sg_in==nom_sg and acc_sg_an==gen_sg; similarly for _pl (DONE, NEEDS TESTING) -- Need to test with multiple words! [DONE] -- Current handling of <adj> won't work properly with multiple words; will need to translate word-by-word in that case (should be solved by manual-translit branch) [DONE] 14. In multiple-words branch, fix ru-decl-noun-multi so it recognizes things like *, (1), (2) and ; without the need for a separator. Consider using semicolon as a separator, since we already use it to separate ё from a previous declension. Maybe use $ or ~ for an indeclinable word; don't use semicolon. [IMPLEMENTED. NEED TO TEST.] 16. [Consider having ru-noun+ treat par= as a second genitive in the headword, as is done with край] [WON'T DO] 17. [FIXME: Consider removing slash patterns and instead handling them by allowing additional declension flags 'sg' and 'pl'. This simplifies the various special cases caused by slash declensions. It would also be possible to remove the special plural stem, which would get rid of more special cases. On the other hand, it makes it more complicated to support plural variant -ья with all singular types, and the category code that displays things like "Russian nouns with singular -X and plural -Y" also gets more complicated, and there's something convenient and intuitive about plural stems, and slash declensions are also convenient and at least somewhat intuitive. One possibility is to externally allow slash declensions and special plural stems and rewrite them internally to separate stems with 'sg' and 'pl' declension flags; but there are still the two coding issues mentioned above.] 18. [FIXME: Consider redoing slash patterns so they operate at the outer level, i.e. things like special cases apply separately in the singular and plural part of the slash pattern.] 19. In ru-noun, don't recognize -а with m as plural unless (1) or n=pl is also given, because there are masculine words with the feminine ending. Check using the test code whether this changes anything. Also check if there are other similar cases (neuter with -и isn't parallel because -и is always plural). [IMPLEMENTED. NEED TO TEST.] 19a. Internal notes weren't propagated properly from adjectives. [IMPLEMENTED. NEED TO TEST.] 19b. Add support for -ишко and -ище variants (p. 74 of Z), which conversationally and/or colloquially have feminine endings in certain cases. [IMPLEMENTED. NEED TO TEST. MAKE SURE THE INTERNAL NOTES APPEAR.] 19d. For masculine animate neuter-form nouns, the accusative singular ends in -а (-я soft) instead of -о. [IMPLEMENTED. NEED TO TEST. NOTE: Currently this variant only can be selected using new-style arguments where the gender can be given. Perhaps we should consider allowing gender to be specified with old-style explicit declensions.] 21. Put back gender hints for pl adjectival nouns; used by ru-noun+. [IMPLEMENTED. NEED TO TEST.] 23. Mixed and proper-noun adjectives have built-in notes. We need to handle those notes with an "internal_notes" section similar to what is used in the adjective module. [IMPLEMENTED. NEED TO TEST.] 24. Adjective detection code here needs to work the same as for the adjective module, in particular in the handling of short, stressed-short, mixed, proper, stressed-proper. [IMPLEMENTED. NEED TO TEST.] 25. Consider simplifying plural-variant code to only allow -ья as a plural variant [and maybe even change that to be something like (1')]. [IMPLEMENTED REDUCTION OF PLURAL VARIANTS TO -ья; PLURAL-VARIANT CODE STILL COMPLEX, THOUGH. NEED TO TEST.] 26. Automatically superscript *, numbers and similar things at the beginning of a note. Also do this in adjective module. [IMPLEMENTED. NEED TO TEST.] 28. Make the check for multiple stress patterns (categorizing/tracking) smarter, to keep a list of them and check at the end, so we handle multiple stress patterns specified through different arg sets. [IMPLEMENTED; NEED TO TEST.] 29. More sophisticated handling of user-requested plural variant vs. special case (1) vs. plural-detected variant. [IMPLEMENTED. NEED TO TEST FURTHER.] 30. Solution to ambiguous plural involving gender spec "3f". [IMPLEMENTED; NEED TO TEST. Use запчасти, новости.] 33. With pluralia tantum adjectival nouns, we don't know the gender. By default we assume masculine (or feminine for old-style -ія nouns) and currently this goes into the category, but shouldn't. [IMPLEMENTED.] 39. [Eventually: Even with decl type explicitly given, the full stem with ending should be included.] [MAY NEVER IMPLEMENT] 40. [Get error "Unable to dereduce" with strange noun ва́йя, what should happen?] [WILL NOT FIX; USE AN OVERRIDE] 41. In творог, module generates partitive творогу́ when it should copy the dative творогу́,тво́рогу. (DONE) 42. [[груз 200]] doesn't work. Interprets 200 as a footnote symbol. 43. When converting е -> ё not after cons and with translit, we should convert e -> o to avoid double j. (DONE) 44. FIXME: In ро́вня/ровня́, similarly with неровня, marks genitive plural ровня́ as irregular even though it isn't. (NOT OUR ERROR; THE DECLENSIONS OF THESE NOUNS MARKED THE ENDING-STRESSED VARIANTS WITH (2).) ]=]-- local m_utilities = require("モジュール:utilities") local ut = require("モジュール:utils") local m_links = require("モジュール:links") local com = require("モジュール:ru-common") local nom = require("モジュール:ru-nominal") local m_ru_adj = require("モジュール:ru-adjective") local m_ru_translit = require("モジュール:ru-translit") local strutils = require("モジュール:string utilities") local scriptutils = require("モジュール:script utilities") local m_table_tools = require("モジュール:table tools") local m_debug = require("モジュール:debug") local export = {} local lang = require("モジュール:languages").getByCode("ru") local Latn = require("モジュール:scripts").getByCode("Latn") local u = mw.ustring.char local rfind = mw.ustring.find local rsubn = mw.ustring.gsub local rmatch = mw.ustring.match local rsplit = mw.text.split local ulower = mw.ustring.lower local usub = mw.ustring.sub local ulen = mw.ustring.len local AC = u(0x0301) -- acute = ́ local CFLEX = u(0x0302) -- circumflex = ̂ local PSEUDOCONS = u(0xFFF2) -- pseudoconsonant placeholder, matching ru-common local IRREGMARKER = "△" local HYPMARKER = "⟐" -- text class to check lowercase arg against to see if Latin text embedded in it local latin_text_class = "[a-zščžěáéíóúýàèìòùỳâêîôûŷạẹịọụỵȧėȯẏ]" -- 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 -- version of rfind() that lowercases its string first, for case-insensitive matching local function rlfind(term, foo) return rfind(ulower(term), foo) end local function track(page) m_debug.track("ru-noun/" .. page) return true end -- version of ut.insert_if_not() that makes sure 'false' doesn't get inserted by mistake local function insert_if_not(foo, bar) assert(bar ~= false) ut.insert_if_not(foo, bar) end -- Fancy version of ine() (if-not-empty). Converts empty string to nil, -- but also strips leading/trailing space and then single or double quotes, -- to allow for embedded spaces. local function ine(arg) if not arg then return nil end arg = rsub(arg, "^%s*(.-)%s*$", "%1") if arg == "" then return nil end local inside_quotes = rmatch(arg, '^"(.*)"$') if inside_quotes then return inside_quotes end inside_quotes = rmatch(arg, "^'(.*)'$") if inside_quotes then return inside_quotes end return arg end -- FIXME: Move to utils -- Iterate over a chain of parameters, FIRST then PREF2, PREF3, ..., -- inserting into LIST (newly created if omitted). Return LIST. local function get_arg_chain(args, first, pref, list) if not list then list = {} end local val = args[first] local i = 2 while val do table.insert(list, val) val = args[pref .. i] i = i + 1 end return list end -- synthesize a frame so that exported functions meant to be called from -- templates can be called from the debug console. local function debug_frame(parargs, args) return {args = args, getParent = function() return {args = parargs} end} end local function rutr_pairs_equal(term1, term2) local ru1, tr1 = term1[1], term1[2] local ru2, tr2 = term2[1], term2[2] local ru1entry, ru1notes = m_table_tools.separate_notes(m_links.remove_links(ru1)) local ru2entry, ru2notes = m_table_tools.separate_notes(m_links.remove_links(ru2)) if ru1entry ~= ru2entry then return false end local tr1entry, tr1notes local tr2entry, tr2notes if tr1 then tr1entry, tr1notes = m_table_tools.separate_notes(tr1) end if tr2 then tr2entry, tr2notes = m_table_tools.separate_notes(tr2) end if tr1entry == tr2entry then return true elseif type(tr1entry) == type(tr2entry) then return false else tr1entry = tr1entry or nom.translit_no_links(ru1entry) tr2entry = tr2entry or nom.translit_no_links(ru2entry) return tr1entry == tr2entry end end local function contains_rutr_pair(list, pair) for _, item in ipairs(list) do if rutr_pairs_equal(item, pair) then return true end end return false end -- Clone parent's args while also assigning nil to empty strings. local function clone_args(frame) local args = {} for pname, param in pairs(frame:getParent().args) do args[pname] = ine(param) end return args end -- Old-style declensions. local declensions_old = {} -- New-style declensions; computed automatically from the old-style ones, -- for the most part. local declensions = {} -- Internal notes for old-style declensions. local internal_notes_table_old = {} -- Same for new-style declensions. local internal_notes_table = {} -- Category and type information corresponding to declensions: These may -- contain the following fields: 'singular', 'plural', 'decl', 'hard', 'g', -- 'suffix', 'gensg', 'irregpl', 'alt_nom_pl', 'cant_reduce', 'ignore_reduce', -- 'stem_suffix'. -- -- 'singular' is used to construct a category of the form -- "Russian nouns SINGULAR". If omitted, a category is constructed of the -- form "Russian nouns ending in -ENDING", where ENDING is the actual -- nom sg ending shorn of its acute accents; or "Russian nouns ending -- in suffix -ENDING", if 'suffix' is true. The value of SINGULAR can be -- one of the following: a single string, a list of strings, or a function, -- which is passed one argument (the value of ENDING that would be used to -- auto-initialize the category), and should return a single string or list -- of strings. Such a category is only constructed if 'gensg' is true. -- -- 'plural' is analogous but used to construct a category of the form -- "Russian nouns with PLURAL", and if omitted, a category is constructed -- of the form "Russian nouns with plural -ENDING", based on the actual -- nom pl ending shorn of its acute accents. Currently no plural category -- is actually constructed. -- -- In addition, a category may normally constructed from the combination of -- 'singular' and 'plural', appropriately defaulted; e.g. if both are present, -- the combined category will be "Russian nouns SINGULAR with PLURAL" and -- if both are missing, the combined category will be -- "Russian nouns ending in -SGENDING with plural -PLENDING" (or -- "Russian nouns ending in suffix -SGENDING with plural -PLENDING" if -- 'suffix' is true). Note that if either singular or plural or both -- specifies a list, looping will occur over all combinations. Such a -- category is constructed only if 'irregpl' or 'alt_nom_pl' or 'suffix' -- is true or if the declension class is a slash class. -- -- 'decl' is "1st", "2nd", "3rd" or "indeclinable"; 'hard' is "hard", "soft" -- or "none"; 'g' is "m", "f", "n" or "none"; these are all traditional -- declension categories. -- -- If 'suffix' is true, the declension type includes a long suffix -- added to the string that itself undergoes reducibility and such, and so -- reducibility cannot occur in the stem minus the suffix. Categories will -- be created for the suffix. -- -- 'alt_nom_pl' indicates that the declension has an alternative nominative -- plural (corresponding to Zaliznyak's special case 1; compare special case 2 -- for alternative genitive plural). 'irregpl' indicates that the entire -- plural is irregular. -- -- In addition to the above categories, additional more specific categories -- are constructed based on the final letter of the stem, e.g. -- "Russian velar-stem 1st-declension hard nouns". See calls to -- com.get_stem_trailing_letter_type(). 'stem_suffix', if present, is added to -- the end of the stem when get_stem_trailing_letter_type() is called. -- This is the only place that 'stem_suffix' is used. This is for use with -- the '-ья' and '-ье' declension types, so that the trailing letter is -- 'ь' and not whatever precedes it. -- -- 'enable_categories' is a special hack for testing, which disables all -- category insertion if false. Delete this as soon as we've verified the -- working of the category code and created all the necessary categories. local enable_categories = true -- Category/type info corresponding to old-style declensions; see above. local declensions_old_cat = {} -- Category/type info corresponding to new-style declensions. Computed -- automatically from the old-style ones, for the most part. Same format -- as the old-style ones. local declensions_cat = {} -- Table listing aliases of old-style declension classes. local declensions_old_aliases = {} -- Table listing aliases of new-style declension classes; computed -- automatically from the old-style ones. local declensions_aliases = {} local stress_patterns = {} -- Set of patterns with ending-stressed genitive plural. local ending_stressed_gen_pl_patterns = {} -- Set of patterns with ending-stressed prepositional singular. local ending_stressed_pre_sg_patterns = {} -- Set of patterns with ending-stressed dative singular. local ending_stressed_dat_sg_patterns = {} -- Set of patterns with all singular forms ending-stressed. local ending_stressed_sg_patterns = {} -- Set of patterns with all plural forms ending-stressed. local ending_stressed_pl_patterns = {} -- List of all cases, including those that are declined normally -- (nom/gen/dat/acc/ins/pre sg and pl), plus animate/inanimate accusative -- variants (computed automatically as appropriate from the previous cases), -- plus additional overridable cases (loc/par/voc), plus the "linked" lemma -- case variants used in ru-noun+ headwords (nom_sg_linked, nom_pl_linked, -- whose values come from nom_sg and nom_pl but may have additional embedded -- links if they were given in the lemma). local all_cases -- List of all cases that are declined normally. local decl_cases -- List of all cases that can be displayed (includes all cases except -- plain accusatives). local displayable_cases -- List of all cases that can be overridden (includes all cases except the -- "linked" lemma case variants). Also currently the same as the cases -- returned by export.generate_forms(). local overridable_cases -- Type of trailing letter, for tracking purposes local trailing_letter_type -- If enabled, compare this module with new version of module to make -- sure all declensions are the same. Eventually consider removing this; -- but useful as new code is created. local test_new_ru_noun_module = false -- Forward functions local generate_forms_1 local determine_decl local handle_forms_and_overrides local handle_overall_forms_and_overrides local concat_word_forms local make_table local detect_adj_type local detect_stress_pattern local override_stress_pattern local determine_stress_variant local determine_stem_variant local is_reducible local is_dereducible local add_bare_suffix local attach_stressed local do_stress_pattern local canonicalize_override -------------------------------------------------------------------------- -- Tracking and categorization -- -------------------------------------------------------------------------- -- FIXME! Move below the main code -- FIXME!! Consider deleting most of this tracking code once we've enabled -- all the categories. Note that some of the tracking categories aren't -- completely redundant; e.g. we have tracking pages that combine decl and -- stress classes, such as "а/a" or "о-и/d'", which are more or less -- equivalent to stem/gender/stress categories, but we also have the same -- prefixed by "reducible-stem/" for reducible stems. local function tracking_code(stress, orig_decl, decl, args, n, islast) assert(orig_decl) assert(decl) local hint_types = com.get_stem_trailing_letter_type(args.stem) if orig_decl == decl then orig_decl = nil end if args.notes then track("notes") end local function all_pl_irreg() track("irreg") for _, case in ipairs(overridable_cases) do if rfind(case, "_pl") then track("irreg/" .. case) end end end local function track_prefix(prefix) local function dotrack(suf) track(prefix .. suf) end dotrack(stress) dotrack(decl) dotrack(decl .. "/" .. stress) if orig_decl then dotrack(orig_decl) dotrack(orig_decl .. "/" .. stress) end for _, hint_type in ipairs(hint_types) do dotrack(hint_type) dotrack(decl .. "/" .. hint_type) if orig_decl then dotrack(orig_decl .. "/" .. hint_type) end end end track_prefix("") if args.reducible then track("reducible-stem") track_prefix("reducible-stem/") end if rlfind(args.stem, "и́?н$") and (decl == "" or decl == "#") then track("irregular-in") end if args.pltail then track("pltail") end if args.sgtail then track("sgtail") end if args.pltailall then track("pltailall") end if args.sgtailall then track("sgtailall") end if args.pl ~= args.stem then track("irreg-pl-stem") track("irreg") end if args.alt_gen_pl then track("alt-gen-pl") track("irreg") track("irreg/gen_pl") end if args.want_sc1 then track("want-sc1") track("irreg") track("irreg/nom_pl") end if rfind(decl, "-и$") or rfind(decl, "-а$") or rfind(decl, "-я$") then track("irreg") track("irreg/nom_pl") end if rfind(decl, "-ья$") then track("variant-ья") all_pl_irreg() end if rfind(decl, "%(ишк%)$") then track("variant-ишко") end if rfind(decl, "%(ищ%)$") then track("variant-ище") end if args.jo_special then track("jo-special") end if args.manual then track("manual") end if args.explicit_gender then track("explicit-gender") track("explicit-gender/" .. args.explicit_gender) end for _, case in ipairs(overridable_cases) do if args[case .. n] and not args.manual then track("override") track("override/" .. case .. n) track("irreg") track("irreg/" .. case .. n) -- questionable use: track_prefix("irreg/" .. case .. "/") -- questionable use: track_prefix("irreg/" .. case .. n .. "/") end if islast and args[case] and not args.manual then track("override") track("override/" .. case) track("irreg") track("irreg/" .. case) -- questionable use: track_prefix("irreg/" .. case .. "/") end if args[case .. "_tail"] then track("casenum-tail") track("casenum-tail/" .. case) end if args[case .. "_tailall"] then track("casenum-tailall") track("casenum-tailall/" .. case) end end end local gender_to_full = {m="男性", f="女性", n="中性"} local gender_to_short = {m="男性", f="女性", n="中性"} -- Insert the category CAT (a string) into list CATEGORIES. String will -- have "Russian " prepended and ~ substituted for the plural part of speech. local function insert_category(categories, cat, pos, atbeg) if enable_categories then local fullcat = "ロシア語 " .. rsub(cat, "~", pos .. "") if atbeg then table.insert(categories, 1, fullcat) else table.insert(categories, fullcat) end end end -- Insert categories into ARGS.CATEGORIES corresponding to the specified -- stress and declension classes and to the form of the stem (e.g. velar, -- sibilant, etc.). Also initialize values used to compute the declension -- heading that describes similar information. N is the number of the -- word being processed; ISLAST is true if this is the last word. local function categorize_and_init_heading(stress, decl, args, n, islast) local function cat_to_list(cat) if not cat then return {} elseif type(cat) == "string" then return {cat} else assert(type(cat) == "table") return cat end end -- Insert category CAT into the list of categories in ARGS. -- CAT may be nil, a single string or a list of strings. We call -- insert_category() on each string. The strings will have "Russian " -- prepended and "~" replaced with the plural part of speech. local function insert_cat(cat) for _, c in ipairs(cat_to_list(cat)) do insert_category(args.categories, c, args.pos) end end -- "Resolve" the category spec CATSPEC into the sort of category spec -- accepted by insert_cat(), i.e. nil, a single string or a list of -- strings. CATSPEC may be any of these or a function, which takes one -- argument (SUFFIX) and returns another CATSPEC. local function resolve_cat(catspec, suffix) if type(catspec) == "function" then return resolve_cat(catspec(suffix), suffix) else return catspec end end -- Check whether an override for nom_sg or nom_pl still contains the -- normal suffix (which should already have accents removed) in at least -- one of its entries. If no override then of course we return true. local function override_matches_suffix(args, case, n, suffix) assert(suffix == com.remove_accents(suffix)) -- NOTE: It might not be completely correct to pass in args.forms -- here when n == ""; this is different behavior from -- handle_overall_forms_and_overrides(). But args.forms is only used -- to retrieve the dat_sg for handling loc/par, and we're never -- called with loc or par as the value of CASE, so it doesn't matter. -- We add an assert to make sure of this. assert(case ~= "loc" and case ~= "par") local override = canonicalize_override(args, case, args.forms, n) if not override then return true end for _, x in ipairs(override) do local ru, tr = x[1], x[2] local entry, notes = m_table_tools.separate_notes(ru) entry = com.remove_accents(m_links.remove_links(entry)) if rlfind(entry, suffix .. "$") then return true end end return false end if args.manual then return end local h = args.heading_info assert(decl) local decl_cats = args.old and declensions_old_cat or declensions_cat local sgdecl, pldecl local is_slash_decl = rfind(decl, "/") if is_slash_decl then local indiv_decls = rsplit(decl, "/") sgdecl, pldecl = indiv_decls[1], indiv_decls[2] else sgdecl, pldecl = decl, decl end local sgdc = decl_cats[sgdecl] local pldc = decl_cats[pldecl] assert(sgdc) assert(pldc) local sghint_types = com.get_stem_trailing_letter_type( args.stem .. (sgdc.stem_suffix or "")) -- insert English version of Zaliznyak stem type if sgdc.decl == "indeclinable" then insert_cat("indeclinable ~") insert_if_not(h.stemetc, "indecl") else local stem_type = sgdc.decl == "3rd" and "第三変化" or ut.contains(sghint_types, "velar") and "軟口蓋語幹" or ut.contains(sghint_types, "sibilant") and "歯擦語幹" or ut.contains(sghint_types, "c") and "ц-語幹" or ut.contains(sghint_types, "i") and "i-語幹" or ut.contains(sghint_types, "vowel") and "母音語幹" or ut.contains(sghint_types, "soft-cons") and "母音語幹" or ut.contains(sghint_types, "palatal") and "母音語幹" or sgdc.hard == "soft" and "軟語幹" or "硬語幹" local short_stem_type = stem_type == "3rd-declension" and "3rd-decl" or stem_type if sgdc.adj then -- Don't include gender for pluralia tantum because it's mostly -- indeterminate (certainly when specified using a plural lemma, -- which will be usually; technically it's partly or completely -- determinate in certain old-style adjectives that distinguish -- masculine from feminine/neuter, but this is too rare a case -- to worry about) local gendertext = args.thisn == "p" and "plural-only" or gender_to_full[sgdc.g] insert_if_not(h.adjectival, "yes") if args.thisn ~= "p" then insert_if_not(h.gender, gender_to_short[sgdc.g]) end if sgdc.possadj then insert_cat(sgdc.decl .. " possessive " .. gendertext .. " " .. stress .. "型アクセント 形容詞的~") insert_if_not(h.stemetc, sgdc.decl .. " poss") insert_if_not(h.stress, stress) elseif stem_type == "軟語幹" or stem_type == "母音語幹" then insert_cat(stem_type .. " " .. gendertext .. " 形容詞的~") insert_if_not(h.stemetc, short_stem_type) else insert_cat(stem_type .. " " .. gendertext .. " " .. stress .. "型アクセント 形容詞的~") insert_if_not(h.stemetc, short_stem_type) insert_if_not(h.stress, stress) end else -- NOTE: There are 8 Zaliznyak-style stem types and 3 genders, but -- we don't create a category for masculine-form 3rd-declension -- nouns (there is such a noun, путь, but it mostly behaves -- like a feminine noun), so there are 23. insert_cat(stem_type .. " " .. gender_to_full[sgdc.g] .. "~") -- NOTE: Here we are creating categories for the combination of -- stem, gender and accent. There are 10 accent patterns and 23 -- combinations of stem and gender, which potentially makes for -- 10*23 = 230 such categories, which is a lot. Not all such -- categories should actually exist; there were maybe 75 former -- declension templates, each of which was essentially categorized -- by the same three variables, but some of which dealt with -- ancillary issues like irregular plurals; this amounts to 67 -- actual stem/gender/accent categories, although there are more -- of them in Zaliznyak (FIXME, how many? See generate_cats.py). insert_cat(stem_type .. " " .. gender_to_full[sgdc.g] .. "~ " .. stress .. "型アクセント") insert_if_not(h.adjectival, "no") insert_if_not(h.gender, gender_to_short[sgdc.g]) insert_if_not(h.stemetc, short_stem_type) insert_if_not(h.stress, stress) end insert_cat(stress .. "型アクセントの~") end local sgsuffix = args.suffixes.nom_sg if sgsuffix then assert(#sgsuffix == 1) -- If this ever fails, then implement a loop sgsuffix = com.remove_accents(sgsuffix[1]) -- If we are plural only or if nom_sg is overridden and has -- an unusual suffix, then don't create category for sg suffix if args.thisn == "p" or not override_matches_suffix(args, "nom_sg", n, sgsuffix) or islast and not override_matches_suffix(args, "nom_sg", "", sgsuffix) then sgsuffix = nil end end local plsuffix = args.suffixes.nom_pl if plsuffix then assert(#plsuffix == 1) -- If this ever fails, then implement a loop plsuffix = com.remove_accents(plsuffix[1]) -- If we are a singulare tantum or if nom_pl is overridden and has -- an unusual suffix, then don't create category for pl suffix if args.thisn == "s" or not override_matches_suffix(args, "nom_pl", n, plsuffix) or islast and not override_matches_suffix(args, "nom_pl", "", plsuffix) then plsuffix = nil end end sgsuffix = sgsuffix and rsub(sgsuffix, "ъ$", "") plsuffix = plsuffix and rsub(plsuffix, "ъ$", "") local sgcat = sgsuffix and (resolve_cat(sgdc.singular, sgsuffix) or "ending in " .. (sgsuffix == "" and "a consonant" or (sgdc.suffix and "suffix " or "") .. "-" .. sgsuffix)) local plcat = plsuffix and (resolve_cat(pldc.plural, suffix) or "plural -" .. plsuffix) if sgcat and sgdc.gensg then for _, cat in ipairs(cat_to_list(sgcat)) do insert_cat("~ " .. cat) end end if sgcat and plcat and (sgdc.suffix or sgdc.alt_nom_pl or sgdc.irregpl or is_slash_decl and plsuffix == "-ья") then for _, scat in ipairs(cat_to_list(sgcat)) do for _, pcat in ipairs(cat_to_list(plcat)) do insert_cat("~ " .. scat .. " with " .. pcat) end end end if args.pl ~= args.stem then insert_cat("~ 不規則な複数形の語幹あり") end if args.reducible and not sgdc.ignore_reduce then insert_cat("~ with reducible stem") insert_if_not(h.reducible, "yes") else insert_if_not(h.reducible, "no") end if args.alt_gen_pl then insert_cat("~ 複数生格に異形あり") end if sgdc.adj then insert_cat("形容詞的~") end end local function compute_heading(args) local headings = {} local h = args.heading_info table.insert(headings, args.a == "a" and "活動体" or args.a == "i" and "不活動体" or "bian") table.insert(headings, args.nonumber and "不加算" or args.n == "s" and "単数形のみ" or args.n == "p" and "複数形のみ" or nil) if #h.gender > 0 then table.insert(headings, table.concat(h.gender, "/") .. "名詞型") end if #h.stemetc > 0 then table.insert(headings, table.concat(h.stemetc, "/")) end if #h.stress > 0 then local stresses = {} for _, stress in ipairs(h.stress) do table.insert(stresses, rsub(stress, "'", "&#39;")) end table.insert(headings, table.concat(stresses, "/") .. "型アクセント") end local function handle_bool(boolvals, text, into) into = into or headings if ut.contains(boolvals, "yes") and ut.contains(boolvals, "no") then table.insert(into, "[" .. text .. "]") elseif ut.contains(boolvals, "yes") then table.insert(into, text) end end handle_bool(h.adjectival, "adj") handle_bool(h.reducible, "reduc") return headings end local function compute_overall_heading_categories_and_genders(args) local hinfo = args.per_word_heading_info local index = 0 -- First try for non-adjectival, non-indeclinable for i=1,#hinfo do if not ut.contains(hinfo[i].stemetc, "indecl") and not ut.contains(hinfo[i].adjectival, "yes") then index = i break end end if index == 0 then -- Then just non-indeclinable for i=1,#hinfo do if not ut.contains(hinfo[i].stemetc, "indecl") then index = i break end end end -- Finally, do anything if index == 0 then index = 1 end -- Compute final heading local headings = args.per_word_headings[index] local categories = args.per_word_categories[index] if args.any_irreg then table.insert(headings, "不規則変化") insert_category(categories, "不規則変化~", args.pos) end for _, case in ipairs(overridable_cases) do local is_pl = rfind(case, "_pl") if args.n == "s" and is_pl or args.n == "p" and not is_pl then -- Don't create singular categories when plural-only or vice-versa elseif (case == "loc" or case == "voc" or case == "par") then if args.any_overridden[case] then local engcase = rsub(case, "^([a-z]*)", { par="分格", loc="処格", voc="呼格" }) insert_category(categories, engcase .. "のある~", args.pos) end elseif args.any_irreg_case[case] then local engcase = rsub(case, "^([a-z]*)", { nom="主格", gen="生格", dat="与格", acc="対格", ins="造格", pre="前置格", par="分格", loc="処格", voc="呼格" }) engcase = rsub(engcase, "(_[a-z]*)", { _sg="単数", _pl="複数", _an="", _in="", --_an=" animate", _in=" inanimate" }) insert_category(categories, "不規則な" .. engcase .. "のある~", args.pos) end end local heading = args.manual and "" or "(<span style=\"font-size: smaller;\">[[付録:ロシア語の名詞#格変化表|" .. table.concat(headings, " ") .. "]]</span>)" args.heading = heading args.categories = categories args.genders = args.per_word_genders[index] end -------------------------------------------------------------------------- -- Main code -- -------------------------------------------------------------------------- -- Used by do_generate_forms(). local function arg1_is_stress(arg1) if not arg1 then return false end for _, arg in ipairs(rsplit(arg1, ",")) do if not rfind(arg, "^[a-f]'?'?$") then return false end end return true end -- Used by do_generate_forms(), handling a word joiner argument -- of the form 'join:JOINER'. local function extract_word_joiner(spec) word_joiner = rmatch(spec, "^join:(.*)$") assert(word_joiner) return nom.split_russian_tr(word_joiner, "dopair") end local function determine_headword_gender(args, sgdc, gender) -- If gender unspecified, use normal gender of declension, except when -- adjectival nouns that are pluralia tantum, where the gender is -- mostly indeterminate (FIXME, not completely with old-style declensions -- but we don't handle that currently). if not gender then if sgdc.adj and args.thisn == "p" then gender = nil else gender = sgdc.g end end -- Determine headword genders gender = gender and gender ~= "none" and gender .. "-" or "" local plsuffix = args.n == "p" and "-p" or "" local hgens if args.a == "a" then hgens = {gender .. "an" .. plsuffix} elseif args.a == "i" then hgens = {gender .. "in" .. plsuffix} elseif args.a == "ai" then hgens = {gender .. "an" .. plsuffix, gender .. "in" .. plsuffix} else hgens = {gender .. "in" .. plsuffix, gender .. "an" .. plsuffix} end -- Insert into list of genders for _, hgen in ipairs(hgens) do insert_if_not(args.genders, hgen) end end function export.do_generate_forms(args, old) old = old or args.old args.old = old args.pos = args.pos or "名詞" -- This is a list with each element corresponding to a word and -- consisting of a two-element list, ARG_SETS and JOINER, where ARG_SETS -- is a list of ARG_SET objects, one per alternative stem, and JOINER -- is a string indicating how to join the word to the next one. local per_word_info = {} -- Gather arguments into a list of ARG_SET objects, containing (potentially) -- elements 1, 2, 3, 4, corresponding to accent pattern, stem, declension -- type, pl stem and coming from consecutive numbered parameters. Sets of -- declension parameters are separated by the word "or". local arg_sets = {} -- Find maximum-numbered arg, allowing for holes local max_arg = 0 for k, v in pairs(args) do if type(k) == "number" and k > max_arg then max_arg = k end end -- Now gather the arguments. local offset = 0 local arg_set = {} for i=1,(max_arg + 1) do local end_arg_set = false local end_word = false -- FIXME, is this correct? local word_joiner if i == max_arg + 1 then end_arg_set = true end_word = true word_joiner = {""} elseif args[i] == "_" then end_arg_set = true end_word = true word_joiner = {" "} elseif args[i] == "-" then end_arg_set = true end_word = true word_joiner = {"-"} elseif args[i] and rfind(args[i], "^join:") then end_arg_set = true end_word = true word_joiner = extract_word_joiner(args[i]) elseif args[i] == "or" then end_arg_set = true end if end_arg_set then table.insert(arg_sets, arg_set) arg_set = {} offset = i if end_word then table.insert(per_word_info, {arg_sets, word_joiner}) arg_sets = {} end else -- If the first argument isn't stress, that means all arguments -- have been shifted to the left one. We want to shift them -- back to the right one, so we change the offset so that we -- get the same effect of skipping a slot in the arg set. if i - offset == 1 and not arg1_is_stress(args[i]) then offset = offset - 1 end if i - offset > 4 then error("Too many arguments for argument set: arg " .. i .. " = " .. (args[i] or "(blank)")) end arg_set[i - offset] = args[i] end end return generate_forms_1(args, per_word_info) end function export.do_generate_forms_multi(args, old) old = old or args.old args.old = old args.pos = args.pos or "noun" -- This is a list with each element corresponding to a word and -- consisting of a two-element list, ARG_SET and JOINER, where ARG_SET -- is a list of ARG_SET objects, one per alternative stem, and JOINER -- is a string indicating how to join the word to the next one. local per_word_info = {} -- Find maximum-numbered arg, allowing for holes (FIXME: Is this needed -- here? Will there be holes?) local max_arg = 0 for k, v in pairs(args) do if type(k) == "number" and k > max_arg then max_arg = k end end -- Gather arguments into a list of ARG_SET objects, containing -- (potentially) elements 1, 2, 3, corresponding to accent pattern, -- lemma+declension spec, pl stem, exactly as with do_generate_forms() -- and {{ru-noun-table}} except that the values come from a single argument -- of the form ACCENTPATTERN:LEMMADECL:PL where all but LEMMADECL may (and -- probably will be) omitted and LEMMADECL may be of the following forms: -- LEMMA (for a noun with empty decl spec), -- LEMMADECL (for a noun with non-empty decl spec beginning with a -- *, left paren or semicolon), -- LEMMA^DECL (for a noun with non-empty decl spec), -- LEMMA$ (for an indeclinable word) -- LEMMA+ (for an adjective with auto-detected decl class) -- LEMMA+DECL (for an adjective with explicit decl class) -- Sets of parameters for the same word are separated by the word "or". local arg_sets = {} local continue_arg_sets = true for i=1,(max_arg + 1) do local end_word = false local word_joiner local process_arg = false if i == max_arg + 1 then end_word = true word_joiner = {""} elseif args[i] == "-" then end_word = true word_joiner = {"-"} continue_arg_sets = true elseif rfind(args[i], "^join:") then end_word = true word_joiner = extract_word_joiner(args[i]) continue_arg_sets = true elseif args[i] == "or" then continue_arg_sets = true else if continue_arg_sets then continue_arg_sets = false else end_word = true word_joiner = {" "} end process_arg = true end if end_word then table.insert(per_word_info, {arg_sets, word_joiner}) arg_sets = {} end if process_arg then local vals = rsplit(args[i], ":") if #vals > 3 then error("Can't specify more than 3 colon-separated params of param set: " .. args[i]) end local arg_set = {} if arg1_is_stress(vals[1]) then arg_set[1] = vals[1] arg_set[2] = vals[2] arg_set[4] = vals[3] else arg_set[2] = vals[1] arg_set[4] = vals[2] end -- recognize indeclinable local indecl_stem = rmatch(arg_set[2], "^(.-)%$$") if indecl_stem then arg_set[2] = indecl_stem arg_set[3] = "$" else -- recognize adjective local adj_stem, adj_type = rmatch(arg_set[2], "^(.*)(%+.*)$") if adj_stem then arg_set[2] = adj_stem arg_set[3] = adj_type else -- recognize noun with ^ local noun_stem, noun_type = rmatch(arg_set[2], "^(.*)%^(.*)$") if noun_stem then arg_set[2] = noun_stem arg_set[3] = noun_type else -- recognize noun without ^ but with decl spec noun_stem, noun_type = rmatch(arg_set[2], "^(..-)([;*(].*)$") if noun_stem then arg_set[2] = noun_stem arg_set[3] = noun_type else -- noun without ^ or decl spec; nothing to do end end end end table.insert(arg_sets, arg_set) end end return generate_forms_1(args, per_word_info) end -- Implementation of do_generate_forms() and do_generate_forms_multi(), -- which have equivalent functionality but different calling sequence. -- Implementation of do_generate_forms() and do_generate_forms_multi(), -- which have equivalent functionality but different calling sequence, -- as well as show_z() for template {{ru-decl-noun-z}}, which has a -- subset of the functionality of the other two. generate_forms_1 = function(args, per_word_info) local orig_args if test_new_ru_noun_module then orig_args = mw.clone(args) end local SUBPAGENAME = mw.title.getCurrentTitle().subpageText local old = args.old local function verify_animacy_value(val) if not val then return nil end if val == "a" or val == "an" or val == "anim" then return "a" elseif val == "i" or val == "in" or val == "inan" then return "i" elseif val == "b" or val == "bi" or val == "both" or val == "ai" then return "ai" elseif val == "ia" then return "ia" end error("Animacy value " .. val .. " should be empty or a/an/anim (animate), i/in/inan (inanimate), b/bi/both/ai (bianimate, listing animate first), or ia (bianimate, listing inanimate first)") return nil end local function verify_number_value(val, allow_none) if not val then return nil end local short = usub(val, 1, 1) if short == "s" or short == "p" or short == "b" or (allow_none and short == "n" or false) then return short end if allow_none then error("Number value " .. val .. " should be empty or start with 's' (singular), 'p' (plural), 'b' (both) or 'n' (none)") else error("Number value " .. val .. " should be empty or start with 's' (singular), 'p' (plural), or 'b' (both)") end return nil end -- Verify and canonicalize animacy, number, prefix, suffix assert(#per_word_info >= 1) for i=1,#per_word_info do args["a" .. i] = verify_animacy_value(args["a" .. i]) args["n" .. i] = verify_number_value(args["n" .. i]) args["prefix" .. i] = nom.split_russian_tr(args["prefix" .. i] or "", "dopair") args["suffix" .. i] = nom.split_russian_tr(args["suffix" .. i] or "", "dopair") end args.a = verify_animacy_value(args.a) or "i" -- args.ndef, if set, is the default value for args.n; if unset, it defaults -- to "both". It is set to "singular" in ru-proper noun+. We store the value -- of args.n in args.orign before defaulting to args.ndef because we may -- change it to plural-only later on if it was unspecified (this happens if -- an individual word's lemma is plural), and to determine whether it was -- unspecified, we need the original value before defaulting. args.n = verify_number_value(args.n, "allow none") -- treat n=none like n=sg but set a flag so "singular" isn't displayed if args.n == "n" then args.n = "s" args.nonumber = true end args.ndef = verify_number_value(args.ndef) args.orign = args.n args.n = args.n or args.ndef args.prefix = nom.split_russian_tr(args.prefix or "", "dopair") args.suffix = nom.split_russian_tr(args.suffix or "", "dopair") -- Attach overall prefix to first per-word prefix, similarly for suffix args.prefix1 = nom.concat_paired_russian_tr(args.prefix, args.prefix1) args["suffix" .. #per_word_info] = nom.concat_paired_russian_tr( args["suffix" .. #per_word_info], args.suffix) -- Initialize non-word-specific arguments. -- -- The following is a list of WORD_INFO items, one per word, each of -- which is a two element list of WORD_FORMS (a table listing the forms for -- each case) and JOINER (a string, indicating how to join the word with -- the next one). args.per_word_info = {} -- List of HEADING_INFO items, one per word, containing the raw material -- used to generate the header. Initialized from 'args.heading_info', -- which is initialized in categorize_and_init_heading(). args.per_word_heading_info = {} -- List of CATEGORIES items, one per word, containing the categories -- used to initialize the page categories. Initialized from -- 'args.categories', which is initialized in categorize_and_init_heading(). args.per_word_categories = {} -- List of HEADINGS items, one per word, containing the actual words that -- go into the header if we were to use that word to construct the header. -- Comes from compute_heading(). We use this to generate the actual header -- string, which goes into 'args.heading' at the end (done in -- compute_overall_heading_categories_and_genders()). args.per_word_headings = {} -- List of GENDERS items, one per word, containing the headword genders -- for each word (where "headword gender" is in the format used in -- headwords and actually includes animacy and number as well, e.g. -- 'm-in' or 'f-an-p'). We end up selecting one such item and putting -- it into 'args.genders' at the end -- (in compute_overall_heading_categories_and_genders()). args.per_word_genders = {} args.any_overridden = {} args.any_non_nil = {} args.any_irreg = false args.any_irreg_case = {} local function insert_cat(cat) insert_category(args.categories, cat, args.pos) end args.internal_notes = {} local decl_sufs = old and declensions_old or declensions local decl_cats = old and declensions_old_cat or declensions_cat local intable = old and internal_notes_table_old or internal_notes_table -- Default lemma defaults to previous lemma, first one to page name. -- FIXME: With multiple words, we should probably split the page name -- on spaces and default each word in turn local default_lemma local all_stresses_seen -- Made into a function to avoid having to indent a lot of code. -- Process a single arg set of a single word. This inserts the forms -- for the word into args.forms and sets categories and tracking pages. local function do_arg_set(arg_set, n, islast) local stress_arg = arg_set[1] local decl = arg_set[3] or "" local pl, pltr if arg_set[4] then pl, pltr = nom.split_russian_tr(arg_set[4]) end -- Extract special markers from declension class. if decl == "manual" then decl = "$" args.manual = true if #per_word_info > 1 or #per_word_info[1][1] > 1 then error("Can't specify multiple words or argument sets when manual") end if pl then error("Can't specify optional stem parameters when manual") end end decl, args.jo_special = rsubb(decl, "([^/%a])ё$", "%1") if not args.jo_special then decl, args.jo_special = rsubb(decl, "([^/%a])ё([^/%a])", "%1%2") end decl, args.want_sc1 = rsubb(decl, "%(1%)", "") decl, args.alt_gen_pl = rsubb(decl, "%(2%)", "") decl, args.reducible = rsubb(decl, "%*", "") decl = rsub(decl, ";", "") -- Get the lemma. local lemma = args.manual and "-" or arg_set[2] or default_lemma if not lemma then error("Lemma in first argument set must be specified") end default_lemma = lemma local lemmatr lemma, lemmatr = nom.split_russian_tr(lemma) -- If we're conjugating a suffix, insert a pseudoconsonant at the beginning -- of all forms, so they get conjugated as if ending in a consonant. -- We remove the pseudoconsonant later. local is_suffix = rfind(lemma, "^%-") args.any_suffix = args.any_suffix or is_suffix local asif_prefix = args["asif_prefix" .. n] or args.asif_prefix or is_suffix and PSEUDOCONS if asif_prefix then lemma = rsub(lemma, "^%-", "-" .. asif_prefix) if lemmatr then lemmatr = rsub(lemmatr, "^%-", "-" .. com.translit(asif_prefix)) end end args.thisa = args["a" .. n] or args.a args.thisn = args["n" .. n] or args.n -- Check for explicit allow-unaccented indication. lemma, args.allow_unaccented = rsubb(lemma, "^%*", "") if args.allow_unaccented then track("allow-unaccented") end args.orig_lemma = lemma lemma = m_links.remove_links(lemma) args.lemma_no_links = lemma args.lemmatr = lemmatr -- Treat suffixes without an accent, and suffixes with an accent on the -- initial hyphen, as if they were preceded with a *, which overrides -- all the logic that normally (a) normalizes the accent, and (b) -- complains about multisyllabic words without an accent. Don't do this -- if lemma is just -, which is used specially in manual declension -- tables (e.g. сто, три). if lemma ~= "-" and (rfind(lemma, "^%-́") or (com.is_unstressed(lemma) and rfind(lemma, "^%-"))) then args.allow_unaccented = true end -- Convert lemma and decl arg into stem and canonicalized decl. -- This will autodetect the declension from the lemma if an explicit -- decl isn't given. local stem, tr, gender, was_accented, was_plural, was_autodetected if rfind(decl, "^%+") then stem, tr, decl, gender, was_accented, was_plural, was_autodetected = detect_adj_type(lemma, lemmatr, decl, old) else stem, tr, decl, gender, was_accented, was_plural, was_autodetected = determine_decl(lemma, lemmatr, decl, args) end if was_plural then args.n = args.orign or "p" args.thisn = args["n" .. n] or args.n elseif decl ~= "$" then args.thisn = args.thisn or "b" end args.explicit_gender = gender -- If allow-unaccented not given, maybe check for missing accents. if not args.allow_unaccented and not stress_arg and was_autodetected and com.needs_accents(lemma) then -- If user gave the full word and expects us to determine the -- declension and stress, the word should have an accent on the -- stem or ending. We have a separate check farther below for -- an accent on a multisyllabic stem, after stripping off any -- ending; but this way we get an error if the user e.g. writes -- "гора" without an accent rather than assuming it's stem -- stressed, as would otherwise happen. error("Lemma must have an accent in it: " .. lemma) end -- If stress not given, auto-determine; else validate/canonicalize -- stress arg, override in certain cases and convert to list. if not stress_arg then stress_arg = {detect_stress_pattern(stem, decl, decl_cats, args.reducible, was_plural, was_accented)} else stress_arg = rsplit(stress_arg, ",") for i=1,#stress_arg do local stress = stress_arg[i] stress = override_stress_pattern(decl, stress) if not stress_patterns[stress] then error("Unrecognized accent pattern " .. stress) end stress_arg[i] = stress end end -- parse slash decl to list local sub_decls if rfind(decl, "/") then track("mixed-decl") insert_cat("~ with mixed declension") local indiv_decls = rsplit(decl, "/") -- Should have been caught in canonicalize_decl() assert(#indiv_decls == 2) sub_decls = {{indiv_decls[1], "sg"}, {indiv_decls[2], "pl"}} else sub_decls = {{decl}} end -- Get singular declension and corresponding category. local sgdecl = sub_decls[1][1] local sgdc = decl_cats[sgdecl] assert(sgdc) -- Compute headword gender(s). We base it off the singular declension -- if we have a slash declension -- it's the best we can do. determine_headword_gender(args, sgdc, gender) local original_stem, original_tr = stem, tr local original_pl, original_pltr = pl, pltr -- Loop over accent patterns in case more than one given. for _, stress in ipairs(stress_arg) do args.suffixes = {} stem, tr = original_stem, original_tr local bare, baretr local stem_for_bare, tr_for_bare pl, pltr = original_pl, original_pltr insert_if_not(all_stresses_seen, stress) local stem_was_unstressed = com.is_unstressed(stem) -- If special case ;ё was given and stem is unstressed, -- add ё to the stem now; but don't let this interfere with -- restressing, to handle cases like железа́ with gen pl желёз -- but nom pl же́лезы. if stem_was_unstressed and args.jo_special then -- Beware, Cyrillic еЕ in first rsub, Latin eE in second local new_stem = rsub(stem, "([еЕ])([^еЕ]*)$", function(e, rest) return (e == "Е" and "Ё" or "ё") .. rest end ) if stem == new_stem then error("No е in stem to replace with ё") end stem = new_stem if tr then local subbed -- e after j -> o, e not after j -> jo; don't just convert e -> jo -- and then map jjo -> jo because we want to preserve double j tr, subbed = rsubb(tr, "([jJ])([eE])([^eE]*)$", function(j, e, rest) return j .. (e == "E" and "O" or "o") .. AC .. rest end ) if not subbed then tr = rsub(tr, "([eE])([^eE]*)$", function(e, rest) return (e == "E" and "Jo" or "jo") .. AC .. rest end ) end tr = com.j_correction(tr) end -- This is used to handle железа́ with gen pl желёз and nom pl -- же́лезы. We have two stressed stems, one for the gen pl and -- one for the remaining pl cases, and the variable 'stem' can -- handle only one, so we put the second (gen pl) stem in -- stem_for_bare, which goes into the value of 'bare' (used -- only for gen pl here). stem_for_bare, tr_for_bare = stem, tr end -- Maybe add stress to the stem, depending on whether the -- stem was unstressed and the stress pattern. Stem pattern f -- and variants call for initial stress (голова́ -> го́ловы); -- stem pattern d and variants call for stem-final stress -- (сапожо́к -> сапо́жки). Stem patterns b and b' apparently -- call for stem-final stress as well but it's unlikely to -- make much of a difference (pattern b' only occurs in 3rd-decl -- feminines, which should already have stress in the stem, -- and the only place pattern b gets stem stress is in bare -- forms, i.e. nom sg and/or gen pl depending on the decl type, -- and nom sg stress should already be in the lemma while -- gen pl stress is handled by a different ending-stressing -- mechanism in attach_unstressed(); however, the user is -- free to leave a masc or 3rd-decl fem lemma completely -- unstressed with pattern b, and then the stem-final stress -- *will* make a difference). local function restress_stem(stem, tr, stress, stem_unstressed) -- If the user has indicated they purposely are leaving the -- word unstressed by putting a * at the beginning of the main -- stem, leave it unstressed. This might indicate lack of -- knowledge of the stress or a truly unaccented word -- (e.g. an unaccented suffix). if args.allow_unaccented then return stem, tr end if tr and com.is_unstressed(stem) ~= com.is_unstressed(tr) then error("Stem " .. stem .. " and translit " .. tr .. " must have same accent pattern") end -- it's safe to accent monosyllabic stems if com.is_monosyllabic(stem) then stem, tr = com.make_ending_stressed(stem, tr) -- For those patterns that are ending-stressed in the singular -- nominative (and hence are likely to be expressed without an -- accent on the stem) it's safe to put a particular accent on -- the stem depending on the stress type. Otherwise, give an -- error if no accent. elseif stem_unstressed then if rfind(stress, "^f") then stem, tr = com.make_beginning_stressed(stem, tr) elseif (rfind(stress, "^[bd]") or args.thisn == "p" and ending_stressed_pl_patterns[stress]) then stem, tr = com.make_ending_stressed(stem, tr) elseif com.needs_accents(stem) then error("Stem " .. stem .. " requires an accent") end end return stem, tr end stem, tr = restress_stem(stem, tr, stress, stem_was_unstressed) -- Leave pl unaccented if user wants this; see restress_stem(). if pl and not args.allow_unaccented then if pltr and com.is_unstressed(pl) ~= com.is_unstressed(pltr) then error("Plural stem " .. pl .. " and translit " .. pltr .. " must have same accent pattern") end if com.is_monosyllabic(pl) then pl, pltr = com.make_ending_stressed(pl, pltr) end -- I think this is safe. if com.needs_accents(pl) then if ending_stressed_pl_patterns[stress] then pl, pltr = com.make_ending_stressed(pl, pltr) elseif not args.allow_unaccented then error("Plural stem " .. pl .. " requires an accent") end end end local resolved_bare, resolved_baretr -- Handle (de)reducibles -- FIXME! We are dereducing based on the singular declension. -- In a slash declension things can get weird and we don't -- handle that. We are also computing the bare value from the -- singular stem, and again things can get weird with a plural -- stem. Note that we don't compute a bare value unless we have -- to (either (de)reducible or stress pattern f/f'/f'' combined -- with ё special case); the remaining times we generate the bare -- value directly from the plural stem. if args.reducible and not sgdc.ignore_reduce then -- Zaliznyak treats all nouns in -ье and -ья as being -- reducible. We handle this automatically and don't require -- the user to specify this, but ignore it if so for -- compatibility. if is_reducible(sgdc) then -- If we derived the stem from a nom pl form, then -- it's already reduced, and we need to dereduce it to -- get a bare form; otherwise the stem comes from the -- nom sg and we need to reduce it to get the real stem. if was_plural then resolved_bare, resolved_baretr = export.dereduce_nom_sg_stem(stem, tr, sgdc, stress, old, "error") else resolved_bare, resolved_baretr = stem, tr stem, tr = export.reduce_nom_sg_stem(stem, tr, sgdecl, "error") -- Stem will be unstressed if stress was on elided -- vowel; restress stem the way we did above. (This is -- needed in at least one word, сапожо́к 3*d(2), with -- plural stem probably сапо́жк- and gen pl probably -- сапо́жек.) stem, tr = restress_stem(stem, tr, stress, com.is_unstressed(stem)) if stress ~= "a" and stress ~= "b" and args.alt_gen_pl and not pl then -- Nouns like рожо́к, глазо́к of type 3*d(2) have -- gen pl's ро́жек, гла́зок; to handle this, -- dereduce the reduced stem and store in a -- special place. args.gen_pl_bare, args.gen_pl_baretr = export.dereduce_nom_sg_stem(stem, tr, sgdc, stress, old, "error") end end elseif is_dereducible(sgdc) then resolved_bare, resolved_baretr = export.dereduce_nom_sg_stem(stem, tr, sgdc, stress, old, "error") else error("Declension class " .. sgdecl .. " not (de)reducible") end elseif stem_for_bare and stem ~= stem_for_bare then resolved_bare, resolved_baretr = add_bare_suffix(stem_for_bare, tr_for_bare, old, sgdc, false) end -- Leave unaccented if user wants this; see restress_stem(). -- FIXME, we no longer allow the user to specify the bare value -- so it's unclear if this is needed any more. if resolved_bare and not args.allow_unaccented then if resolved_baretr and com.is_unstressed(resolved_bare) ~= com.is_unstressed(resolved_baretr) then error("Resolved bare stem " .. resolved_bare .. " and translit " .. resolved_baretr .. " must have same accent pattern") end if com.is_monosyllabic(resolved_bare) then resolved_bare, resolved_baretr = com.make_ending_stressed(resolved_bare, resolved_baretr) else if com.needs_accents(resolved_bare) then error("Resolved bare stem " .. resolved_bare .. " requires an accent") end end end args.stem, args.stemtr = stem, tr args.bare, args.baretr = resolved_bare, resolved_baretr args.ustem, args.ustemtr = com.make_unstressed_once(stem, tr) if pl then args.pl, args.pltr = pl, pltr else args.pl, args.pltr = stem, tr end args.upl, args.upltr = com.make_unstressed_once(args.pl, args.pltr) -- Special hack for любо́вь and other reducible 3rd-fem nouns, -- which have the full stem in the ins sg args.ins_sg_stem = sgdecl == "ь-f" and args.reducible and resolved_bare args.ins_sg_tr = sgdecl == "ь-f" and args.reducible and resolved_baretr -- Loop over declension classes (we may have two of them, one for -- singular and one for plural, in the case of a mixed declension -- class of the form SGDECL/PLDECL). for _,decl_spec in ipairs(sub_decls) do local orig_decl = decl_spec[1] local number = decl_spec[2] local real_decl = determine_stress_variant(orig_decl, stress) real_decl = determine_stem_variant(real_decl, number == "pl" and args.pl or args.stem) -- sanity checking; errors should have been caught in -- canonicalize_decl() assert(decl_cats[real_decl], "real_decl " .. real_decl .. " nonexistent") assert(decl_sufs[real_decl], "real_decl " .. real_decl .. " nonexistent") tracking_code(stress, orig_decl, real_decl, args, n, islast) do_stress_pattern(stress, args, real_decl, number, n, islast) -- handle internal notes local internal_note = intable[real_decl] if internal_note then insert_if_not(args.internal_notes, internal_note) end end categorize_and_init_heading(stress, decl, args, n, islast) end end local n = 0 for _, word_info in ipairs(per_word_info) do n = n + 1 local islast = n == #per_word_info local arg_sets, joiner = word_info[1], word_info[2] args.forms = {} args.heading_info = {animacy={}, number={}, gender={}, stress={}, stemetc={}, adjectival={}, reducible={}} args.categories = {} args.genders = {} args.this_any_non_nil = {} args.any_suffix = false if #arg_sets > 1 then track("multiple-arg-sets") insert_cat("~ with multiple argument sets") track("multiple-declensions") insert_cat("~ with multiple declensions") end default_lemma = SUBPAGENAME all_stresses_seen = {} -- Loop over all arg sets. for _, arg_set in ipairs(arg_sets) do do_arg_set(arg_set, n, islast) end if #all_stresses_seen > 1 then track("multiple-accent-patterns") insert_cat("~ with multiple accent patterns") track("multiple-declensions") insert_cat("~ with multiple declensions") end table.insert(args.per_word_heading_info, args.heading_info) table.insert(args.per_word_categories, args.categories) local headings = compute_heading(args) table.insert(args.per_word_headings, headings) table.insert(args.per_word_genders, args.genders) handle_forms_and_overrides(args, n, islast) if args.any_suffix then -- If we're conjugating a suffix, remove the pseudoconsonant or asif_prefix -- that we previously inserted at the beginning. local asif_prefix = args["asif_prefix" .. n] or args.asif_prefix or PSEUDOCONS local asif_prefix_tr = com.translit(asif_prefix) for _, case in ipairs(all_cases) do if args.forms[case] then local newforms = {} for _, form in ipairs(args.forms[case]) do local formru = form[1] local formtr = form[2] formru = rsub(formru, "^%-" .. asif_prefix, "-") if formtr then formtr = rsub(formtr, "^%-" .. asif_prefix_tr, "-") end if formru == "-" then -- if no ending, insert "(no suffix)". table.insert(newforms, {"(no suffix)"}) else table.insert(newforms, {formru, formtr}) end end args.forms[case] = newforms end end end table.insert(args.per_word_info, {args.forms, joiner}) end handle_overall_forms_and_overrides(args) compute_overall_heading_categories_and_genders(args) for _, case in ipairs(all_cases) do if args[case] then for _, form in ipairs(args[case]) do local ru, tr = form[1], form[2] local ruentry, runotes = m_table_tools.separate_notes(ru) ruentry = m_links.remove_links(ruentry) if rfind(ulower(ruentry), latin_text_class) then --error("Found Latin text " .. ruentry .. " in case " .. case) track("latin-text") track("latin-text/" .. case) end end end end -- Test code to compare existing module to new one. if test_new_ru_noun_module then local m_new_ru_noun = require("モジュール:User:Benwing2/ru-noun") local newargs = m_new_ru_noun.do_generate_forms(orig_args, old) local difdecl = false for _, case in ipairs(all_cases) do local arg = args[case] local newarg = newargs[case] local is_pl = rfind(case, "_pl") if args.thisn == "s" and is_pl or args.thisn == "p" and not is_pl then -- Don't need to check cases that won't be displayed. elseif not ut.equals(arg, newarg) then local monosyl_accent_diff = false -- Differences only in monosyllabic accents. Enable if we -- change the algorithm for these. --if arg and newarg and #arg == 1 and #newarg == 1 then -- local ru1, tr1 = arg[1][1], arg[1][2] -- local ru2, tr2 = newarg[1][1], newarg[1][2] -- if com.is_monosyllabic(ru1) and com.is_monosyllabic(ru2) then -- ru1, tr1 = com.remove_accents(ru1, tr1) -- ru2, tr2 = com.remove_accents(ru2, tr2) -- if ru1 == ru2 and tr1 == tr2 then -- monosyl_accent_diff = true -- end -- end --end if monosyl_accent_diff then track("monosyl-accent-diff") difdecl = true else -- Uncomment this to display the particular case and -- differing forms. --error(case .. " " .. (arg and nom.concat_forms(arg) or "nil") .. " || " .. (newarg and nom.concat_forms(newarg) or "nil")) track("different-decl") difdecl = true end break end end if not difdecl then track("same-decl") end end return args end -- Implementation of main entry point local function do_show(frame, old) local args = clone_args(frame) local args = export.do_generate_forms(args, old) return make_table(args) .. m_utilities.format_categories(args.categories, lang) end -- The main entry point for modern declension tables. function export.show(frame) return do_show(frame, false) end -- The main entry point for old declension tables. function export.show_old(frame) return do_show(frame, true) end -- Implementation of new entry point, esp. for multiple words local function do_show_multi(frame) local args = clone_args(frame) local args = export.do_generate_forms_multi(args) return make_table(args) .. m_utilities.format_categories(args.categories, lang) end -- The new entry point, esp. for multiple words (but works fine for -- single words). function export.show_multi(frame) return do_show_multi(frame) end local function get_form(forms, preserve_links, raw) local canon_forms = {} for _, form in ipairs(forms) do if raw then local ru, tr = form[1], form[2] ru = rsub(ru, "|", "<!>") if tr then tr = rsub(tr, "|", "<!>") end insert_if_not(canon_forms, {ru, tr}) else local ru, tr = form[1], form[2] local ruentry, runotes = m_table_tools.separate_notes(ru) -- Skip hypothetical forms (but include in the raw versions) if not rfind(runotes, HYPMARKER) then local trentry, trnotes if tr then trentry, trnotes = m_table_tools.separate_notes(tr) end if not preserve_links then ruentry = m_links.remove_links(ruentry) end ruentry = rsub(ruentry, "|", "<!>") if trentry then trentry = rsub(trentry, "|", "<!>") end insert_if_not(canon_forms, {ruentry, trentry}) end end end return nom.concat_forms(canon_forms) end local function case_will_be_displayed(args, case) local ispl = rfind(case, "_pl") local caseok = true if args.n == "p" then caseok = ispl elseif args.n == "s" then caseok = not ispl end if case == "loc" and not args.any_overridden.loc or case == "par" and not args.any_overridden.par or case == "voc" and not args.any_overridden.voc then caseok = false end if args.a == "a" or args.a == "i" then if rfind(case, "_[ai]n") then caseok = false end else -- bianimate -- don't include inanimate/animate variants if combined variant exists -- (typically because inanimate/animate variants are the same); -- FIXME: This could conceivably be different from how the display -- code works, which just checks that the inanimate/animate variants -- are the same when deciding whether to display them, in particular -- if there is an override. Here we are following the algorithm of -- handle_overall_forms_and_overrides(). if (case == "acc_sg_in" or case == "acc_sg_an") and args.acc_sg or (case == "acc_pl_in" or case == "acc_pl_an") and args.acc_pl then caseok = false end end if not args[case] then caseok = false end return caseok end local function concat_case_args(args, do_all, raw) local ins_text = {} for _, case in ipairs(do_all and all_cases or overridable_cases) do if case_will_be_displayed(args, case) then local forms = get_form(args[case], rfind(case, "_linked"), raw) if forms ~= "" then table.insert(ins_text, case .. (raw and "_raw" or "") .. "=" .. forms) end end end return table.concat(ins_text, "|") end -- The entry point for 'ru-noun-forms' to generate all noun forms. -- This returns a single string, with | separating arguments and named -- arguments of the form NAME=VALUE. function export.generate_forms(frame) local args = clone_args(frame) args = export.do_generate_forms(args, false) return concat_case_args(args) end -- The entry point to generate multiple sets of noun forms. This is a hack -- to speed up calling from a bot, where we often want to compare old and new -- argument results to make sure they're the same. Each set of arguments is -- jammed together into a single argument with individual values separated by -- <!>; named arguments are of the form NAME<->VALUE. The return value for -- each set of arguments is as in export.generate_forms(), and the return -- values are concatenated with <!> separating them. NOTE: This will fail if -- the exact sequences <!> or <-> happen to occur in values (which is unlikely, -- esp. as we don't even use the characters <, ! or > for anything) and aren't -- HTML-escaped. function export.generate_multi_forms(frame) local retvals = {} for _, argset in ipairs(frame.args) do local args = {} local i = 0 local argvals = rsplit(argset, "<!>") for _, argval in ipairs(argvals) do local split_arg = rsplit(argval, "<%->") if #split_arg == 1 then i = i + 1 args[i] = ine(split_arg[1]) else assert(#split_arg == 2) args[split_arg[1]] = ine(split_arg[2]) end end args = export.do_generate_forms(args, false) table.insert(retvals, concat_case_args(args)) end return table.concat(retvals, "<!>") end -- The entry point for 'ru-noun-form' to generate a particular noun form. function export.generate_form(frame) local args = clone_args(frame) if not args.form then error("Must specify desired form using form=") end local form = args.form if not ut.contains(all_cases, form) then error("Unrecognized form " .. form) end local args = export.do_generate_forms(args, false) if not args[form] then return "" else return get_form(args[form]) end end -- The entry point for generating arguments of various sorts, including -- the case forms, gender, number and animacy. function export.generate_args(frame) local args = clone_args(frame) args = export.do_generate_forms(args, false) local retargs = {} table.insert(retargs, concat_case_args(args, "doall")) table.insert(retargs, concat_case_args(args, "doall", "raw")) table.insert(retargs, "g=" .. table.concat(args.genders, ",")) -- The following is correct even with ndef because if ndef is -- set we will set it in args.n. table.insert(retargs, "n=" .. (args.n or "b")) table.insert(retargs, "a=" .. (args.a or "i")) return table.concat(retargs, "|") end -- The entry point for compatibility with {{ru-decl-noun-z}}. function export.show_z(frame) local args = clone_args(frame) local stem = args[1] local stress = args[2] local specific = args[4] or "" -- Parse gender/animacy spec local gender, anim = rmatch(args[3], "^([mfn])-([a-z]+)") if not gender then error("Unrecognized gender/anim spec " .. args[3]) end if anim ~= "an" and anim ~= "in" then anim = "both" end args.a = anim -- Handle specific specific = rsub(specific, "ё", ";ё") -- Compute decl; special case for семьянин (perhaps not necessary) local decl = com.make_unstressed_once(stem) == "семьянин" and "#" .. specific or gender .. specific -- Handle overrides args.pre_sg = args.prp_sg args.pre_pl = args.prp_pl args.notes = args.note if args.par then args.par = "+" end if args.loc then if args.loc == "в" then args.loc = "в +" elseif args.loc == "на" then args.loc = "на +" else args.loc = "в +,на +" end end local arg_set = {} table.insert(arg_set, stress) table.insert(arg_set, stem) table.insert(arg_set, decl) local per_word_info = {{{arg_set}, ""}} return generate_forms_1(args, per_word_info) end local stem_expl = { ["軟口蓋語幹"] = "軟口蓋音 (-к, -г or –x)", ["歯擦語幹"] = "歯擦音 (-ш, -ж, -ч or -щ)", ["ц-語幹"] = "-ц", ["i-語幹"] = "-и (古形は -і)", ["母音語幹"] = "-и、-і、-й、-ь 以外の母音", ["軟語幹"] = "軟子音", ["硬語幹"] = "硬子音", } local zaliznyak_stem_type = { ["軟口蓋語幹"] = "3", ["歯擦語幹"] = "4", ["ц-語幹"] = "5", ["i-語幹"] = "7", ["母音語幹"] = "6", ["軟語幹"] = "2", ["硬語幹"] = "1", ["第三変化"] = "8", } local stem_gender_endings = { masculine = { ["硬語幹"] = {"a hard consonant (-ъ old-style)", "-ы"}, ["ц-語幹"] = {"-ц (-цъ old-style)", "-ы"}, ["軟口蓋語幹"] = {"a velar (plus -ъ old-style)", "-и"}, ["歯擦語幹"] = {"a sibilant (plus -ъ old-style)", "-и"}, ["軟語幹"] = {"-ь", "-и"}, ["i-語幹"] = {"-й", "-и"}, ["母音語幹"] = {"-й", "-и"}, ["第三変化"] = {"-ь", "-и"}, }, feminine = { ["硬語幹"] = {"-а", "-ы"}, ["ц-語幹"] = {"-а", "-ы"}, ["軟口蓋語幹"] = {"-а", "-и"}, ["歯擦語幹"] = {"-а", "-и"}, ["軟語幹"] = {"-я", "-и"}, ["i-語幹"] = {"-я", "-и"}, ["母音語幹"] = {"-я", "-и"}, ["第三変化"] = {"-ь", "-и"}, }, neuter = { ["硬語幹"] = {"-о", "-а"}, ["ц-語幹"] = {"-е", "-а"}, ["軟口蓋語幹"] = {"-о", "-а"}, ["歯擦語幹"] = {"-е", "-а"}, ["軟語幹"] = {"-е", "-я"}, ["i-語幹"] = {"-е", "-я"}, ["母音語幹"] = {"-е", "-я"}, ["第三変化"] = {"-мя", "-мена"}, }, } -- Implementation of template 'runouncatboiler'. function export.catboiler(frame) local SUBPAGENAME = mw.title.getCurrentTitle().subpageText local args = clone_args(frame) local cats = {} local function get_stem_gender_text(stem, gender) if not stem_gender_endings[gender] then error("無効な性 " .. gender) end local endings = stem_gender_endings[gender][stem] if not endings then error("Invalid stem type " .. stem) end local sgending, plending = endings[1], endings[2] local stemtext = stem == "第三変化" and "" or " The stem ends in " .. stem_expl[stem] .. " and is Zaliznyak's type " .. zaliznyak_stem_type[stem] .. "." local decltext = stem == "第三変化" and "" or " This is traditionally considered to belong to the " .. (gender == "feminine" and "1st" or "2nd") .. " declension." return stem .. ", usually " .. gender .. " ~, normally ending in " .. sgending .. " in the nominative singular " .. " and " .. plending .. " in the nominative plural." .. stemtext .. decltext end local function get_pos() local pos = rmatch(SUBPAGENAME, "^ロシア語.- ([^ ]*)s ") if not pos then pos = rmatch(SUBPAGENAME, "^ロシア語.- ([^ ]*)s$") end if not pos then error("Invalid category name, should be e.g. \"Russian nouns with ...\" or \"Russian ... nouns\"") end return pos end local function get_sort_key() local pos, sort_key = rmatch(SUBPAGENAME, "^ロシア語.- ([^ ]*)s with (.*)$") if sort_key then return sort_key end pos, sort_key = rmatch(SUBPAGENAME, "^ロシア語 ([^ ]*)s (.*)$") if sort_key then return sort_key end return rsub(SUBPAGENAME, "^ロシア語 ", "") end local maintext, pos if args[1] == "stemgenderstress" then local stem, gender, stress stem, gender, stress, pos = rmatch(SUBPAGENAME, "^ロシア語 (.-) (.-)%-form accent%-(.-) (.*)s$") if not stem then error("Invalid category name, should be e.g. \"Russian velar-stem masculine-form accent-a nouns\"") end local stem_gender_text = get_stem_gender_text(stem, gender) local accent_text = " This " .. pos .. " is stressed according to accent pattern " .. rsub(stress, "'", "&#39;") .. "." maintext = stem_gender_text .. accent_text insert_category(cats, "~ by stem type, gender and accent pattern|" .. get_sort_key(), pos) elseif args[1] == "stemgender" then if rfind(SUBPAGENAME, "indeclinable") then maintext = "indeclinable ~, which normally have the same form for all cases and numbers." pos = rmatch(SUBPAGENAME, "^Russian indeclinable (.*)s$") if not pos then error("Invalid category name, should be e.g. \"Russian indeclinable nouns\"") end else local stem, gender stem, gender, pos = rmatch(SUBPAGENAME, "^Russian (.-) (.-)%-form (.*)s$") if not stem then error("Invalid category name, should be e.g. \"Russian velar-stem masculine-form nouns\"") end maintext = get_stem_gender_text(stem, gender) end insert_category(cats, "~ by stem type and gender|" .. get_sort_key(), pos) elseif args[1] == "adj" then local stem, gender, stress stem, gender, stress, pos = rmatch(SUBPAGENAME, "^Russian (.*) (.-) accent%-(.-) adjectival (.*)s$") if not stem then stem, gender, pos = rmatch(SUBPAGENAME, "^Russian (.*) (.-) adjectival (.*)s$") end if not stem then error("Invalid category name, should be e.g. \"Russian velar-stem masculine accent-a adjectival nouns\"") end local stemtext if rfind(stem, "possessive") then possessive = "possessive " stem = rsub(stem, " possessive", "") stemtext = "" else if not stem_expl[stem] then error("Invalid stem type " .. stem) end possessive = "" stemtext = " The stem ends in " .. stem_expl[stem] .. " and is Zaliznyak's type " .. zaliznyak_stem_type[stem] .. "." end local stresstext = stress == "a" and "This " .. pos .. " is stressed according to accent pattern a (stress on the stem)." or stress == "b" and "This " .. pos .. " is stressed according to accent pattern b (stress on the ending)." or "All ~ of this class are stressed according to accent pattern a (stress on the stem)." maintext = stem .. " " .. gender .. " ~, with " .. possessive .. "adjectival endings, ending in " .. (gender == "plural-only" and "" or args[2] .. " in the nominative singular and ") .. args[3] .. " in the nominative plural." .. stemtext .. " " .. stresstext insert_category(cats, "~ by stem type, gender and accent pattern|" .. get_sort_key(), pos) else pos = get_pos() if args[1] == "sg" then local sg = rmatch(SUBPAGENAME, "^Russian .* ending in (.*)$") if not sg then error("Invalid category name, should be e.g. \"Russian nouns ending in stressed -е\"") end maintext = "~ ending in " .. (args[2] or sg) .. " in the nominative singular." insert_category(cats, "~ by singular ending", pos) elseif args[1] == "pl" then local pl = rmatch(SUBPAGENAME, "^Russian .* with plural (.*)$") if not pl then error("Invalid category name, should be e.g. \"Russian nouns with plural -е\"") end maintext = "~ ending in " .. (args[2] or pl) .. " in the nominative plural." insert_category(cats, "~ by plural ending|" .. pl, pos) elseif args[1] == "sgpl" then local sg, pl = rmatch(SUBPAGENAME, "^Russian .* ending in (.*) with plural (.*)$") if not sg then error("Invalid category name, should be e.g. \"Russian nouns ending in -о with plural -и\"") end maintext = "~ ending in " .. (args[2] or sg) .. " in the nominative singular, and " .. (args[3] or pl) .. " in the nominative plural." insert_category(cats, "~ by singular and plural ending|" .. sg .. " " .. pl, pos) elseif args[1] == "stress" then local stress = rmatch(SUBPAGENAME, "^Russian .* with accent pattern (.*)$") if not stress then error("Invalid category name, should be e.g. \"Russian nouns with accent pattern d\"") end maintext = "~ with accent pattern " .. rsub(stress, "'", "&#39;") .. "." insert_category(cats, "~ by accent pattern|" .. stress, pos) elseif args[1] == "extracase" then local case = rmatch(SUBPAGENAME, "^Russian .* with (.*)$") if not case then error("Invalid category name, should be e.g. \"Russian nouns with vocative\"") end maintext = "~ with a separate " .. case .. " singular case." insert_category(cats, "~ by case form|" .. case, pos) elseif args[1] == "irregcase" then local case = rmatch(SUBPAGENAME, "^Russian .* with irregular (.*)$") if not case then error("Invalid category name, should be e.g. \"Russian nouns with irregular nominative plural\"") end maintext = "~ with an irregular " .. case .. " case." insert_category(cats, "~ by case form|" .. case, pos) else maintext = "~ " .. args[1] end end insert_category(cats, "~|" .. get_sort_key(), pos, "at beginning") -- format_categories doesn't work in category space so we need to hack our own local categories = {} for _, cat in ipairs(cats) do table.insert(categories, "[[Category:" .. cat .. "]]") end return "This category contains Russian " .. rsub(maintext, "~", pos .. "s") .. "\n" .. mw.getCurrentFrame():expandTemplate{title="ru-categoryTOC", args={}} .. table.concat(categories, "") .. "__EXPECTUNUSEDCATEGORY__" end -------------------------------------------------------------------------- -- Autodetection and lemma munging -- -------------------------------------------------------------------------- -- Attempt to detect the type of the lemma based on its ending, separating -- off the stem and the ending. GENDER must be present with -ь and plural -- stems, and is otherwise ignored. Return up to three values: The stem -- (lemma minus ending), the singular lemma ending, and if the lemma was -- plural, the plural lemma ending. If the lemma was singular, the singular -- lemma ending will contain any user-given accents; likewise, if the -- lemma was plural, the plural ending will contain such accents. -- VARIANT comes from the declension spec and controls certain declension -- variants. local function detect_lemma_type(lemma, tr, gender, args, variant) local base, ending = rmatch(lemma, "^(.*)([еЕ]́)$") -- accented if base then return base, nom.strip_tr_ending(tr, ending), ulower(ending) end base, ending = rmatch(lemma, "^(.*[" .. com.sib_c .. "])([еЕ])$") -- unaccented if base then if variant == "-ище" and not rfind(lemma, "[щЩ][еЕ]$") then error("With declension variant -ище, lemma should end in -ще: " .. lemma) end return base, nom.strip_tr_ending(tr, ending), variant == "-ище" and "(ищ)е-и" or "о" end if variant == "-ишко" then base, ending = rmatch(lemma, "^(.*[шШ][кК])([оО])$") -- unaccented if not base then error("With declension variant -ишко, lemma should end in -шко: " .. lemma) end return base, nom.strip_tr_ending(tr, ending), "(ишк)о-и" end if variant == "-ин" then base, ending = rmatch(lemma, "^(.*)([иИ]́?[нН][ъЪ]?)$") -- maybe accented if not base then error("With declension variant -ин, lemma should end in -ин(ъ): " .. lemma) end return base, nom.strip_tr_ending(tr, ending), ulower(ending) end -- Now autodetect -ин; only animate and in -анин/-янин base, ending = rmatch(lemma, "^(.*[аяАЯ]́?[нН])([иИ]́?[нН][ъЪ]?)$") -- Need to check the animacy to avoid nouns like маиганин, цианин, -- меланин, соланин, etc. if base and args.thisa == "a" then return base, nom.strip_tr_ending(tr, ending), ulower(ending) end base, ending = rmatch(lemma, "^(.*)([ёЁ]́?[нН][оО][кК][ъЪ]?)$") if base then return base, nom.strip_tr_ending(tr, ending), ulower(ending) end base, ending = rmatch(lemma, "^(.*[" .. com.sib_c .. "])([оО]́[нН][оО][кК][ъЪ]?)$") if base then return base, nom.strip_tr_ending(tr, ending), ulower(ending) end base, ending = rmatch(lemma, "^(.*)([ёЁ]́?[нН][оО][чЧ][еЕ][кК][ъЪ]?)$") if base then return base, nom.strip_tr_ending(tr, ending), ulower(ending) end base, ending = rmatch(lemma, "^(.*[" .. com.sib_c .. "])([оО]́[нН][оО][чЧ][еЕ][кК][ъЪ]?)$") if base then return base, nom.strip_tr_ending(tr, ending), ulower(ending) end base, ending = rmatch(lemma, "^(.*)([мМ][яЯ]́?)$") if base then return base, nom.strip_tr_ending(tr, ending), ulower(ending) end --recognize plural endings if gender == "n" then base, ending = rmatch(lemma, "^(.*)([ьЬ][яЯ]́?)$") if base then -- Don't do this; о/-ья is too rare -- error("Ambiguous plural lemma " .. lemma .. " in -ья, singular could be -о or -ье/-ьё; specify the singular") return base, nom.strip_tr_ending(tr, ending), "ье", ending end base, ending = rmatch(lemma, "^(.*)([аяАЯ]́?)$") if base then return base, nom.strip_tr_ending(tr, ending), rfind(ending, "[аА]") and "о" or "е", ending end base, ending = rmatch(lemma, "^(.*)([ыиЫИ]́?)$") if base then if rfind(ending, "[ыЫ]") or rfind(base, "[" .. com.sib .. com.velar .. "]$") then return base, nom.strip_tr_ending(tr, ending), "о-и", ending else -- FIXME, should we return a slash declension? error("No neuter declension е-и available; use a slash declension") end end end if gender == "f" then base, ending = rmatch(lemma, "^(.*)([ьЬ][иИ]́?)$") if base then return base, nom.strip_tr_ending(tr, ending), "ья", ending end end -- Recognize masculines with irregular plurals, but only if the user -- either explicitly specified that this noun is plural (n=p) or -- specifically requested the irregular plural. This is necessary -- because some masculine nouns have feminine endings, which look -- like irregular plurals. if gender == "m" then if args.thisn == "p" or variant == "-ья" then base, ending = rmatch(lemma, "^(.*)([ьЬ][яЯ]́?)$") if base then return base, nom.strip_tr_ending(tr, ending), (args.old and "ъ-ья" or "-ья"), ending end end if args.thisn == "p" or args.want_sc1 then base, ending = rmatch(lemma, "^(.*)([аА]́?)$") if base then return base, nom.strip_tr_ending(tr, ending), (args.old and "ъ-а" or "-а"), ending end base, ending = rmatch(lemma, "^(.*)([яЯ]́?)$") if base then if rfind(base, "[" .. com.vowel .. "]́?$") then return base, nom.strip_tr_ending(tr, ending), "й-я", ending else return base, nom.strip_tr_ending(tr, ending), "ь-я", ending end end end end if gender == "m" or gender == "f" then base, ending = rmatch(lemma, "^(.*[" .. com.sib .. com.velar .. "])([иИ]́?)$") if not base then base, ending = rmatch(lemma, "^(.*)([ыЫ]́?)$") end if base then return base, nom.strip_tr_ending(tr, ending), gender == "m" and (args.old and "ъ" or "") or "а", ending end base, ending = rmatch(lemma, "^(.*[" .. com.vowel .. "й]́?)([иИ]́?)$") if base then return base, nom.strip_tr_ending(tr, ending), gender == "m" and "й" or "я", ending end base, ending = rmatch(lemma, "^(.*)([иИ]́?)$") if base then return base, nom.strip_tr_ending(tr, ending), gender == "m" and "ь-m" or "я", ending end end if gender == "3f" then base, ending = rmatch(lemma, "^(.*)([иИ]́?)$") if base then return base, nom.strip_tr_ending(tr, ending), "ь-f", ending end end -- end of recognize-plurals code base, ending = rmatch(lemma, "^(.*)([ьЬ][яеёЯЕЁ]́?)$") if base then return base, nom.strip_tr_ending(tr, ending), ulower(ending) end base, ending = rmatch(lemma, "^(.*)([йаяеоёъЙАЯЕОЁЪ]́?)$") if base then return base, nom.strip_tr_ending(tr, ending), ulower(ending) end base, ending = rmatch(lemma, "^(.*)([ьЬ])$") if base then if gender == "m" or gender == "f" then return base, nom.strip_tr_ending(tr, ending), "ь-" .. gender elseif gender == "3f" then return base, nom.strip_tr_ending(tr, ending), "ь-f" else error("Need to specify gender m or f with lemma in -ь: ".. lemma) end end if rfind(lemma, "[ыиЫИ]́?$") then error("If this is a plural lemma, gender must be specified: " .. lemma) elseif rfind(lemma, "[уыэюиіѣѵУЫЭЮИІѢѴ]́?$") then error("Don't know how to decline lemma ending in this type of vowel: " .. lemma) end return lemma, tr, "" end local plural_variant_detection_map = { [""] = {["-ья"]="-ья"}, ["ъ"] = {["-ья"]="ъ-ья"}, } local special_case_1_to_plural_variant = { [""] = "-а", ["ъ"] = "ъ-а", ["й"] = "й-я", ["ь-m"] = "ь-я", ["о"] = "о-и", -- these last two are here to avoid getting errors in that checks for -- compatibility with special case 1; the basic variants of these decls -- don't actually exist ["(ишк)о"] = "(ишк)о-и", ["(ищ)е"] = "(ищ)е-и", } local function map_decl(decl, fun) if rfind(decl, "/") then local split_decl = rsplit(decl, "/") if #split_decl ~= 2 then error("Mixed declensional class " .. decl .. "needs exactly two classes, singular and plural") end return fun(split_decl[1]) .. "/" .. fun(split_decl[2]) else return fun(decl) end end -- Canonicalize decl class into non-accented and alias-resolved form; -- but note that some canonical decl class names with an accent in them -- (e.g. е́, not the same as е, whose accented version is ё; and various -- adjective declensions). local function canonicalize_decl(decl, old) local function do_canon(decl) -- remove accents, but not from е́ (for adj decls, accent matters -- as well but we handle that by mapping the accent to a stress pattern -- and then to the accented version in determine_stress_variant()) if decl ~= "е́" then decl = com.remove_accents(decl) end local decl_aliases = old and declensions_old_aliases or declensions_aliases local decl_cats = old and declensions_old_cat or declensions_cat if decl_aliases[decl] then -- If we find an alias, map it. decl = decl_aliases[decl] elseif not decl_cats[decl] then error("Unrecognized declension class " .. decl) end return decl end return map_decl(decl, do_canon) end -- Attempt to determine the actual declension (including plural variants) -- based on a combination of the declension the user specified, what can be -- detected from the lemma, and special case (1), if given in the declension. -- DECL is the value the user passed for the declension field, after -- extraneous annotations (special cases (1) and (2), * for reducible, -- ё for ё/ё alternation and a ; that may precede ё) have been stripped off. -- What's left is one of the following: -- -- 1. Blank, meaning to autodetect the declension from the lemma -- 2. A hyphen followed by a declension variant (-ья, -ин, -ишко, -ище; see -- long comment at top of file) -- 3. A gender (m, f, n, 3f) -- 4. A gender plus declension variant (e.g. f-ья) -- 5. An actual declension, possibly including a plural variant (e.g. о-и) or -- a slash declension (e.g. я/-ья, used for the noun дядя). -- -- Return seven args: stem (lemma minus ending), translit, canonicalized -- declension, explicitly specified gender if any (m, f, n or nil), whether -- the specified declension or detected ending was accented, whether the -- detected ending was pl, and whether the declension was autodetected -- (corresponds to cases where a full word with ending attached is required -- in the lemma field). "Canonicalized" means after autodetection, with -- accents removed, with any aliases mapped to their canonical versions -- and with any requested declension variants applied. The result is either a -- declension that will have a categorization entry (in declensions_cat[] or -- declensions_old_cat[]) or a slash declension where each part similarly has -- a categorization entry. -- -- Note that gender is never required when an explicit declension is given, -- and in connection with stem autodetection is required only when the lemma -- either ends in -ь or is plural. determine_decl = function(lemma, tr, decl, args) -- Assume we're passed a value for DECL of types 1-4 above, and -- fetch gender and requested declension variant. local stem local want_ya_plural, orig_pl_ending, variant local was_autodetected local gender = rmatch(decl, "^(3?[mfn]?)$") if not gender then gender, variant = rmatch(decl, "^(3?[mfn]?)(%-[^%-]+)$") -- But be careful with explicit declensions like -а that look like -- variants without gender (FIXME, eventually we should maybe do -- something about the potential ambiguity). if gender == "" and not ut.contains({"-ья", "-ин", "-ишко", "-ище"}, variant) then gender, variant = nil, nil end end -- If DECL is of type 1-4, handle declension variants and detect -- the actual declension from the lemma. if gender then -- Check for declension variants if variant then if variant == "-ья" then want_ya_plural = "-ья" else -- Sanity-check remaining declension variants, which need -- specific values of animacy, gender and special-case (1) local sc1_needed local animate_needed if variant == "-ишко" then animate_needed = false sc1_needed = true elseif variant == "-ище" then animate_needed = true sc1_needed = true elseif variant == "-ин" then animate_needed = true sc1_needed = false else -- WARNING: If adding another variant, you need to also -- add to the list farther above. error("Unrecognized declension variant " .. variant .. ", should be -ья, -ин, -ишко or -ище") end if sc1_needed and not args.want_sc1 then error("Declension variant " .. variant .. " must be used with special case (1)") elseif sc1_needed == false and args.want_sc1 then error("Declension variant " .. variant .. " must not be used with special case (1)") end if animate_needed and args.thisa ~= "a" then error("Declension variant " .. variant .. " must be specified as animate") elseif animate_needed == false and args.thisa == "a" then error("Declension variant " .. variant .. " must not be specified as animate") end if gender ~= "" and gender ~= "m" then error("Declension variant " .. variant .. " should be used with the masculine gender") end end end stem, tr, decl, orig_pl_ending = detect_lemma_type(lemma, tr, gender, args, variant) was_autodetected = true else stem, tr = lemma, tr end -- Now canonicalize gender if gender == "3f" then gender = "f" elseif gender == "" then gender = nil end -- The ending should be treated as accented if either the original singular -- or plural ending was accented, or if the stem is non-syllabic. local was_accented = com.is_stressed(decl) or orig_pl_ending and com.is_stressed(orig_pl_ending) or com.is_nonsyllabic(stem) local was_plural = not not orig_pl_ending decl = canonicalize_decl(decl, args.old) -- The rest of this code concerns plural variants. It's somewhat -- complicated because there are potentially four sources of plural -- variants (not to mention plural variants constructed using slash -- notation): -- -- 1. A user-requested plural variant in declension types 2 or 4 above -- (currently only -ья) -- 2. An explicit plural variant encoded in an explicit declension of -- type 5 above -- 3. An autodetected plural variant (which will happen in some cases -- when autodetection is performed on a nominative plural) -- 4. A plural variant derived using special case (1). -- -- Up to three actual plural variants might exist (e.g. if the user -- specifies a DECL value or 'm-ья(1)' and a STEM ending in -а, -- although not all three can ever be compatible because -ья and (1) -- are never compatible). We can't have all four because if there's -- an explicit plural variant, there won't be a user-requested or -- autodetected plural variant. -- -- The goal below is to do two things: Check that all available plural -- variants are the same, and generate the actual declension. -- If we have a type-2 or type-3 variant, we already have the actual -- declension; else we need to use a table to map the basic declension -- to the one with the plural variant encoded in it. -- -- NOTE: The code below was written with a more general plural-variant -- system. It probably can be simplified a lot now. -- 1: Handle explicit decl with slash variant if rfind(decl, "/") then if want_ya_plural then -- Don't think this can happen error("Plural variant " .. want_ya_plural .. " not compatible with slash declension " .. decl) end if args.want_sc1 then error("Special case (1) not compatible with slash declension" .. decl) end return stem, tr, decl, gender, was_accented, was_plural, was_autodetected end -- 2: Retrieve explicitly specified or autodetected decl and pl. variant local basic_decl, detected_or_explicit_plural = rmatch(decl, "^(.*)(%-[^mf]+)$") if basic_decl == "ь" then basic_decl = "ь-m" end basic_decl = basic_decl or decl -- 3: Any user-requested plural variant must agree with explicit or -- autodetected variant. if want_ya_plural and detected_or_explicit_plural and want_ya_plural ~= detected_or_explicit_plural then error("Plural variant " .. want_ya_plural .. " requested but plural variant " .. detected_or_explicit_plural .. " detected from plural stem") end -- 4: Handle special case (1). Derive the full declension, make sure its -- plural variant matches any other available plural variants, and -- return the declension. if args.want_sc1 then local sc1_decl = special_case_1_to_plural_variant[basic_decl] or error("Special case (1) not compatible with declension " .. basic_decl) local sc1_plural = rsub(sc1_decl, "^.*%-", "-") local other_plural = want_ya_plural or detected_or_explicit_plural if other_plural and sc1_plural ~= other_plural then error("Plural variant " .. other_plural .. " specified or detected, but special case (1) calls for plural variant " .. sc1_plural) end return stem, tr, sc1_decl, gender, was_accented, was_plural, was_autodetected end -- 5: Handle user-requested plural variant without explicit or detected -- one. (If an explicit or detected one exists, we've already checked -- that it agrees with the user-requested one, and so we already have -- our full declension.) if want_ya_plural and not detected_or_explicit_plural then local variant_decl if plural_variant_detection_map[decl] then variant_decl = plural_variant_detection_map[decl][want_ya_plural] end if variant_decl then return stem, tr, variant_decl, gender, was_accented, was_plural, was_autodetected else return stem, tr, decl .. (args.old and "/ъ-ья" or "/-ья"), gender, was_accented, was_plural, was_autodetected end end -- 6: Just return the full declension, which will include any available -- plural variant in it. return stem, tr, decl, gender, was_accented, was_plural, was_autodetected end -- Convert soft adjectival declensions into hard ones following certain -- stem-final consonants. FIXME: We call this in two places, once -- to handle auto-detection and once to handle explicit declensions; but -- in the former case we end up calling it twice. function determine_adj_stem_variant(decl, stem) local iend = rmatch(decl, "^%+[іи]([йея]?)$") -- Convert ій/ий to ый after velar or sibilant. This is important for -- velars; doesn't really matter one way or the other for sibilants as -- the sibilant rules will convert both sets of endings to the same -- thing (whereas there will be a difference with о vs. е for velars). if iend and rfind(stem, "[" .. com.velar .. com.sib .. "]$") then decl = "+ы" .. iend -- The following is necessary for -ц, unclear if makes sense for -- sibilants. (Would be necessary -- I think -- if we were -- inferring short adjective forms, but we're not.) elseif decl == "+ее" and rfind(stem, "[" .. com.sib_c .. "]$") then decl = "+ое" end return decl end -- Attempt to determine the actual adjective declension based on a -- combination of the declension the user specified and what can be detected -- from the stem. DECL is the value the user passed for the declension field, -- after extraneous annotations have been removed (although none are probably -- relevant here). What's left is one of the following, which always begins -- with +: -- -- 1. +, meaning to autodetect the declension from the stem -- 2. +ь, same as + but selects +ьий instead of +ий if lemma ends in -ий -- 3. +short, +mixed or +proper, with the declension partly specified but -- the particular gender/number-specific short/mixed variant to be -- autodetected -- 4. A gender (+m, +f or +n), used only for detecting the singular of -- plural-form lemmas (this is primarily used in conjunction with template -- ru-noun+, to explicitly specify the gender; for the actual declension, -- it doesn't much matter what singular gender we pick since we're a -- plural only) -- 5. A gender plus short/mixed/proper/ь (e.g. +f-mixed), again with the gender -- used only for detecting the singular of plural-form short/mixed lemmas -- 6. An actual declension, possibly including a slash declension -- (WARNING: Unclear if slash declensions will work, especially those -- that are adjective/noun combinations) -- -- Returns the same seven args as for determine_decl(). The returned -- declension will always begin with +. detect_adj_type = function(lemma, tr, decl, old) local was_autodetected local base, ending local basedecl, g = rmatch(decl, "^(%+)([mfn])$") if not basedecl then g, basedecl = rmatch(decl, "^%+([mfn])%-([a-zь]+)$") if basedecl then basedecl = "+" .. basedecl end end decl = basedecl or decl if decl == "+" or decl == "+ь" then base, ending = rmatch(lemma, "^(.*)([ыиіьаяое]́?[йея])$") if ending == "ий" and decl == "+ь" then decl = "+ьий" elseif ending == "ій" and decl == "+ь" then decl = "+ьій" elseif ending then decl = "+" .. ending else base, ending = rmatch(lemma, "^(.-)([оаыъ]?́?)$") assert(base) local shortmixed = rfind(base, "^[" .. com.uppercase .. "].*[иы]́н$") and "stressed-proper" or -- accented rfind(base, "^[" .. com.uppercase .. "].*[иы]н$") and "proper" or --not accented rlfind(base, "[ёео]́?в$") and "short" or rlfind(base, "[ыи]́н$") and "stressed-short" or -- accented rlfind(base, "[ыи]н$") and "mixed" --not accented if not shortmixed then error("Cannot determine stem type of adjective: " .. lemma) end decl = "+" .. ending .. "-" .. shortmixed end was_autodetected = true elseif ut.contains({"+short", "+mixed", "+proper"}, decl) then base, ending = rmatch(lemma, "^(.-)([оаыъ]?́?)$") assert(base) local shortmixed = usub(decl, 2) if rlfind(base, "[ыи]́н$") then -- accented if shortmixed == "short" then shortmixed = "stressed-short" elseif shortmixed == "proper" then shortmixed = "stressed-proper" end end decl = "+" .. ending .. "-" .. shortmixed was_autodetected = true else base = lemma end if ending and ending ~= "" then tr = nom.strip_tr_ending(tr, ending) end -- Remove any accents from the declension, but not their presence. -- We will convert was_accented into stress pattern b, and convert that -- back to an accented version in determine_stress_variant(). This way -- we end up with the stressed version whether the user placed an accent -- in the ending or decl or specified stress pattern b. -- FIXME, might not work in the presence of slash declensions local was_accented = com.is_stressed(decl) decl = com.remove_accents(decl) decl = map_decl(decl, function(decl) return determine_adj_stem_variant(decl, base) end) local singdecl if decl == "+ые" then singdecl = (g == "m" or not g) and (was_accented and "+ой" or "+ый") or not old and g == "f" and "+ая" or not old and g == "n" and "+ое" elseif decl == "+ыя" and old then singdecl = (g == "f" or not g) and "+ая" or g == "n" and "+ое" elseif decl == "+ие" and not old then singdecl = (g == "m" or not g) and "+ий" or g == "f" and "+яя" or g == "n" and "+ее" elseif decl == "+іе" and old and (g == "m" or not g) then singdecl = "+ій" elseif decl == "+ія" and old then singdecl = (g == "f" or not g) and "+яя" or g == "n" and "+ее" elseif decl == "+ьи" then singdecl = (g == "m" or not g) and (old and "+ьій" or "+ьий") or g == "f" and "+ья" or g == "n" and "+ье" elseif rfind(decl, "^%+ы%-") then -- decl +ы-mixed or similar local beg = (g == "m" or not g) and (old and "ъ" or "") or g == "f" and "а" or g == "n" and "о" singdecl = beg and "+" .. beg .. usub(decl, 3) end if singdecl then was_plural = true decl = singdecl end return base, tr, canonicalize_decl(decl, old), g, was_accented, was_plural, was_autodetected end -- If stress pattern omitted, detect it based on whether ending is stressed -- or the decl class or stem accent calls for inherent stress, defaulting to -- pattern a. This is run after alias resolution and accent removal of DECL; -- WAS_ACCENTED indicates whether the ending was originally stressed. -- FIXME: This is run before splitting slash patterns but should be run after. detect_stress_pattern = function(stem, decl, decl_cats, reducible, was_plural, was_accented) -- ёнок and ёночек always bear stress if rfind(decl, "ёнокъ?") or rfind(decl, "ёночекъ?") then return "b" -- stressed suffix и́н; missing in plural and true endings don't bear stress -- (except for exceptional господи́н) elseif rfind(decl, "инъ?") and was_accented then return "d" -- Adjectival -ой always bears the stress elseif rfind(decl, "%+ой") then return "b" -- Adjectival stressed-short, stressed-proper bears the stress elseif rfind(decl, "^%+.*%-stressed") then return "b" -- Pattern b if ending was accented by user elseif was_accented then return "b" -- Nonsyllabic stem means pattern b elseif com.is_nonsyllabic(stem) then return "b" -- Accent on reducible vowel in masc nom sg (not plural) means pattern b. -- Think about whether we want to enable this. -- elseif reducible and not was_plural then -- -- FIXME hack. Eliminate plural part of slash declension. -- decl = rsub(decl, "/.*", "") -- if decl_cats[decl] and decl_cats[decl].g == "m" then -- if com.is_ending_stressed(stem) or com.is_monosyllabic(stem) then -- return "b" -- end -- end end return "a" end -- In certain special cases, depending on the declension, we override the -- user-specified stress pattern and convert it to something else. -- NOTE: This function is run after alias resolution and accent removal. -- FIXME: It's also run before splitting slash patterns but should be run after. override_stress_pattern = function(decl, stress) -- ёнок and ёночек always bear stress; if user specified a, -- convert to b. Don't do this with slash patterns (see FIXME above). if stress == "a" and (rfind(decl, "^ёнокъ?$") or rfind(decl, "^ёночекъ?$")) then return "b" end return stress end -- Canonicalize an adjectival declension to either the stressed or unstressed -- variant depending on the stress. Ultimately this is what ensures that -- the user's stress mark on an adjectival ending is respected. determine_stress_variant = function(decl, stress) if stress == "b" then if decl == "+ая" then return "+а́я" elseif decl == "+ое" then return "+о́е" else -- Convert +...-short to +...-stressed-short and same for -proper local b, e = rmatch(decl, "^%+(.*)%-(short)$") if not b then b, e = rmatch(decl, "^%+(.*)%-(proper)$") end if b and not rfind(b, "%-stressed") then return "+" .. b .. "-stressed-" .. e end end end return decl end -- Canonicalize a declension based on the final stem consonant, in -- particular converting soft declensions to hard ones after velars and/or -- sibilants. FIXME: We also do this canonicalization earlier on during -- auto-detection (determine_adj_stem_variant() is called by -- detect_adj_type(), and code in detect_lemma_type() does the equivalent -- of the first clause below). Doing it here ensures that explicitly -- specified declensions get handled as well, but it would be nice to not -- do the same thing twice in the auto-detection case. determine_stem_variant = function(decl, stem) if decl == "е" and rfind(stem, "[" .. com.sib_c .. "]$") then return "о" end return determine_adj_stem_variant(decl, stem) end is_reducible = function(decl_cat) if decl_cat.suffix or decl_cat.cant_reduce or decl_cat.adj then return false elseif decl_cat.decl == "3rd" and decl_cat.g == "f" or decl_cat.g == "m" then return true else return false end end -- Reduce nom sg to stem by eliminating the "epenthetic" vowel. Applies to -- masculine 2nd-declension hard and soft, and 3rd-declension feminine in -- -ь. STEM and DECL are after determine_decl(), before converting -- outward-facing declensions to inward ones. function export.reduce_nom_sg_stem(stem, tr, decl, can_err) local full_stem = stem .. (decl == "й" and decl or "") local full_tr = tr and tr .. (decl == "й" and "j" or "") local ret, rettr = com.reduce_stem(full_stem, full_tr) if not ret and can_err then error("Unable to reduce stem " .. stem) end return ret, rettr end is_dereducible = function(decl_cat) if decl_cat.suffix or decl_cat.cant_reduce or decl_cat.adj then return false elseif decl_cat.decl == "1st" or decl_cat.decl == "2nd" and decl_cat.g == "n" then return true else return false end end -- Add a possible suffix to the bare stem, according to the declension and -- value of OLD. This may be -ь, -ъ, -й or nothing. We need to do this here -- because we don't actually attach such a suffix in attach_unstressed() due -- to situations where we don't want the suffix added, e.g. dereducible nouns -- in -ня. add_bare_suffix = function(bare, baretr, old, sgdc, dereduced) if old and sgdc.hard == "hard" then -- Final -ъ isn't transliterated return bare .. "ъ", baretr elseif sgdc.hard == "soft" or sgdc.hard == "palatal" then -- This next clause corresponds to a special case in Vitalik's module. -- It says that nouns in -ня (accent class a) have gen pl without -- trailing -ь. It appears to apply to most nouns in -ня (possibly -- all in -льня), but ку́хня (gen pl ку́хонь) and дерéвня (gen pl -- дереве́нь) is an exception. (Vitalik's module has an extra -- condition here 'stress == "a"' that would exclude дере́вня but I -- don't think this condition is in Zaliznyak, as he indicates -- дере́вня as having an exceptional genitive plural.) if dereduced and rfind(bare, "[нН]$") and sgdc.decl == "1st" then -- FIXME: What happens in this case old-style? I assume that -- -ъ is added, but this is a guess. -- Final -ъ isn't transliterated return bare .. (old and "ъ" or ""), baretr elseif rfind(bare, "[" .. com.vowel .. "]́?$") then return bare .. "й", baretr and (baretr .. "j") else return bare .. "ь", baretr and (baretr .. "ʹ") end else return bare, baretr end end -- Dereduce stem to the form found in the gen pl (and maybe nom sg) by -- inserting an epenthetic vowel. Applies to 1st declension and 2nd -- declension neuter, and to 2nd declension masculine when the stem was -- specified as a plural form (in which case we're deriving the nom sg, -- and also the gen pl in the alt-gen-pl scenario). STEM and DECL are -- after determine_decl(), before converting outward-facing declensions -- to inward ones. STRESS is the stess pattern. function export.dereduce_nom_sg_stem(stem, tr, sgdc, stress, old, can_err) local epenthetic_stress = ending_stressed_gen_pl_patterns[stress] local ret, rettr = com.dereduce_stem(stem, tr, epenthetic_stress) if not ret then if can_err then error("Unable to dereduce stem " .. stem) else return nil, nil end end return add_bare_suffix(ret, rettr, old, sgdc, true) end -------------------------------------------------------------------------- -- Second-declension masculine -- -------------------------------------------------------------------------- ----------------- Masculine hard ------------------- -- Hard-masculine declension, ending in a hard consonant -- (ending in -ъ, old-style). declensions_old["ъ"] = { ["nom_sg"] = "ъ", ["gen_sg"] = "а́", ["dat_sg"] = "у́", ["acc_sg"] = nil, ["ins_sg"] = "о́мъ", ["pre_sg"] = "ѣ́", ["nom_pl"] = "ы́", ["gen_pl"] = function(stem, stress) return nom.sibilant_suffixes[ulower(usub(stem, -1))] and "е́й" or "о́въ" end, ["alt_gen_pl"] = "ъ", ["dat_pl"] = "а́мъ", ["acc_pl"] = nil, ["ins_pl"] = "а́ми", ["pre_pl"] = "а́хъ", } declensions_old_cat["ъ"] = { decl="2nd", hard="hard", g="m" } -- Normal mapping of old ъ would be "" (blank), but we set up "#" as an alias -- so we have a way of referring to it without defaulting if need be and -- distinct from auto-detection (e.g. in the second stem of a word, or to -- override autodetection of -ёнок or -ин -- the latter is necessary in the -- case of семьянин). declensions_aliases["#"] = "" ----------------- Masculine hard, irregular plural ------------------- -- Hard-masculine declension, ending in a hard consonant -- (ending in -ъ, old-style), with irreg nom pl -а. declensions_old["ъ-а"] = mw.clone(declensions_old["ъ"]) declensions_old["ъ-а"]["nom_pl"] = "а́" declensions_old_cat["ъ-а"] = { decl="2nd", hard="hard", g="m", alt_nom_pl=true } declensions_aliases["#-a"] = "-a" -- Hard-masculine declension, ending in a hard consonant -- (ending in -ъ, old-style), with irreg soft pl -ья. -- Differs from the normal declension throughout the plural. declensions_old["ъ-ья"] = { ["nom_sg"] = "ъ", ["gen_sg"] = "а́", ["dat_sg"] = "у́", ["acc_sg"] = nil, ["ins_sg"] = "о́мъ", ["pre_sg"] = "ѣ́", ["nom_pl"] = "ья́", ["gen_pl"] = "ьёвъ", ["alt_gen_pl"] = "е́й", ["dat_pl"] = "ья́мъ", ["acc_pl"] = nil, ["ins_pl"] = "ья́ми", ["pre_pl"] = "ья́хъ", } declensions_old_cat["ъ-ья"] = { decl="2nd", hard="hard", g="m", irregpl=true } declensions_aliases["#-ья"] = "-ья" ----------------- Masculine hard, suffixed, irregular plural ------------------- declensions_old["инъ"] = { ["nom_sg"] = "и́нъ", ["gen_sg"] = "и́на", ["dat_sg"] = "и́ну", ["acc_sg"] = nil, ["ins_sg"] = "и́номъ", ["pre_sg"] = "и́нѣ", ["nom_pl"] = "е́", ["gen_pl"] = "ъ", ["dat_pl"] = "а́мъ", ["acc_pl"] = nil, ["ins_pl"] = "а́ми", ["pre_pl"] = "а́хъ", } declensions_old_cat["инъ"] = { decl="2nd", hard="hard", g="m", suffix=true } declensions_old["ёнокъ"] = { ["nom_sg"] = "ёнокъ", ["gen_sg"] = "ёнка", ["dat_sg"] = "ёнку", ["acc_sg"] = nil, ["ins_sg"] = "ёнкомъ", ["pre_sg"] = "ёнкѣ", ["nom_pl"] = "я́та", ["gen_pl"] = "я́тъ", ["dat_pl"] = "я́тамъ", ["acc_pl"] = nil, ["ins_pl"] = "я́тами", ["pre_pl"] = "я́тахъ", } declensions_old_cat["ёнокъ"] = { decl="2nd", hard="hard", g="m", suffix=true } declensions_old_aliases["онокъ"] = "ёнокъ" declensions_old_aliases["енокъ"] = "ёнокъ" declensions_old["ёночекъ"] = { ["nom_sg"] = "ёночекъ", ["gen_sg"] = "ёночка", ["dat_sg"] = "ёночку", ["acc_sg"] = nil, ["ins_sg"] = "ёночкомъ", ["pre_sg"] = "ёночкѣ", ["nom_pl"] = "я́тки", ["gen_pl"] = "я́токъ", ["dat_pl"] = "я́ткамъ", ["acc_pl"] = nil, ["ins_pl"] = "я́тками", ["pre_pl"] = "я́ткахъ", } declensions_old_cat["ёночекъ"] = { decl="2nd", hard="hard", g="m", suffix=true } declensions_old_aliases["оночекъ"] = "ёночекъ" declensions_old_aliases["еночекъ"] = "ёночекъ" ----------------- Masculine soft ------------------- -- Normal soft-masculine declension in -ь declensions_old["ь-m"] = { ["nom_sg"] = "ь", ["gen_sg"] = "я́", ["dat_sg"] = "ю́", ["acc_sg"] = nil, ["ins_sg"] = "ёмъ", ["pre_sg"] = "ѣ́", ["nom_pl"] = "и́", ["gen_pl"] = "е́й", ["alt_gen_pl"] = "ь", ["dat_pl"] = "я́мъ", ["acc_pl"] = nil, ["ins_pl"] = "я́ми", ["pre_pl"] = "я́хъ", } declensions_old_cat["ь-m"] = { decl="2nd", hard="soft", g="m" } -- Soft-masculine declension in -ь with irreg nom pl -я declensions_old["ь-я"] = mw.clone(declensions_old["ь-m"]) declensions_old["ь-я"]["nom_pl"] = "я́" declensions_old_cat["ь-я"] = { decl="2nd", hard="soft", g="m", alt_nom_pl=true } ----------------- Masculine palatal ------------------- -- Masculine declension in palatal -й declensions_old["й"] = { ["nom_sg"] = "й", ["gen_sg"] = "я́", ["dat_sg"] = "ю́", ["acc_sg"] = nil, ["ins_sg"] = "ёмъ", ["pre_sg"] = function(stem, stress) return rlfind(stem, "[іи]́?$") and not ending_stressed_pre_sg_patterns[stress] and "и" or "ѣ́" end, ["nom_pl"] = "и́", ["gen_pl"] = "ёвъ", ["alt_gen_pl"] = "й", ["dat_pl"] = "я́мъ", ["acc_pl"] = nil, ["ins_pl"] = "я́ми", ["pre_pl"] = "я́хъ", } declensions_old_cat["й"] = { decl="2nd", hard="palatal", g="m" } declensions_old["й-я"] = mw.clone(declensions_old["й"]) declensions_old["й-я"]["nom_pl"] = "я́" declensions_old_cat["й-я"] = { decl="2nd", hard="palatal", g="m", alt_nom_pl=true } -------------------------------------------------------------------------- -- First-declension feminine -- -------------------------------------------------------------------------- ----------------- Feminine hard ------------------- -- Hard-feminine declension in -а declensions_old["а"] = { ["nom_sg"] = "а́", ["gen_sg"] = "ы́", ["dat_sg"] = "ѣ́", ["acc_sg"] = "у́", ["ins_sg"] = {"о́й<insa>", "о́ю<insb>"}, -- see concat_word_forms_1() ["pre_sg"] = "ѣ́", ["nom_pl"] = "ы́", ["gen_pl"] = function(stem, stress) return nom.sibilant_suffixes[ulower(usub(stem, -1))] and ending_stressed_gen_pl_patterns[stress] and "е́й" or "ъ" end, ["alt_gen_pl"] = "е́й", ["dat_pl"] = "а́мъ", ["acc_pl"] = nil, ["ins_pl"] = "а́ми", ["pre_pl"] = "а́хъ", } declensions_old_cat["а"] = { decl="1st", hard="hard", g="f" } ----------------- Feminine soft ------------------- -- Soft-feminine declension in -я declensions_old["я"] = { ["nom_sg"] = "я́", ["gen_sg"] = "и́", ["dat_sg"] = function(stem, stress) return rlfind(stem, "[іи]́?$") and not ending_stressed_dat_sg_patterns[stress] and "и" or "ѣ́" end, ["acc_sg"] = "ю́", ["ins_sg"] = {"ёй<insa>", "ёю<insb>"}, -- see concat_word_forms_1() ["pre_sg"] = function(stem, stress) return rlfind(stem, "[іи]́?$") and not ending_stressed_pre_sg_patterns[stress] and "и" or "ѣ́" end, ["nom_pl"] = "и́", ["gen_pl"] = function(stem, stress) return ending_stressed_gen_pl_patterns[stress] and not rlfind(stem, "[" .. com.vowel .. "]́?$") and "е́й" or "й" end, ["alt_gen_pl"] = "е́й", ["dat_pl"] = "я́мъ", ["acc_pl"] = nil, ["ins_pl"] = "я́ми", ["pre_pl"] = "я́хъ", } declensions_old_cat["я"] = { decl="1st", hard="soft", g="f" } -- Soft-feminine declension in -ья. -- Almost like ь + -я endings except for genitive plural. declensions_old["ья"] = { ["nom_sg"] = "ья́", ["gen_sg"] = "ьи́", ["dat_sg"] = "ьѣ́", ["acc_sg"] = "ью́", ["ins_sg"] = {"ьёй<insa>", "ьёю<insb>"}, -- see concat_word_forms_1() ["pre_sg"] = "ьѣ́", ["nom_pl"] = "ьи́", ["gen_pl"] = function(stem, stress) -- circumflex accent is a signal that forces stress, particularly -- in accent pattern d/d'. return (ending_stressed_gen_pl_patterns[stress] or stress == "d" or stress == "d'") and "е̂й" or "ий" end, ["dat_pl"] = "ья́мъ", ["acc_pl"] = nil, ["ins_pl"] = "ья́ми", ["pre_pl"] = "ья́хъ", } declensions_old_cat["ья"] = { decl="1st", hard="soft", g="f", stem_suffix="ь", gensg=true, ignore_reduce=true -- already has dereduced gen pl } -------------------------------------------------------------------------- -- Second-declension neuter -- -------------------------------------------------------------------------- ----------------- Neuter hard ------------------- -- Normal hard-neuter declension in -о declensions_old["о"] = { ["nom_sg"] = "о́", ["gen_sg"] = "а́", ["dat_sg"] = "у́", ["acc_sg"] = function(stem, stress, args) return not (args.explicit_gender == "m" and args.thisa == "a") and "о́" or nil end, ["ins_sg"] = "о́мъ", ["pre_sg"] = "ѣ́", ["nom_pl"] = "а́", ["gen_pl"] = function(stem, stress) return nom.sibilant_suffixes[ulower(usub(stem, -1))] and ending_stressed_gen_pl_patterns[stress] and "е́й" or "ъ" end, ["alt_gen_pl"] = "о́въ", ["dat_pl"] = "а́мъ", ["acc_pl"] = nil, ["ins_pl"] = "а́ми", ["pre_pl"] = "а́хъ", } declensions_old_cat["о"] = { decl="2nd", hard="hard", g="n" } -- Hard-neuter declension in -о with irreg nom pl -и declensions_old["о-и"] = mw.clone(declensions_old["о"]) declensions_old["о-и"]["nom_pl"] = "ы́" declensions_old_cat["о-и"] = { decl="2nd", hard="hard", g="n", alt_nom_pl=true } declensions_old_aliases["о-ы"] = "о-и" -- Masculine-gender neuter-form declension in -(ишк)о with irreg nom pl -и, -- with colloquial feminine endings in some of the singular cases -- (§5 p. 74 of Zaliznyak) declensions_old["(ишк)о-и"] = mw.clone(declensions_old["о-и"]) declensions_old["(ишк)о-и"]["gen_sg"] = {"а́", "ы́1"} declensions_old["(ишк)о-и"]["dat_sg"] = {"у́", "ѣ́1"} declensions_old["(ишк)о-и"]["ins_sg"] = {"о́мъ", "о́й1"} declensions_old_cat["(ишк)о-и"] = { decl="2nd", hard="hard", g="n", colloqfem=true, alt_nom_pl=true } internal_notes_table_old["(ишк)о-и"] = "<sup>1</sup> Colloquial." -- Masculine-gender animate neuter-form declension in -(ищ)е with irreg -- nom pl -и, with colloquial feminine endings in some of the singular cases -- (§4 p. 74 of Zaliznyak) declensions_old["(ищ)е-и"] = mw.clone(declensions_old["о-и"]) declensions_old["(ищ)е-и"]["acc_sg"] = {"а́", "у́1"} declensions_old["(ищ)е-и"]["gen_sg"] = {"а́", "ы́2"} declensions_old["(ищ)е-и"]["dat_sg"] = {"у́", "ѣ́2"} declensions_old["(ищ)е-и"]["ins_sg"] = {"о́мъ", "о́й2"} declensions_old_cat["(ищ)е-и"] = { decl="2nd", hard="hard", g="n", colloqfem=true, alt_nom_pl=true } internal_notes_table_old["(ищ)е-и"] = "<sup>1</sup> Colloquial.<br /><sup>2</sup> Less common, more colloquial." ----------------- Neuter soft ------------------- -- Soft-neuter declension in -е (stressed -ё) declensions_old["е"] = { ["nom_sg"] = "ё", ["gen_sg"] = "я́", ["dat_sg"] = "ю́", ["acc_sg"] = function(stem, stress, args) return not (args.explicit_gender == "m" and args.thisa == "a") and "ё" or nil end, ["ins_sg"] = "ёмъ", ["pre_sg"] = function(stem, stress) return rlfind(stem, "[іи]́?$") and not ending_stressed_pre_sg_patterns[stress] and "и" or "ѣ́" end, ["nom_pl"] = "я́", ["gen_pl"] = function(stem, stress) return ending_stressed_gen_pl_patterns[stress] and not rlfind(stem, "[" .. com.vowel .. "]́?$") and "е́й" or "й" end, ["alt_gen_pl"] = "ёвъ", ["dat_pl"] = "я́мъ", ["acc_pl"] = nil, ["ins_pl"] = "я́ми", ["pre_pl"] = "я́хъ", } declensions_old_cat["е"] = { singular = function(suffix) if suffix == "ё" then return "ending in -ё" else return {} end end, decl="2nd", hard="soft", g="n", gensg=true } -- User-facing declension type "ё" = "е" declensions_old_aliases["ё"] = "е" -- Rare soft-neuter declension in stressed -е́ (e.g. муде́, бытие́) declensions_old["е́"] = { ["nom_sg"] = "е́", ["gen_sg"] = "я́", ["dat_sg"] = "ю́", ["acc_sg"] = function(stem, stress, args) return not (args.explicit_gender == "m" and args.thisa == "a") and "е́" or nil end, ["ins_sg"] = "е́мъ", ["pre_sg"] = function(stem, stress) -- FIXME!!! Are we sure about this condition? This is what was -- found in the old template, but the related -е declension has -- -ие prep sg ending -(и)и only when *not* stressed. return rlfind(stem, "[іи]́?$") and "и́" or "ѣ́" end, ["nom_pl"] = "я́", ["gen_pl"] = function(stem, stress) return rlfind(stem, "[" .. com.vowel .. "]́?$") and "й" or "е́й" end, ["alt_gen_pl"] = "ёвъ", ["dat_pl"] = "я́мъ", ["acc_pl"] = nil, ["ins_pl"] = "я́ми", ["pre_pl"] = "я́хъ", } declensions_old_cat["е́"] = { singular = "ending in stressed -е", decl="2nd", hard="soft", g="n", gensg=true } -- Soft-neuter declension in unstressed -ье (stressed -ьё). declensions_old["ье"] = { ["nom_sg"] = "ьё", ["gen_sg"] = "ья́", ["dat_sg"] = "ью́", ["acc_sg"] = function(stem, stress, args) return not (args.explicit_gender == "m" and args.thisa == "a") and "ьё" or nil end, ["ins_sg"] = "ьёмъ", ["pre_sg"] = "ьѣ́", ["nom_pl"] = "ья́", ["gen_pl"] = function(stem, stress) return ending_stressed_gen_pl_patterns[stress] and "е́й" or "ий" end, ["alt_gen_pl"] = "ьёвъ", ["dat_pl"] = "ья́мъ", ["acc_pl"] = nil, ["ins_pl"] = "ья́ми", ["pre_pl"] = "ья́хъ", } declensions_old_cat["ье"] = { decl="2nd", hard="soft", g="n", stem_suffix="ь", gensg=true, ignore_reduce=true -- already has dereduced gen pl } declensions_old_aliases["ьё"] = "ье" -------------------------------------------------------------------------- -- Third declension -- -------------------------------------------------------------------------- declensions_old["ь-f"] = { ["nom_sg"] = "ь", ["gen_sg"] = "и́", ["dat_sg"] = "и́", ["acc_sg"] = "ь", ["ins_sg"] = "ью́", ["pre_sg"] = "и́", ["nom_pl"] = "и́", ["gen_pl"] = "е́й", ["dat_pl"] = "я́мъ", ["acc_pl"] = nil, ["ins_pl"] = "я́ми", ["pre_pl"] = "я́хъ", } declensions_old_cat["ь-f"] = { decl="3rd", hard="soft", g="f" } declensions_old["мя"] = { ["nom_sg"] = "мя", ["gen_sg"] = "мени", ["dat_sg"] = "мени", ["acc_sg"] = nil, ["ins_sg"] = "менемъ", ["pre_sg"] = "мени", ["nom_pl"] = "мена́", ["gen_pl"] = "мёнъ", ["dat_pl"] = "мена́мъ", ["acc_pl"] = nil, ["ins_pl"] = "мена́ми", ["pre_pl"] = "мена́хъ", } declensions_old_cat["мя"] = { decl="3rd", hard="soft", g="n", cant_reduce=true } -------------------------------------------------------------------------- -- Indeclinable -- -------------------------------------------------------------------------- -- Indeclinable declension; no endings. declensions_old["$"] = { ["nom_sg"] = "", ["gen_sg"] = "", ["dat_sg"] = "", ["acc_sg"] = nil, ["ins_sg"] = "", ["pre_sg"] = "", ["nom_pl"] = "", ["gen_pl"] = "", ["dat_pl"] = "", ["acc_pl"] = nil, ["ins_pl"] = "", ["pre_pl"] = "", } declensions_old_cat["$"] = { decl="indeclinable", hard="none", g="none" } -------------------------------------------------------------------------- -- Adjectival -- -------------------------------------------------------------------------- -- This needs to be up here because it is called just below. local function old_to_new(v) v = rsub(v, "ъ$", "") v = rsub(v, "^ъ", "") v = rsub(v, "(%A)ъ", "%1") v = rsub(v, "ъ(%A)", "%1") v = rsub(v, "і", "и") v = rsub(v, "ѣ", "е") return v end -- Meaning of entry is: -- 1. The declension name in module ru-adjective -- 2. The masculine declension name in this module -- 3. The neuter declension name in this module -- 4. The feminine declension name in this module -- 5. The value of hard= for the declensions_cat entry -- 6. The value of decl= for the declensions_cat entry -- 7. The value of possadj= for the declensions_cat entry (true if possessive -- or similar type of adjective) local adj_decl_map = { {"ый", "ый", "ое", "ая", "hard", "long", false}, {"ій", "ій", "ее", "яя", "soft", "long", false}, {"ой", "ой", "о́е", "а́я", "hard", "long", false}, {"ьій", "ьій", "ье", "ья", "palatal", "long", true}, {"short", "ъ-short", "о-short", "а-short", "hard", "short", true}, {"mixed", "ъ-mixed", "о-mixed", "а-mixed", "hard", "mixed", true}, {"proper", "ъ-proper", "о-proper", "а-proper", "hard", "proper", true}, {"stressed-short", "ъ-stressed-short", "о-stressed-short", "а-stressed-short", "hard", "short", true}, {"stressed-proper", "ъ-stressed-proper", "о-stressed-proper", "а-stressed-proper", "hard", "proper", true}, } local function get_adjectival_decl(adjtype, gender, old) local decl, intnotes = m_ru_adj.get_nominal_decl(adjtype, gender, old) -- hack fem ins_sg to insert <insa>, <insb>; see concat_word_forms_1() if gender == "f" and type(decl["ins_sg"]) == "table" and #decl["ins_sg"] == 2 then decl["ins_sg"][1] = decl["ins_sg"][1] .. "<insa>" decl["ins_sg"][2] = decl["ins_sg"][2] .. "<insb>" end return decl, intnotes end for _, declspec in ipairs(adj_decl_map) do local oadjdecl = declspec[1] local nadjdecl = old_to_new(oadjdecl) local odecl_by_gender = {m="+" .. declspec[2], n="+" .. declspec[3], f="+" .. declspec[4]} local hard = declspec[5] local decltype = declspec[6] local possadj = declspec[7] for _, g in ipairs({"m", "n", "f"}) do local odecl = odecl_by_gender[g] local ndecl = old_to_new(odecl) declensions_old[odecl], internal_notes_table_old[odecl] = get_adjectival_decl(oadjdecl, g, true) declensions[ndecl], internal_notes_table[ndecl] = get_adjectival_decl(nadjdecl, g, false) declensions_old_cat[odecl] = { decl=decltype, hard=hard, g=g, adj=true, possadj=possadj } declensions_cat[ndecl] = { decl=decltype, hard=hard, g=g, adj=true, possadj=possadj } end end -- Set up some aliases. declensions_old_aliases["+о́-short"] = "+о-stressed-short" declensions_old_aliases["+а́-short"] = "+а-stressed-short" declensions_old_aliases["+о́-proper"] = "+о-stressed-proper" declensions_old_aliases["+а́-proper"] = "+а-stressed-proper" declensions_aliases["+#-short"] = "+-short" declensions_aliases["+#-mixed"] = "+-mixed" declensions_aliases["+#-proper"] = "+-proper" declensions_aliases["+#-stressed-short"] = "+-stressed-short" declensions_aliases["+#-stressed-proper"] = "+-stressed-proper" -------------------------------------------------------------------------- -- Populate new from old -- -------------------------------------------------------------------------- -- Function to convert an entry in an old declensions table to new. local function old_decl_entry_to_new(v) if not v then return nil elseif type(v) == "table" then local new_entry = {} for _, i in ipairs(v) do table.insert(new_entry, old_decl_entry_to_new(i)) end return new_entry elseif type(v) == "function" then return function(stem, suffix, args) return old_decl_entry_to_new(v(stem, suffix, args)) end else return old_to_new(v) end end -- Function to convert an old declensions table to new. local function old_decl_to_new(odecl) local ndecl = {} for k, v in pairs(odecl) do ndecl[k] = old_decl_entry_to_new(v) end return ndecl end -- Function to convert an entry in an old declensions_cat table to new. local function old_decl_cat_entry_to_new(odecl_cat_entry) if not odecl_cat_entry then return nil elseif type(odecl_cat_entry) == "function" then return function(suffix) return old_decl_cat_entry_to_new(odecl_cat_entry(suffix)) end elseif type(odecl_cat_entry) == "table" then local ndecl_cat_entry = {} for k, v in pairs(odecl_cat_entry) do ndecl_cat_entry[k] = old_decl_cat_entry_to_new(v) end return ndecl_cat_entry elseif type(odecl_cat_entry) == "boolean" then return odecl_cat_entry else assert(type(odecl_cat_entry) == "string") return old_to_new(odecl_cat_entry) end end -- Function to convert an old declensions_cat table to new. local function old_decl_cat_to_new(odeclcat) local ndeclcat = {} for k, v in pairs(odeclcat) do ndeclcat[k] = old_decl_cat_entry_to_new(v) end return ndeclcat end -- populate declensions[] from declensions_old[] for odecltype, odecl in pairs(declensions_old) do local ndecltype = old_to_new(odecltype) if not declensions[ndecltype] then declensions[ndecltype] = old_decl_to_new(odecl) end end -- populate declensions_cat[] from declensions_old_cat[] for odecltype, odeclcat in pairs(declensions_old_cat) do local ndecltype = old_to_new(odecltype) if not declensions_cat[ndecltype] then declensions_cat[ndecltype] = old_decl_cat_to_new(odeclcat) end end -- populate declensions_aliases[] from declensions_old_aliases[] for ofrom, oto in pairs(declensions_old_aliases) do local from = old_to_new(ofrom) if not declensions_aliases[from] then declensions_aliases[from] = old_to_new(oto) end end -- populate internal_notes_table[] from internal_notes_table_old[] for odecl, note in pairs(internal_notes_table_old) do local ndecl = old_to_new(odecl) if not internal_notes_table[ndecl] then -- FIXME, should we be calling old_to_new() here? internal_notes_table[ndecl] = note end end -------------------------------------------------------------------------- -- Inflection functions -- -------------------------------------------------------------------------- -- Attach the stressed stem (or plural stem, or barestem) out of ARGS -- to the unstressed suffix SUF, modifying the suffix as necessary for the -- last letter of the stem (e.g. if it is velar, sibilant or ц). CASE is -- the case form being created and is used to select the plural stem if -- needed. Returns two values, the combined form and the modified suffix. local function attach_unstressed(args, case, suf, was_stressed) if suf == nil then return nil, nil elseif rfind(suf, CFLEX) then -- if suf has circumflex accent, it forces stressed return attach_stressed(args, case, suf) end local stem, tr if rfind(case, "_pl") then stem, tr = args.pl, args.pltr end if not stem and case == "ins_sg" then stem, tr = args.ins_sg_stem, args.ins_sg_tr end if not stem then stem, tr = args.stem, args.stemtr end if nom.nonsyllabic_suffixes[suf] then -- If gen_pl, use special args.gen_pl_bare if given, else regular -- args.bare if there isn't a plural stem. If nom_sg, always use -- regular args.bare. local barearg, bareargtr if case == "gen_pl" then barearg, bareargtr = args.gen_pl_bare, args.gen_pl_baretr if not barearg and args.pl == args.stem then barearg, bareargtr = args.bare, args.baretr end else barearg, bareargtr = args.bare, args.baretr end local barestem = barearg or stem local barestem, baretr if barearg then barestem, baretr = barearg, bareargtr else barestem, baretr = stem, tr end if was_stressed and case == "gen_pl" then if not barearg then local gen_pl_stem, gen_pl_tr = com.make_ending_stressed(stem, tr) barestem, baretr = gen_pl_stem, gen_pl_tr end end if rlfind(barestem, "[йьъ]$") then suf = "" else if suf == "ъ" then -- OK elseif suf == "й" or suf == "ь" then if barearg and case == "gen_pl" then -- explicit bare or reducible, don't add -ь suf = "" elseif rfind(barestem, "[" .. com.vowel .. "]́?$") then -- not reducible, do add -ь and correct to -й if necessary suf = "й" else suf = "ь" end end end return nom.concat_russian_tr(barestem, baretr, suf, nil, "dopair"), suf end suf = com.make_unstressed(suf) local rules = nom.unstressed_rules[ulower(usub(stem, -1))] return nom.combine_stem_and_suffix(stem, tr, suf, rules, args.old) end -- Analogous to attach_unstressed() but for the unstressed stem and a -- stressed suffix. attach_stressed = function(args, case, suf) if suf == nil then return nil, nil end -- circumflex forces stress even when the accent pattern calls for no stress suf = rsub(suf, "̂", "́") if not rfind(suf, "[ё́]") then -- if suf has no "ё" or accent marks return attach_unstressed(args, case, suf, "was stressed") end local stem, tr if rfind(case, "_pl") then stem, tr = args.upl, args.upltr end if not stem then stem, tr = args.ustem, args.ustemtr end local rules = nom.stressed_rules[ulower(usub(stem, -1))] return nom.combine_stem_and_suffix(stem, tr, suf, rules, args.old) end -- Attach the appropriate stressed or unstressed stem (or plural stem as -- determined by CASE, or barestem) out of ARGS to the suffix SUF, which may -- be a list of alternative suffixes (e.g. in the inst sg of feminine nouns). -- Calls FUN (either attach_stressed() or attach_unstressed()) to do the work -- for an individual suffix. Returns two values, a list of combined forms -- and a list of the real suffixes used (which may be modified from the -- passed-in suffixes, e.g. by removing stress marks or modifying vowels in -- various ways after a stem-final velar, sibilant or ц). Each combined form -- is a two-element list {stem, tr} (or a one-element list if tr is nil). -- IRREG is true if this is an irregular form. We are handling the Nth word; -- ISLAST is true if this is the last one. local function attach_with(args, case, suf, fun, irreg, n, islast) if type(suf) == "table" then local all_combineds = {} local all_realsufs = {} for _, x in ipairs(suf) do local combineds, realsufs = attach_with(args, case, x, fun, irreg, n, islast) for _, combined in ipairs(combineds) do table.insert(all_combineds, combined) end for _, realsuf in ipairs(realsufs) do table.insert(all_realsufs, realsuf) end end return all_combineds, all_realsufs else local combined, realsuf = fun(args, case, suf) local irregsuf = irreg and {IRREGMARKER} or {""} return {combined and nom.concat_paired_russian_tr( nom.concat_paired_russian_tr(args["prefix" .. n], combined), nom.concat_paired_russian_tr(args["suffix" .. n], irregsuf)) or nil}, {realsuf and realsuf .. args["suffix" .. n][1] or nil} end end -- Generate the form(s) and suffix(es) for CASE according to the declension -- table DECL, using the attachment function FUN (one of attach_stressed() -- or attach_unstressed()). IS_SLASH is true if this is a slash declension -- (different declensions for singular and plural). We are handling the Nth -- word; ISLAST is true if this is the last one. local function gen_form(args, decl, case, stress, fun, is_slash, n, islast) local irreg = false if not args.suffixes[case] then args.suffixes[case] = {} end local decl_sufs = args.old and declensions_old or declensions decl_sufs = decl_sufs[decl] local suf = decl_sufs[case] local decl_cats = args.old and declensions_old_cat or declensions_cat local ispl = rfind(case, "_pl") if ispl and (decl_cats[decl].irregpl or args.pl and args.pl ~= args.stem or is_slash) then irreg = true end if case == "nom_pl" and decl_cats[decl].alt_nom_pl then irreg = true end if type(suf) == "function" then suf = suf(ispl and args.pl or args.stem, stress, args) end if case == "gen_pl" and args.alt_gen_pl then suf = decl_sufs.alt_gen_pl irreg = true if not suf then error("No alternate genitive plural available for this declension class") end end local combineds, realsufs = attach_with(args, case, suf, fun, irreg, n, islast) for _, realsuf in ipairs(realsufs) do args.any_non_nil[case] = true args.this_any_non_nil[case] = true insert_if_not(args.suffixes[case], realsuf) end return combineds end local attachers = { ["+"] = attach_stressed, ["-"] = attach_unstressed, } do_stress_pattern = function(stress, args, decl, number, n, islast) local f = {} for _, case in ipairs(decl_cases) do if not number or (number == "sg" and rfind(case, "_sg")) or (number == "pl" and rfind(case, "_pl")) then f[case] = gen_form(args, decl, case, stress, attachers[stress_patterns[stress][case]], not not number, n, islast) -- Turn empty form lists into nil to facilitate computation of -- animate/inanimate accusatives below if f[case] and #f[case] == 0 then f[case] = nil end -- Compute linked versions of potential lemma cases, for use -- in the ru-noun+ headword. We substitute the original lemma -- (before removing links) for forms that are the same as the -- lemma, if the original lemma has links. if f[case] and (case == "nom_sg" or case == "nom_pl") then local linked_forms = {} for _, form in ipairs(f[case]) do -- Return true if FORM is "close enough" to LEMMA that we can substitute the -- linked form of the lemma. Currently this means exactly the same except that -- we ignore acute and grave accent differences in monosyllables, and ignore -- notes that may have been appended (e.g. the triangle marking irregularity). local entry, notes = m_table_tools.separate_notes(form[1]) local lemma = args.lemma_no_links local close_enough_to_lemma = entry == lemma or (com.is_monosyllabic(entry) and com.is_monosyllabic(lemma) and com.remove_accents(entry) == com.remove_accents(lemma)) if close_enough_to_lemma and rfind(args.orig_lemma, "%[%[") then table.insert(linked_forms, {args.orig_lemma .. notes, args.lemmatr and args.lemmatr .. notes}) else table.insert(linked_forms, form) end end f[case .. "_linked"] = linked_forms end end end -- Set acc an/in variants now as appropriate. We used to do this in -- handle_forms_and_overrides(), which simplified the handling of -- nom/gen/acc overrides but caused problems for words like мазло and -- трепло that had a mixture of nil and non-nil accusative forms. local an = args.thisa if not number or number == "sg" then f.acc_sg_an = f.acc_sg_an or f.acc_sg or an == "i" and f.nom_sg or f.gen_sg f.acc_sg_in = f.acc_sg_in or f.acc_sg or an == "a" and f.gen_sg or f.nom_sg end if not number or number == "pl" then f.acc_pl_an = f.acc_pl_an or f.acc_pl or an == "i" and f.nom_pl or f.gen_pl f.acc_pl_in = f.acc_pl_in or f.acc_pl or an == "a" and f.gen_pl or f.nom_pl end for case, forms in pairs(f) do if not args.forms[case] then args.forms[case] = {} end for _, form in ipairs(forms) do insert_if_not(args.forms[case], form) end end end stress_patterns["a"] = { nom_sg="-", gen_sg="-", dat_sg="-", acc_sg="-", ins_sg="-", pre_sg="-", nom_pl="-", gen_pl="-", dat_pl="-", acc_pl="-", ins_pl="-", pre_pl="-", } stress_patterns["b"] = { nom_sg="+", gen_sg="+", dat_sg="+", acc_sg="+", ins_sg="+", pre_sg="+", nom_pl="+", gen_pl="+", dat_pl="+", acc_pl="+", ins_pl="+", pre_pl="+", } stress_patterns["b'"] = { nom_sg="+", gen_sg="+", dat_sg="+", acc_sg="+", ins_sg="-", pre_sg="+", nom_pl="+", gen_pl="+", dat_pl="+", acc_pl="+", ins_pl="+", pre_pl="+", } stress_patterns["c"] = { nom_sg="-", gen_sg="-", dat_sg="-", acc_sg="-", ins_sg="-", pre_sg="-", nom_pl="+", gen_pl="+", dat_pl="+", acc_pl="+", ins_pl="+", pre_pl="+", } stress_patterns["d"] = { nom_sg="+", gen_sg="+", dat_sg="+", acc_sg="+", ins_sg="+", pre_sg="+", nom_pl="-", gen_pl="-", dat_pl="-", acc_pl="-", ins_pl="-", pre_pl="-", } stress_patterns["d'"] = { nom_sg="+", gen_sg="+", dat_sg="+", acc_sg="-", ins_sg="+", pre_sg="+", nom_pl="-", gen_pl="-", dat_pl="-", acc_pl="-", ins_pl="-", pre_pl="-", } stress_patterns["e"] = { nom_sg="-", gen_sg="-", dat_sg="-", acc_sg="-", ins_sg="-", pre_sg="-", nom_pl="-", gen_pl="+", dat_pl="+", acc_pl="+", ins_pl="+", pre_pl="+", } stress_patterns["f"] = { nom_sg="+", gen_sg="+", dat_sg="+", acc_sg="+", ins_sg="+", pre_sg="+", nom_pl="-", gen_pl="+", dat_pl="+", acc_pl="+", ins_pl="+", pre_pl="+", } stress_patterns["f'"] = { nom_sg="+", gen_sg="+", dat_sg="+", acc_sg="-", ins_sg="+", pre_sg="+", nom_pl="-", gen_pl="+", dat_pl="+", acc_pl="+", ins_pl="+", pre_pl="+", } stress_patterns["f''"] = { nom_sg="+", gen_sg="+", dat_sg="+", acc_sg="+", ins_sg="-", pre_sg="+", nom_pl="-", gen_pl="+", dat_pl="+", acc_pl="+", ins_pl="+", pre_pl="+", } ending_stressed_gen_pl_patterns = ut.list_to_set({"b", "b'", "c", "e", "f", "f'", "f''"}) ending_stressed_pre_sg_patterns = ut.list_to_set({"b", "b'", "d", "d'", "f", "f'", "f''"}) ending_stressed_dat_sg_patterns = ending_stressed_pre_sg_patterns ending_stressed_sg_patterns = ending_stressed_pre_sg_patterns ending_stressed_pl_patterns = ut.list_to_set({"b", "b'", "c"}) local numbers = { ["s"] = "単数", ["p"] = "複数", } local old_title_temp = [=[''<b lang="ru" class="Cyrl">{lemma}</b>'' の格変化 (正書法改正前)]=] local title_temp = [=[''<b lang="ru" class="Cyrl">{lemma}</b>'' の格変化]=] local partitive = nil local locative = nil local vocative = nil local internal_notes_template = nil local notes_template = nil local templates = {} -- all cases, period all_cases = { "nom_sg", "gen_sg", "dat_sg", "acc_sg", "ins_sg", "pre_sg", "nom_pl", "gen_pl", "dat_pl", "acc_pl", "ins_pl", "pre_pl", "nom_sg_linked", "nom_pl_linked", "acc_sg_an", "acc_sg_in", "acc_pl_an", "acc_pl_in", "par", "loc", "voc", } -- cases that can be declined normally decl_cases = { "nom_sg", "gen_sg", "dat_sg", "acc_sg", "ins_sg", "pre_sg", "nom_pl", "gen_pl", "dat_pl", "acc_pl", "ins_pl", "pre_pl", } -- all cases displayable displayable_cases = { "nom_sg", "gen_sg", "dat_sg", "ins_sg", "pre_sg", "nom_pl", "gen_pl", "dat_pl", "ins_pl", "pre_pl", "nom_sg_linked", "nom_pl_linked", "acc_sg_an", "acc_sg_in", "acc_pl_an", "acc_pl_in", "par", "loc", "voc", } -- all cases that can be overridden overridable_cases = { "nom_sg", "gen_sg", "dat_sg", "acc_sg", "ins_sg", "pre_sg", "nom_pl", "gen_pl", "dat_pl", "acc_pl", "ins_pl", "pre_pl", "acc_sg_an", "acc_sg_in", "acc_pl_an", "acc_pl_in", "par", "loc", "voc", } -- Convert a raw override into a canonicalized list of individual overrides. -- If input is nil, so is output. Certain junk (e.g. <br/>) is removed, -- and ~ and ~~ are substituted appropriately; ARGS and CASE are required for -- this purpose. FORMS is the list of existing case forms and is currently -- used only to retrieve the dat_sg for handling + in loc/par (this means -- that any overrides of the dat_sg have to be handled before handling -- overrides of loc/par). N is the suffix used to retrieve the override -- -- either a number for word-specific overrides, or an empty string for -- overall overrides. -- -- It will still be necessary to call m_table_tools.separate_notes() to separate -- off any trailing "notes" (asterisks, superscript numbers, etc.), and -- m_links.remove_links() to remove any links to get the raw override form. canonicalize_override = function(args, case, forms, n) local val = args[case .. n] if not val then return nil end -- clean <br /> that's in many multi-form entries and messes up linking val = rsub(val, "<br%s*/>", "") -- substitute ~ and ~~ and split by commas local stem, tr if rfind(case, "_pl") then stem, tr = args.pl, args.pltr end if not stem then stem, tr = args.stem, args.stemtr end local ustem, utr = com.make_unstressed_once(stem, tr) local vals = rsplit(val, "%s*,%s*") local retvals = {} for _, val in ipairs(vals) do local valru, valtr = nom.split_russian_tr(val) valru = rsub(valru, "~~", ustem) valru = rsub(valru, "~", com.is_stressed(val) and ustem or stem) if rfind(valru, "^%*") then valru = rsub(valru, "^%*", "") .. HYPMARKER end if valtr then tr = tr or nom.translit_no_links(stem) utr = utr or nom.translit_no_links(ustem) valtr = rsub(valtr, "~~", utr) valtr = rsub(valtr, "~", com.is_stressed(val) and utr or tr) if rfind(valtr, "^%*") then valtr = rsub(valtr, "^%*", "") .. HYPMARKER end end table.insert(retvals, {valru, valtr}) end vals = retvals -- handle + in loc/par meaning "the expected form"; NOTE: This requires -- that dat_sg has already been processed! if case == "loc" or case == "par" then local new_vals = {} for _, rutr in ipairs(vals) do -- don't just handle + by itself in case the arg has в or на -- or whatever attached to it if rfind(rutr[1], "^%+") or rfind(rutr[1], "[%s%[|]%+") then for _, dat in ipairs(forms["dat_sg"]) do local ru, tr = rutr[1], rutr[2] local datru, dattr = dat[1], dat[2] local valru, valtr -- separate off any footnote symbols (which may have been -- introduced by a *tail or *tailall argument, which we need -- to process before this stage so overrides don't get -- automatically marked with footnote symbols); if par, -- try to preserve them, but with loc this can cause -- problems in case there are multiple dative forms -- (stress variants) and the last one is marked with a -- footnote symbol (occurs in грудь) local datru_entry, datru_notes = m_table_tools.separate_notes(datru) local dattr_entry, dattr_notes if dattr then dattr_entry, dattr_notes = m_table_tools.separate_notes(dattr) end if case == "par" then valru, valtr = datru_entry, dattr_entry else valru, valtr = com.make_ending_stressed(datru_entry, dattr_entry) datru_notes = "" dattr_notes = "" end -- wrap the word in brackets so it's linked; but not if it -- appears to already be linked ru = rsub(ru, "^%+", "[[" .. valru .. "]]") ru = rsub(ru, "([%[|])%+", "%1" .. valru) ru = rsub(ru, "(%s)%+", "%1[[" .. valru .. "]]") ru = ru .. datru_notes -- do the translit; but it shouldn't have brackets in it if tr or valtr then tr = tr or nom.translit_no_links(rutr[1]) valtr = valtr or nom.translit_no_links(valru) tr = rsub(tr, "^%+", valtr) tr = rsub(tr, "(%s)%+", "%1" .. valtr) tr = tr .. dattr_notes end table.insert(new_vals, {ru, tr}) end else table.insert(new_vals, rutr) end end vals = new_vals end -- auto-accent/check for necessary accents local newvals = {} for _, v in ipairs(vals) do local ru, tr = v[1], v[2] if not args.allow_unaccented then if tr and com.is_unstressed(ru) ~= com.is_unstressed(tr) then error("Override " .. ru .. " and translit " .. tr .. " must have same accent pattern") end -- it's safe to accent monosyllabic stems if com.is_monosyllabic(ru) then ru, tr = com.make_ending_stressed(ru, tr) elseif com.needs_accents(ru) then error("Override " .. ru .. " for case " .. case .. n .. " requires an accent") end end table.insert(newvals, {ru, tr}) end vals = newvals return vals end local function process_overrides(args, f, n) local function process_override(case) if args[case .. n] then local overrides = canonicalize_override(args, case, f, n) if not f[case] then f[case] = {} end local new_overrides = {} for _, form in ipairs(overrides) do -- Don't consider overrides of loc/par/voc irregular since -- they're only specified through overrides; FIXME: Theoretically -- we could consider loc/par irregular if they don't follow the -- expected forms; but we'd have to figure out how to eliminate -- the preposition that may be specified if case ~= "loc" and case ~= "par" and case ~= "voc" and not args.manual and not contains_rutr_pair(f[case], form) then local formru, formnotes = m_table_tools.separate_notes(form[1]) if formru ~= "-" then -- don't mark an override of - as irregular, even if -- it has an attached footnote symbol form = nom.concat_paired_russian_tr(form, {IRREGMARKER}) end end table.insert(new_overrides, form) end f[case] = new_overrides args.any_overridden[case] = true end end -- do dative singular first because it will be used by loc/par process_override("dat_sg") -- now do the rest for _, case in ipairs(overridable_cases) do if case ~= "dat_sg" then process_override(case) end end -- if the nominative is overridden, use it to set the linked version unless -- that is also specifically overridden if args["nom_sg" .. n] and not args["nom_sg_linked" .. n] then f.nom_sg_linked = f.nom_sg end if args["nom_pl" .. n] and not args["nom_pl_linked" .. n] then f.nom_pl_linked = f.nom_pl end -- convert empty lists to nil to facilitate computation of accusative -- case variants below. for _, case in ipairs(all_cases) do if f[case] then if type(f[case]) ~= "table" then error("Logic error, args[case] should be nil or table") end if #f[case] == 0 then f[case] = nil end end end end local function process_tail_args(args, f, n) local function append_note_all(case, value) value = nom.split_russian_tr(value, "dopair") local function append1(case) if f[case] then for i=1,#f[case] do f[case][i] = nom.concat_paired_russian_tr(f[case][i], value) end end end append1(case) if case == "acc_sg" then append1("acc_sg_in") append1("acc_sg_an") elseif case == "acc_pl" then append1("acc_pl_in") append1("acc_pl_an") end end local function append_note_last(case, value, gt_one) value = nom.split_russian_tr(value, "dopair") local function append1(case) if f[case] then local lastarg = #f[case] if lastarg > (gt_one and 1 or 0) then f[case][lastarg] = nom.concat_paired_russian_tr(f[case][lastarg], value) end end end append1(case) if case == "acc_sg" then append1("acc_sg_in") append1("acc_sg_an") elseif case == "acc_pl" then append1("acc_pl_in") append1("acc_pl_an") end end local function handle_tail_hyp(suf) local arg, val for _, case in ipairs(all_cases) do arg = args[case .. "_" .. suf .. n] if arg then append_note_last(case, suf == "hyp" and HYPMARKER or arg) end arg = args[case .. "_" .. suf .. "all" .. n] if arg then append_note_all(case, suf == "hyp" and HYPMARKER or arg) end if not rfind(case, "_pl") then arg = args["sg" .. suf .. "all" .. n] if arg then append_note_all(case, suf == "hyp" and HYPMARKER or arg) end arg = args["sg" .. suf .. n] if arg then append_note_last(case, suf == "hyp" and HYPMARKER or arg, ">1") end else arg = args["pl" .. suf .. "all" .. n] if arg then append_note_all(case, suf == "hyp" and HYPMARKER or arg) end arg = args["pl" .. suf .. n] if arg then append_note_last(case, suf == "hyp" and HYPMARKER or arg, ">1") end end if not rfind(case, "nom_") and not rfind(case, "acc_") then arg = args["obl" .. suf .. "all" .. n] if arg then append_note_all(case, suf == "hyp" and HYPMARKER or arg) end arg = args["obl" .. suf .. n] if arg then append_note_last(case, suf == "hyp" and HYPMARKER or arg, ">1") end end end end handle_tail_hyp("tail") handle_tail_hyp("hyp") end handle_forms_and_overrides = function(args, n, islast) local f = args.forms process_tail_args(args, f, n) process_overrides(args, f, n) local an = args.thisa -- Maybe set the value of the animate/inanimate accusative variants based -- on nom/acc/gen overrides. Don't do this if there was a specific override -- of this form. Otherwise, always propagate an accusative singular -- override, and propagate the nom/gen sg if there wasn't a specific -- accusative suffix anywhere (occurs in the fem sg and sometimes the neut -- sg). This logic duplicates logic in handle_overall_forms_and_overrides(); -- see long comment there. We need to duplicate the whole logic here to -- handle words like мать-одиночка, which has an override of acc_sg1. if not args["acc_sg_an" .. n] then if args["acc_sg" .. n] then f.acc_sg_an = f.acc_sg elseif not args.this_any_non_nil.acc_sg then f.acc_sg_an = f.acc_sg or an == "i" and f.nom_sg or f.gen_sg or f.acc_sg_an end end if not args["acc_sg_in" .. n] then if args["acc_sg" .. n] then f.acc_sg_in = f.acc_sg elseif not args.this_any_non_nil.acc_sg then f.acc_sg_in = f.acc_sg or an == "a" and f.gen_sg or f.nom_sg or f.acc_sg_in end end if not args["acc_pl_an" .. n] then if args["acc_pl" .. n] then f.acc_pl_an = f.acc_pl elseif not args.this_any_non_nil.acc_pl then f.acc_pl_an = f.acc_pl or an== "i" and f.nom_pl or f.gen_pl or f.acc_pl_an end end if not args["acc_pl_in" .. n] then if args["acc_pl" .. n] then f.acc_pl_in = f.acc_pl elseif not args.this_any_non_nil.acc_pl then f.acc_pl_in = f.acc_pl or an == "a" and f.gen_pl or f.nom_pl or f.acc_pl_in end end f.loc = f.loc or f.pre_sg f.par = f.par or f.gen_sg f.voc = f.voc or f.nom_sg -- Set these in case we have plural only, in which case the -- singular will also get set to these same values in case we are -- a plural-only word in a singular-only expression. NOTE: It's actually -- unnecessary to do "f.loc_pl = f.loc_pl or f.pre_pl" as f.loc_pl should -- never previously be set. f.loc_pl = f.loc_pl or f.pre_pl f.par_pl = f.par_pl or f.gen_pl f.voc_pl = f.voc_pl or f.nom_pl local nu = args.thisn -- If we have a singular-only, set the plural forms to the singular forms, -- and vice-versa. This is important so that things work in multi-word -- expressions that combine different number restrictions (e.g. -- singular-only with singular/plural or singular-only with plural-only, -- compare "St. Vincent and the Grenadines" [Сент-Винсент и Гренадины]). if nu == "s" then f.nom_pl_linked = f.nom_sg_linked f.nom_pl = f.nom_sg f.gen_pl = f.gen_sg f.dat_pl = f.dat_sg f.acc_pl = f.acc_sg f.acc_pl_an = f.acc_sg_an f.acc_pl_in = f.acc_sg_in f.ins_pl = f.ins_sg f.pre_pl = f.pre_sg f.nom_pl = f.nom_sg -- Unnecessary because only used below to initialize singular -- loc/par/voc with pluralia tantum. -- f.loc_pl = f.loc -- f.par_pl = f.par -- f.voc_pl = f.voc elseif nu == "p" then f.nom_sg_linked = f.nom_pl_linked f.nom_sg = f.nom_pl f.gen_sg = f.gen_pl f.dat_sg = f.dat_pl f.acc_sg = f.acc_pl f.acc_sg_an = f.acc_pl_an f.acc_sg_in = f.acc_pl_in f.ins_sg = f.ins_pl f.pre_sg = f.pre_pl f.nom_sg = f.nom_pl f.loc = f.loc_pl f.par = f.par_pl f.voc = f.voc_pl end end handle_overall_forms_and_overrides = function(args) local overall_forms = {} for _, case in ipairs(displayable_cases) do overall_forms[case] = concat_word_forms(args.per_word_info, case) end local acc_sg_overridden = args.acc_sg local acc_pl_overridden = args.acc_pl process_tail_args(args, overall_forms, "") process_overrides(args, overall_forms, "") -- if IRREGMARKER is anywhere in text, remove all instances and put -- at the end before any notes. local function clean_irreg_marker(case, text) if rfind(text, IRREGMARKER) then text = rsub(text, IRREGMARKER, "") local entry, notes = m_table_tools.separate_notes(text) if case_will_be_displayed(args, case) then insert_if_not(args.internal_notes, IRREGMARKER .. " 不規則") args.any_irreg = true args.any_irreg_case[case] = true end return entry .. IRREGMARKER .. notes else return text end end -- set final args[case] and clean up IRREGMARKER. for _, case in ipairs(all_cases) do args[case] = overall_forms[case] if args[case] then local cleaned_forms = {} for _, form in ipairs(args[case]) do local ru, tr = form[1], form[2] ru = clean_irreg_marker(case, ru) if tr then tr = clean_irreg_marker(case, tr) end table.insert(cleaned_forms, {ru, tr}) end args[case] = cleaned_forms end end -- Maybe set the value of the animate/inanimate accusative variants based -- on nom/acc/gen overrides. Don't do this if there was a specific override -- of this form. Otherwise, always propagate an accusative singular -- override, and propagate the nom/gen sg if there wasn't a specific -- accusative suffix anywhere (occurs in the fem sg and sometimes the neut -- sg). We need to do this somewhat complicated procedure to get overrides -- to work correctly, e.g. acc_sg overrides of feminine and neuter nouns -- (such as мать and полслова) and gen_sg/gen_pl overrides of masculine -- animate nouns. We also ran into an issue with words like мазло that are -- neuter-form but can be both masculine animate (in which case the -- acc sg inherits from the genitive) and neuter animate (in which case the -- acc sg has the fixed ending -о, same as nominative, despite the animacy). -- Remember also that the animate/inanimate accusative variants are the ones -- displayed, not the plain acc_sg/acc_pl ones. if not args.any_overridden.acc_sg_an then if acc_sg_overridden then args.acc_sg_an = args.acc_sg elseif not args.any_non_nil.acc_sg then args.acc_sg_an = args.acc_sg or args.a == "i" and args.nom_sg or args.gen_sg or args.acc_sg_an end end if not args.any_overridden.acc_sg_in then if acc_sg_overridden then args.acc_sg_in = args.acc_sg elseif not args.any_non_nil.acc_sg then args.acc_sg_in = args.acc_sg or args.a == "a" and args.gen_sg or args.nom_sg or args.acc_sg_in end end if not args.any_overridden.acc_pl_an then if acc_pl_overridden then args.acc_pl_an = args.acc_pl elseif not args.any_non_nil.acc_pl then args.acc_pl_an = args.acc_pl or args.a == "i" and args.nom_pl or args.gen_pl or args.acc_pl_an end end if not args.any_overridden.acc_pl_in then if acc_pl_overridden then args.acc_pl_in = args.acc_pl elseif not args.any_non_nil.acc_pl then args.acc_pl_in = args.acc_pl or args.a == "a" and args.gen_pl or args.nom_pl or args.acc_pl_in end end -- Try to set the values of acc_sg and acc_pl. The only time we can't is -- when the noun is bianimate and the anim/inan values are different. -- This is used primarily for generate_forms() and generate_multi_forms(), -- since we don't actually display these forms. if args.a == "a" then args.acc_sg = args.acc_sg or args.acc_sg_an args.acc_pl = args.acc_pl or args.acc_pl_an elseif args.a == "i" then args.acc_sg = args.acc_sg or args.acc_sg_in args.acc_pl = args.acc_pl or args.acc_pl_in else -- bianimate args.acc_sg = args.acc_sg or ut.equals(args.acc_sg_in, args.acc_sg_an) and args.acc_sg_in or nil args.acc_pl = args.acc_pl or ut.equals(args.acc_pl_in, args.acc_pl_an) and args.acc_pl_in or nil end end -- Generate a string to substitute into a particular form in a Wiki-markup -- table. FORMS is the list of forms, generated by concat_word_forms(). -- OLD is true if we're dealing with a pre-reform declension (in this case, -- the page we link to has е in place of ё, for reasons I'm not completely -- sure of). LEMMA is true is we're formatting the entry for use in displaying -- the lemma in the declension table title. In this case, we don't include -- the translit, and remove monosyllabic accents from the Cyrillic (but not -- in multiword expressions). local function show_form(forms, old, is_lemma, accel_form, lemma_forms) local russianvals = {} local latinvals = {} local lemmavals = {} -- Accumulate separately the Russian and transliteration into -- RUSSIANVALS and LATINVALS, then concatenate each down below. -- However, if LEMMA, we put each transliteration directly -- after the corresponding Russian, in parens, and put the results -- in LEMMAVALS, which get concatenated below. (This is used in the -- title of the declension table.) (Actually, currently we don't -- include the translit in the declension table title.) local lemmaru, lemmatr if accel_form and lemma_forms then local lemma_form = lemma_forms[1] if lemma_form[1] ~= "-" then lemmaru, lemmatr = lemma_form[1], lemma_form[2] lemmaru, _ = m_table_tools.separate_notes(lemmaru) if lemmatr then lemmatr, _ = m_table_tools.separate_notes(lemmatr) end end end local is_missing = false for _, form in ipairs(forms) do local ru, tr = form[1], form[2] local ruentry, runotes = m_table_tools.separate_notes(ru) local trentry, trnotes if tr then trentry, trnotes = m_table_tools.separate_notes(tr) trnotes = rsub(trnotes, HYPMARKER, "") end if is_lemma and com.is_monosyllabic(ruentry) then ruentry = com.remove_accents(ruentry) if trentry then trentry = com.remove_accents(trentry) end end local accel = lemmaru and {form = accel_form, translit = tr, lemma = lemmaru, lemma_translit = lemmatr} or nil local ishyp = rfind(runotes, HYPMARKER) if ishyp then runotes = rsub(runotes, HYPMARKER, "") end runotes = m_table_tools.superscript_notes(runotes) if trnotes then trnotes = m_table_tools.superscript_notes(trnotes) end local ruspan, trspan if ruentry == "-" and #forms == 1 then ruspan = "&mdash;" is_missing = true elseif ishyp then -- no accelerator for hypothetical forms ruspan = m_links.full_link({lang = lang, term = nil, alt = ruentry, tr = "-"}, "hypothetical") elseif old then ruspan = m_links.full_link({lang = lang, term = com.remove_jo(ruentry), alt = not ruentry:find("[[", 1, true) and ruentry, tr = "-", accel = accel}) else ruspan = m_links.full_link({lang = lang, term = ruentry, tr = "-", accel = accel}) end ruspan = ruspan .. runotes if not trentry then trentry = nom.translit_no_links(ruentry) end if not trnotes then trnotes = nom.translit_no_links(runotes) end trspan = m_links.remove_links(trentry) if ishyp then trspan = scriptutils.tag_text(trspan, lang, Latn, "hypothetical") end trspan = scriptutils.tag_translit(trspan .. trnotes, lang, "default", ' style="color: #888"') if is_lemma then -- insert_if_not(lemmavals, ruspan .. " (" .. trspan .. ")") insert_if_not(lemmavals, ruspan) else insert_if_not(russianvals, ruspan) insert_if_not(latinvals, trspan) end end if is_lemma then return table.concat(lemmavals, ", ") else local russian_span = table.concat(russianvals, ", ") if is_missing then return russian_span else local latin_span = table.concat(latinvals, ", ") return russian_span .. "<br />" .. latin_span end end end -- Subfunction of concat_word_forms(), used to implement recursively -- generating all combinations of elements from WORD_FORMS (a list, one -- element per word, of a list of the forms for a word, each of which is a -- two-element list of {RUSSIAN, TR}) and TRAILING_FORMS (a list of forms, the -- accumulated suffixes for trailing words so far in the recursion process, -- again where each form is a two-element list {RUSSIAN, TR}). Each time we -- recur we take the last FORMS item off of WORD_FORMS and to each form in -- FORMS we add all elements in TRAILING_FORMS, passing the newly generated -- list of items down the next recursion level with the shorter WORD_FORMS. -- We end up returning a list of concatenated forms, where each list item -- is a two-element list {RUSSIAN, TR}. local function concat_word_forms_1(word_forms, trailing_forms) if #word_forms == 0 then local retforms = {} for _, form in ipairs(trailing_forms) do local ru, tr = form[1], form[2] -- Remove <insa> and <insb> markers; they've served their purpose. ru = rsub(ru, "<ins[ab]>", "") tr = tr and rsub(tr, "<ins[ab]>", "") table.insert(retforms, {ru, tr}) end return retforms else local last_form_info = table.remove(word_forms) local last_forms, joiner = last_form_info[1], last_form_info[2] local new_trailing_forms = {} for _, form in ipairs(last_forms) do for _, trailing_form in ipairs(trailing_forms) do -- If form to prepend is empty, don't add the joiner; this -- is principally used in overall overrides, where we stuff -- the entire override into the last word local full_form = form[1] == "" and trailing_form or nom.concat_paired_russian_tr(form, nom.concat_paired_russian_tr(joiner, trailing_form), "movenotes") if rfind(full_form[1], "<insa>") and rfind(full_form[1], "<insb>") then -- REJECT! So we don't get mixtures of the two feminine -- instrumental singular endings. else table.insert(new_trailing_forms, full_form) end end end return concat_word_forms_1(word_forms, new_trailing_forms) end end -- Generate a list of overall forms by concatenating the per-word forms. -- PER_WORD_INFO comes from args.per_word_info and is a list of -- WORD_INFO items, one per word, each of which a two element list of -- WORD_FORMS (a table listing the forms for each case) and JOINER (a string). -- We loop over all possible combinations of elements from each word's list -- of forms for the given case; this requires recursion. concat_word_forms = function(per_word_info, case) local word_forms = {} -- Gather the appropriate word forms. We have to recreate this anew -- because it will be destructively modified by concat_word_forms_1(). for _, word_info in ipairs(per_word_info) do table.insert(word_forms, {word_info[1][case], word_info[2]}) end -- We need to start the recursion with the second parameter containing -- one blank element rather than no elements, otherwise no elements -- will be propagated to the next recursion level. return concat_word_forms_1(word_forms, {{""}}) end local accel_forms = { nom_sg = "主格|s", nom_sg_linked = "主格|s", nom_pl = "主格|p", nom_pl_linked = "主格|p", gen_sg = "生格|s", gen_pl = "生格|p", dat_sg = "与格|s", dat_pl = "与格|p", acc_sg_an = "対格|s", acc_pl_an = "対格|p", acc_sg_in = "対格|s", acc_pl_in = "対格|p", ins_sg = "造格|s", ins_pl = "造格|p", pre_sg = "前置格|s", pre_pl = "前置格|p", loc = "処格|s", loc_pl = "処格|p", voc = "呼格|s", voc_pl = "呼格|p", par = "par|s", par_pl = "par|p", } -- Make the table make_table = function(args) local data = {} data.after_title = " " .. args.heading data.number = args.nonumber and "" or numbers[args.n] local lemma_forms = args[args.n == "p" and "nom_pl" or "nom_sg"] data.lemma = show_form(args[args.n == "p" and "nom_pl_linked" or "nom_sg_linked"], args.old, "lemma", nil, nil) data.title = args.title or strutils.format(args.old and old_title_temp or title_temp, data) local sg_an_in_equal = ut.equals(args.acc_sg_an, args.acc_sg_in) local pl_an_in_equal = ut.equals(args.acc_pl_an, args.acc_pl_in) for _, case in ipairs(displayable_cases) do local accel_form = accel_forms[case] if not accel_form then error("Something wrong, can't find accelerator form for " .. case) end if (sg_an_in_equal and (case == "acc_sg_an" or case == "acc_sg_in") or pl_an_in_equal and (case == "acc_pl_an" or case == "acc_pl_in")) then accel_form = rsub(accel_form, "^[ai]n|", "") end if args.n == "p" then accel_form = rsub(accel_form, "|p$", "") end data[case] = show_form(args[case], args.old, false, accel_form, lemma_forms) end local temp = nil if args.n == "s" then data.nom_x = data.nom_sg data.gen_x = data.gen_sg data.dat_x = data.dat_sg data.acc_x_an = data.acc_sg_an data.acc_x_in = data.acc_sg_in data.ins_x = data.ins_sg data.pre_x = data.pre_sg if sg_an_in_equal then temp = "half" else temp = "half_a" end elseif args.n == "p" then data.nom_x = data.nom_pl data.gen_x = data.gen_pl data.dat_x = data.dat_pl data.acc_x_an = data.acc_pl_an data.acc_x_in = data.acc_pl_in data.ins_x = data.ins_pl data.pre_x = data.pre_pl data.par = nil data.loc = nil data.voc = nil if pl_an_in_equal then temp = "half" else temp = "half_a" end else if pl_an_in_equal then temp = "full" elseif sg_an_in_equal then temp = "full_af" else temp = "full_a" end end data.par_clause = args.any_overridden.par and strutils.format(partitive, data) or "" data.loc_clause = args.any_overridden.loc and strutils.format(locative, data) or "" data.voc_clause = args.any_overridden.voc and strutils.format(vocative, data) or "" local notes = get_arg_chain(args, "notes", "notes") local all_notes = {} for _, note in ipairs(args.internal_notes) do -- Superscript footnote marker at beginning of note, similarly to what's -- done at end of forms. local symbol, entry = m_table_tools.get_initial_notes(note) table.insert(all_notes, symbol .. entry) end for _, note in ipairs(notes) do -- Here too. local symbol, entry = m_table_tools.get_initial_notes(note) table.insert(all_notes, symbol .. entry) end data.notes = table.concat(all_notes, "<br />") data.notes_clause = data.notes ~= "" and strutils.format(notes_template, data) or "" return strutils.format(templates[temp], data) end partitive = [===[ ! style="background:#eff7ff; color:#000000;" | 分格 | {par} |-]===] locative = [===[ ! style="background:#eff7ff; color:#000000;" | 処格 | {loc} |-]===] vocative = [===[ ! style="background:#eff7ff; color:#000000;" | 呼格 | {voc} |-]===] notes_template = [===[ <div style="width:100%;text-align:left;background:#d9ebff;color:#000000;"> <div style="display:inline-block;text-align:left;padding-left:1em;padding-right:1em"> {notes} </div></div> ]===] local function template_prelude(min_width) min_width = min_width or "70" return rsub([===[ <div> <div class="NavFrame" style="display:inline-block; min-width:MINWIDTHem"> <div class="NavHead" style="background:#eff7ff; color:#000000;">{title}<span style="font-weight:normal;">{after_title}</span>&nbsp;</div> <div class="NavContent"> {\op}| style="background:#F9F9F9; color:#000000; text-align:center; min-width:MINWIDTHem; width:100%;" class="inflection-table" |- ]===], "MINWIDTH", min_width) end local function template_postlude() return [===[|-{par_clause}{loc_clause}{voc_clause} |{\cl}{notes_clause}</div></div></div>]===] end templates["full"] = template_prelude("45") .. [===[ ! style="width:10em;background:#d9ebff; color:#000000;" | ! style="background:#d9ebff; color:#000000;" | 単数 ! style="background:#d9ebff; color:#000000;" | 複数 |- ! style="background:#eff7ff; color:#000000;" | 主格 | {nom_sg} | {nom_pl} |- ! style="background:#eff7ff; color:#000000;" | 生格 | {gen_sg} | {gen_pl} |- ! style="background:#eff7ff; color:#000000;" | 与格 | {dat_sg} | {dat_pl} |- ! style="background:#eff7ff; color:#000000;" | 対格 | {acc_sg_an} | {acc_pl_an} |- ! style="background:#eff7ff; color:#000000;" | 造格 | {ins_sg} | {ins_pl} |- ! style="background:#eff7ff; color:#000000;" | 前置格 | {pre_sg} | {pre_pl} ]===] .. template_postlude() templates["full_a"] = template_prelude("50") .. [===[ ! style="width:15em;background:#d9ebff; color:#000000;" | ! style="background:#d9ebff; color:#000000;" | 単数 ! style="background:#d9ebff; color:#000000;" | 複数 |- ! style="background:#eff7ff; color:#000000;" | 主格 | {nom_sg} | {nom_pl} |- ! style="background:#eff7ff; color:#000000;" | 生格 | {gen_sg} | {gen_pl} |- ! style="background:#eff7ff; color:#000000;" | 与格 | {dat_sg} | {dat_pl} |- ! style="background:#eff7ff; color:#000000;" rowspan="2" | 対格 <span style="padding-left:1em;display:inline-block;vertical-align:middle">活動体<br/><br/>不活動体</span> | {acc_sg_an} | {acc_pl_an} |- | {acc_sg_in} | {acc_pl_in} |- ! style="background:#eff7ff; color:#000000;" | 造格 | {ins_sg} | {ins_pl} |- ! style="background:#eff7ff; color:#000000;" | 前置格 | {pre_sg} | {pre_pl} ]===] .. template_postlude() templates["full_af"] = template_prelude("50") .. [===[ ! style="width:15em;background:#d9ebff; color:#000000;" | ! style="background:#d9ebff; color:#000000;" | 単数 ! style="background:#d9ebff; color:#000000;" | 複数 |- ! style="background:#eff7ff; color:#000000;" | 主格 | {nom_sg} | {nom_pl} |- ! style="background:#eff7ff; color:#000000;" | 生格 | {gen_sg} | {gen_pl} |- ! style="background:#eff7ff; color:#000000;" | 与格 | {dat_sg} | {dat_pl} |- ! style="background:#eff7ff; color:#000000;" rowspan="2" | 対格 <span style="padding-left:1em;display:inline-block;vertical-align:middle">活動体<br/><br/>不活動体</span> | rowspan="2" | {acc_sg_an} | {acc_pl_an} |- | {acc_pl_in} |- ! style="background:#eff7ff; color:#000000;" | 造格 | {ins_sg} | {ins_pl} |- ! style="background:#eff7ff; color:#000000;" | 前置格 | {pre_sg} | {pre_pl} ]===] .. template_postlude() templates["half"] = template_prelude("30") .. [===[ ! style="width:10em;background:#d9ebff; color:#000000;" | ! style="background:#d9ebff; color:#000000;" | {number} |- ! style="background:#eff7ff; color:#000000;" | 主格 | {nom_x} |- ! style="background:#eff7ff; color:#000000;" | 生格 | {gen_x} |- ! style="background:#eff7ff; color:#000000;" | 与格 | {dat_x} |- ! style="background:#eff7ff; color:#000000;" | 対格 | {acc_x_an} |- ! style="background:#eff7ff; color:#000000;" | 造格 | {ins_x} |- ! style="background:#eff7ff; color:#000000;" | 前置格 | {pre_x} ]===] .. template_postlude() templates["half_a"] = template_prelude("35") .. [===[ ! style="width:15em;background:#d9ebff;color:#000000;" | ! style="background:#d9ebff; color:#000000;" | {number} |- ! style="background:#eff7ff; color:#000000;" | 主格 | {nom_x} |- ! style="background:#eff7ff; color:#000000;" | 生格 | {gen_x} |- ! style="background:#eff7ff; color:#000000;" | 与格 | {dat_x} |- ! style="background:#eff7ff; color:#000000;" rowspan="2" | 対格 <span style="padding-left:1em;display:inline-block;vertical-align:middle">活動体<br/><br/>不活動体</span> | {acc_x_an} |- | {acc_x_in} |- ! style="background:#eff7ff; color:#000000;" | 造格 | {ins_x} |- ! style="background:#eff7ff; color:#000000;" | 前置格 | {pre_x} ]===] .. template_postlude() return export -- For Vim, so we get 4-space tabs -- vim: set ts=4 sw=4 noet: 9ie603dhnebssj645e7vw9y7d87a6h2 preaches 0 136591 2340595 2243237 2026-09-01T15:37:32Z M-30722 1202 2340595 wikitext text/x-wiki =={{L|en}}== ==={{noun}}=== {{head|en|plural}} #{{l|en|preach}}の複数形。 ==={{verb}}=== {{head|en|verb form}} #{{l|en|preach}}の現在第三人称単数形。 ==={{anag}}=== * {{anagrams|en|a=aceehprs|Peachers|peachers|pearches|sea perch|seaperch}} gbh2hj0jjm6li4ul785pqv3ctybwkmn preaching 0 136592 2340587 2243238 2026-09-01T15:26:47Z M-30722 1202 [[en:preaching]]より 2340587 wikitext text/x-wiki =={{L|en}}== ==={{etym}}=== {{etyl|enm|en}} {{m|enm|prechynge}} ==={{pron}}=== * {{IPA|lang=en|/ˈpɹiːt͡ʃɪŋ/}} * {{音声|en|en-us-preaching.ogg|a=US}} * {{rhymes|lang=en|iːtʃɪŋ|s=2}} ==={{verb}}=== {{head|en|verb form}} #{{l|en|preach}}の動名詞又は現在分詞。 ==={{noun}}=== {{en-noun|~}} #{{タグ|en|宗教}}[[説教]]、[[説法]]。 ===={{drv}}==== * {{l|en|preaching tabs}} n0ra86n3e4ubvpvngwgh7j3zaw2jz5x preached 0 136593 2340592 2243239 2026-09-01T15:34:23Z M-30722 1202 2340592 wikitext text/x-wiki =={{L|en}}== ==={{pron}}=== * {{IPA|lang=en|/priːt͡ʃt/}} * {{rhymes|lang=en|iːtʃt|s=1}} * {{hyph|en|preached}} ==={{verb}}=== {{head|en|verb form}} #{{l|en|preach}}の過去形・過去分詞。 56pbzyq7gdv912fzmo4vavo1vg57rco 付録:ゲルマン祖語/skōhaz 100 154473 2341186 2312528 2026-09-02T11:47:56Z Kuroco2k 84207 2341186 wikitext text/x-wiki {{DEFAULTSORT:skohaz}} =={{L|gem-pro}}== ==={{etym}}=== {{uncertain|gem-pro}}。{{m|gem-pro|*skehaną}} < {{etyl|ine-pro|-}} {{m|ine-pro|*skek-}}とする説がある<ref name=EDPG>{{R:gem:EDPG|skōha-|446}}</ref>。 ==={{pron}}=== *{{IPA|lang=gem-pro|/ˈskɔː.xɑz/}} ==={{noun}}=== {{gem-noun|g=m}}<ref name=EDPG /> #{{ふりがな|靴|くつ}}。 #:{{syn|gem-pro|*hrifilingaz}} #:{{cot|gem-pro|*sukkaz}} ===={{decl}}==== {{gem-decl-noun-a-m|skōh}} ===={{drv}}==== *{{l|gem-pro|*gaskōhiją}} *{{l|gem-pro|*handuskōhaz}} *{{l|gem-pro|*skōhōną}} ===={{desc}}==== *{{desc|got|𐍃𐌺𐍉𐌷𐍃}} *{{desctree|non|skór}} *{{desctree|gmw-pro|*skōh}} ===脚注=== {{Reflist}} ri2oor2l052mn70exxyiu2m2w4faxjd ちょうど 0 158303 2340817 1925739 2026-09-02T04:21:54Z うーむ 129171 /* 日本語 */ 2340817 wikitext text/x-wiki {{kana-DEFAULTSORT}} =={{L|ja}}== ==={{pron}}=== {{ja-pron|acc=0}} {{ja-accent-common|region=京阪|n|ちょ|ー|ど}} ==={{adverb}}=== {{ja-adv}}【[[丁度]]、[[恰度]](当て字)】 #[[過不足]]なく[[ぴたり]]と[[一致]]する様。 #*[[直径]]を測ったら'''丁度'''10[[センチメートル]]だった。 #[[まさに|正に]]その[[とき|時]]。 #*[[時計]]を見たら'''丁度'''0時だった。 #ある物事によく[[にる|似]]ている様。[[まるで]]。 #*この[[ウェブサイト]]の[[しくみ|仕組み]]は'''丁度'''[[ウィキペディア]]のようだ。 ==={{noun}}=== {{ja-noun}}【[[丁]][[度]](当て字)】 #過不足なくぴたりと一致すること。まさにその時であること。 #*'''ちょうど'''の長さ。'''ちょうど'''の時間。 ==={{suffix}}=== {{head|ja|suffix}}【[[丁]][[度]](当て字)】 #過不足なくぴたりと一致すること。まさにその時であること。 #*八時'''ちょうど'''に開いた。 ==={{homonym}}=== {{head|ja|同音異義|sort=ちようと ちょうど}} *【[[調度]]】[[日常]][[つかう|使う]][[てまわり|手回り]]の[[道具]]。 21xu5wqlyj2viuwbox7x0wo7ja1hh26 重要文化財 0 171352 2340616 1926348 2026-09-01T16:06:42Z Jiba1219 100610 2340616 wikitext text/x-wiki {{kana-DEFAULTSORT|じゅうようぶんかざい}} =={{L|ja}}== {{wikipedia}} ==={{pron}}=== {{ja-pron|じゅうようぶんかざい|acc=7}} ==={{noun}}=== {{ja-noun|じゅうようぶんかざい|head=[[重要]] [[文化財]]}} #{{w|文部科学大臣}}が[[指定]]した、[[重要]]な[[有形文化財]]。 ===={{rel}}==== *[[国宝]] *[[重要無形文化財]] h0hteol1wnfm7uiqcklrrjhiloa1pjk niebezpieczeństwo 0 173658 2340825 1549583 2026-09-02T05:38:11Z Kuroco2k 84207 2340825 wikitext text/x-wiki {{DEFAULTSORT:niebezpieczenstwo niebezpieczeństwo}} =={{L|pl}}== {{wikipedia|lang=pl}} ==={{etym}}=== {{affix|pl|nie-|bezpieczeństwo}} ないしは {{affix|pl|nie-|bezpieczeństwo}} ==={{pron}}=== {{pl-pr|a=Pl-niebezpieczeństwo.ogg}} ==={{noun}}=== {{pl-noun|n}} #[[危険]]。 #:{{syn|pl|zagrożenie}} #:{{ant|pl|bezpieczeństwo}} ===={{decl}}==== {{pl-decl-noun|niebezpieczeństwo|niebezpieczeństwa|niebezpieczeństwa|niebezpieczeństw|niebezpieczeństwu|niebezpieczeństwom|niebezpieczeństwo|niebezpieczeństwa|niebezpieczeństwem|niebezpieczeństwami|niebezpieczeństwie|niebezpieczeństwach|niebezpieczeństwo|niebezpieczeństwa}} ===={{seealso}}==== *{{l|pl|ryzyko}} e45lh5mdfbe96ylwb9c7q5ofnudwhje モジュール:ru-adjective 828 183118 2340901 1402319 2026-09-02T08:43:38Z Kuroco2k 84207 2340901 Scribunto text/plain --[=[ This module contains functions for creating inflection tables for Russian adjectives. Author: Benwing, rewritten from early version by Wikitiki89 Arguments: 1: lemma; nom sg, or just the stem if an explicit declension type is given in arg 2 2: declension type (usually omitted to autodetect based on the lemma), along with any short accent type and optional irregular short stem; see below. CASE_NUMGEN: Override a given form; see abbreviations below suffix: any suffix to attach unchanged to the end of each form notes: Notes to add to the end of the table title: Override the title shorttail: Footnote (e.g. *, 1, 2, etc.) to add to short forms if there's more than one; automatically superscripted shorttailall: Same as shorttail= but applies to all short forms even if there's only one CASE_NUMGEN_tail: Like shorttailall but only for a specific form nofull: Short forms only Case abbreviations: nom: nominative gen: genitive dat: dative acc: accusative ins: instrumental pre: prepositional short: short form Number/gender abbreviations: m: masculine singular n: neuter singular f: feminine singular p: plural mp: masculine plural (old-style and special numeral tables only) fp: masculine plural (special numeral tables only) Animacy abbreviations: an: animate in: inanimate Declension-type argument (arg 2): Form is DECLSPEC or DECLSPEC,DECLSPEC,... where DECLSPEC is one of the following: DECLTYPE:SHORTACCENT:SHORTSTEM DECLTYPE:SHORTACCENT DECLTYPE SHORTACCENT:SHORTSTEM SHORTACCENT (blank) DECLTYPE should normally be omitted, and the declension autodetected from the ending; or it should be ь, to indicate that an adjective in -ий is of the possessive variety with an extra -ь- in most of the endings. Alternatively, it can be an explicit declension type, in which case the lemma field needs to be replaced with the bare stem; the following are the possibilities: ый ий ой ьий short mixed manual (new-style) ый ій ьій short stressed-short mixed proper stressed-proper ъ-short ъ-stressed-short ъ-mixed ъ-proper ъ-stressed-proper manual (old-style, where ъ-* is a synonym for *, for any *) SHORTACCENT is one of a a' b b' c c' c'' to auto-generate the short forms with the specified accent pattern (following Zaliznyak); if omitted, no short forms will be auto-generated. SHORTACCENT can contain a * in it for "reducible" adjectives, where the short masculine singular has an epenthetic vowel in the final syllable. It can also contain (1) or (2) to indicate special cases. Both are used in conjunction with adjectives in -нный/-нний. Special case (1) causes the short masculine singular to end in -н instead of -нн; special case (2) causes all short forms to end this way. SHORTSTEM, if present, is used as the short stem to base the short forms off of, instead of the normal adjective long stem (possibly with a final-syllable accent added in the case of declension type -о́й). TODO: 1. Figure out what the symbol X-inside-square (⊠) means, which seems to go with all adjectives in -о́й with multi-syllabic stems. It may mean that the masculine singular short form is missing. If this indeed a regular thing, we need to implement it (and if it's regular but means something else, we need to implement that, too). Also figure out what the other signs on pages 68-76 etc. mean: -, X, ~, П₂, Р₂, diamond (♢), triangle (△; might simply mean a misc. irregularity; explained on p. 61). 2. Mark irregular overridden forms with △ (esp. appropriate for short forms). 3. Should non-reducible adjectives in -нный and -нний default to special case (1)? 4. In the case of a non-dereducible short masc sing of stress type b, we don't currently move the stress to the last syllable. Should we? 5. FIXME: In decline(), we used to default acc_n to nom_n. Now we do that in handle_forms_and_overrides(). Verify that this is more correct. 6. FIXME: Allow multiple heads, both to handle cases where two manual translits exist (or rather, one automatic and one manual), and cases where two stresses are possible, e.g. мину́вший or ми́нувший. 7. FIXME: Add code to generate the regular comparative. The rules are as follows: If the stem doesn't end in к г х, add -ee with no stress change if the short form is type a, else add -е́е (including type a'). If the stem ends in к г х, turn the last consonant into ч ж ш, add -е, and place the stress on the syllable preceding the ending. (E.g. дорого́й -> доро́же) ]=]-- local m_utilities = require("モジュール:utilities") local ut = require("モジュール:utils") local m_links = require("モジュール:links") local com = require("モジュール:ru-common") local nom = require("モジュール:ru-nominal") local strutils = require("モジュール:string utilities") local m_table_tools = require("モジュール:table tools") local m_debug = require("モジュール:debug") local export = {} local lang = require("モジュール:languages").getByCode("ru") ----------------------------- Utility functions ------------------------ local u = mw.ustring.char local rfind = mw.ustring.find local rsubn = mw.ustring.gsub local rmatch = mw.ustring.match local rsplit = mw.text.split local ulower = mw.ustring.lower local usub = mw.ustring.sub -- 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 -- Insert a single form (consisting of {RUSSIAN, TR}) or a list of such -- forms into an existing list of such forms, adding NOTESYM (a string or nil) -- to the new forms if not nil. Return whether an insertion was performed. local function insert_forms_into_existing_forms(existing, newforms, notesym) if type(newforms) ~= "table" then newforms = {newforms} end local inserted = false for _, item in ipairs(newforms) do if not ut.contains(existing, item) then if notesym then item = nom.concat_paired_russian_tr(item, {notesym}) end table.insert(existing, item) inserted = true end end return inserted end local function track(page) m_debug.track("ru-adjective/" .. page) return true end -- Fancy version of ine() (if-not-empty). Converts empty string to nil, -- but also strips leading/trailing space and then single or double quotes, -- to allow for embedded spaces. local function ine(arg) if not arg then return nil end arg = rsub(arg, "^%s*(.-)%s*$", "%1") if arg == "" then return nil end local inside_quotes = rmatch(arg, '^"(.*)"$') if inside_quotes then return inside_quotes end inside_quotes = rmatch(arg, "^'(.*)'$") if inside_quotes then return inside_quotes end return arg end -- Clone parent's args while also assigning nil to empty strings. local function clone_args(frame) local args = {} for pname, param in pairs(frame:getParent().args) do args[pname] = ine(param) end return args end -------------------- Global declension/case/etc. variables ------------------- -- 'enable_categories' is a special hack for testing, which disables all -- category insertion if false. Delete this as soon as we've verified the -- working of the category code and created all the necessary categories. local enable_categories = true local declensions = {} local declensions_old = {} local internal_notes_table = {} local internal_notes_table_old = {} local internal_notes_genders = {} local internal_notes_genders_old = {} local short_declensions = {} local short_declensions_old = {} -- Formerly used for the ой-rare type, which has been removed; but keep -- the code around in case we need it later. local short_internal_notes_table = {} local short_internal_notes_table_old = {} local short_stress_patterns = {} local long_cases = { "nom_m", "nom_n", "nom_f", "nom_p", "gen_m", "gen_f", "gen_p", "dat_m", "dat_f", "dat_p", "acc_m_an", "acc_m_in", "acc_p_an", "acc_p_in", "acc_f", "acc_n", "ins_m", "ins_f", "ins_p", "pre_m", "pre_f", "pre_p", -- extra old long cases "nom_mp", "acc_mp_an", "acc_mp_in", -- extra dva cases "nom_fp", "acc_fp_an", "acc_fp_in", -- extra oba cases "gen_mp", "gen_fp", "dat_mp", "dat_fp", "ins_mp", "ins_fp", "pre_mp", "pre_fp", -- extra cases for compounds of два "acc_mp", "acc_fp", } -- Short cases and corresponding numbered arguments local short_cases = { "short_m", "short_n", "short_f", "short_p" } -- Create master list of all possible cases (actually case/number/gender pairs) local all_cases = mw.clone(long_cases) for _, case in ipairs(short_cases) do ut.insert_if_not(all_cases, case) end -- If enabled, compare this module with new version of module to make -- sure all declensions are the same. local test_new_ru_adjective_module = false -- Forward references to functions local tracking_code local categorize local detect_stem_and_accent_type local construct_bare_and_short_stem local decline local canonicalize_override local handle_forms_and_overrides local decline_short local make_table -------------------------------------------------------------------------- -- Main code -- -------------------------------------------------------------------------- -- Implementation of main entry point function export.do_generate_forms(args, old, manual) local orig_args if test_new_ru_adjective_module then orig_args = mw.clone(args) end if args[3] or args[4] or args[5] or args[6] then error("Numbered short forms no longer supported") end if args.shorttailall then track("shorttailall") end local SUBPAGENAME = mw.title.getCurrentTitle().subpageText args.forms = {} args.categories = {} old = old or args.old args.old = old args.suffix = nom.split_russian_tr(args.suffix or "", "dopair") args.internal_notes = {} -- Superscript footnote marker at beginning of note, similarly to what's -- done at end of forms. if args.notes then local notes, entry = m_table_tools.get_initial_notes(args.notes) args.notes = notes .. entry end local overall_short_forms_allowed manual = manual or args[2] == "manual" args.manual = manual local decl_types = manual and "$" or args[2] or "" local lemmas = manual and "-" or args[1] or SUBPAGENAME local normal_short_classes, rare_short_classes, dated_short_classes local saw_no_short for _, lemma_and_tr in ipairs(rsplit(lemmas, ",")) do -- reset these for each lemma so we get the short classes of the last -- lemma (doesn't really matter, as they should be the same for all -- lemmas) normal_short_classes = {} rare_short_classes = {} dated_short_classes = {} saw_no_short = false for _, decl_type in ipairs(rsplit(decl_types, ",")) do local lemma, lemmatr = nom.split_russian_tr(lemma_and_tr) -- if lemma ends with -ся, strip it and act as if suffix=ся given -- (or rather, prepend ся to suffix) local active_base = rmatch(lemma, "^(.*)ся$") if active_base then lemma = active_base lemmatr = nom.strip_tr_ending(lemmatr, "ся") args.refl = true args.real_suffix = nom.concat_paired_russian_tr({"ся"}, args.suffix) else args.refl = false args.real_suffix = args.suffix end -- Auto-detect actual decl type, and get short accent and overriding -- short stem, if specified. local stem, stemtr, short_accent, short_stem, short_stemtr, datedrare stem, stemtr, decl_type, short_accent, short_stem, datedrare = detect_stem_and_accent_type(lemma, lemmatr, decl_type, args) if rfind(decl_type, "^[іи]й$") and rfind(stem, "[" .. com.velar .. com.sib .. "]$") then decl_type = "ый" end if datedrare == "none" then saw_no_short = true end local short_title if short_accent then short_title = short_accent elseif ut.contains({"proper", "stressed-proper"}, decl_type) then short_title = "surname" elseif ut.contains({"ьій", "ьий", "short", "stressed-short", "mixed"}, decl_type) then short_title = "possessive" end if short_title then if datedrare == "dated" then ut.insert_if_not(dated_short_classes, short_title) elseif datedrare == "rare" then ut.insert_if_not(rare_short_classes, short_title) else ut.insert_if_not(normal_short_classes, short_title) end end if short_stem then short_stem, short_stemtr = nom.split_russian_tr(short_stem) end stem, args.allow_unaccented = rsubb(stem, "^%*", "") if args.allow_unaccented then track("allow-unaccented") end -- Treat suffixes without an accent, and suffixes with an accent on -- the initial hyphen, as if they were preceded with a *, which -- overrides all the logic that normally (a) normalizes the accent, -- and (b) complains about multisyllabic words without an accent. -- Don't do this if lemma is just -, which is used specially in -- manual declension tables. if lemma ~= "-" and (rfind(lemma, "^%-́") or (com.is_unstressed(lemma) and rfind(lemma, "^%-"))) then args.allow_unaccented = true end if not args.allow_unaccented and com.needs_accents(lemma) then -- Technically we don't need accents in -ой adjectives (which are -- always ending-stressed) and in -ый adjectives with a monosyllabic -- stem, such as полный (which are always stem-stressed), but it's -- better to enforce accents in all multisyllabic words, for -- consistency with nouns and verbs. Note that we still don't -- require an accent in monosyllabic adjectives such as злой. error("Lemma must have an accent in it: " .. lemma) end -- Set stem and unstressed version. Also construct end-accented version -- of stem if unstressed; needed for short forms of adjectives of -- type -о́й. We do this here before doing the dereduction -- transformation so that we don't end up stressing an unstressed -- epenthetic vowel, and so that the previous syllable instead ends -- up stressed (in type -о́й adjectives the stem won't have any stress). -- Note that the closest equivalent in nouns is handled in -- attach_unstressed(), which puts the stress onto the final syllable -- if the stress pattern calls for ending stress in the genitive -- plural. This works there because -- (1) It won't stress an unstressed epenthetic vowel because the -- cases where the epenthetic vowel is unstressed are precisely -- those with stem stress in the gen pl, not ending stress; -- (2) There isn't a need to stress the syllable preceding an -- unstressed epenthetic vowel because that syllable should -- already have stress, since we require that the base stem form -- (parameter 2) have stress in it whenever any case form has -- stem stress. This isn't the case here in type -о́й adjectives. -- NOTE: FIXME: I can't actually quote any forms from Zaliznyak -- (at least not from pages 58-60, where this is discussed) that -- seem to require last-stem-syllable-stress, i.e. where the stem is -- multisyllabic. The two examples given are both unusual: дорого́й -- has stress on the initial syllable до́рог etc. and these forms are -- marked with a triangle (indicating an apparent irregularity); and -- голубо́й seems not to have a masculine singular short form, and it's -- accent pattern b, so the remaining forms are all ending-stressed. -- In fact it's possible that these examples don't exist: It appears -- that all the multisyllabic adjectives in -о́й listed in the -- dictionary have a marking next to them consisting of an X inside of -- a square, which is glossed p. 69 to something I don't understand, -- but may be saying that the masculine singular short form is -- missing. If this is regular, we need to implement it. args.stem, args.stemtr = stem, stemtr args.ustem, args.ustemtr = com.make_unstressed_once(stem, stemtr) local accented_stem, accented_stemtr = stem, stemtr if not args.allow_unaccented then if accented_stemtr and com.is_unstressed(accented_stem) ~= com.is_unstressed(accented_stemtr) then error("語幹 " .. accented_stem .. " と転写 " .. accented_stemtr .. " は同じアクセントパターンを持たなければなりません。") end if com.is_unstressed(accented_stem) then accented_stem, accented_stemtr = com.make_ending_stressed(accented_stem, accented_stemtr) end end local short_forms_allowed = manual and true or decl_type == "ый" or decl_type == "ой" or decl_type == (old and "ій" or "ий") overall_short_forms_allowed = overall_short_forms_allowed or short_forms_allowed if not short_forms_allowed then -- FIXME: We might want to allow this in case we have a -- reducible short, mixed or proper possessive adjective. But -- in that case we need to reduce rather than dereduce to get -- the stem. if short_accent or short_stem then error("Cannot specify short accent or short stem with declension type " .. decl_type .. ", as short forms aren't allowed") end if args.short_m or args.short_f or args.short_n or args.short_p then error("Cannot specify explicit short forms with declension type " .. decl_type .. ", as short forms aren't allowed") end end local orig_short_accent = short_accent local short_decl_type short_accent, short_decl_type = construct_bare_and_short_stem(args, short_accent, short_stem, short_stemtr, accented_stem, accented_stemtr, old, decl_type) local decls = old and declensions_old or declensions local short_decls = old and short_declensions_old or short_declensions if not decls[decl_type] then error("Unrecognized declension type " .. decl_type) end if short_accent == "" then error("Short accent type cannot be blank, should be omitted or given") end if short_accent and not short_stress_patterns[short_accent] then error("Unrecognized short accent type " .. short_accent) end tracking_code(decl_type, args, orig_short_accent, short_accent, short_stem, datedrare, short_forms_allowed) if not manual and enable_categories then categorize(decl_type, args, orig_short_accent, short_accent, short_stem) end decline(args, decls[decl_type], ut.contains({"ой", "stressed-short", "stressed-proper"}, decl_type)) if short_forms_allowed and short_accent then decline_short(args, short_decls[short_decl_type], short_stress_patterns[short_accent], datedrare) end local intable = old and internal_notes_table_old or internal_notes_table local shortintab = old and short_internal_notes_table_old or short_internal_notes_table local internal_note = intable[decl_type] or shortintab[short_decl_type] if internal_note then ut.insert_if_not(args.internal_notes, internal_note) end end end local short_class_titles = {} local function make_short_class_title(short_classes, datedrare) local sct = table.concat(short_classes, ",") -- short class title if sct == "" then return end if not ut.contains({"surname", "possessive"}, sct) then -- Convert e.g. a*,a(1) into a*[(1)], either finally or followed by -- comma. sct = rsub(sct, "([abc]'*)%*,%1%*?(%([12]%))$", "%1*[%2]") sct = rsub(sct, "([abc]'*)%*,%1%*?(%([12]%)),", "%1*[%2],") -- Same for a(1),a*. sct = rsub(sct, "([abc]'*)%*?(%([12]%)),%1%*$", "%1*[%2]") sct = rsub(sct, "([abc]'*)%*?(%([12]%)),%1%*,", "%1*[%2],") -- Convert (1), (2) to ①, ②. sct = rsub(sct, "%(1%)", "①") sct = rsub(sct, "%(2%)", "②") -- Add a * before ①, ②, consistent with Zaliznyak. sct = rsub(sct, "([abc]'*)([①②])", "%1*%2") -- Avoid c'' turning into c with italics. sct = rsub(sct, "''", "&#39;&#39;") sct = "short class " .. sct end if datedrare then sct = datedrare .. " " .. sct end table.insert(short_class_titles, sct) end make_short_class_title(normal_short_classes, nil) make_short_class_title(rare_short_classes, "rare") make_short_class_title(dated_short_classes, "dated") if #short_class_titles == 0 then if saw_no_short then args.short_class_title = "短語尾形なし" else args.short_class_title = "不明な短語尾形" end else args.short_class_title = table.concat(short_class_titles, " / ") end handle_forms_and_overrides(args, overall_short_forms_allowed) -- Test code to compare existing module to new one. if test_new_ru_adjective_module then local m_new_ru_adjective = require("モジュール:User:Benwing2/ru-adjective") local newargs = m_new_ru_adjective.do_generate_forms(orig_args, old, manual) local difdecl = false for _, case in ipairs(all_cases) do local arg = args[case] local newarg = newargs[case] if not ut.equals(arg, newarg) then -- Uncomment this to display the particular case and -- differing forms. --error(case .. " " .. (arg and nom.concat_forms(arg) or "nil") .. " || " .. (newarg and nom.concat_forms(newarg) or "nil")) track("different-decl") difdecl = true end break end if not difdecl then track("same-decl") end end return args end -- Implementation of main entry point local function do_show(frame, old, manual) local args = clone_args(frame) local args = export.do_generate_forms(args, old, manual) return make_table(args) .. m_utilities.format_categories(args.categories, lang) end -- The main entry point for modern declension tables. function export.show(frame) return do_show(frame, false) end -- The main entry point for old declension tables. function export.show_old(frame) return do_show(frame, true) end -- The main entry point for manual declension tables. function export.show_manual(frame) return do_show(frame, false, "manual") end -- The main entry point for manual old declension tables. function export.show_manual_old(frame) return do_show(frame, true, "manual") end -- Entry point for use in Module:ru-noun. function export.get_nominal_decl(decl, gender, old) local d = old and declensions_old[decl] or declensions[decl] local n = {} if gender == "m" then n.nom_sg = d.nom_m n.gen_sg = d.gen_m n.dat_sg = d.dat_m n.ins_sg = d.ins_m n.pre_sg = d.pre_m elseif gender == "f" then n.nom_sg = d.nom_f n.gen_sg = d.gen_f n.dat_sg = d.dat_f n.acc_sg = d.acc_f n.ins_sg = d.ins_f n.pre_sg = d.pre_f elseif gender == "n" then n.nom_sg = d.nom_n n.gen_sg = d.gen_m n.dat_sg = d.dat_m n.acc_sg = d.acc_n n.ins_sg = d.ins_m n.pre_sg = d.pre_m else assert(false, "Unrecognized gender: " .. gender) end n.nom_pl = d.nom_p n.gen_pl = d.gen_p n.dat_pl = d.dat_p n.ins_pl = d.ins_p n.pre_pl = d.pre_p if gender == "m" and d.nom_mp then n.nom_pl = d.nom_mp end local intable = old and internal_notes_table_old or internal_notes_table local ingenders = old and internal_notes_genders_old or internal_notes_genders -- FIXME, what if there are multiple internal notes? See comment in -- do_generate_forms(). local internal_notes = ingenders[decl] and ut.contains(ingenders[decl], gender) and intable[decl] return n, internal_notes end local function get_form(forms) local canon_forms = {} for _, form in ipairs(forms) do local ru, tr = form[1], form[2] local ruentry, runotes = m_table_tools.get_notes(ru) local trentry, trnotes if tr then trentry, trnotes = m_table_tools.get_notes(tr) end ruentry = m_links.remove_links(ruentry) ut.insert_if_not(canon_forms, {ruentry, trentry}) end return nom.concat_forms(canon_forms) end -- The entry point for 'ru-adj-forms' to generate all adjective forms. function export.generate_forms(frame) local args = clone_args(frame) local args = export.do_generate_forms(args, false) local ins_text = {} for _, case in ipairs(all_cases) do if args[case] then table.insert(ins_text, case .. "=" .. get_form(args[case])) end end return table.concat(ins_text, "|") end -- The entry point for 'ru-adj-form' to generate a particular adjective form. function export.generate_form(frame) local args = clone_args(frame) if not args.form then error("Must specify desired form using form=") end local form = args.form if not ut.contains(all_cases, form) then error("Unrecognized form " .. form) end local args = export.do_generate_forms(args, false) if not args[form] then return "" else return get_form(args[form]) end end -------------------------------------------------------------------------- -- Tracking and categorization -- -------------------------------------------------------------------------- tracking_code = function(decl_class, args, orig_short_accent, short_accent, short_stem, datedrare, short_forms_allowed) local hint_types = com.get_stem_trailing_letter_type(args.stem) local function dotrack(prefix) if prefix ~= "" then track(prefix) prefix = prefix .. "/" end track(prefix .. decl_class) for _, hint_type in ipairs(hint_types) do track(prefix .. hint_type) track(prefix .. decl_class .. "/" .. hint_type) end end dotrack("") if args.short_m or args.short_f or args.short_n or args.short_p then dotrack("short") end if orig_short_accent then if rfind(orig_short_accent, "%*") then dotrack("reducible") dotrack("reducible/" .. short_accent) end if rfind(orig_short_accent, "%(1%)") then dotrack("special-case-1") dotrack("special-case-1/" .. short_accent) end if rfind(orig_short_accent, "%(2%)") then dotrack("special-case-2") dotrack("special-case-2/" .. short_accent) end end if short_accent then dotrack("short-accent/" .. short_accent) if datedrare == "dated" then dotrack("short-accent-dated") dotrack("short-accent-dated/" .. short_accent) elseif datedrare == "rare" then dotrack("short-accent-rare") dotrack("short-accent-rare/" .. short_accent) end elseif datedrare == "none" then dotrack("short-accent/none") else dotrack("short-accent/unknown") end if short_stem then dotrack("explicit-short-stem") dotrack("explicit-short-stem/" .. short_accent) end for _, case in ipairs(all_cases) do if args[case] then track("irreg/" .. case) -- questionable use: dotrack("irreg/" .. case) end end end -- Insert the category CAT (a string) into list CATEGORIES. String will -- have "Russian " prepended and ~ substituted for the part of speech -- -- currently always "adjectives". local function insert_category(categories, cat) table.insert(categories, "Russian " .. rsub(cat, "~", "adjectives")) end categorize = function(decl_type, args, orig_short_accent, short_accent, short_stem) -- Insert category CAT into the list of categories in ARGS. local function insert_cat(cat) insert_category(args.categories, cat) end -- FIXME: For compatibility with old {{temp|ru-adj7}}, {{temp|ru-adj8}}, -- {{temp|ru-adj9}}; maybe there's a better way. if ut.contains({"ьій", "ьий", "short", "stressed-short", "mixed", "proper", "stressed-proper"}, decl_type) then insert_cat("possessive ~") end if ut.contains({"ьій", "ьий"}, decl_type) then insert_cat("long possessive ~") elseif ut.contains({"short", "stressed-short"}, decl_type) then insert_cat("short possessive ~") elseif ut.contains({"mixed"}, decl_type) then insert_cat("mixed possessive ~") elseif ut.contains({"proper", "stressed-proper"}, decl_type) then insert_cat("proper-name ~") elseif decl_type == "$" then insert_cat("indeclinable ~") else local hint_types = com.get_stem_trailing_letter_type(args.stem) -- insert English version of Zaliznyak stem type local stem_type = ut.contains(hint_types, "velar") and "velar-stem" or ut.contains(hint_types, "sibilant") and "sibilant-stem" or ut.contains(hint_types, "c") and "ц-stem" or ut.contains(hint_types, "i") and "i-stem" or ut.contains(hint_types, "vowel") and "vowel-stem" or ut.contains(hint_types, "soft-cons") and "vowel-stem" or ut.contains(hint_types, "palatal") and "vowel-stem" or decl_type == "ий" and "soft-stem" or "hard-stem" if stem_type == "soft-stem" or stem_type == "vowel-stem" then insert_cat(stem_type .. " ~") else insert_cat(stem_type .. " " .. (decl_type == "ой" and "ending-stressed" or "stem-stressed") .. " ~") end end if decl_type == "ой" then insert_cat("ending-stressed ~") end local short_forms_allowed = ut.contains({"ый", "ой", "ій", "ий"}, decl_type) if short_forms_allowed then local override_m = args.short_m local override_f = args.short_f local override_n = args.short_n local override_p = args.short_p local has_short = short_accent or override_m or override_f or override_n or override_p local missing_short = override_m == "-" or override_f == "-" or override_n == "-" or override_p == "-" or not short_accent and (not override_m or not override_f or not override_n or not override_p) if has_short then insert_cat("~ with short forms") if missing_short then insert_cat("~ with missing short forms") end end if short_accent then insert_cat("~ with short accent pattern " .. short_accent) end if orig_short_accent then if rfind(orig_short_accent, "%*") then insert_cat("~ with reducible short stem") end if rfind(orig_short_accent, "%(1%)") then insert_cat("~ with Zaliznyak short form special case 1") end if rfind(orig_short_accent, "%(2%)") then insert_cat("~ with Zaliznyak short form special case 2") end end if short_stem and short_stem ~= args.stem then insert_cat("~ with irregular short stem") end end for _, case in ipairs(all_cases) do if args[case] and args[case] ~= "-" then local engcase = rsub(case, "^([a-z]*)", { nom="nominative", gen="genitive", dat="dative", acc="accusative", ins="instrumental", pre="prepositional", short="short", }) engcase = rsub(engcase, "(_[a-z]*)$", { _m=" masculine singular", _f=" feminine singular", _n=" neuter singular", _p=" plural", _mp=" masculine plural" }) insert_cat("~ with irregular " .. engcase) end end if args.nofull then insert_cat("short-form-only ~") end end -------------------------------------------------------------------------- -- Autodetection and stem munging -- -------------------------------------------------------------------------- -- Attempt to detect the type of the lemma based on its ending, separating -- off the base and the ending; also extract the accent type for short -- adjectives and optional short stem. DECL is the value passed in, and -- might already specify the ending. Return five values: STEM, STEMTR, DECL, -- SHORT_ACCENT (accent class of short adjective, or nil for no short -- adjectives other than specified through overrides), SHORT_STEM (special -- stem of short adjective, nil if same as long stem). The return value of -- SHORT_STEM is taken directly from the argument and will include any -- manual translit. detect_stem_and_accent_type = function(lemma, tr, decl, args) local datedrare = false -- If it looks like a short decl type, canonicalize. [abc] for types -- a, b, c'', etc.; [d] for dated-*; [r] for rare-*; -- [-] for - (no short forms); [*(] for * and (1) and (2) modifiers, -- which might precede the letter. if rfind(decl, "^[abcdr*(-]") then decl = ":" .. decl end splitvals = rsplit(decl, ":") if #splitvals > 3 then error("Should be at most three colon-separated parts of a declension spec: " .. decl) end local short_accent, short_stem decl, short_accent, short_stem = splitvals[1], splitvals[2], splitvals[3] -- Check for dated variant of short accent local dated_short = short_accent and rmatch(short_accent, "^dated%-(.*)$") if dated_short then datedrare = "dated" short_accent = dated_short else -- Check for rare variant of short accent local rare_short = short_accent and rmatch(short_accent, "^rare%-(.*)$") if rare_short then datedrare = "rare" short_accent = rare_short end end decl = ine(decl) -- Resolve aliases if decl then decl = rsub(decl, "^ъ%-", "") end if short_accent == "-" then short_accent = nil datedrare = "none" end short_accent = ine(short_accent) short_stem = ine(short_stem) if short_stem and not short_accent then error("With explicit short stem " .. short_stem .. ", must specify short accent") end local base, ending -- The while loop appears to function solely as a way of allowing a -- jump to the end of the loop with a 'break' statement. I don't think -- the loop is ever run more than once. while true do if not decl or decl == "ь" then base, ending = rmatch(lemma, "^(.*)([ыиіо]́?й)$") if base then if ending == "ий" and decl == "ь" then ending = "ьий" elseif ending == "ій" and decl == "ь" then ending = "ьій" end tr = nom.strip_tr_ending(tr, ending) -- -ий/-ій will be converted to -ый after velars and sibilants -- by the caller decl = com.make_unstressed(ending) break else -- It appears that short, mixed and proper adjectives are always -- either of the -ов/ев/ёв or -ин/ын types. The former type is -- always (or almost always?) short, while the latter can be -- either; apparently mixed is the more "modern" type of -- declension, and short is "older". However, both -ов/ев/ёв or -- -ин/ын are of type "proper" (similar to "short") when -- capitalized. -- -- NOTE: Following regexp is accented base = rmatch(lemma, "^([" .. com.uppercase .. "].*[иы]́н)ъ?$") if base then decl = "stressed-proper" break end base = rmatch(lemma, "^([" .. com.uppercase .. "].*[еёо]́?в)ъ?$") if not base then -- Following regexp is not stressed base = rmatch(lemma, "^([" .. com.uppercase .. "].*[иы]н)ъ?$") end if base then decl = "proper" break end base = rmatch(lemma, "^(.*[еёо]́?в)ъ?$") if base then decl = "short" break end base = rmatch(lemma, "(.*[иы]́н)ъ?$") --accented if base then decl = "stressed-short" break end base = rmatch(lemma, "(.*[иы]н)ъ?$") --unaccented if base then decl = "mixed" break -- error("With -ин/ын adjectives, must specify 'short' or 'mixed':" .. lemma) end error("Cannot determine stem type of adjective: " .. lemma) end elseif ut.contains({"short", "stressed-short", "mixed", "proper", "stressed-proper"}, decl) then base = rmatch(lemma, "^(.-)ъ?$") assert(base) break else base = lemma break end end if not datedrare and (args.refl or not (decl == "ый" or decl == "ий" and not rfind(base, "[цс]к$"))) then datedrare = "none" end return base, tr, decl, short_accent, short_stem, datedrare end -- Add a possible suffix to the bare stem, according to the declension and -- value of OLD. This may be -ь, -ъ, -й or nothing. We need to do this here -- because we don't actually attach such a suffix in attach_unstressed() due -- to situations where we don't want the suffix added, e.g. бескра́йний with -- dereduced nom sg бескра́ен without expected -ь. local function add_bare_suffix(bare, baretr, old, decl, dereduced) if old and decl ~= "ій" and decl ~= "$" then return bare .. "ъ", baretr elseif decl == "ий" or decl == "ій" then -- This next special case is mentioned in Zaliznyak's 1980 grammatical -- dictionary for adjectives (footnote, p. 60). if dereduced and rfind(bare, "[нН]$") then -- FIXME: What happens in this case old-style? I assume that -- -ъ is added, but this is a guess. return bare .. (old and "ъ" or ""), baretr elseif rfind(bare, "[" .. com.vowel .. "]́?$") then -- This happens with adjectives like длинноше́ий, short masculine -- singular длинноше́й. return bare .. "й", baretr and baretr .. "j" or nil else return bare .. "ь", baretr and baretr .. "ʹ" or nil end else return bare, baretr end end -- Construct and set bare and short form in args, and canonicalize -- short accent spec, handling cases *, (1) and (2). Return canonicalized -- short accent and the short declension, which is usually the same as -- the corresponding long one. construct_bare_and_short_stem = function(args, short_accent, short_stem, short_stemtr, accented_stem, accented_stemtr, old, decl) -- Check if short forms allowed; if not, no short-form params can be given. -- Construct bare version of stem; used for cases where the ending -- is non-syllabic (i.e. short masculine singular of long adjectives, -- and masculine singular of short, mixed and proper adjectives). Comes -- from short masculine or 3rd argument if explicitly given, else from the -- accented stem, possibly with the dereduction transformation applied -- (if * occurs in the short accent spec). local reducible, sc1, sc2 if short_accent then short_accent, reducible = rsubb(short_accent, "%*", "") short_accent, sc1 = rsubb(short_accent, "%(1%)", "") short_accent, sc2 = rsubb(short_accent, "%(2%)", "") end if sc1 or sc2 then -- Reducible isn't compatible with sc1 or sc2, but Zaliznyak's -- dictionary always seems to notate sc1 and sc2 with reducible *, -- so ignore it. reducible = false end if sc1 and sc2 then error("Special cases 1 and 2, i.e. (1) and (2), not compatible") end local explicit_short_stem, explicit_short_stemtr = short_stem, short_stemtr local short_decl = decl -- Construct short stem. May be explicitly given, else comes from -- end-accented stem. if not short_stem then short_stem, short_stemtr = accented_stem, accented_stemtr end -- Try to accent unaccented short stem (happens only when explicitly given), -- but be conservative -- only if monosyllabic, since otherwise we have -- no idea where stress should end up; after all, the explicit short stem -- is for exceptional cases. if not args.allow_unaccented then if short_stemtr and com.is_unstressed(short_stem) ~= com.is_unstressed(short_stemtr) then error("Explicit short stem " .. short_stem .. " and translit " .. short_stemtr .. " must have same accent pattern") end if com.is_monosyllabic(short_stem) then short_stem, short_stemtr = com.make_ending_stressed(short_stem, short_stemtr) elseif com.needs_accents(short_stem) then error("Explicit short stem " .. short_stem .. " needs an accent") end end if sc2 then if not rfind(short_stem, "нн$") then error("With special case 2, stem needs to end in -нн: " .. short_stem) end short_stem = rsub(short_stem, "нн$", "н") if short_stemtr then if not rfind(short_stemtr, "nn$") then error("With special case 2, stem translit needs to end in -nn: " .. short_stemtr) end short_stemtr = rsub(short_stemtr, "nn$", "n") end end -- Construct bare form, used for short masculine. local bare, baretr if reducible then bare, baretr = com.dereduce_stem(short_stem, short_stemtr, rfind(short_accent, "^b")) if not bare then error("Unable to dereduce stem: " .. short_stem) end bare, baretr = add_bare_suffix(bare, baretr, old, decl, true) else bare, baretr = short_stem, short_stemtr if sc1 then if not rfind(bare, "нн$") then error("With special case 1, stem needs to end in -нн: " .. bare) end bare = rsub(bare, "нн$", "н") if baretr then if not rfind(baretr, "nn$") then error("With special case 1, stem translit needs to end in -nn: " .. baretr) end baretr = rsub(baretr, "nn$", "n") end end -- With special case 1 or 2, we don't ever want -ь added, so treat -- it like a reducible (that may be why these are marked as -- reducible in Zaliznyak). bare, baretr = add_bare_suffix(bare, baretr, old, decl, sc1 or sc2) end args.short_stem, args.short_stemtr = short_stem, short_stemtr args.short_ustem, args.short_ustemtr = com.make_unstressed_once(short_stem, short_stemtr) args.bare, args.baretr = bare, baretr return short_accent, short_decl end -------------------------------------------------------------------------- -- Declensions -- -------------------------------------------------------------------------- declensions["ый"] = { ["nom_m"] = "ый", ["nom_n"] = "ое", ["nom_f"] = "ая", ["nom_p"] = "ые", ["gen_m"] = "ого", ["gen_f"] = "ой", ["gen_p"] = "ых", ["dat_m"] = "ому", ["dat_f"] = "ой", ["dat_p"] = "ым", ["acc_f"] = "ую", ["acc_n"] = "ое", ["ins_m"] = "ым", ["ins_f"] = {"ой", "ою"}, ["ins_p"] = "ыми", ["pre_m"] = "ом", ["pre_f"] = "ой", ["pre_p"] = "ых", } declensions["ий"] = { ["nom_m"] = "ий", ["nom_n"] = "ее", ["nom_f"] = "яя", ["nom_p"] = "ие", ["gen_m"] = "его", ["gen_f"] = "ей", ["gen_p"] = "их", ["dat_m"] = "ему", ["dat_f"] = "ей", ["dat_p"] = "им", ["acc_f"] = "юю", ["acc_n"] = "ее", ["ins_m"] = "им", ["ins_f"] = {"ей", "ею"}, ["ins_p"] = "ими", ["pre_m"] = "ем", ["pre_f"] = "ей", ["pre_p"] = "их", } declensions["ой"] = { ["nom_m"] = "о́й", ["nom_n"] = "о́е", ["nom_f"] = "а́я", ["nom_p"] = "ы́е", ["gen_m"] = "о́го", ["gen_f"] = "о́й", ["gen_p"] = "ы́х", ["dat_m"] = "о́му", ["dat_f"] = "о́й", ["dat_p"] = "ы́м", ["acc_f"] = "у́ю", ["acc_n"] = "о́е", ["ins_m"] = "ы́м", ["ins_f"] = {"о́й", "о́ю"}, ["ins_p"] = "ы́ми", ["pre_m"] = "о́м", ["pre_f"] = "о́й", ["pre_p"] = "ы́х", } -- These can be stressed in ничья́ "draw, tie (in sports)". declensions["ьий"] = { ["nom_m"] = "и́й", ["nom_n"] = "ье́", ["nom_f"] = "ья́", ["nom_p"] = "ьи́", ["gen_m"] = "ье́го", ["gen_f"] = "ье́й", ["gen_p"] = "ьи́х", ["dat_m"] = "ье́му", ["dat_f"] = "ье́й", ["dat_p"] = "ьи́м", ["acc_f"] = "ью́", ["acc_n"] = "ье́", ["ins_m"] = "ьи́м", ["ins_f"] = {"ье́й", "ье́ю"}, ["ins_p"] = "ьи́ми", ["pre_m"] = "ье́м", ["pre_f"] = "ье́й", ["pre_p"] = "ьи́х", } declensions["short"] = { ["nom_m"] = "", ["nom_n"] = "о́", ["nom_f"] = "а́", ["nom_p"] = "ы́", ["gen_m"] = "а́", ["gen_f"] = "о́й", ["gen_p"] = "ы́х", ["dat_m"] = "у́", ["dat_f"] = "о́й", ["dat_p"] = "ы́м", ["acc_f"] = "у́", ["acc_n"] = "о́", ["ins_m"] = "ы́м", ["ins_f"] = {"о́й", "о́ю"}, ["ins_p"] = "ы́ми", ["pre_m"] = "о́м", ["pre_f"] = "о́й", ["pre_p"] = "ы́х", } declensions["stressed-short"] = mw.clone(declensions["short"]) declensions["stressed-short"]["pre_m"] = "е́" declensions["mixed"] = { ["nom_m"] = "", ["nom_n"] = "о", ["nom_f"] = "а", ["nom_p"] = "ы", ["gen_m"] = {"ого", "а2"}, ["gen_f"] = "ой", ["gen_p"] = "ых", ["dat_m"] = {"ому", "у2"}, ["dat_f"] = "ой", ["dat_p"] = "ым", ["acc_f"] = "у", ["acc_n"] = "о", ["ins_m"] = "ым", ["ins_f"] = {"ой", "ою"}, ["ins_p"] = "ыми", ["pre_m"] = "ом", ["pre_f"] = "ой", ["pre_p"] = "ых", } internal_notes_table["mixed"] = "<sup>2</sup> Obsolete." internal_notes_genders["mixed"] = {"m"} internal_notes_table_old["mixed"] = "<sup>2</sup> Obsolete." internal_notes_genders_old["mixed"] = {"m"} declensions["proper"] = { ["nom_m"] = "", ["nom_n"] = nil, ["nom_f"] = "а́", ["nom_p"] = "ы́", ["gen_m"] = "а́", ["gen_f"] = "о́й", ["gen_p"] = "ы́х", ["dat_m"] = "у́", ["dat_f"] = "о́й", ["dat_p"] = "ы́м", ["acc_f"] = "у́", ["acc_n"] = nil, ["ins_m"] = "ы́м", ["ins_f"] = {"о́й", "о́ю1"}, ["ins_p"] = "ы́ми", ["pre_m"] = "е́", ["pre_f"] = "о́й", ["pre_p"] = "ы́х", } declensions["stressed-proper"] = declensions["proper"] for _, decl in ipairs({"proper", "stressed-proper"}) do internal_notes_table[decl] = "<sup>1</sup> Rare." internal_notes_table_old[decl] = "<sup>1</sup> Rare." internal_notes_genders[decl] = {"f"} internal_notes_genders_old[decl] = {"f"} end declensions["$"] = { ["nom_m"] = "", ["nom_n"] = "", ["nom_f"] = "", ["nom_p"] = "", ["gen_m"] = "", ["gen_f"] = "", ["gen_p"] = "", ["dat_m"] = "", ["dat_f"] = "", ["dat_p"] = "", ["acc_f"] = "", -- don't do this; instead we default it to nom_n -- ["acc_n"] = "", ["ins_m"] = "", ["ins_f"] = "", ["ins_p"] = "", ["pre_m"] = "", ["pre_f"] = "", ["pre_p"] = "", -- for old-style templates, два, оба, compounds of два ["nom_mp"] = "", ["nom_fp"] = "", ["gen_mp"] = "", ["gen_fp"] = "", ["dat_mp"] = "", ["dat_fp"] = "", -- don't do this; instead we default them to nom_mp, nom_fp -- ["acc_mp"] = "", -- ["acc_fp"] = "", ["ins_mp"] = "", ["ins_fp"] = "", ["pre_mp"] = "", ["pre_fp"] = "", } declensions_old["ый"] = { ["nom_m"] = "ый", ["nom_n"] = "ое", ["nom_f"] = "ая", ["nom_mp"] = "ые", ["nom_p"] = "ыя", ["gen_m"] = "аго", ["gen_f"] = "ой", ["gen_p"] = "ыхъ", ["dat_m"] = "ому", ["dat_f"] = "ой", ["dat_p"] = "ымъ", ["acc_f"] = "ую", ["acc_n"] = "ое", ["ins_m"] = "ымъ", ["ins_f"] = {"ой", "ою"}, ["ins_p"] = "ыми", ["pre_m"] = "омъ", ["pre_f"] = "ой", ["pre_p"] = "ыхъ", } declensions_old["ій"] = { ["nom_m"] = "ій", ["nom_n"] = "ее", ["nom_f"] = "яя", ["nom_mp"] = "іе", ["nom_p"] = "ія", ["gen_m"] = "яго", ["gen_f"] = "ей", ["gen_p"] = "ихъ", ["dat_m"] = "ему", ["dat_f"] = "ей", ["dat_p"] = "имъ", ["acc_f"] = "юю", ["acc_n"] = "ее", ["ins_m"] = "имъ", ["ins_f"] = {"ей", "ею"}, ["ins_p"] = "ими", ["pre_m"] = "емъ", ["pre_f"] = "ей", ["pre_p"] = "ихъ", } declensions_old["ой"] = { ["nom_m"] = "о́й", ["nom_n"] = "о́е", ["nom_f"] = "а́я", ["nom_mp"] = "ы́е", ["nom_p"] = "ы́я", ["gen_m"] = {"а́го", "о́го"}, ["gen_f"] = "о́й", ["gen_p"] = "ы́хъ", ["dat_m"] = "о́му", ["dat_f"] = "о́й", ["dat_p"] = "ы́мъ", ["acc_f"] = "у́ю", ["acc_n"] = "о́е", ["ins_m"] = "ы́мъ", ["ins_f"] = {"о́й", "о́ю"}, ["ins_p"] = "ы́ми", ["pre_m"] = "о́мъ", ["pre_f"] = "о́й", ["pre_p"] = "ы́хъ", } declensions_old["ьій"] = { ["nom_m"] = "ій", ["nom_n"] = "ье", ["nom_f"] = "ья", ["nom_p"] = "ьи", ["gen_m"] = "ьяго", ["gen_f"] = "ьей", ["gen_p"] = "ьихъ", ["dat_m"] = "ьему", ["dat_f"] = "ьей", ["dat_p"] = "ьимъ", ["acc_f"] = "ью", ["acc_n"] = "ье", ["ins_m"] = "ьимъ", ["ins_f"] = {"ьей", "ьею"}, ["ins_p"] = "ьими", ["pre_m"] = "ьемъ", ["pre_f"] = "ьей", ["pre_p"] = "ьихъ", } declensions_old["short"] = { ["nom_m"] = "ъ", ["nom_n"] = "о", ["nom_f"] = "а", ["nom_p"] = "ы", ["gen_m"] = "а", ["gen_f"] = "ой", ["gen_p"] = "ыхъ", ["dat_m"] = "у", ["dat_f"] = "ой", ["dat_p"] = "ымъ", ["acc_f"] = "у", ["acc_n"] = "о", ["ins_m"] = "ымъ", ["ins_f"] = {"ой", "ою"}, ["ins_p"] = "ыми", ["pre_m"] = "омъ", ["pre_f"] = "ой", ["pre_p"] = "ыхъ", } declensions_old["stressed-short"] = mw.clone(declensions_old["short"]) declensions_old["stressed-short"]["pre_m"] = "ѣ́" declensions_old["mixed"] = { ["nom_m"] = "ъ", ["nom_n"] = "о", ["nom_f"] = "а", ["nom_p"] = "ы", ["gen_m"] = {"аго", "а1"}, ["gen_f"] = "ой", ["gen_p"] = "ыхъ", ["dat_m"] = {"ому", "у1"}, ["dat_f"] = "ой", ["dat_p"] = "ымъ", ["acc_f"] = "у", ["acc_n"] = "о", ["ins_m"] = "ымъ", ["ins_f"] = {"ой", "ою"}, ["ins_p"] = "ыми", ["pre_m"] = "омъ", ["pre_f"] = "ой", ["pre_p"] = "ыхъ", } declensions_old["proper"] = { ["nom_m"] = "ъ", ["nom_n"] = nil, ["nom_f"] = "а́", ["nom_p"] = "ы́", ["gen_m"] = "а́", ["gen_f"] = "о́й", ["gen_p"] = "ы́хъ", ["dat_m"] = "у́", ["dat_f"] = "о́й", ["dat_p"] = "ы́мъ", ["acc_f"] = "у́", ["acc_n"] = nil, ["ins_m"] = "ы́мъ", ["ins_f"] = {"о́й", "о́ю1"}, ["ins_p"] = "ы́ми", ["pre_m"] = "ѣ́", ["pre_f"] = "о́й", ["pre_p"] = "ы́хъ", } declensions_old["stressed-proper"] = declensions_old["proper"] declensions_old["$"] = declensions["$"] local function frob_genitive_masc(decl) -- signal to combine_stem_and_suffix() to use the special tr_adj() -- function so that -го gets transliterated to -vo if type(decl["gen_m"]) == "table" then local entries = {} for _, entry in ipairs(decl["gen_m"]) do table.insert(entries, rsub(entry, "го$", "го<adj>")) end decl["gen_m"] = entries else decl["gen_m"] = rsub(decl["gen_m"], "го$", "го<adj>") end end -- Frob declensions, adding <adj> to gen_m forms ending in -го. This is -- a signal to add manual translit early on that renders -го as -vo. for decltype, decl in pairs(declensions_old) do frob_genitive_masc(decl) end for decltype, decl in pairs(declensions) do frob_genitive_masc(decl) end -------------------------------------------------------------------------- -- Declension functions -- -------------------------------------------------------------------------- local function attach_unstressed(args, suf, short) local stem, stemtr if short then stem, stemtr = args.short_stem, args.short_stemtr else stem, stemtr = args.stem, args.stemtr end if suf == nil then return nil elseif nom.nonsyllabic_suffixes[suf] then if not args.bare then return nil elseif rfind(args.bare, "[йьъ]$") then return {args.bare, args.baretr} elseif suf == "ъ" then return nom.concat_russian_tr(args.bare, args.baretr, suf, nil, "dopair") else return {args.bare, args.baretr} end end suf = com.make_unstressed(suf) local rules = nom.unstressed_rules[ulower(usub(stem, -1))] -- The parens around the return value drop all but the first return value return (nom.combine_stem_and_suffix(stem, stemtr, suf, rules, args.old)) end local function attach_stressed(args, suf, short) local ustem, ustemtr if short then ustem, ustemtr = args.short_ustem, args.short_ustemtr else ustem, ustemtr = args.ustem, args.ustemtr end if suf == nil then return nil elseif not rfind(suf, "[ё́]") then -- if suf has no "ё" or accent marks return attach_unstressed(args, suf, short) end local rules = nom.stressed_rules[ulower(usub(ustem, -1))] -- The parens around the return value drop all but the first return value return (nom.combine_stem_and_suffix(ustem, ustemtr, suf, rules, args.old)) end local function attach_both(args, suf, short) local results = {} -- Examples with stems with ё on Zaliznyak p. 61 list the -- ending-stressed forms first, so go with that. -- NOTE: This assumes we get one value returned, not a list of such values. table.insert(results, attach_stressed(args, suf, short)) table.insert(results, attach_unstressed(args, suf, short)) return results end local function attach_with(args, suf, fun, short) if type(suf) == "table" then local all_combineds = {} for _, x in ipairs(suf) do local combineds = attach_with(args, x, fun, short) for _, combined in ipairs(combineds) do table.insert(all_combineds, combined) end end return all_combineds else local funval = fun(args, suf, short) if funval then local tbl = {} assert(type(funval) == "table") if type(funval[1]) ~= "table" then funval = {funval} end for _, x in ipairs(funval) do table.insert(tbl, nom.concat_paired_russian_tr(x, args.real_suffix)) end return tbl else return {} end end end local function gen_form(args, decl, case, fun) if not args.forms[case] then args.forms[case] = {} end insert_forms_into_existing_forms(args.forms[case], attach_with(args, decl[case], fun, false)) end decline = function(args, decl, stressed) local attacher = stressed and attach_stressed or attach_unstressed for _, case in ipairs(long_cases) do gen_form(args, decl, case, attacher) end end canonicalize_override = function(args, case) local val = args[case] if not val then return nil end val = rsplit(val, "%s*,%s*") -- auto-accent/check for necessary accents local newvals = {} for _, v in ipairs(val) do local ru, tr = nom.split_russian_tr(v) if not args.allow_unaccented then if tr and com.is_unstressed(ru) ~= com.is_unstressed(tr) then error("Override " .. ru .. " and translit " .. tr .. " must have same accent pattern") end -- it's safe to accent monosyllabic stems if com.is_monosyllabic(ru) then ru, tr = com.make_ending_stressed(ru, tr) elseif com.needs_accents(ru) then error("Override " .. ru .. " for case " .. case .. " requires an accent") end end table.insert(newvals, {ru, tr}) end val = newvals return val end handle_forms_and_overrides = function(args, short_forms_allowed) local f = args.forms local function append_note_all(case, value) value = nom.split_russian_tr(value, "dopair") if f[case] then for i=1,#f[case] do f[case][i] = nom.concat_paired_russian_tr(f[case][i], value) end end end local function append_note_last(case, value, gt_one) value = nom.split_russian_tr(value, "dopair") if f[case] then local lastarg = #f[case] if lastarg > (gt_one and 1 or 0) then f[case][lastarg] = nom.concat_paired_russian_tr(f[case][lastarg], value) end end end for _, case in ipairs(long_cases) do if args[case .. "_tail"] then append_note_last(case, args[case .. "_tail"]) end if args[case .. "_tailall"] then append_note_all(case, args[case .. "_tailall"]) end args[case] = canonicalize_override(args, case) or f[case] end for _, case in ipairs(short_cases) do if short_forms_allowed then if args[case .. "_tail"] then append_note_last(case, args[case .. "_tail"]) end if args[case .. "_tailall"] then append_note_all(case, args[case .. "_tailall"]) end if args.shorttailall then append_note_all(case, args.shorttailall) end if args.shorttail then append_note_last(case, args.shorttail, ">1") end args[case] = canonicalize_override(args, case) or f[case] else args[case] = nil end end -- Convert an empty list to nil, so that an mdash is inserted. This happens, -- for example, with words like голубой where args.bare is set to nil. for _, case in ipairs(all_cases) do if args[case] and #args[case] == 0 then args[case] = nil end end -- default acc_n to nom_n; applies chiefly in the indeclinable declension -- (used with manual declension tables) if not args.acc_n then args.acc_n = args.nom_n end -- default inanimate/animate accusative variants as appropriate; this is -- almost always correct, but not with e.g. два́дцать оди́н, where the -- masculine animate accusative два́дцать одного́ differs from both the -- masculine nominative два́дцать оди́н and the masculine genitive -- двадцати́ одного́. if not args.acc_m_an then args.acc_m_an = args.gen_m end if not args.acc_m_in then args.acc_m_in = args.nom_m end -- Compounds of два do not have animacy; everything else does. -- Only copy either the with-animacy or without-animacy variants to avoid -- having both forms in {{ru-generate-adj-forms}}. if args.special ~= "cdva" then if not args.acc_p_an then args.acc_p_an = args.gen_p end if not args.acc_p_in then args.acc_p_in = args.nom_p end if not args.acc_mp_an then args.acc_mp_an = args.gen_mp end if not args.acc_mp_in then args.acc_mp_in = args.nom_mp end if not args.acc_fp_an then args.acc_fp_an = args.gen_fp end if not args.acc_fp_in then args.acc_fp_in = args.nom_fp end else if not args.acc_mp then args.acc_mp = args.nom_mp end if not args.acc_fp then args.acc_fp = args.nom_fp end end end -------------------------------------------------------------------------- -- Short adjective declension -- -------------------------------------------------------------------------- short_declensions["ый"] = { m="", f="а́", n="о́", p="ы́" } short_declensions["ой"] = short_declensions["ый"] short_declensions["ий"] = { m="ь", f="я́", n="е́", p="и́" } short_declensions_old["ый"] = { m="ъ", f="а́", n="о́", p="ы́" } short_declensions_old["ой"] = short_declensions_old["ый"] short_declensions_old["ій"] = short_declensions["ий"] -- Short adjective stress patterns: -- "-" = stem-stressed -- "+" = ending-stressed (drawn onto the last syllable of stem in masculine) -- "-+" = both possibilities short_stress_patterns["a"] = { m="-", f="-", n="-", p="-" } short_stress_patterns["a'"] = { m="-", f="-+", n="-", p="-" } short_stress_patterns["b"] = { m="+", f="+", n="+", p="+" } short_stress_patterns["b'"] = { m="+", f="+", n="+", p="-+" } short_stress_patterns["c"] = { m="-", f="+", n="-", p="-" } short_stress_patterns["c'"] = { m="-", f="+", n="-", p="-+" } short_stress_patterns["c''"] = { m="-", f="+", n="-+", p="-+" } local function gen_short_form(args, decl, case, fun, datedrare) if not args.forms["short_" .. case] then args.forms["short_" .. case] = {} end local inserted = insert_forms_into_existing_forms( args.forms["short_" .. case], attach_with(args, decl[case], fun, true), (datedrare == "dated" and datedrare == "rare") and "*" or nil) if datedrare == "dated" and inserted then ut.insert_if_not(args.internal_notes, "<sup>*</sup> Dated.") elseif datedrare == "rare" and inserted then ut.insert_if_not(args.internal_notes, "<sup>*</sup> Rare.") end end local attachers = { ["+"] = attach_stressed, ["-"] = attach_unstressed, ["-+"] = attach_both, } decline_short = function(args, decl, stress_pattern, dated) if stress_pattern then for _, case in ipairs({"m", "f", "n", "p"}) do gen_short_form(args, decl, case, attachers[stress_pattern[case]], dated) end end end -------------------------------------------------------------------------- -- Create the table -- -------------------------------------------------------------------------- local title_temp = [=[<b lang="ru" class="Cyrl">{lemma}</b> の格変化 ({short_class_title})]=] local old_title_temp = [=[<b lang="ru" class="Cyrl">{lemma}</b> の格変化 (正書法改正前) ({short_class_title})]=] local title_temp_no_short_msg = [=[<b lang="ru" class="Cyrl">{lemma}</b> の格変化]=] local old_title_temp_no_short_msg = [=[<b lang="ru" class="Cyrl">{lemma}</b> の格変化 (正書法改正前)]=] local template = nil local full_clause = nil local template_no_neuter = nil local full_clause_no_neuter = nil local proper_name_template = nil local proper_name_full_clause = nil local template_mp = nil local full_clause_mp = nil local template_mp_no_neuter = nil local full_clause_mp_no_neuter = nil local short_clause_separator = nil local short_clause = nil local short_clause_no_neuter_separator = nil local short_clause_no_neuter = nil local short_clause_mp_separator = nil local short_clause_mp = nil local short_clause_mp_no_neuter_separator = nil local short_clause_mp_no_neuter = nil local internal_notes_template = nil local notes_template = nil local function get_accel_forms(old, special, has_nom_mp) return { -- used with all variants nom_m = "主格|m|s", nom_f = "主格|f|s", nom_n = "主格|n|s", -- not used with special; applies to all genders normally but only -- feminine and neuter with old=1 nom_p = old and has_nom_mp and "nom|f//n|p" or "nom|p", -- only used with old=1 or special; applies to the masculine and neuter if -- special, but only masculine if old=1 nom_mp = special and "主格|m//n|p" or "主格|m|p", -- only used with special nom_fp = "主格|f|p", -- the remaining singulars and non-gendered plurals used with all variants -- except special == "oba" gen_m = "生格|m//n|s", gen_f = "生格|f|s", gen_p = "生格|p", dat_m = "与格|m//n|s", dat_f = "与格|f|s", dat_p = "与格|p", acc_m_an = "an|対格|m|s", acc_m_in = "in|対格|m|s", acc_f = "対格|f|s", acc_n = "対格|n|s", -- the following two not used with special in ("dva", "oba"); applies to -- all genders normally but only feminine and neuter with old=1 acc_p_an = old and has_nom_mp and "an|対格|f//n|p" or "an|対格|p", acc_p_in = old and has_nom_mp and "in|対格|f//n|p" or "in|対格|p", -- the following two only used with old=1 or special in ("dva|oba"); -- applies to the masculine and neuter if special, but only masculine if -- old=1 acc_mp_an = special and "an|対格|m//n|p" or "an|対格|m|p", acc_mp_in = special and "in|対格|m//n|p" or "in|対格|m|p", -- the following two only used with special in ("dva", "oba") acc_fp_an = "an|対格|f|p", acc_fp_in = "in|対格|f|p", -- the next 6 are used with all variants except special == "oba" ins_m = "造格|m//n|s", ins_f = "造格|f|s", ins_p = "造格|p", pre_m = "前置格|m//n|s", pre_f = "前置格|f|s", pre_p = "前置格|p", -- the following two gendered plurals are only used with special == "cdva" acc_mp = "対格|m//n|p", acc_fp = "対格|f|p", -- the remaining gendered plurals are only used with special == "oba" gen_mp = "生格|m//n|p", gen_fp = "生格|f|p", dat_mp = "与格|m//n|p", dat_fp = "与格|f|p", ins_mp = "造格|m//n|p", ins_fp = "造格|f|p", pre_mp = "前置格|m//n|p", pre_fp = "前置格|f|p", -- short forms short_m = "short|m|s", short_f = "short|f|s", short_n = "short|n|s", short_p = "short|p", } end -- Generate a string to substitute into a particular form in a Wiki-markup -- table. FORMS is the list of forms. local function show_form(forms, old, is_lemma, accel_form, lemma_forms) local russianvals = {} local latinvals = {} local lemmavals = {} -- Accumulate separately the Russian and transliteration into -- RUSSIANVALS and LATINVALS, then concatenate each down below. -- However, if LEMMA, we put each transliteration directly -- after the corresponding Russian, in parens, and put the results -- in LEMMAVALS, which get concatenated below. (This is used in the -- title of the declension table.) (Actually, currently we don't -- include the translit in the declension table title.) if #forms == 1 and forms[1][1] == "-" then return "&mdash;" end local lemmaru, lemmatr if accel_form and lemma_forms then local lemma_form = lemma_forms[1] if lemma_form[1] ~= "-" then lemmaru, lemmatr = lemma_form[1], lemma_form[2] lemmaru, _ = m_table_tools.separate_notes(lemmaru) if lemmatr then lemmatr, _ = m_table_tools.separate_notes(lemmatr) end end end for _, form in ipairs(forms) do local ru, tr = form[1], form[2] local ruentry, runotes = m_table_tools.get_notes(ru) local trentry, trnotes if tr then trentry, trnotes = m_table_tools.get_notes(tr) end ruentry = com.remove_monosyllabic_accents(ruentry) local ruspan, trspan local accel = lemmaru and {form = accel_form, translit = tr, lemma = lemmaru, lemma_translit = lemmatr} or nil if old then ruspan = m_links.full_link({lang = lang, term = com.remove_jo(ruentry), alt = ruentry, tr = "-", accel = accel}) .. runotes else ruspan = m_links.full_link({lang = lang, term = ruentry, tr = "-", accel = accel}) .. runotes end if not trentry then trentry = nom.translit_no_links(ruentry) end if not trnotes then trnotes = nom.translit_no_links(runotes) end trspan = m_links.remove_links(trentry) .. trnotes trspan = require("モジュール:script utilities").tag_translit(trspan, lang, "default", " style=\"color: #888;\"") if is_lemma then -- insert_if_not(lemmavals, ruspan .. " (" .. trspan .. ")") ut.insert_if_not(lemmavals, ruspan) else ut.insert_if_not(russianvals, ruspan) ut.insert_if_not(latinvals, trspan) end end if is_lemma then return table.concat(lemmavals, ", ") else local russian_span = table.concat(russianvals, ", ") local latin_span = table.concat(latinvals, ", ") return russian_span .. "<br />" .. latin_span end end -- Make the table make_table = function(args) local lemma_forms = args.special and args.nom_mp or args.nofull and args.short_m or args.nom_m args.lemma = m_links.remove_links(show_form(lemma_forms, args.old, true, nil, nil)) args.title = args.title or strutils.format( (args.special or args.manual) and args.old and old_title_temp_no_short_msg or (args.special or args.manual) and title_temp_no_short_msg or args.old and old_title_temp or title_temp, args) local has_nom_mp = args.nom_mp and not (#args.nom_mp == 1 and args.nom_mp[1][1] == "-") local accel_forms = get_accel_forms(args.old, args.special, has_nom_mp) for _, case in ipairs(all_cases) do if args[case] then local accel_form = accel_forms[case] if not accel_form then error("Unrecognized case " .. case .. " when looking up accelerator form") end if noneuter then accel_form = rsub(accel_form, "//n", "") end args[case] = show_form(args[case], args.old, false, accel_form, lemma_forms) else args[case] = nil end end local temp = args.special == "oba" and template_oba or (args.special == "dva" or args.special == "cdva") and template_dva or not args.nom_n and proper_name_template or args.noneuter and args.old and has_nom_mp and template_mp_no_neuter or args.noneuter and template_no_neuter or args.old and has_nom_mp and template_mp or template local fullc = args.special == "oba" and full_clause_oba or args.special == "dva" and full_clause_dva or args.special == "cdva" and full_clause_compound_dva or not args.nom_n and proper_name_full_clause or args.noneuter and args.old and has_nom_mp and full_clause_mp_no_neuter or args.noneuter and full_clause_no_neuter or args.old and has_nom_mp and full_clause_mp or full_clause if args.old then if has_nom_mp then if args.short_m or args.short_n or args.short_f or args.short_p then args.short_m = args.short_m or "&mdash;" args.short_n = args.short_n or "&mdash;" args.short_f = args.short_f or "&mdash;" args.short_p = args.short_p or "&mdash;" args.shortsep = not args.nofull and ( args.noneuter and short_clause_mp_no_neuter_separator or short_clause_mp_separator ) or "" args.short_clause = strutils.format(args.noneuter and short_clause_mp_no_neuter or short_clause_mp, args) else args.short_clause = "" end else args.short_clause = "" end else if args.short_m or args.short_n or args.short_f or args.short_p then args.short_m = args.short_m or "&mdash;" args.short_n = args.short_n or "&mdash;" args.short_f = args.short_f or "&mdash;" args.short_p = args.short_p or "&mdash;" args.shortsep = not args.nofull and ( args.noneuter and short_clause_no_neuter_separator or short_clause_separator ) or "" args.short_clause = strutils.format(args.noneuter and short_clause_no_neuter or short_clause, args) else args.short_clause = "" end end if not args.nofull then args.full_clause = strutils.format(fullc, args) else args.full_clause = "" end args.internal_notes = table.concat(args.internal_notes, "<br />") args.internal_notes_clause = #args.internal_notes > 0 and strutils.format(internal_notes_template, args) or "" args.notes_clause = args.notes and strutils.format(notes_template, args) or "" return strutils.format(temp, args) end -- Used for new-style templates short_clause_separator = [===[ ! style="height:0.2em;background:#d9ebff" colspan="6" | |- ]===] -- Used for new-style templates short_clause = [===[ {shortsep}! style="background:#eff7ff" colspan="2" | 短語尾 | {short_m} | {short_n} | {short_f} | {short_p}]===] -- Used for new-style templates short_clause_no_neuter_separator = [===[ ! style="height:0.2em;background:#d9ebff" colspan="5" | |- ]===] -- Used for new-style templates short_clause_no_neuter = [===[ {shortsep}! style="background:#eff7ff" colspan="2" | 短語尾 | {short_m} | {short_f} | {short_p}]===] -- Used for old-style templates short_clause_mp_separator = [===[ ! style="height:0.2em;background:#d9ebff" colspan="7" | |- ]===] -- Used for old-style templates short_clause_mp = [===[ {shortsep}! style="background:#eff7ff" colspan="2" | 短語尾 | {short_m} | {short_n} | {short_f} | colspan="2" | {short_p}]===] -- Used for old-style templates short_clause_mp_no_neuter_separator = [===[ ! style="height:0.2em;background:#d9ebff" colspan="6" | |- ]===] -- Used for old-style templates short_clause_mp_no_neuter = [===[ {shortsep}! style="background:#eff7ff" colspan="2" | 短語尾 | {short_m} | {short_f} | colspan="2" | {short_p}]===] -- Used for both new-style and old-style templates notes_template = [===[ <div style="width:100%;text-align:left"> <div style="display:inline-block;text-align:left;padding-left:1em;padding-right:1em"> {notes} </div></div> ]===] -- Used for both new-style and old-style templates internal_notes_template = rsub(notes_template, "notes", "internal_notes") local function template_prelude(min_width) min_width = min_width or "70" return rsub([===[ <div> <div class="NavFrame" style="display: inline-block; min-width: MINWIDTHem"> <div class="NavHead" style="background:#eff7ff">{title}</div> <div class="NavContent"> {\op}| style="background:#F9F9F9;text-align:center; min-width:MINWIDTHem" class="inflection-table" |- ]===], "MINWIDTH", min_width) end local function template_postlude() return [===[{full_clause}|-{short_clause} |{\cl}{internal_notes_clause}{notes_clause}</div></div></div>]===] end -- Used for both new-style and old-style templates template = template_prelude() .. [===[ ! style="width:20%;background:#d9ebff" colspan="2" | ! style="background:#d9ebff" | 男性 ! style="background:#d9ebff" | 中性 ! style="background:#d9ebff" | 女性 ! style="background:#d9ebff" | 複数 ]===] .. template_postlude() -- Used for both new-style and old-style templates full_clause = [===[ |- ! style="background:#eff7ff" colspan="2" | 主格 | {nom_m} | {nom_n} | {nom_f} | {nom_p} |- ! style="background:#eff7ff" colspan="2" | 生格 | colspan="2" | {gen_m} | {gen_f} | {gen_p} |- ! style="background:#eff7ff" colspan="2" | 与格 | colspan="2" | {dat_m} | {dat_f} | {dat_p} |- ! style="background:#eff7ff" rowspan="2" | 対格 ! style="background:#eff7ff" | 活動体 | {acc_m_an} | rowspan="2" | {acc_n} | rowspan="2" | {acc_f} | {acc_p_an} |- ! style="background:#eff7ff" | 不活動体 | {acc_m_in} | {acc_p_in} |- ! style="background:#eff7ff" colspan="2" | 造格 | colspan="2" | {ins_m} | {ins_f} | {ins_p} |- ! style="background:#eff7ff" colspan="2" | 前置格 | colspan="2" | {pre_m} | {pre_f} | {pre_p} ]===] -- Used for both new-style and old-style templates template_no_neuter = template_prelude("55") .. [===[ ! style="width:20%;background:#d9ebff" colspan="2" | ! style="background:#d9ebff" | 男性 ! style="background:#d9ebff" | 女性 ! style="background:#d9ebff" | 複数 ]===] .. template_postlude() -- Used for both new-style and old-style templates full_clause_no_neuter = [===[ |- ! style="background:#eff7ff" colspan="2" | 主格 | {nom_m} | {nom_f} | {nom_p} |- ! style="background:#eff7ff" colspan="2" | 生格 | {gen_m} | {gen_f} | {gen_p} |- ! style="background:#eff7ff" colspan="2" | 与格 | {dat_m} | {dat_f} | {dat_p} |- ! style="background:#eff7ff" rowspan="2" | 対格 ! style="background:#eff7ff" | 活動体 | {acc_m_an} | rowspan="2" | {acc_f} | {acc_p_an} |- ! style="background:#eff7ff" | 不活動体 | {acc_m_in} | {acc_p_in} |- ! style="background:#eff7ff" colspan="2" | 造格 | {ins_m} | {ins_f} | {ins_p} |- ! style="background:#eff7ff" colspan="2" | 前置格 | {pre_m} | {pre_f} | {pre_p} ]===] -- Used for both new-style and old-style templates proper_name_template = template_prelude("55") .. [===[ ! style="width:20%;background:#d9ebff" colspan="2" | ! style="background:#d9ebff" | 男性 ! style="background:#d9ebff" | 女性 ! style="background:#d9ebff" | plural ]===] .. template_postlude() -- Used for both new-style and old-style templates proper_name_full_clause = [===[ |- ! style="background:#eff7ff" colspan="2" | 主格 | {nom_m} | {nom_f} | {nom_p} |- ! style="background:#eff7ff" colspan="2" | 生格 | {gen_m} | {gen_f} | {gen_p} |- ! style="background:#eff7ff" colspan="2" | 与格 | {dat_m} | {dat_f} | {dat_p} |- ! style="background:#eff7ff" colspan="2" | 対格 | {acc_m_an} | {acc_f} | {acc_p_an} |- ! style="background:#eff7ff" colspan="2" | 造格 | {ins_m} | {ins_f} | {ins_p} |- ! style="background:#eff7ff" colspan="2" | 前置格 | {pre_m} | {pre_f} | {pre_p} ]===] -- Used for old-style templates template_mp = template_prelude() .. [===[ ! style="width:20%;background:#d9ebff" colspan="2" | ! style="background:#d9ebff" | 男性 ! style="background:#d9ebff" | 中性 ! style="background:#d9ebff" | 女性 ! style="background:#d9ebff" | m. plural ! style="background:#d9ebff" | n./f. plural ]===] .. template_postlude() -- Used for old-style templates full_clause_mp = [===[ |- ! style="background:#eff7ff" colspan="2" | 主格 | {nom_m} | {nom_n} | {nom_f} | {nom_mp} | {nom_p} |- ! style="background:#eff7ff" colspan="2" | 生格 | colspan="2" | {gen_m} | {gen_f} | colspan="2" | {gen_p} |- ! style="background:#eff7ff" colspan="2" | 与格 | colspan="2" | {dat_m} | {dat_f} | colspan="2" | {dat_p} |- ! style="background:#eff7ff" rowspan="2" | 対格 ! style="background:#eff7ff" | 活動体 | {acc_m_an} | rowspan="2" | {acc_n} | rowspan="2" | {acc_f} | colspan="2" | {acc_p_an} |- ! style="background:#eff7ff" | 不活動体 | {acc_m_in} | {acc_mp_in} | {acc_p_in} |- ! style="background:#eff7ff" colspan="2" | 造格 | colspan="2" | {ins_m} | {ins_f} | colspan="2" | {ins_p} |- ! style="background:#eff7ff" colspan="2" | 前置格 | colspan="2" | {pre_m} | {pre_f} | colspan="2" | {pre_p} ]===] -- Used for old-style templates template_mp_no_neuter = template_prelude("60") .. [===[ ! style="width:20%;background:#d9ebff" colspan="2" | ! style="background:#d9ebff" | 男性 ! style="background:#d9ebff" | 女性 ! style="background:#d9ebff" | 男性複数 ! style="background:#d9ebff" | 中性/女性複数 ]===] .. template_postlude() -- Used for old-style templates full_clause_mp_no_neuter = [===[ |- ! style="background:#eff7ff" colspan="2" | 主格 | {nom_m} | {nom_f} | {nom_mp} | {nom_p} |- ! style="background:#eff7ff" colspan="2" | 生格 | {gen_m} | {gen_f} | colspan="2" | {gen_p} |- ! style="background:#eff7ff" colspan="2" | 与格 | {dat_m} | {dat_f} | colspan="2" | {dat_p} |- ! style="background:#eff7ff" rowspan="2" | 対格 ! style="background:#eff7ff" | 活動体 | {acc_m_an} | rowspan="2" | {acc_f} | colspan="2" | {acc_p_an} |- ! style="background:#eff7ff" | 不活動体 | {acc_m_in} | {acc_mp_in} | {acc_p_in} |- ! style="background:#eff7ff" colspan="2" | 造格 | {ins_m} | {ins_f} | colspan="2" | {ins_p} |- ! style="background:#eff7ff" colspan="2" | 前置格 | {pre_m} | {pre_f} | colspan="2" | {pre_p} ]===] -- Used for два and compounds template_dva = template_prelude("55") .. [===[ ! style="width:20%;background:#d9ebff" colspan="2" | ! style="background:#d9ebff" | 男性/中性 ! style="background:#d9ebff" | 女性 ]===] .. template_postlude() -- Used for both new-style and old-style templates of два (only for два itself, -- which has an animacy distinction; not for compounds) full_clause_dva = [===[ |- ! style="background:#eff7ff" colspan="2" | 主格 | {nom_mp} | {nom_fp} |- ! style="background:#eff7ff" colspan="2" | 生格 | colspan="2" | {gen_p} |- ! style="background:#eff7ff" colspan="2" | 与格 | colspan="2" | {dat_p} |- ! style="background:#eff7ff" rowspan="2" | 対格 ! style="background:#eff7ff" | 活動体 | colspan="2" | {acc_p_an} |- ! style="background:#eff7ff" | 不活動体 | {acc_mp_in} | {acc_fp_in} |- ! style="background:#eff7ff" colspan="2" | 造格 | colspan="2" | {ins_p} |- ! style="background:#eff7ff" colspan="2" | 前置格 | colspan="2" | {pre_p} ]===] -- Used for both new-style and old-style templates of compounds of два full_clause_compound_dva = [===[ |- ! style="background:#eff7ff" colspan="2" | 主格 | {nom_mp} | {nom_fp} |- ! style="background:#eff7ff" colspan="2" | 生格 | colspan="2" | {gen_p} |- ! style="background:#eff7ff" colspan="2" | 与格 | colspan="2" | {dat_p} |- ! style="background:#eff7ff" colspan="2" | 対格 | {acc_mp} | {acc_fp} |- ! style="background:#eff7ff" colspan="2" | 造格 | colspan="2" | {ins_p} |- ! style="background:#eff7ff" colspan="2" | 前置格 | colspan="2" | {pre_p} ]===] -- Used for оба template_oba = template_prelude() .. [===[ ! style="width:20%;background:#d9ebff" colspan="2" | ! style="background:#d9ebff" | 男性 ! style="background:#d9ebff" | 中性 ! style="background:#d9ebff" | 女性 ! style="background:#d9ebff" | 男性/中性複数 ! style="background:#d9ebff" | 女性複数 ]===] .. template_postlude() -- Used for both new-style and old-style templates of оба full_clause_oba = [===[ |- ! style="background:#eff7ff" colspan="2" | 主格 | {nom_m} | {nom_n} | {nom_f} | {nom_mp} | {nom_fp} |- ! style="background:#eff7ff" colspan="2" | 生格 | colspan="2" | {gen_m} | {gen_f} | {gen_mp} | {gen_fp} |- ! style="background:#eff7ff" colspan="2" | 与格 | colspan="2" | {dat_m} | {dat_f} | {dat_mp} | {dat_fp} |- ! style="background:#eff7ff" rowspan="2" | 対格 ! style="background:#eff7ff" | 活動体 | {acc_m_an} | rowspan="2" | {acc_n} | rowspan="2" | {acc_f} | {acc_mp_an} | {acc_fp_an} |- ! style="background:#eff7ff" | 不活動体 | {acc_m_in} | {acc_mp_in} | {acc_fp_in} |- ! style="background:#eff7ff" colspan="2" | 造格 | colspan="2" | {ins_m} | {ins_f} | {ins_mp} | {ins_fp} |- ! style="background:#eff7ff" colspan="2" | 前置格 | colspan="2" | {pre_m} | {pre_f} | {pre_mp} | {pre_fp} ]===] return export -- For Vim, so we get 4-space tabs -- vim: set ts=4 sw=4 noet: d21f6dga4186es7ed9jb3zq6m9m40iz opuszczać 0 192261 2340823 1550056 2026-09-02T05:35:49Z Kuroco2k 84207 2340823 wikitext text/x-wiki {{DEFAULTSORT:opuszczac opuszczać}} =={{L|pl}}== ==={{etym}}=== {{affix|pl|o-|puszczać}} ==={{pron}}=== {{pl-pr|a=Pl-opuszczać.ogg}} ==={{verb}}=== {{pl-verb|impf|pf=opuścić}} #{{context|他動詞|lang=pl}} [[退出]]する。[[辞す]]。 #{{context|他動詞|lang=pl}} [[さげる|下げる]]。[[おろす|下ろす]]。 #:{{syn|pl|obniżać|spuszczać}} #:{{ant|pl|podnosić}} #{{context|再帰動詞|reflexive-się|lang=pl}} [[さがる|下がる]]。 #:{{syn|pl|[[obniżać]] się|[[spuszczać]] się}} #:{{ant|pl|[[podnosić]] się}} ===={{conjug}}==== {{pl-conj-impf-vt|opuszczam|opuszcza|opuszczają|opuszczał|opuszczał|opuszczała|opuszczało|opuszczali|opuszczały|opuszczaj|opuszczan|opuszczanie}} ===={{seealso}}==== {{q|退出する}} *{{l|pl|odchodzić}}, {{l|pl|wychodzić}} 45wbu2d1h4mjp2x70d036i9xn59otee opuścić 0 192262 2340824 1550057 2026-09-02T05:35:49Z Kuroco2k 84207 2340824 wikitext text/x-wiki {{DEFAULTSORT:opuscic opuścić}} =={{L|pl}}== ==={{etym}}=== {{affix|pl|o-|puścić}} ==={{pron}}=== {{pl-pr|a=Pl-opuścić.ogg;LL-Q809 (pol)-Olaf-opuścić.wav}} ==={{verb}}=== {{pl-verb|pf|impf=opuszczać}} #{{context|他動詞|lang=pl}} [[退出]]する。[[辞す]]。 #{{context|他動詞|lang=pl}} [[さげる|下げる]]。[[おろす|下ろす]]。 #:{{syn|pl|obniżyć|spuścić}} #:{{ant|pl|podnieść}} #{{context|再帰動詞|reflexive-się|lang=pl}} [[さがる|下がる]]。 #:{{syn|pl|[[obniżyć]] się|[[spuścić]] się}} #:{{ant|pl|[[podnieść]] się}} ===={{conjug}}==== {{pl-conj-ap|opuścić|opuszczę|opuści|opuszczą|opuści|opuści|opuści|opuść|pp=opuszczon|pp2=opuszczeni|ap=opuściwszy|ip=opuszczono|vn=opuszczenie}} ===={{seealso}}==== {{q|退出する}} *{{l|pl|odejść}}, {{l|pl|wyjść}} h1biscder4t0dgx2x3kp8n7obtfyat9 manganon 0 198542 2340637 1785530 2026-09-01T16:41:58Z M-30722 1202 2340637 wikitext text/x-wiki =={{L|eo}}== ==={{noun}}=== {{eo-noun-form|mangano|n-|root=mangan}} hiuluv5bv5josif5cglq0tnvxbfcj0o 歌詞 0 208347 2340548 2266946 2026-09-01T14:00:01Z ~2026-47447-94 133300 /* 日本語 */ 2340548 wikitext text/x-wiki 2340549 2340548 2026-09-01T14:00:41Z ~2026-47447-94 133300 /* 日本語 */ 2340549 wikitext text/x-wiki 2340550 2340549 2026-09-01T14:11:14Z PuzzleBachelor 26979 [[Special:Diff/2340548|2340548]] から [[Special:Diff/2340549|2340549]] までの 2 版 を取り消し 2340550 wikitext text/x-wiki {{kana-DEFAULTSORT|かし}} {{wikipedia}} =={{L|ja}}== {{ja-kanjitab|か|し|yomi=o,kanon}} {{ja-kanjitab|うた|ことば|yomi=k}} ==={{pron}}=== {{ja-pron|かし|acc=1}} {{ja-pron|うたことば|acc=3}} ==={{noun}}=== {{ja-noun-suru|かし|[[うたことば]]}} # {{q|[[かし]]}} {{タグ|ja|音楽}} [[歌曲]]・[[歌劇]]などで[[ふし|節]]を付けて[[うたう|歌う]][[ことば|言葉]]。 # {{q|かし、[[うたことば]]}} {{タグ|ja|文学}} [[和歌]]に[[もちいる|用いる]]言葉。 ===={{trans}}==== {{trans-top}} * {{T|is}}: {{t+|is|texti|m-p}} * {{T|ga}}: {{t|ga|liricí|f-p}} * {{T|ar}}: {{t|ar|منشود|alt=مَنْشُود|m}}, {{t|ar|كلمات|alt=كَلَمَات|f-p}}, {{t|ar|كلمات أغنية|alt=كَلِمَات أُغْنِيَة}} * {{T|hy}}: {{t+|hy|խոսք|alt=խոսքեր}} * {{T|it}}: {{t+|it|testo|m}} * {{T|id}}: {{t+|id|lirik}} * {{T|en}}: {{t+|en|lyrics}}, {{t+|en|words}} * {{T|eo}}: {{t|eo|teksto}} * {{T|nl}}: {{t+|nl|songtekst|m}}, {{t+|nl|liedtekst|m}} * {{T|kk}}: {{t|kk|мәтін|sc=Cyrl}} * {{T|ca}}: {{t+|ca|lletra|f}} * {{T|el}}: {{t+|el|στίχοι|m-p}} * {{T|sv}}: {{t+|sv|sångtext}} * {{T|es}}: {{t+|es|letra|f}} * {{T|sl}}: {{t+|sl|besedilo|n}}, {{t|sl|tekst|m}} * {{T|th}}: {{t+|th|เนื้อ|sc=Thai}}, {{t|th|เนื้อร้อง|sc=Thai}} * {{T|cs}}: {{t+|cs|slova|n-p}} * {{T|zh}}: {{t+|cmn|歌詞|sc=Hani}}, {{t+|cmn|歌词|tr=gēcí|sc=Hani}} * {{T|ko}}: {{t+|ko|가사|sc=Hang}} ({{t+|ko|歌詞|sc=Hani}}) * {{T|da}}: {{t|da|sangtekst|m}} * {{T|de}}: {{t+|de|Liedtext|m}}, {{t+|de|Text|m}}, {{t+|de|Songtext|m}} * {{T|tr}}: {{t+|tr|güfte}}, {{t+|tr|neşide}}, {{t|tr|menşud}}, {{t+|tr|söz}} * {{T|no}}: {{t+|no|tekst|m|f}} * {{T|hu}}: {{t+|hu|dalszöveg}}, {{t+|hu|szöveg}} * {{T|hi}}: {{t|hi|लिरिक्रस|tr=lirikras}}, {{t+|hi|गीत|m|tr=gīt}}, {{t+|hi|गीतिकाव्य|tr=gītikāvya}} * {{T|fi}}: {{t+|fi|sanoitus}} * {{T|fr}}: {{t+|fr|paroles|f-p}} * {{T|vi}}: {{t|vi|thơ tình}}, {{t-|vi|ca từ}} * {{T|he}}: {{t|he|מלים לשׁיר|alt=מִלִים לְשִׁיר}} * {{T|pl}}: {{t|pl|tekst piosenki|m}}, {{t+|pl|tekst|m}}, {{t+|pl|słowa|n-p}} * {{T|pt}}: {{t+|pt|letra|f}}, {{t+|pt|letras|f}} * {{T|ms}}: {{t|ms|lirik}}, {{t|ms|seni kata}} * {{T|mn}}: {{t|mn|дууны үг}} * {{T|ru}}: {{t+|ru|слова|n-p}}, {{t+|ru|текст|m}}, {{t+|ru|тексты|p}}, {{t|ru|слова песен|n-p}}, {{t|ru|тексты песен|m-p}}, {{t+|ru|лирика|f}} (俗語) {{trans-bottom}} =={{L|zh}}== {{zh-cat|ge1ci2|noun|音楽}} {{yue-cat|go1chi4|noun|音楽}} {{nan-cat|koa1su5|noun|音楽}} {{nan-tws-cat|go1se5|noun|音楽}} {{hak-cat|ko1chhii2|noun|音楽}} {{wuu-cat|ku1zy3|noun|音楽}} ==={{pron}}=== {{cmn-pron|gēcí|er=y}} {{yue-pron|go1 ci4}} {{nan-pron|xm,zz,tw:koa-sû/qz:koa-sîr/xm,zz:ko-sû|t=go1 se5}} {{hak-pron|kô-chhṳ̀|h=goˋ cii}} {{wuu-pron|sh:1ku 6zy}} ==={{noun}}=== {{zhchars|s=歌词}} #(音楽)歌詞。 =={{L|ko}}== ==={{noun}}=== {{ko-head|noun|가사|cat2=音楽}} #(音楽)歌詞。 =={{L|vi}}== ==={{noun}}=== {{vi-head|noun|ca|từ|cat2=音楽}} #(音楽)歌詞。 9ate1wjpp3hefpiyv7brldwmnskj5o0 2340557 2340550 2026-09-01T14:41:00Z ~2026-47554-52 133303 [[Special:Contributions/PuzzleBachelor|PuzzleBachelor]] ([[User talk:PuzzleBachelor|トーク]]) による版 [[Special:Diff/2340550|2340550]] を取り消し 2340557 wikitext text/x-wiki 2340558 2340557 2026-09-01T14:41:19Z Veritas Sapientiae 94392 Reverted edits by [[Special:Contribs/~2026-47554-52|~2026-47554-52]] ([[User talk:~2026-47554-52|talk]]) to last version by PuzzleBachelor: reverting vandalism 2340550 wikitext text/x-wiki {{kana-DEFAULTSORT|かし}} {{wikipedia}} =={{L|ja}}== {{ja-kanjitab|か|し|yomi=o,kanon}} {{ja-kanjitab|うた|ことば|yomi=k}} ==={{pron}}=== {{ja-pron|かし|acc=1}} {{ja-pron|うたことば|acc=3}} ==={{noun}}=== {{ja-noun-suru|かし|[[うたことば]]}} # {{q|[[かし]]}} {{タグ|ja|音楽}} [[歌曲]]・[[歌劇]]などで[[ふし|節]]を付けて[[うたう|歌う]][[ことば|言葉]]。 # {{q|かし、[[うたことば]]}} {{タグ|ja|文学}} [[和歌]]に[[もちいる|用いる]]言葉。 ===={{trans}}==== {{trans-top}} * {{T|is}}: {{t+|is|texti|m-p}} * {{T|ga}}: {{t|ga|liricí|f-p}} * {{T|ar}}: {{t|ar|منشود|alt=مَنْشُود|m}}, {{t|ar|كلمات|alt=كَلَمَات|f-p}}, {{t|ar|كلمات أغنية|alt=كَلِمَات أُغْنِيَة}} * {{T|hy}}: {{t+|hy|խոսք|alt=խոսքեր}} * {{T|it}}: {{t+|it|testo|m}} * {{T|id}}: {{t+|id|lirik}} * {{T|en}}: {{t+|en|lyrics}}, {{t+|en|words}} * {{T|eo}}: {{t|eo|teksto}} * {{T|nl}}: {{t+|nl|songtekst|m}}, {{t+|nl|liedtekst|m}} * {{T|kk}}: {{t|kk|мәтін|sc=Cyrl}} * {{T|ca}}: {{t+|ca|lletra|f}} * {{T|el}}: {{t+|el|στίχοι|m-p}} * {{T|sv}}: {{t+|sv|sångtext}} * {{T|es}}: {{t+|es|letra|f}} * {{T|sl}}: {{t+|sl|besedilo|n}}, {{t|sl|tekst|m}} * {{T|th}}: {{t+|th|เนื้อ|sc=Thai}}, {{t|th|เนื้อร้อง|sc=Thai}} * {{T|cs}}: {{t+|cs|slova|n-p}} * {{T|zh}}: {{t+|cmn|歌詞|sc=Hani}}, {{t+|cmn|歌词|tr=gēcí|sc=Hani}} * {{T|ko}}: {{t+|ko|가사|sc=Hang}} ({{t+|ko|歌詞|sc=Hani}}) * {{T|da}}: {{t|da|sangtekst|m}} * {{T|de}}: {{t+|de|Liedtext|m}}, {{t+|de|Text|m}}, {{t+|de|Songtext|m}} * {{T|tr}}: {{t+|tr|güfte}}, {{t+|tr|neşide}}, {{t|tr|menşud}}, {{t+|tr|söz}} * {{T|no}}: {{t+|no|tekst|m|f}} * {{T|hu}}: {{t+|hu|dalszöveg}}, {{t+|hu|szöveg}} * {{T|hi}}: {{t|hi|लिरिक्रस|tr=lirikras}}, {{t+|hi|गीत|m|tr=gīt}}, {{t+|hi|गीतिकाव्य|tr=gītikāvya}} * {{T|fi}}: {{t+|fi|sanoitus}} * {{T|fr}}: {{t+|fr|paroles|f-p}} * {{T|vi}}: {{t|vi|thơ tình}}, {{t-|vi|ca từ}} * {{T|he}}: {{t|he|מלים לשׁיר|alt=מִלִים לְשִׁיר}} * {{T|pl}}: {{t|pl|tekst piosenki|m}}, {{t+|pl|tekst|m}}, {{t+|pl|słowa|n-p}} * {{T|pt}}: {{t+|pt|letra|f}}, {{t+|pt|letras|f}} * {{T|ms}}: {{t|ms|lirik}}, {{t|ms|seni kata}} * {{T|mn}}: {{t|mn|дууны үг}} * {{T|ru}}: {{t+|ru|слова|n-p}}, {{t+|ru|текст|m}}, {{t+|ru|тексты|p}}, {{t|ru|слова песен|n-p}}, {{t|ru|тексты песен|m-p}}, {{t+|ru|лирика|f}} (俗語) {{trans-bottom}} =={{L|zh}}== {{zh-cat|ge1ci2|noun|音楽}} {{yue-cat|go1chi4|noun|音楽}} {{nan-cat|koa1su5|noun|音楽}} {{nan-tws-cat|go1se5|noun|音楽}} {{hak-cat|ko1chhii2|noun|音楽}} {{wuu-cat|ku1zy3|noun|音楽}} ==={{pron}}=== {{cmn-pron|gēcí|er=y}} {{yue-pron|go1 ci4}} {{nan-pron|xm,zz,tw:koa-sû/qz:koa-sîr/xm,zz:ko-sû|t=go1 se5}} {{hak-pron|kô-chhṳ̀|h=goˋ cii}} {{wuu-pron|sh:1ku 6zy}} ==={{noun}}=== {{zhchars|s=歌词}} #(音楽)歌詞。 =={{L|ko}}== ==={{noun}}=== {{ko-head|noun|가사|cat2=音楽}} #(音楽)歌詞。 =={{L|vi}}== ==={{noun}}=== {{vi-head|noun|ca|từ|cat2=音楽}} #(音楽)歌詞。 9ate1wjpp3hefpiyv7brldwmnskj5o0 2340559 2340558 2026-09-01T14:42:02Z ~2026-47554-52 133303 [[Special:Contributions/Veritas Sapientiae|Veritas Sapientiae]] ([[User talk:Veritas Sapientiae|トーク]]) による版 [[Special:Diff/2340558|2340558]] を取り消し 2340559 wikitext text/x-wiki 2340563 2340559 2026-09-01T14:44:36Z Veritas Sapientiae 94392 [[特別:Contributions/~2026-47554-52|~2026-47554-52]]による編集を取り消し、Veritas Sapientiaeによる最新版へと差し戻しを行いました。 2340550 wikitext text/x-wiki {{kana-DEFAULTSORT|かし}} {{wikipedia}} =={{L|ja}}== {{ja-kanjitab|か|し|yomi=o,kanon}} {{ja-kanjitab|うた|ことば|yomi=k}} ==={{pron}}=== {{ja-pron|かし|acc=1}} {{ja-pron|うたことば|acc=3}} ==={{noun}}=== {{ja-noun-suru|かし|[[うたことば]]}} # {{q|[[かし]]}} {{タグ|ja|音楽}} [[歌曲]]・[[歌劇]]などで[[ふし|節]]を付けて[[うたう|歌う]][[ことば|言葉]]。 # {{q|かし、[[うたことば]]}} {{タグ|ja|文学}} [[和歌]]に[[もちいる|用いる]]言葉。 ===={{trans}}==== {{trans-top}} * {{T|is}}: {{t+|is|texti|m-p}} * {{T|ga}}: {{t|ga|liricí|f-p}} * {{T|ar}}: {{t|ar|منشود|alt=مَنْشُود|m}}, {{t|ar|كلمات|alt=كَلَمَات|f-p}}, {{t|ar|كلمات أغنية|alt=كَلِمَات أُغْنِيَة}} * {{T|hy}}: {{t+|hy|խոսք|alt=խոսքեր}} * {{T|it}}: {{t+|it|testo|m}} * {{T|id}}: {{t+|id|lirik}} * {{T|en}}: {{t+|en|lyrics}}, {{t+|en|words}} * {{T|eo}}: {{t|eo|teksto}} * {{T|nl}}: {{t+|nl|songtekst|m}}, {{t+|nl|liedtekst|m}} * {{T|kk}}: {{t|kk|мәтін|sc=Cyrl}} * {{T|ca}}: {{t+|ca|lletra|f}} * {{T|el}}: {{t+|el|στίχοι|m-p}} * {{T|sv}}: {{t+|sv|sångtext}} * {{T|es}}: {{t+|es|letra|f}} * {{T|sl}}: {{t+|sl|besedilo|n}}, {{t|sl|tekst|m}} * {{T|th}}: {{t+|th|เนื้อ|sc=Thai}}, {{t|th|เนื้อร้อง|sc=Thai}} * {{T|cs}}: {{t+|cs|slova|n-p}} * {{T|zh}}: {{t+|cmn|歌詞|sc=Hani}}, {{t+|cmn|歌词|tr=gēcí|sc=Hani}} * {{T|ko}}: {{t+|ko|가사|sc=Hang}} ({{t+|ko|歌詞|sc=Hani}}) * {{T|da}}: {{t|da|sangtekst|m}} * {{T|de}}: {{t+|de|Liedtext|m}}, {{t+|de|Text|m}}, {{t+|de|Songtext|m}} * {{T|tr}}: {{t+|tr|güfte}}, {{t+|tr|neşide}}, {{t|tr|menşud}}, {{t+|tr|söz}} * {{T|no}}: {{t+|no|tekst|m|f}} * {{T|hu}}: {{t+|hu|dalszöveg}}, {{t+|hu|szöveg}} * {{T|hi}}: {{t|hi|लिरिक्रस|tr=lirikras}}, {{t+|hi|गीत|m|tr=gīt}}, {{t+|hi|गीतिकाव्य|tr=gītikāvya}} * {{T|fi}}: {{t+|fi|sanoitus}} * {{T|fr}}: {{t+|fr|paroles|f-p}} * {{T|vi}}: {{t|vi|thơ tình}}, {{t-|vi|ca từ}} * {{T|he}}: {{t|he|מלים לשׁיר|alt=מִלִים לְשִׁיר}} * {{T|pl}}: {{t|pl|tekst piosenki|m}}, {{t+|pl|tekst|m}}, {{t+|pl|słowa|n-p}} * {{T|pt}}: {{t+|pt|letra|f}}, {{t+|pt|letras|f}} * {{T|ms}}: {{t|ms|lirik}}, {{t|ms|seni kata}} * {{T|mn}}: {{t|mn|дууны үг}} * {{T|ru}}: {{t+|ru|слова|n-p}}, {{t+|ru|текст|m}}, {{t+|ru|тексты|p}}, {{t|ru|слова песен|n-p}}, {{t|ru|тексты песен|m-p}}, {{t+|ru|лирика|f}} (俗語) {{trans-bottom}} =={{L|zh}}== {{zh-cat|ge1ci2|noun|音楽}} {{yue-cat|go1chi4|noun|音楽}} {{nan-cat|koa1su5|noun|音楽}} {{nan-tws-cat|go1se5|noun|音楽}} {{hak-cat|ko1chhii2|noun|音楽}} {{wuu-cat|ku1zy3|noun|音楽}} ==={{pron}}=== {{cmn-pron|gēcí|er=y}} {{yue-pron|go1 ci4}} {{nan-pron|xm,zz,tw:koa-sû/qz:koa-sîr/xm,zz:ko-sû|t=go1 se5}} {{hak-pron|kô-chhṳ̀|h=goˋ cii}} {{wuu-pron|sh:1ku 6zy}} ==={{noun}}=== {{zhchars|s=歌词}} #(音楽)歌詞。 =={{L|ko}}== ==={{noun}}=== {{ko-head|noun|가사|cat2=音楽}} #(音楽)歌詞。 =={{L|vi}}== ==={{noun}}=== {{vi-head|noun|ca|từ|cat2=音楽}} #(音楽)歌詞。 9ate1wjpp3hefpiyv7brldwmnskj5o0 2340571 2340563 2026-09-01T14:48:53Z ~2026-47357-55 133304 [[Special:Contributions/Veritas Sapientiae|Veritas Sapientiae]] ([[User talk:Veritas Sapientiae|トーク]]) による版 [[Special:Diff/2340563|2340563]] を取り消し 2340571 wikitext text/x-wiki 2340576 2340571 2026-09-01T15:07:35Z 20041027 tatsu 59964 [[特別:Contributions/~2026-47357-55|~2026-47357-55]]による編集を取り消し、Veritas Sapientiaeによる最新版へと差し戻しを行いました。 2340550 wikitext text/x-wiki {{kana-DEFAULTSORT|かし}} {{wikipedia}} =={{L|ja}}== {{ja-kanjitab|か|し|yomi=o,kanon}} {{ja-kanjitab|うた|ことば|yomi=k}} ==={{pron}}=== {{ja-pron|かし|acc=1}} {{ja-pron|うたことば|acc=3}} ==={{noun}}=== {{ja-noun-suru|かし|[[うたことば]]}} # {{q|[[かし]]}} {{タグ|ja|音楽}} [[歌曲]]・[[歌劇]]などで[[ふし|節]]を付けて[[うたう|歌う]][[ことば|言葉]]。 # {{q|かし、[[うたことば]]}} {{タグ|ja|文学}} [[和歌]]に[[もちいる|用いる]]言葉。 ===={{trans}}==== {{trans-top}} * {{T|is}}: {{t+|is|texti|m-p}} * {{T|ga}}: {{t|ga|liricí|f-p}} * {{T|ar}}: {{t|ar|منشود|alt=مَنْشُود|m}}, {{t|ar|كلمات|alt=كَلَمَات|f-p}}, {{t|ar|كلمات أغنية|alt=كَلِمَات أُغْنِيَة}} * {{T|hy}}: {{t+|hy|խոսք|alt=խոսքեր}} * {{T|it}}: {{t+|it|testo|m}} * {{T|id}}: {{t+|id|lirik}} * {{T|en}}: {{t+|en|lyrics}}, {{t+|en|words}} * {{T|eo}}: {{t|eo|teksto}} * {{T|nl}}: {{t+|nl|songtekst|m}}, {{t+|nl|liedtekst|m}} * {{T|kk}}: {{t|kk|мәтін|sc=Cyrl}} * {{T|ca}}: {{t+|ca|lletra|f}} * {{T|el}}: {{t+|el|στίχοι|m-p}} * {{T|sv}}: {{t+|sv|sångtext}} * {{T|es}}: {{t+|es|letra|f}} * {{T|sl}}: {{t+|sl|besedilo|n}}, {{t|sl|tekst|m}} * {{T|th}}: {{t+|th|เนื้อ|sc=Thai}}, {{t|th|เนื้อร้อง|sc=Thai}} * {{T|cs}}: {{t+|cs|slova|n-p}} * {{T|zh}}: {{t+|cmn|歌詞|sc=Hani}}, {{t+|cmn|歌词|tr=gēcí|sc=Hani}} * {{T|ko}}: {{t+|ko|가사|sc=Hang}} ({{t+|ko|歌詞|sc=Hani}}) * {{T|da}}: {{t|da|sangtekst|m}} * {{T|de}}: {{t+|de|Liedtext|m}}, {{t+|de|Text|m}}, {{t+|de|Songtext|m}} * {{T|tr}}: {{t+|tr|güfte}}, {{t+|tr|neşide}}, {{t|tr|menşud}}, {{t+|tr|söz}} * {{T|no}}: {{t+|no|tekst|m|f}} * {{T|hu}}: {{t+|hu|dalszöveg}}, {{t+|hu|szöveg}} * {{T|hi}}: {{t|hi|लिरिक्रस|tr=lirikras}}, {{t+|hi|गीत|m|tr=gīt}}, {{t+|hi|गीतिकाव्य|tr=gītikāvya}} * {{T|fi}}: {{t+|fi|sanoitus}} * {{T|fr}}: {{t+|fr|paroles|f-p}} * {{T|vi}}: {{t|vi|thơ tình}}, {{t-|vi|ca từ}} * {{T|he}}: {{t|he|מלים לשׁיר|alt=מִלִים לְשִׁיר}} * {{T|pl}}: {{t|pl|tekst piosenki|m}}, {{t+|pl|tekst|m}}, {{t+|pl|słowa|n-p}} * {{T|pt}}: {{t+|pt|letra|f}}, {{t+|pt|letras|f}} * {{T|ms}}: {{t|ms|lirik}}, {{t|ms|seni kata}} * {{T|mn}}: {{t|mn|дууны үг}} * {{T|ru}}: {{t+|ru|слова|n-p}}, {{t+|ru|текст|m}}, {{t+|ru|тексты|p}}, {{t|ru|слова песен|n-p}}, {{t|ru|тексты песен|m-p}}, {{t+|ru|лирика|f}} (俗語) {{trans-bottom}} =={{L|zh}}== {{zh-cat|ge1ci2|noun|音楽}} {{yue-cat|go1chi4|noun|音楽}} {{nan-cat|koa1su5|noun|音楽}} {{nan-tws-cat|go1se5|noun|音楽}} {{hak-cat|ko1chhii2|noun|音楽}} {{wuu-cat|ku1zy3|noun|音楽}} ==={{pron}}=== {{cmn-pron|gēcí|er=y}} {{yue-pron|go1 ci4}} {{nan-pron|xm,zz,tw:koa-sû/qz:koa-sîr/xm,zz:ko-sû|t=go1 se5}} {{hak-pron|kô-chhṳ̀|h=goˋ cii}} {{wuu-pron|sh:1ku 6zy}} ==={{noun}}=== {{zhchars|s=歌词}} #(音楽)歌詞。 =={{L|ko}}== ==={{noun}}=== {{ko-head|noun|가사|cat2=音楽}} #(音楽)歌詞。 =={{L|vi}}== ==={{noun}}=== {{vi-head|noun|ca|từ|cat2=音楽}} #(音楽)歌詞。 9ate1wjpp3hefpiyv7brldwmnskj5o0 2340593 2340576 2026-09-01T15:34:49Z ~2026-47417-33 133306 /* 日本語 */ 2340593 wikitext text/x-wiki 2340596 2340593 2026-09-01T15:37:44Z 20041027 tatsu 59964 [[特別:Contributions/~2026-47417-33|~2026-47417-33]]による編集を取り消し、20041027 tatsuによる最新版へと差し戻しを行いました。 2340550 wikitext text/x-wiki {{kana-DEFAULTSORT|かし}} {{wikipedia}} =={{L|ja}}== {{ja-kanjitab|か|し|yomi=o,kanon}} {{ja-kanjitab|うた|ことば|yomi=k}} ==={{pron}}=== {{ja-pron|かし|acc=1}} {{ja-pron|うたことば|acc=3}} ==={{noun}}=== {{ja-noun-suru|かし|[[うたことば]]}} # {{q|[[かし]]}} {{タグ|ja|音楽}} [[歌曲]]・[[歌劇]]などで[[ふし|節]]を付けて[[うたう|歌う]][[ことば|言葉]]。 # {{q|かし、[[うたことば]]}} {{タグ|ja|文学}} [[和歌]]に[[もちいる|用いる]]言葉。 ===={{trans}}==== {{trans-top}} * {{T|is}}: {{t+|is|texti|m-p}} * {{T|ga}}: {{t|ga|liricí|f-p}} * {{T|ar}}: {{t|ar|منشود|alt=مَنْشُود|m}}, {{t|ar|كلمات|alt=كَلَمَات|f-p}}, {{t|ar|كلمات أغنية|alt=كَلِمَات أُغْنِيَة}} * {{T|hy}}: {{t+|hy|խոսք|alt=խոսքեր}} * {{T|it}}: {{t+|it|testo|m}} * {{T|id}}: {{t+|id|lirik}} * {{T|en}}: {{t+|en|lyrics}}, {{t+|en|words}} * {{T|eo}}: {{t|eo|teksto}} * {{T|nl}}: {{t+|nl|songtekst|m}}, {{t+|nl|liedtekst|m}} * {{T|kk}}: {{t|kk|мәтін|sc=Cyrl}} * {{T|ca}}: {{t+|ca|lletra|f}} * {{T|el}}: {{t+|el|στίχοι|m-p}} * {{T|sv}}: {{t+|sv|sångtext}} * {{T|es}}: {{t+|es|letra|f}} * {{T|sl}}: {{t+|sl|besedilo|n}}, {{t|sl|tekst|m}} * {{T|th}}: {{t+|th|เนื้อ|sc=Thai}}, {{t|th|เนื้อร้อง|sc=Thai}} * {{T|cs}}: {{t+|cs|slova|n-p}} * {{T|zh}}: {{t+|cmn|歌詞|sc=Hani}}, {{t+|cmn|歌词|tr=gēcí|sc=Hani}} * {{T|ko}}: {{t+|ko|가사|sc=Hang}} ({{t+|ko|歌詞|sc=Hani}}) * {{T|da}}: {{t|da|sangtekst|m}} * {{T|de}}: {{t+|de|Liedtext|m}}, {{t+|de|Text|m}}, {{t+|de|Songtext|m}} * {{T|tr}}: {{t+|tr|güfte}}, {{t+|tr|neşide}}, {{t|tr|menşud}}, {{t+|tr|söz}} * {{T|no}}: {{t+|no|tekst|m|f}} * {{T|hu}}: {{t+|hu|dalszöveg}}, {{t+|hu|szöveg}} * {{T|hi}}: {{t|hi|लिरिक्रस|tr=lirikras}}, {{t+|hi|गीत|m|tr=gīt}}, {{t+|hi|गीतिकाव्य|tr=gītikāvya}} * {{T|fi}}: {{t+|fi|sanoitus}} * {{T|fr}}: {{t+|fr|paroles|f-p}} * {{T|vi}}: {{t|vi|thơ tình}}, {{t-|vi|ca từ}} * {{T|he}}: {{t|he|מלים לשׁיר|alt=מִלִים לְשִׁיר}} * {{T|pl}}: {{t|pl|tekst piosenki|m}}, {{t+|pl|tekst|m}}, {{t+|pl|słowa|n-p}} * {{T|pt}}: {{t+|pt|letra|f}}, {{t+|pt|letras|f}} * {{T|ms}}: {{t|ms|lirik}}, {{t|ms|seni kata}} * {{T|mn}}: {{t|mn|дууны үг}} * {{T|ru}}: {{t+|ru|слова|n-p}}, {{t+|ru|текст|m}}, {{t+|ru|тексты|p}}, {{t|ru|слова песен|n-p}}, {{t|ru|тексты песен|m-p}}, {{t+|ru|лирика|f}} (俗語) {{trans-bottom}} =={{L|zh}}== {{zh-cat|ge1ci2|noun|音楽}} {{yue-cat|go1chi4|noun|音楽}} {{nan-cat|koa1su5|noun|音楽}} {{nan-tws-cat|go1se5|noun|音楽}} {{hak-cat|ko1chhii2|noun|音楽}} {{wuu-cat|ku1zy3|noun|音楽}} ==={{pron}}=== {{cmn-pron|gēcí|er=y}} {{yue-pron|go1 ci4}} {{nan-pron|xm,zz,tw:koa-sû/qz:koa-sîr/xm,zz:ko-sû|t=go1 se5}} {{hak-pron|kô-chhṳ̀|h=goˋ cii}} {{wuu-pron|sh:1ku 6zy}} ==={{noun}}=== {{zhchars|s=歌词}} #(音楽)歌詞。 =={{L|ko}}== ==={{noun}}=== {{ko-head|noun|가사|cat2=音楽}} #(音楽)歌詞。 =={{L|vi}}== ==={{noun}}=== {{vi-head|noun|ca|từ|cat2=音楽}} #(音楽)歌詞。 9ate1wjpp3hefpiyv7brldwmnskj5o0 2340598 2340596 2026-09-01T15:38:07Z 20041027 tatsu 59964 「[[歌詞]]」を保護しました ([編集=自動承認された利用者のみ許可] (2026年9月8日 (火) 15:38(UTC)で自動的に解除) [移動=自動承認された利用者のみ許可] (2026年9月8日 (火) 15:38(UTC)で自動的に解除)) 2340550 wikitext text/x-wiki {{kana-DEFAULTSORT|かし}} {{wikipedia}} =={{L|ja}}== {{ja-kanjitab|か|し|yomi=o,kanon}} {{ja-kanjitab|うた|ことば|yomi=k}} ==={{pron}}=== {{ja-pron|かし|acc=1}} {{ja-pron|うたことば|acc=3}} ==={{noun}}=== {{ja-noun-suru|かし|[[うたことば]]}} # {{q|[[かし]]}} {{タグ|ja|音楽}} [[歌曲]]・[[歌劇]]などで[[ふし|節]]を付けて[[うたう|歌う]][[ことば|言葉]]。 # {{q|かし、[[うたことば]]}} {{タグ|ja|文学}} [[和歌]]に[[もちいる|用いる]]言葉。 ===={{trans}}==== {{trans-top}} * {{T|is}}: {{t+|is|texti|m-p}} * {{T|ga}}: {{t|ga|liricí|f-p}} * {{T|ar}}: {{t|ar|منشود|alt=مَنْشُود|m}}, {{t|ar|كلمات|alt=كَلَمَات|f-p}}, {{t|ar|كلمات أغنية|alt=كَلِمَات أُغْنِيَة}} * {{T|hy}}: {{t+|hy|խոսք|alt=խոսքեր}} * {{T|it}}: {{t+|it|testo|m}} * {{T|id}}: {{t+|id|lirik}} * {{T|en}}: {{t+|en|lyrics}}, {{t+|en|words}} * {{T|eo}}: {{t|eo|teksto}} * {{T|nl}}: {{t+|nl|songtekst|m}}, {{t+|nl|liedtekst|m}} * {{T|kk}}: {{t|kk|мәтін|sc=Cyrl}} * {{T|ca}}: {{t+|ca|lletra|f}} * {{T|el}}: {{t+|el|στίχοι|m-p}} * {{T|sv}}: {{t+|sv|sångtext}} * {{T|es}}: {{t+|es|letra|f}} * {{T|sl}}: {{t+|sl|besedilo|n}}, {{t|sl|tekst|m}} * {{T|th}}: {{t+|th|เนื้อ|sc=Thai}}, {{t|th|เนื้อร้อง|sc=Thai}} * {{T|cs}}: {{t+|cs|slova|n-p}} * {{T|zh}}: {{t+|cmn|歌詞|sc=Hani}}, {{t+|cmn|歌词|tr=gēcí|sc=Hani}} * {{T|ko}}: {{t+|ko|가사|sc=Hang}} ({{t+|ko|歌詞|sc=Hani}}) * {{T|da}}: {{t|da|sangtekst|m}} * {{T|de}}: {{t+|de|Liedtext|m}}, {{t+|de|Text|m}}, {{t+|de|Songtext|m}} * {{T|tr}}: {{t+|tr|güfte}}, {{t+|tr|neşide}}, {{t|tr|menşud}}, {{t+|tr|söz}} * {{T|no}}: {{t+|no|tekst|m|f}} * {{T|hu}}: {{t+|hu|dalszöveg}}, {{t+|hu|szöveg}} * {{T|hi}}: {{t|hi|लिरिक्रस|tr=lirikras}}, {{t+|hi|गीत|m|tr=gīt}}, {{t+|hi|गीतिकाव्य|tr=gītikāvya}} * {{T|fi}}: {{t+|fi|sanoitus}} * {{T|fr}}: {{t+|fr|paroles|f-p}} * {{T|vi}}: {{t|vi|thơ tình}}, {{t-|vi|ca từ}} * {{T|he}}: {{t|he|מלים לשׁיר|alt=מִלִים לְשִׁיר}} * {{T|pl}}: {{t|pl|tekst piosenki|m}}, {{t+|pl|tekst|m}}, {{t+|pl|słowa|n-p}} * {{T|pt}}: {{t+|pt|letra|f}}, {{t+|pt|letras|f}} * {{T|ms}}: {{t|ms|lirik}}, {{t|ms|seni kata}} * {{T|mn}}: {{t|mn|дууны үг}} * {{T|ru}}: {{t+|ru|слова|n-p}}, {{t+|ru|текст|m}}, {{t+|ru|тексты|p}}, {{t|ru|слова песен|n-p}}, {{t|ru|тексты песен|m-p}}, {{t+|ru|лирика|f}} (俗語) {{trans-bottom}} =={{L|zh}}== {{zh-cat|ge1ci2|noun|音楽}} {{yue-cat|go1chi4|noun|音楽}} {{nan-cat|koa1su5|noun|音楽}} {{nan-tws-cat|go1se5|noun|音楽}} {{hak-cat|ko1chhii2|noun|音楽}} {{wuu-cat|ku1zy3|noun|音楽}} ==={{pron}}=== {{cmn-pron|gēcí|er=y}} {{yue-pron|go1 ci4}} {{nan-pron|xm,zz,tw:koa-sû/qz:koa-sîr/xm,zz:ko-sû|t=go1 se5}} {{hak-pron|kô-chhṳ̀|h=goˋ cii}} {{wuu-pron|sh:1ku 6zy}} ==={{noun}}=== {{zhchars|s=歌词}} #(音楽)歌詞。 =={{L|ko}}== ==={{noun}}=== {{ko-head|noun|가사|cat2=音楽}} #(音楽)歌詞。 =={{L|vi}}== ==={{noun}}=== {{vi-head|noun|ca|từ|cat2=音楽}} #(音楽)歌詞。 9ate1wjpp3hefpiyv7brldwmnskj5o0 adtentio 0 209396 2341173 1529961 2026-09-02T11:15:33Z Kuroco2k 84207 2341173 wikitext text/x-wiki =={{L|la}}== ==={{noun}}=== {{la-noun|adtentiō|adtentionis|adtentiōnis|f|third}} #[[attentio|attentiō]]の異綴。 ===={{decl}}==== {{la-ndecl|adtentiō<3>}} ei446220kpv3yzs0000xo56wei9phja かいどう 0 210078 2340703 1927999 2026-09-01T18:07:05Z M-30722 1202 2340703 wikitext text/x-wiki {{kana-DEFAULTSORT}} {{also|かいとう|がいとう}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana|h=y}} *【[[街道]]】[[重要]]な[[道路]]。 *【[[海道]]】[[海路]]。 *【[[会同]]】[[会合]]。 *【[[会堂]]】[[キリスト教]]の[[教会堂]]。 *【[[開堂]]】[[開堂祝寿]]。 *【[[怪童]]】[[ちから|力]]のある[[こども|子供]]。 *【[[皆働]]】[[皆労]]。 *【[[海棠]]】[[ホンカイドウ]]。 fdx5k2tcz10k6z5k6dypymg9r0m2ken ház 0 211409 2340771 2325245 2026-09-02T00:05:33Z NekoyamaWataru 87354 /* {{hu}} */ 語句の修正 2340771 wikitext text/x-wiki {{also|haz}}{{DEFAULTSORT:haz ház}} =={{hu}}== [[File:Lehecsenyi fazekas haza 18sz masodik fele.jpg|thumb|(1) '''ház''']] [[File:Delivery Driver Ringing a Doorbell Delivering Takeout.jpg|thumb|(2) '''házhoz''' szállítás]] [[File:House of Commons 2010.jpg|thumb|(5) londoni alsó'''ház''']] ==={{pron}}=== *{{hu-IPA}} *{{audio|hu|Hu-ház.ogg}} *{{hyph|hu|ház}} ==={{etym}}=== {{etyl|fiu-pro|hu}} {{recons|kota|lang=urj-pro}} ==={{noun}}=== {{hu-noun|ak}} # [[いえ|家]]、[[家屋]]、[[住宅]]、[[たてもの|建物]]、[[ビルディング]]、[[ビル]]。[[Category:{{hu}}_建物|*]] #: {{syn|hu|épület}} #: {{hypo|hu|lakóház|bérház}} # {{label|hu|特定の語句で}} [[ホーム]]、[[自宅]]、[[故郷]]、[[郷里]]、[[本国]]。 #: {{syn|hu|otthon|lakás}} # {{label|hu|集合的に}} [[住人]]、[[住居人]]、家中の者。 # {{label|hu|特に王族や貴族}} [[家系]]、[[血統]]、…[[家]]、[[王朝]]、…[[朝]]。 #: {{syn|hu|dinasztia}} # {{label|hu|politics|立法}} [[議事堂]]、[[議院]]、[[議会]]、[[国会]]。 #: {{syn|hu|képviselőház|országház|parlament}} # {{label|hu|鬼ごっこなどの遊びの安全地帯}} [[陣]]、[[陣地]]、[[自陣]]、[[基地]]。 # {{label|hu|astrology}} [[十二宮]]の一つ、…[[宮]]。 ===={{decl}}==== {{hu-infl-nom|háza|o}}{{hu-pos-atok|ház||ai}} ===={{drv}}==== {{top4}} *{{l|hu|haza}} *{{l|hu|házal}} *{{l|hu|házas}} *{{l|hu|házi}} *{{l|hu|házikó}} {{bottom}} ===={{comp}}==== (この項目で始まるもの): {{top4}} *{{l|hu|házelnök}} *{{l|hu|házépítés}} *{{l|hu|házkutatás}} *{{l|hu|házmester}} *{{l|hu|háznagy}} *{{l|hu|házsor}} *{{l|hu|háztartás}} *{{l|hu|háztető}} {{bottom}} (この項目で終わるもの): {{top4}} *{{l|hu|alsóház}} *{{l|hu|áruház}} *{{l|hu|árvaház}} *{{l|hu|bérház}} *{{l|hu|bolondokháza}} *{{l|hu|bordélyház}} *{{l|hu|csónakház}} *{{l|hu|felsőház}} *{{l|hu|gyöngyház}} *{{l|hu|hullaház}} *{{l|hu|kávéház}} *{{l|hu|képviselőház}} *{{l|hu|kórház}} *{{l|hu|lakóház}} *{{l|hu|lépcsőház}} *{{l|hu|magház}} *{{l|hu|melegház}} *{{l|hu|motorháztető}} *{{l|hu|nyilvánosház}} *{{l|hu|operaház}} *{{l|hu|Országház}} *{{l|hu|őrültekháza}} *{{l|hu|panelház}} *{{l|hu|parasztház}} *{{l|hu|parkolóház}} *{{l|hu|sarokház}} *{{l|hu|sorház}} *{{l|hu|székház}} *{{l|hu|színház}} *{{l|hu|társasház}} *{{l|hu|teaház}} *{{l|hu|téglaház}} *{{l|hu|tömbház}} *{{l|hu|uralkodóház}} *{{l|hu|üvegház}} *{{l|hu|vályogház}} *{{l|hu|városháza}} {{bottom}} ===={{idiom}}==== {{top}} *{{l|hu|ahány ház, annyi szokás}} *{{l|hu|asszonyt visz a házhoz}} *{{l|hu|ég a ház a feje fölött}} *{{l|hu|Fehér Ház}} *{{l|hu|mindenki a maga háza előtt seperjen}} *{{l|hu|telt ház}} → {{l|hu|telt házas}} {{bottom}} ===参考文献=== *{{R:ErtSz}} ehdrelbfjznpoc9rsocxmuwxw3ib6u1 云雀 0 216677 2340689 1586078 2026-09-01T17:41:42Z Jiba1219 100610 2340689 wikitext text/x-wiki {{DEFAULTSORT:yun2que4}} =={{L|zh}}== {{zh-cat|yun2que4|noun|鳥}} {{yue-cat|wan4jeuk6|noun|鳥}} ==={{pron}}=== {{cmn-pron|yúnquè|z=n}} {{yue-pron|wan4 zoek3|h=n}} ==={{noun}}=== {{zhchars|t=雲雀}} #[[ヒバリ]]。 gna9yjvui9cec346oy5mu4jsl71bnrn 雲雀 0 216679 2340685 1493384 2026-09-01T17:41:07Z Jiba1219 100610 2340685 wikitext text/x-wiki {{kana-DEFAULTSORT|ひばり}} =={{L|ja}}== [[Category:{{ja}}]] ===和語の漢字表記=== [[Category:{{ja}}_和語の漢字表記]] [[Category:熟字訓]] {{jachars}} #「[[ヒバリ]]」の漢字表記。 =={{L|zh}}== {{zh-cat|yun2que4|noun|鳥}} {{yue-cat|wan4jeuk6|noun|鳥}} ==={{pron}}=== {{cmn-pron|yúnquè}} {{yue-pron|wan4 zoek3}} ==={{noun}}=== {{zhchars|s=云雀}} #[[ヒバリ]]。 =={{L|ko}}== ==={{noun}}=== {{ko-head|noun|운작|cat2=鳥}} #[[ヒバリ]]。 1d6uguvr0syxo4wwqkjmc96k9tod037 かいとう 0 246197 2340701 2340107 2026-09-01T18:06:35Z M-30722 1202 2340701 wikitext text/x-wiki {{kana-DEFAULTSORT}} {{also|がいとう|かいどう}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana|h=y}} *【[[怪盗]]】[[正体]]のつかめない、[[てぐち|手口]]が[[巧妙]]で[[なぞめく|謎めい]]た行動をする[[盗賊]]。 *【[[快盗]]】 *【[[回答]]】[[質問]]などに[[こたえる|答える]]こと。また、その[[こたえ|答え]]。 *【[[解答]]】[[問題]]を[[とく|解い]]て答えること。また、その答え。 *【[[会頭]]】[[会長]]。 *【[[解凍]]】①[[こおる|凍っ]]たものを[[とかす|解かす]]こと。②[[圧縮]]された[[データ]]を[[もと|元]]の[[状態]]に[[もどす|戻す]]こと。 *【[[解党]]】[[政党]]、[[党派]]を[[解散]]すること。 *【[[快刀]]】よく切れる[[かたな|刀]]。 *【[[会党]]】かつて[[中国]]で[[結成]]された[[民間]]の[[秘密結社]]。 *【[[解糖]]】[[生体]]内で[[炭水化物]]が[[嫌気]]的に[[乳酸]]などに[[分解]]されること。 *【[[開湯]]】新たな温泉が見つかり、温泉地が開かれること。 *【[[快投]]】[[投手]]などが[[非常]]に優れた投げ方をすること。 {{stub|homonym}} 0to3sfjffxfo12lbonx4a4ub9mwhlrg 付托 0 249420 2340723 1586608 2026-09-01T19:09:08Z Jiba1219 100610 2340723 wikitext text/x-wiki {{DEFAULTSORT:fu4tuo1}} =={{L|zh}}== {{zh-cat|fu4tuo1|verb}} {{yue-cat|fu6tok3|verb}} {{nan-tws-cat|hu3toh4|verb}} ==={{pron}}=== {{cmn-pron|fùtuō|z=n}} {{yue-pron|fu6 tok3|h=n}} {{nan-pron|t=hu3 toh4}} ==={{verb}}=== {{zhchars|t=付託}} #{{おくりがな2|委|ゆだ|ねる|ゆだねる}}。[[委託]]する。 38d9c0n02qlzhfth1yvjgae39xk6z32 付託 0 249423 2340722 1497637 2026-09-01T19:08:33Z Jiba1219 100610 2340722 wikitext text/x-wiki {{kana-DEFAULTSORT|ふたく}} =={{L|ja}}== [[Category:{{ja}}]] ===別表記=== *[[附託]] ==={{pron}}=== {{ja-pron|ふたく|acc=0|dev=1}} ==={{noun}}=== [[Category:{{ja}}_{{noun}}]] [[Category:{{ja}}_{{noun}}_サ変動詞]] {{jachars}}([[ふたく]]) #[[審議]]などを他の[[機関]]に[[ゆだねる|委ねる]]こと。 ==={{verb}}=== {{日本語サ変活用}} =={{L|zh}}== {{zh-cat|fu4tuo1|verb}} {{yue-cat|fu6tok3|verb}} {{nan-cat|hu3thok4|verb}} {{nan-tws-cat|hu3toh4|verb}} ==={{pron}}=== {{cmn-pron|fùtuō}} {{yue-pron|fu6 tok3}} {{nan-pron|tw:hù-thok|t=hu3 toh4}} ==={{verb}}=== {{zhchars|s=付托}} #{{おくりがな2|委|ゆだ|ねる|ゆだねる}}。[[委託]]する。 =={{L|ko}}== ==={{noun}}=== {{ko-head|noun|부탁}} #{{おくりがな2|頼|たの|み|たのみ}}。[[依頼]]。 32u6o9vijpap9glc9mnql6wti76z0ew 負託 0 249427 2340721 1497639 2026-09-01T19:05:07Z Jiba1219 100610 2340721 wikitext text/x-wiki {{DEFAULTSORT:ふたく}} =={{L|ja}}== [[Category:{{ja}}]] ==={{pron}}=== {{ja-pron|ふたく|acc=0|dev=1}} ==={{noun}}=== [[Category:{{ja}}_{{noun}}]] [[Category:{{ja}}_{{noun}}_サ変動詞]] {{jachars}}([[ふたく]]) #[[責任]]を持たせて[[まかせる|任せる]]こと。 ==={{verb}}=== {{日本語サ変活用}} my8wzvve0vf0z8vr47upwhaxxq8084j 主位 0 313984 2340728 1931933 2026-09-01T19:47:00Z Jiba1219 100610 2340728 wikitext text/x-wiki {{kana-DEFAULTSORT|しゅい}} =={{L|ja}}== {{ja-kanjitab|しゅ|い|yomi=o,o}} ==={{pron}}=== {{ja-pron|しゅい|acc=1}} ==={{noun}}=== {{ja-noun|[[しゅい]]}} #物事の[[中心]]となる[[位置]]。 ===={{ant}}==== *[[客位]] =={{L|zh}}== [[Category:{{zh}}|zhu3wei4]] ==={{noun}}=== [[Category:{{zh}}_{{noun}}|zhu3wei4]] {{zhchars}} (ピンイン:zhǔwèi 注音符号:ㄓㄨˇ ㄨㄟˋ) #[[主人]]の[[席]]。 =={{L|ko}}== ==={{noun}}=== {{ko-head|noun|주위}} #(日本語に同じ)主位。 ji65j8hci8n8of0tfxuwicft0g0w1ol 首位 0 313990 2340729 1931934 2026-09-01T19:47:40Z Jiba1219 100610 2340729 wikitext text/x-wiki {{kana-DEFAULTSORT|しゅい}} =={{L|ja}}== {{ja-kanjitab|しゅ|い|yomi=o,o}} ==={{pron}}=== {{ja-pron|しゅい|acc=1}} ==={{noun}}=== {{ja-noun|[[しゅい]]}} #[[第一]]の[[地位]]。 =={{L|zh}}== [[Category:{{zh}}|shou3wei4]] ==={{pron}}=== *ピンイン: shǒuwèi *注音符号: ㄕㄡˇ ㄨㄟˋ *{{yue}}: sau{{supra|2}}wai{{supra|6-2}} *{{nan}}: siú-ūi *{{cdo}}: siū-ôi *{{hak}}: sú-vi *{{wuu}}: seu2 we ==={{noun}}=== [[Category:{{zh}}_{{noun}}|shou3wei4]] {{zhchars}} #(日本語に同じ)首位。 [[Category:{{yue}}|sau2wai6]] [[Category:{{yue}}_{{noun}}|sau2wai6]] [[Category:{{nan}}|siu2ui7]] [[Category:{{nan}}_{{noun}}|siu2ui7]] [[Category:{{cdo}}|siu2oi6]] [[Category:{{cdo}}_{{noun}}|siu2oi6]] [[Category:{{hak}}|su3vi4]] [[Category:{{hak}}_{{noun}}|su3vi4]] [[Category:{{wuu}}|seu2we3]] [[Category:{{wuu}}_{{noun}}|seu2we3]] =={{L|ko}}== ==={{noun}}=== {{ko-head|noun|수위}} #(日本語に同じ)首位。 px6xbf3i5cuicax0sgo80wa9x4k8f52 趣意 0 313992 2340725 1931935 2026-09-01T19:46:11Z Jiba1219 100610 2340725 wikitext text/x-wiki {{kana-DEFAULTSORT|しゅい}} =={{L|ja}}== {{ja-kanjitab|しゅ|い|yomi=o,o}} ==={{pron}}=== {{ja-pron|しゅい|acc=1}} ==={{noun}}=== {{ja-noun|[[しゅい]]}} #物事を始める[[動機]]や[[目的]]。 #[[つたえる|伝え]]ようとしている[[根本]]の[[意味]]。 =={{L|ko}}== ==={{noun}}=== {{ko-head|noun|취의}} #(日本語に同じ)趣意。 2w4brgi5r089o34prix5dkvjiwm0hov がいとう 0 325648 2340702 2136299 2026-09-01T18:06:54Z M-30722 1202 2340702 wikitext text/x-wiki {{kana-DEFAULTSORT}} {{also|かいとう|かいどう}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana|h=y}} *【[[該当]]】[[条件]]に[[合致]]すること。 *【[[外套]]】[[防寒]]や[[防水]]などの[[目的]]で[[衣服]]などの[[うえ|上]]に羽織る物。 *【[[街頭]]】[[路上]]。 *【[[街灯]]】[[街路灯]]。 *【[[外灯]]】[[屋外]]に[[設置]]する[[照明]]。 38i6mrbm1p54gypr27qrjkemsefpink じゅうよう 0 326485 2340624 1932579 2026-09-01T16:16:23Z M-30722 1202 2340624 wikitext text/x-wiki {{kana-DEFAULTSORT}} {{also|しゅうよう}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana|h=y}} *【[[重要]]】それが欠けることにより、あることが[[成立]]することについて[[支障]]が生じる[[状態]]。 *【[[重用]]】人や物などを[[大切]]なものとして扱うこと。 4cdrf68e12rkv408mczy3uu4ce8rfem bármilyen 0 333921 2340794 2325029 2026-09-02T00:19:11Z NekoyamaWataru 87354 /* {{hu}} */ 語句の修正 2340794 wikitext text/x-wiki {{DEFAULTSORT:barmilyen}} =={{hu}}== ==={{pron}}=== *{{hu-IPA}} *{{audio|hu|Hu-bármilyen.ogg|音声}} *{{hyph|hu|bár|mi|lyen}} ==={{etym}}=== {{prefix|bár|milyen|lang=hu}} ==={{pronoun}}=== {{head|hu|pronoun}} # {{label|hu|総称代名詞}} [[あらゆる]][[種類]]でも、[[如何]]なる…でも。 #: {{syn|hu|akármilyen|bármily}} ===={{decl}}==== {{hu-decl-ek|bármilye|n|acc1=bármilyet|acc2=t}} ==={{adv}}=== {{hu-adv|-}} # {{l|hu|bármennyire||たとえどんなに、どうやっても}} の類義語。 #: 形容詞や副詞の前では使えるが、動詞の前には使えない #: {{uxi|hu|'''Bármilyen''' nehéz, ezt be kell fejezni.|'''どれほど'''困難であっても、完了しなければなりません。}} #: {{uxi|hu|'''Bármilyen''' szépen beszél, ne hallgass rá.|彼/彼女の話が'''どんなに'''上手く'''ても'''、言うことを聞いちゃいけない。}} ==={{seealso}}=== *{{l|hu|bármily}} ===参考文献=== *{{R:ErtSz|onlylink=y}} は部分的に次の項目を参照: {{R:ErtSz|akármilyen}} *{{R:Nagyszotar}} aj54icr8evbwk8mly45e824lmd0vjpt テンプレート:eo-noun-form 10 335451 2340628 1823901 2026-09-01T16:24:08Z M-30722 1202 機能追加 2340628 wikitext text/x-wiki <onlyinclude><includeonly>'''{{head|eo|noun form|head={{{head|}}}}}'''{{#if:{{{root|}}}|[[カテゴリ:{{eo}} {{root}} {{{root}}}'{{#if:{{{sort|}}}|{{!}}{{{sort}}}}}]]}}{{#if:{{{root2|}}}|[[カテゴリ:{{eo}} {{root}} {{{root2}}}'{{#if:{{{sort|}}}|{{!}}{{{sort}}}}}]]}}{{#if:{{{root3|}}}|[[カテゴリ:{{eo}} {{root}} {{{root3}}}'{{#if:{{{sort|}}}|{{!}}{{{sort}}}}}]]}} {{#if:{{{1|}}}|#{{l|eo|{{{1}}}}}の{{#switch:{{{2}}}|n=単数対格|j=複数形|jn=複数対格}}。}}</includeonly></onlyinclude> 「カテゴリ:エスペラント」及び「カテゴリ:エスペラント 名詞 定形」を付加する。「root=」「root2=」及び「root3=」で語根を指定し、「カテゴリ:エスペラント 語根 〇〇'」を付加できる。[[カテゴリ:{{eo}}_テンプレート|{{PAGENAME}}]] s57js971j2rgiaai3nlki5xczy77mz5 2340639 2340628 2026-09-01T16:43:16Z M-30722 1202 2340639 wikitext text/x-wiki <onlyinclude><includeonly>'''{{head|eo|noun form|head={{{head|}}}}}'''{{#if:{{{root|}}}|[[カテゴリ:{{eo}} {{root}} {{{root}}}'{{#if:{{{sort|}}}|{{!}}{{{sort}}}}}]]}}{{#if:{{{root2|}}}|[[カテゴリ:{{eo}} {{root}} {{{root2}}}'{{#if:{{{sort|}}}|{{!}}{{{sort}}}}}]]}}{{#if:{{{root3|}}}|[[カテゴリ:{{eo}} {{root}} {{{root3}}}'{{#if:{{{sort|}}}|{{!}}{{{sort}}}}}]]}} {{#if:{{{1|}}}|#{{l|eo|{{{1}}}}}の{{#switch:{{{2}}}|n=単数対格|n-=対格|j=複数形|jn=複数対格}}。}}</includeonly></onlyinclude> {{domumentation}}[[カテゴリ:{{eo}}_見出し語テンプレート|{{PAGENAME}}]] fnxjrgqf85mcyk264gb4e98jehj2row 2340640 2340639 2026-09-01T16:43:32Z M-30722 1202 2340640 wikitext text/x-wiki <onlyinclude><includeonly>'''{{head|eo|noun form|head={{{head|}}}}}'''{{#if:{{{root|}}}|[[カテゴリ:{{eo}} {{root}} {{{root}}}'{{#if:{{{sort|}}}|{{!}}{{{sort}}}}}]]}}{{#if:{{{root2|}}}|[[カテゴリ:{{eo}} {{root}} {{{root2}}}'{{#if:{{{sort|}}}|{{!}}{{{sort}}}}}]]}}{{#if:{{{root3|}}}|[[カテゴリ:{{eo}} {{root}} {{{root3}}}'{{#if:{{{sort|}}}|{{!}}{{{sort}}}}}]]}} {{#if:{{{1|}}}|#{{l|eo|{{{1}}}}}の{{#switch:{{{2}}}|n=単数対格|n-=対格|j=複数形|jn=複数対格}}。}}</includeonly></onlyinclude> {{documentation}}[[カテゴリ:{{eo}}_見出し語テンプレート|{{PAGENAME}}]] iw46w1437iab9cqfokxqgl27rw1shf3 テンプレート:eo-verb-form 10 335460 2340682 1824328 2026-09-01T17:38:20Z M-30722 1202 機能追加 2340682 wikitext text/x-wiki <onlyinclude><includeonly>'''{{head|eo|verb form|head={{{head|}}}}}'''{{#if:{{{root|}}}|[[カテゴリ:{{eo}} {{root}} {{{root}}}'{{#if:{{{sort|}}}|{{!}}{{{sort}}}}}]]}}{{#if:{{{root2|}}}|[[カテゴリ:{{eo}} {{root}} {{{root2}}}'{{#if:{{{sort|}}}|{{!}}{{{sort}}}}}]]}}{{#if:{{{root3|}}}|[[カテゴリ:{{eo}} {{root}} {{{root3}}}'{{#if:{{{sort|}}}|{{!}}{{{sort}}}}}]]}} {{#if:{{{1|}}}|#{{l|eo|{{{1}}}i}}の{{#switch:{{{2}}}|as=現在形|is=過去形|os=未来形|us=仮定法|u=命令形}}。}}</includeonly></onlyinclude> {{documentation}}[[カテゴリ:{{eo}}_見出し語テンプレート|{{PAGENAME}}]] 2v3ajc9z80g1cudpozi4k3bmeofzsqu テンプレート:eo-adj-form 10 335466 2340708 1521307 2026-09-01T18:14:40Z M-30722 1202 機能追加 2340708 wikitext text/x-wiki <onlyinclude><includeonly>'''{{head|eo|adjective form|head={{{head|}}}}}'''{{#if:{{{root|}}}|[[カテゴリ:{{eo}} {{root}} {{{root}}}'{{#if:{{{sort|}}}|{{!}}{{{sort}}}}}]]}}{{#if:{{{root2|}}}|[[カテゴリ:{{eo}} {{root}} {{{root2}}}'{{#if:{{{sort|}}}|{{!}}{{{sort}}}}}]]}}{{#if:{{{root3|}}}|[[カテゴリ:{{eo}} {{root}} {{{root3}}}'{{#if:{{{sort|}}}|{{!}}{{{sort}}}}}]]}} {{#if:{{{1|}}}|#{{l|eo|{{{1}}}}}の{{#switch:{{{2}}}|n=単数対格|j=複数形|jn=複数対格}}。}}</includeonly></onlyinclude> {{documentation}}[[カテゴリ:{{eo}}_見出し語テンプレート|{{PAGENAME}}]] dq8hq0dgeiucdbph6y7xdeb4l2iaunm például 0 347071 2340795 2325027 2026-09-02T00:19:17Z NekoyamaWataru 87354 /* {{hu}} */ 語句の修正 2340795 wikitext text/x-wiki =={{hu}}== [[Category:{{hu}}]] [[Category:{{hu}}_{{adverb}}]] ==={{etym}}=== *{{suffix+|példa|ul|lang=hu}} ==={{pron}}=== *{{hu-IPA}} *{{hyph|hu|pél|dá|ul}} ==={{noun}}=== {{head|hu|noun}} # {{label|hu|rare}} [[példa]]の様態格単数形 ==={{adverb}}=== {{hu-adv|-}} # [[たとえば]] #: ({{syn}},{{abbr}})[[pl.]] s9tw8gsrftg04gvzq8bjw18i03askme 培養 0 347997 2340720 2340417 2026-09-01T18:55:21Z Jiba1219 100610 /* {{L|zh}} */ 2340720 wikitext text/x-wiki {{kana-DEFAULTSORT|ばいよう}} =={{L|ja}}== {{wikipedia}} {{ja-kanjitab|ばい|よう|yomi=goon,o}} ==={{pron}}=== {{ja-pron|ばいよう|acc=0}} ==={{noun}}=== {{ja-noun-suru|ばいよう}} #[[草木]]を[[つちかう|培い]]、[[やしなう|養う]]こと。 #{{タグ|ja|biology}}[[微生物]]や[[細胞]]などを人工的に[[増殖]]させること。 #[[ものごと|物事]]を育て、[[発展]]させること。 ==={{verb}}=== {{日本語サ変活用}} =={{L|zh}}== {{zh-cat|pei2yang3|verb}} {{yue-cat|pui4yeung5|verb}} {{nan-cat|poe5iong2|verb}} {{nan-tws-cat|bue5iang2|verb}} {{cpx-cat|buei2ieo3|verb}} {{hak-cat|phì-yông|verb}} {{hak-hl-cat|poi rhongˋ|verb}} ==={{pron}}=== {{cmn-pron|péiyǎng|a=Zh-péiyang.ogg}} {{yue-pron|pui4 joeng5}} {{nan-pron|qz,tw,xm:pôe-ióng/twvk,zz:pôe-iáng|t=buê5 iang2}} {{cpx-pron|pt:buei2 ieo3/xy:buei2 iunn3}} {{hak-pron|phì-yông|h=poi rhongˋ}} ==={{verb}}=== {{zhchars|s=培养}} #培養する。 =={{L|ko}}== ==={{noun}}=== {{ko-head|noun|배양}} #(日本語に同じ)培養。 k1dajp837hu7a67vsaxl9x9ezz4f166 しんそう 0 348901 2340532 2281002 2026-09-01T12:19:38Z うーむ 129171 /* 日本語 */ 2340532 wikitext text/x-wiki {{kana-DEFAULTSORT}} {{also|しんぞう|じんそう|じんぞう}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana|h=y}} *【[[真相]]】[[事件]]などの[[本当]]の[[事情]]。 *【[[新装]]】装いを新たにすること。 *【[[深層]]】深い層。 *【[[神僧]]】[[社僧]]。 *【[[神葬]]】神道の儀式による葬儀。 *【[[深窓]]】家の奥のほうにある居間。 *【[[新粧]]】[[あたらしい|新しい]][[よそおい|装い]]。 0lx7n1ejxpf4jrmmqest90b3rqiu0ex mostan 0 350780 2340796 2325026 2026-09-02T00:19:22Z NekoyamaWataru 87354 /* {{hu}} */ 語句の修正 2340796 wikitext text/x-wiki =={{hu}}== ==={{pron}}=== *{{hu-IPA}} *{{hyph|hu|mos|tan}} ==={{etym}}=== {{suffix+|most|an|pos2=形容詞形成接尾辞|lang=hu}} ==={{adverb}}=== {{hu-adv|-}} # {{label|hu|dialectal}} [[今]]。 ===={{drv}}==== {{top}} *{{l|hu|mostanában}} *{{l|hu|mostanáig}} *{{l|hu|mostani}} *{{l|hu|mostanig}} *{{l|hu|mostanra}} *{{l|hu|mostanság}} *{{l|hu|mostantól}} {{bottom}} [[Category:{{hu}}_時間]] jmha8fmf8htxbsnaqa4nlxwci97kugh másnap 0 350912 2340765 2325270 2026-09-02T00:01:24Z NekoyamaWataru 87354 /* {{hu}} */ 語句の修正 2340765 wikitext text/x-wiki =={{hu}}== ==={{pron}}=== *{{hu-IPA}} *{{hyph|hu|más|nap}} ==={{etym}}=== {{affix|hu|más|t1=他の|nap|t2=日}} ==={{adverb}}=== {{hu-adv|-}} # [[翌日]]に、[[明くる]][[日]]に。[[次]]の日に。 #: {{ant|hu|előző nap|az előző napon}} ===={{usage}}==== 過去における未来や状況説明または比喩的な状況のときにのみ使用されます。今日の次の日を指す場合、 {{m|hu|holnap}} を使用します。 ===={{drv}}==== *{{l|hu|másnapos}} ==={{noun}}=== {{hu-noun|ok}} # {{label|hu|usually with a possessive suffix}} 翌日、次の日。 #: 特に祝日の次の日を指して #: {{uxi|hu|karácsony '''másnap'''ja|ボクシングデー(クリスマスの翌日12月26日)}} # 明くる日。 #: {{uxi|hu|Olyan beteg volt, hogy nem tudta, megéri-e '''másnap'''ot.|彼は'''明日'''生きているかどうか分からないほどの病気でした。}} ===={{decl}}==== {{hu-infl-nom|másnapo|o}}{{hu-pos-otok|másnap|j|jai}} ===参考文献=== *{{R:ErtSz}} [[Category:{{hu}}_暦]] 30et6fegyjmt071ly6slgvcshqxe77i mindennap 0 350921 2340766 2325267 2026-09-02T00:02:13Z NekoyamaWataru 87354 /* {{hu}} */ 語句の修正 2340766 wikitext text/x-wiki =={{hu}}== ==={{pron}}=== *{{hu-IPA}} *{{audio|hu|Hu-mindennap.ogg|音声}} *{{hyph|hu|min|den|nap}} ==={{etym}}=== {{affix|hu|minden|nap}} ==={{adverb}}=== {{hu-adv|-}} # [[毎日]]。[[Category:{{hu}}_頻度副詞]] #: {{syn|hu|naponta|nap mint nap}} ==={{noun}}=== {{hu-noun|ok}} # {{label|hu|literary|複数形のみ}} 毎日、日常の生活。 ===={{decl}}==== {{hu-infl-nom|mindennapo|o|n=pl}}{{hu-pos-otok|mindennap|j|jai|n=pl}} ===={{drv}}==== *{{l|hu|mindennapi}} *{{l|hu|mindennapos}} ===参考文献=== *{{R:ErtSz}} [[Category:{{hu}}_暦]] 8l55jhzo3xcg8kdbqxmgu5uuo6ccr2b vagy 0 357900 2340767 2325261 2026-09-02T00:03:43Z NekoyamaWataru 87354 /* {{hu}} */ 語句の修正 2340767 wikitext text/x-wiki {{also|vágy}} =={{hu}}== ==={{pron}}=== *{{hu-IPA}} (主に強勢なし、もしくは弱い強勢を伴う) *{{audio|hu|Hu-vagy.ogg|音声}} ==={{etym}}1=== {{m|hu||az vagyon|すなわち}} という表現より。 {{cog|pl|bądź}} ===={{conjunction}}==== {{head|hu|conjunction}} # 文や単語の間で物事や概念の選択肢の可能性を示す。 ## [[または]]、[[もしくは]]、[[それとも]]、…[[か]]…か。 ##: {{uxi|hu|Ez '''vagy''' az?|これ'''か'''それ?}} ## …か…かの[[いずれ]]か、…か…かの[[どちら]]か。 ##: {{uxi|hu|'''Vagy''' itt van, '''vagy''' ott.|それはここ'''か'''そこ'''のどちらか'''にある。}} ## {{label|hu|並び立つ動作や物事}} あるときは…またあるときは…、…したり…したり。 ## {{label|hu|並び立つ条件}} …しても…しても、…しようが…しようが。 ##: {{uxi|hu|Mindegy most már, hogy nem kellek, '''vagy''' kellek-e.|今は関係ない、必要なかろうが、必要だろうが。}} ## {{label|hu|命令文に続いてそれが否定された場合の脅し}} さもないと、さもなくば。 ##: {{uxi|hu|Fogadj szót azonnal, '''vagy''' megverlek.|今すぐ話せ、'''でないと'''殴るぞ。}} ## {{label|hu|疑問詞を伴って前の物事を不確実にする}} …もしくは…する何か/誰か、…であれば…するところ/とき。 ##: {{uxi|hu|A szomszéd '''vagy''' ki járt itt|隣人'''か'''ここにいた人}} ##: {{uxi|hu|Tán csak nem vagy beteg, '''vagy''' mi a fene?|病気ではないなら、それは一体何?}} ## {{label|hu|言い換えや前の単語などの訂正}} そうではなく、…じゃなく、というか、[[つまり]]、[[すなわち]]、[[むしろ]]、[[いわば#副詞|いわば]]。 ##: {{uxi|hu|Ő az írnok '''vagy''' titkár.|彼/彼女は記者'''というか'''秘書だ。}} # {{label|hu|繰り返して}} 回避できない選択肢の一方の迫る。 #: {{uxi|hu|'''Vagy''', '''vagy'''!|さあ、どっち!}} ====={{idiom}}===== {{top}} *{{l|hu|ide vagy oda||あちこちに}} *{{l|hu|most vagy soha||今がその時}} *{{l|hu|vagy ugy|vagy ugy!|そういうことか!}} {{bottom}} ===={{adverb}}==== {{hu-adv|-}} # {{label|hu|informal|後に数詞を続けて}} [[およそ]]…、[[約]]…、…[[くらい]]、…[[ほど]]。 #: {{syn|hu|nagyjából|körülbelül|mintegy}} #: {{uxi|hu|Megevett '''vagy''' hat szendvicset.|彼はサンドイッチを6個'''ほど'''食べた。}} # {{label|hu|誇張|数詞を続けて}} [[少なくとも]]。 ====={{idiom}}===== *{{l|hu|dupla vagy semmi}} ==={{etym}}2=== 語源不明 ===={{verb}}==== {{head|hu|verb form}} # {{inflection of|van|van|直説法|現在|不定活用|2人称|単数|lang=hu}} #: {{uxi|hu|Hol '''vagy'''?|'''君は'''どこに'''いる'''?}} ====={{drv}}===== *{{l|hu|hogy vagy}}? *{{l|hu|mi járatban vagy}}? ===参考文献=== *{{sense|「または」など}} {{R:ErtSz}} *{{R:Pusztai 2003}} izr68w6lornolosobwyohjcv6it34ka 先代 0 358368 2340758 1938852 2026-09-01T23:57:01Z 鍼灸 112313 2340758 wikitext text/x-wiki {{kana-DEFAULTSORT|せんだい}} =={{ja}}== ==={{noun}}=== {{ja-noun|[[せんだい]]}} #[[今]]よりも[[前]]の[[時代]]。 #[[現在]]の[[代]]の前の代や[[当主]]。 ===={{rel}}==== *[[先先代]] =={{zh}}== ==={{pron}}=== {{cmn-pron|xiāndài}} ==={{noun}}=== {{zh-cat|xian1dai4|noun}} {{zhchars}} #[[前代]]、[[古代]]。 =={{ko}}== ==={{noun}}=== {{ko-head|noun|선대}} #(日本語に同じ)先代。 bpsppmtuo619pn6h25ue5eo94iedwxp alól 0 360688 2340769 2325260 2026-09-02T00:04:43Z NekoyamaWataru 87354 /* {{hu}} */ 語句の修正 2340769 wikitext text/x-wiki =={{hu}}== ==={{pron}}=== *{{hu-IPA}} *{{audio|hu|Hu-alól.ogg|音声}} *{{hyph|hu|alól}} ==={{etym}}=== {{m|hu|al||下部}} + {{m|hu|-l||奪格接尾辞}}の語彙化。 ==={{postposition}}=== {{head|hu|postposition}} # …の[[下]]から、…の[[下方]]から。 #: {{uxi|hu|Kihúztam az asztal '''alól''' a széket.|私は椅子を机の'''下から'''引き出した。}} ===={{rel}}==== *{{l|hu|alatt}} / {{l|hu|alatta}} *{{l|hu|alá}} / {{l|hu|alája}} ===={{drv}}==== *{{l|hu|alóla}} *{{l|hu|alóli}} ==={{adverb}}=== {{hu-adv|-}} # {{label|hu|archaic|dialectal}} {{m|hu|alul}}の{{alter}}。 ===参考文献=== *{{R:Nagyszotar}} kswt2fnh81pa9rkel1hgeey2ppx5t08 しゃそう 0 369035 2340524 2340520 2026-09-01T12:01:37Z うーむ 129171 /* */ 2340524 wikitext text/x-wiki {{kana-DEFAULTSORT}} {{also|しゃぞう}} =={{ja}}== ==={{homonym}}=== {{ja-hom}} *【[[社僧]]】神宮寺で仏事を修めた僧侶。 *【[[社葬]]】会社が喪主となって行う葬儀。 *【[[社叢]]】神社境内の杜。 *【[[車窓]]】列車や自動車などの窓。 *【[[車総]]】{{w|広将棋}}の[[こま|駒]]。 *【[[射創]]】[[銃創]]。 tlux11alhw6u856bts0ct3z280gme68 ごうしょう 0 374080 2340568 2123553 2026-09-01T14:46:28Z M-30722 1202 2340568 wikitext text/x-wiki {{kana-DEFAULTSORT}} {{also|こうしょう|こうじょう|ごうじょう}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana|h=y}} *【[[降生]]】神仏が現世に生まれること。 *【[[号鐘]]】合図のために鳴らす鐘。 *【[[豪商]]】富が豊かな商家。 *【[[強将]]】強い武将。 *【[[業障]]】悪業による障害。 scvca8qg8zq0jup62jt0zlk1s3bm1zw 先先代 0 374335 2340759 1704986 2026-09-01T23:57:42Z 鍼灸 112313 2340759 wikitext text/x-wiki {{kana-DEFAULTSORT|せんせんだい}} == {{ja}} == ==={{noun}}=== {{ja-noun|せんせんだい}} #[[先代]]の一代前。 ===={{trans}}==== *{{zh}}:[[上两辈]]/[[上兩輩]],[[上兩代]]/[[上两代]] dsty69wv1zkwqf5uj84qfyilrsa0hou csakhogy 0 384148 2340773 2325232 2026-09-02T00:06:03Z NekoyamaWataru 87354 /* {{hu}} */ 語句の修正 2340773 wikitext text/x-wiki =={{hu}}== ==={{pron}}=== *{{hu-IPA}} *{{hyph|hu|csak|hogy}} ==={{etym}}=== {{m|hu|csak}} + {{m|hu|hogy}} ==={{conjunction}}=== {{head|hu|conjunction}} # [[しかしながら]]、[[けれども]]、[[とはいえ]]、[[それでも]]。 # '''[[csak]] [[hogy]]''' の綴り誤り。[[Category:{{hu}}_誤記]] ===={{syn}}==== (語義1): {{top4}} *{{l|hu|viszont}} *{{l|hu|azonban}} *{{l|hu|ám}} *{{l|hu|ámde}} *{{l|hu|de}} *{{l|hu|csak}} *{{l|hu|ugyanakkor}} {{bottom}} ==={{adverb}}=== {{hu-adv|-}} # [[最後]]に、[[とうとう]]、[[ついに]]。 # {{label|hu|literary}} [[ほとんど]]、もう[[少し]]で、[[だいたい]]。 ===={{syn}}==== (語義1): *{{l|hu|végre}} (語義2): {{top4}} *{{l|hu|majdnem}} *{{l|hu|majdhogynem}} *{{l|hu|kis híján}} *{{l|hu|jóformán}} {{bottom}} ===参考文献=== *{{R:ErtSz}} *{{R:Nagyszotar}} bjl4kg7wz4y8lzt3abjcmhfes6oi23x csakhamar 0 384149 2340775 2325231 2026-09-02T00:07:15Z NekoyamaWataru 87354 /* {{hu}} */ 語句の修正 2340775 wikitext text/x-wiki =={{hu}}== ==={{pron}}=== *{{hu-IPA}} *{{audio|hu|Hu-csakhamar.ogg|音声}} *{{hyph|hu|csak|ha|mar}} ==={{etym}}=== {{m|hu|csak}} + {{m|hu|hamar}} ==={{adverb}}=== {{hu-adv|-}} # {{label|hu|rare|literary}} [[まもなく]]、[[すぐ]]、[[すみやか]]に、[[じき]]に。 #: {{syn|hu|mindjárt|rövidesen|nemsokára|hamarosan}} ===参考文献=== *{{R:ErtSz}} *{{R:Nagyszotar}} 4bg1v3i3eb4skixzeu1xx0fw9xsbkk0 ちょうてん 0 385510 2340787 1948118 2026-09-02T00:15:52Z うーむ 129171 /* */ 2340787 wikitext text/x-wiki {{kana-DEFAULTSORT}} {{also|ちょうでん}} =={{ja}}== ==={{homonym}}=== {{head|ja|同音異義}} *【[[頂点]]】:頂上。 *【[[朝典]]】:朝廷における制度や儀式。 5miufcp20cawz6ll1fb7fzbx7hwh3jh főként 0 391267 2340776 2325229 2026-09-02T00:07:51Z NekoyamaWataru 87354 /* {{hu}} */ 語句の修正 2340776 wikitext text/x-wiki {{DEFAULTSORT:fokent}} =={{hu}}== ==={{etym}}=== {{suffix+|fő|ként|lang=hu}} ==={{pron}}=== *{{hu-IPA}} *{{audio|hu|Hu-főként.ogg|音声}} *{{hyph|hu|fő|ként}} ==={{adverb}}=== {{hu-adv|-}} # {{label|hu|literary}} {{ふりがな|主|おも}}に、[[主]]として、[[あらかた]]。 ==={{noun}}=== {{head|hu|noun form}} # {{inflection of|fő|fő||単数|様格|lang=hu}} ===={{syn}}==== {{top4}} *{{l|hu|elsősorban}} *{{l|hu|főleg}} *{{l|hu|főképp}} *{{l|hu|főképpen}} *{{l|hu|kivált}} *{{l|hu|különösen}} *{{l|hu|mindenekelőtt}} {{bottom}} cs0i74hw6y8y8wb13x3qmoz6aygpuuc ezer 0 394191 2340839 2284154 2026-09-02T06:25:28Z NekoyamaWataru 87354 /* {{hu}} */ 語句の修正 2340839 wikitext text/x-wiki =={{hu}}== {{wikipedia|lang=hu|1000 (szám)}} {{number box|hu|1000}} ==={{pron}}=== * {{hu-IPA}} * {{audio|hu|Hu-ezer.ogg|音声}} * {{hyph|hu|ezer}} ==={{etym}}=== {{etyl|ira|hu}} < {{etyl|iir-pro|hu}} {{m|iir-pro|*saȷ́ʰásram}} < {{etyl|ine-pro|hu}} {{m|ine-pro|*ǵʰéslom}} {{cog|os|sc=Cyrl|ӕрзӕ́}} {{cog|fa|sc=fa-Arab|هزار||tr=hezâr}} ==={{numeral}}=== {{head|hu|numeral}} # {{label|hu|cardinal}} [[千]]、1000。 #: {{syn|hu|egyezer}} ===={{decl}}==== {{hu-infl-nom|ezre|e|stem2=ezer|spe_sg_stem=ezr|pos=numerals}}{{hu-pos-etek|ezr||ei}} ===={{drv}}==== {{top4}} * {{l|hu|ezernyi}} * {{l|hu|ezerszer}} * {{l|hu|ezred}} * {{l|hu|ezredik}} * {{l|hu|ezredes}} * {{l|hu|ezrelék}} * {{l|hu|ezres}} {{bottom}} ===={{comp}}==== (数詞の複合語): {{top4}} * {{l|hu|egyezer}} * {{l|hu|ezeregyszáz}} * {{l|hu|kétezer}} * {{l|hu|ötezer}} * {{l|hu|nyolcezer}} * {{l|hu|tízezer}} * {{l|hu|húszezer}} * {{l|hu|százezer}} {{bottom}} (その他の複合語): * {{l|hu|ezeréves}} * {{l|hu|ezerszög}} ===={{desc}}==== * {{desc|kjv|jezero|bor=1|t=1000}} * {{desc|sl|jèzero|bor=1|t=1000}} * {{desc|rsk|езер|bor=1|q=colloquial}} ===参考文献=== * {{R:ErtSz}} 01uindxpbqi1t49fu858qbmj6ti77ak どかい 0 394755 2340544 1951607 2026-09-01T13:37:49Z うーむ 129171 /* 日本語 */ 2340544 wikitext text/x-wiki {{kana-DEFAULTSORT}} {{also|とかい}} =={{ja}}== ==={{homonym}}=== {{head|ja|同音異義}} *【[[土灰]]】土や灰。 *【[[土芥]]】土と芥。 *【[[土塊]]】土の団塊。 *【[[土階]]】土で作った階段。 gyqqwod2y9o5ifnhtbiyjzmdcaadjri 福音書 0 413833 2340574 1957765 2026-09-01T15:04:50Z M-30722 1202 2340574 wikitext text/x-wiki {{kana-DEFAULTSORT|ふくいんしょ}} =={{L|ja}}== {{wikipedia}} ==={{noun}}=== {{ja-noun|ふくいんしょ}} #{{タグ|ja|聖書}}[[新約聖書]]のうち[[キリスト]]の[[生涯]]の[[言行]]を記した[[文書]]。マタイ、マルコ、ルカ、ヨハネの四つの文書。 0zn38ihhxxo3eukfyafy8zajzwsd7ul különben 0 421972 2340763 2325307 2026-09-01T23:59:57Z NekoyamaWataru 87354 /* {{hu}} */ 語句の修正 2340763 wikitext text/x-wiki {{DEFAULTSORT:kulonben}} =={{hu}}== ==={{pron}}=== *{{hu-IPA}} *{{audio|hu|Hu-különben.opus|音声}} *{{hyph|hu|kü|lön|ben}} ==={{etym}}=== {{suffix+|különb|en|pos2=副詞形成接尾辞|lang=hu}} ==={{adverb}}=== {{hu-adv|-}} # [[別]]の方法で、[[他]]の点で。 #: {{syn|hu|egyébként|másként|máskülönben}} #: {{uxi|hu|A '''különben''' zajos étterem most teljesen csendes volt.|'''それまで'''騒がしかったレストランは今完全に静まっている。}} # {{label|hu|{{m|hu|is}} や {{m|hu|sem}} を続けて}} [[とにかく]]、[[やはり]]。 #: {{uxi|hu|'''Különben is''', kit érdekel?|'''とにかく'''誰が気にするでしょうか?}} #: {{uxi|hu|Nem tudtam elmenni a koncertre. '''Különben sem''' volt egy jó ötlet.|コンサートには行けなかった。'''とにかく'''いいアイデアではなかった。}} ===={{comp}}==== *{{l|hu|máskülönben}} *{{l|hu|nemkülönben}} ===参考文献=== *{{R:ErtSz}} 8q8ed97x0g3kwjee9e4y1i3jj5v78fr abdominálisan 0 429940 2340798 2325016 2026-09-02T00:19:34Z NekoyamaWataru 87354 /* {{hu}} */ 語句の修正 2340798 wikitext text/x-wiki {{DEFAULTSORT:abdominalisan}} =={{hu}}== ==={{pron}}=== *{{hu-IPA}} *{{hyph|hu|ab|do|mi|ná|li|san}} ==={{etym}}=== {{suffix+|abdominális|an|pos2=副詞形成接尾辞|lang=hu}} ==={{adverb}}=== {{hu-adv|-}} # {{label|hu|anatomy}} [[腹部]]に、[[腹腔]]に。 7k2wovjfsniowcsbm6lxsq0727zhocz mellesleg 0 434924 2340764 2325306 2026-09-02T00:00:39Z NekoyamaWataru 87354 /* {{hu}} */ 語句の修正 2340764 wikitext text/x-wiki =={{hu}}== ==={{pron}}=== *{{hu-IPA}} *{{hyph|hu|mel|les|leg}} ==={{etym}}=== {{m|hu|mell}} + 接尾辞 "{{m|hu|-es}} (形容詞形成接尾辞)" + 接尾辞 "{{m|hu|-leg}} (副詞形成接尾辞)"[[Category:{{hu}}_接尾辞"-es"]][[Category:{{hu}}_接尾辞"-leg"]] ==={{adverb}}=== {{hu-adv|-}} # {{label|hu|obsolete}} [[そば|側]]にある、[[かたわら|傍ら]]にある。 # [[ところで]]、[[ついでながら]]、[[付随的]]に。 ==={{syn}}=== (語義1): *{{l|hu|oldalt}} (語義2): *{{l|hu|amúgy}} *{{l|hu|egyébként}} ===参考文献=== *{{R:ErtSz}} q0j1xr5ngs5jvmaavcy7a7mvo7zxhrx 宮僧 0 441123 2340547 1964443 2026-09-01T13:44:38Z うーむ 129171 /* 日本語 */ 2340547 wikitext text/x-wiki =={{ja}}== {{kana-DEFAULTSORT|くそう}} ==={{noun}}=== {{ja-noun|[[くそう]]|[[きゅうそう]]}} #[[神社]]に[[附属]]した神宮寺に住み、[[管理]]した僧。 [[カテゴリ:日本語 仏教]] 3zcn5wblj744mya1xxcl22dkq4m55gw 利用者・トーク:Kuroco2k 3 446787 2340832 2338473 2026-09-02T06:07:18Z ~2026-47499-78 133320 /* */ 2340832 wikitext text/x-wiki 2340833 2340832 2026-09-02T06:08:09Z Kuroco2k 84207 2340833 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) == 古代ウイグル語 == [[:カテゴリ:古代ウイグル語 原語表記を要する項目]]は、[[:カテゴリ:古ウイグル語]]などに合わせて[[:カテゴリ:古ウイグル語 原語表記を要する項目]]にしてはいけないでしょうか?--[[利用者:Whym|whym]] ([[利用者・トーク:Whym|トーク]]) 2026年8月30日 (日) 03:06 (UTC) :もちろんかまいません。暫定的に訳に合わせて移動しただけにすぎませんので...。--[[利用者:Kuroco2k|<span style="color:#000000">'''雛宮黒狐'''</span>]]([[利用者‐会話:Kuroco2k|<span style="color:#5a00cc">Talk</span>]]) 2026年8月30日 (日) 04:05 (UTC) iijpn477od4gv9bdzyx4ve9ag7657ti majdhogynem 0 455931 2340797 2325017 2026-09-02T00:19:28Z NekoyamaWataru 87354 /* {{hu}} */ 語句の修正 2340797 wikitext text/x-wiki =={{hu}}== ==={{pron}}=== *{{hu-IPA}} *{{hyph|hu|majd|hogy|nem}} ==={{etym}}=== {{affix|hu|majd|hogy|nem}} ==={{adverb}}=== {{hu-adv|-}} # {{label|hu|rare}} [[ほとんど]]、[[もう]][[すこし|少し]]で、[[だいたい]]。 #: {{syn|hu|majdnem|szinte|jóformán|közel}} ===参考文献=== *{{R:ErtSz}} 05p2zaqu8tkwlfkqgkgaz4ulcfc1jgh もうこ 0 467074 2340594 2271833 2026-09-01T15:35:30Z M-30722 1202 2340594 wikitext text/x-wiki {{kana-DEFAULTSORT}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana|h=y}} *【[[蒙古]]】モンゴル。 *【[[猛虎]]】暴れまわる虎。 *【[[盲虎]]】中将棋の駒の一つ。 2w7j9ddsr5qqwscfc4dzewzkddprzuo ごうじょう 0 479357 2340569 2123555 2026-09-01T14:46:39Z M-30722 1202 2340569 wikitext text/x-wiki {{kana-DEFAULTSORT}} {{also|こうしょう|こうじょう|ごうしょう}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana|h=y}} *【[[強情]]・[[剛情]]】[[かたくな|頑な]]で、[[意地]]を張るさま。[[頑固]]。 *【[[強盛]]】[[つよい|強く]][[さかん|盛ん]]であるさま。 ck3bl0bazjh9ljlqgmkxzczo6nabc2l ottan 0 494675 2340791 2325060 2026-09-02T00:18:55Z NekoyamaWataru 87354 /* {{hu}} */ 語句の修正 2340791 wikitext text/x-wiki =={{hu}}== ==={{pron}}=== *{{hu-IPA}} *{{hyph|hu|ot|tan}} ==={{etym}}=== {{suffix+|ott|an|pos2=場所格接尾辞|lang=hu}} ==={{adv}}=== {{hu-adv|-}} # {{label|hu|archaic|folksy}} {{alternative form of|hu|ott}} ===={{drv}}==== *{{l|hu|ottani}} *{{l|hu|ottan-ottan}} ===参考文献=== *{{R:ErtSz|onlylink=y}}は次の項目を参照している: {{R:ErtSz|ott}} [[Category:{{hu}}_指示副詞]] p2rmc018qkqvq9mh8qptn6s9d92uriu odáig 0 495944 2340792 2325054 2026-09-02T00:19:00Z NekoyamaWataru 87354 /* {{hu}} */ 語句の修正 2340792 wikitext text/x-wiki {{DEFAULTSORT:odaig}} =={{hu}}== ==={{pron}}=== *{{hu-IPA}} *{{hyph|hu|odá|ig}} ==={{etym}}=== {{suffix+|oda|ig|lang=hu}} ==={{adv}}=== {{hu-adv|-}} # {{label|hu|場所}} [[そこ]]まで、[[その]][[場所]]まで、[[あそこ]]まで、[[あの]]場所まで。 # {{label|hu|時間}} [[その]][[とき|時]]まで、[[それ]]まで。 ===参考文献=== *{{R:ErtSz}} fcxgultdnmlyvas5lx4aj34u823xcxn トラップ 0 498833 2340588 2314001 2026-09-01T15:31:24Z M-30722 1202 語義追加 2340588 wikitext text/x-wiki {{kana-DEFAULTSORT}} =={{L|ja}}== {{wikipedia}} {{wikipedia|トラップ (クレー射撃) }} {{wikipedia|トラップ (サッカー) }} ==={{etym}}=== {{bor|ja|en|trap}} ==={{noun}}=== {{ja-noun-suru}} #[[動物]]を[[捕獲]]する[[わな]]。 #{{タグ|ja|射撃競技}}[[クレー射撃]]の[[標的]]を飛ばす[[装置]]。 #[[排水管]]の途中に設ける、水を貯めて管を区切るための[[機構]]。 #{{タグ|ja|サッカー}}[[ボール]]を身体の一部で[[うけとめる|受け止め]]、次の動きを行いやすい位置に[[移動]]させること。 ==={{verb}}=== {{ja-verb-suru}} #{{タグ|ja|サッカー}} ボールを身体の一部で受け止め、次の動きを行いやすい位置に移動させる。 {{日本語サ変活用}} 8adkxk8s83xz7342t0hyrsdkf6y9lvf bizonnyal 0 500975 2340793 2325050 2026-09-02T00:19:06Z NekoyamaWataru 87354 /* {{hu}} */ 語句の修正 2340793 wikitext text/x-wiki =={{hu}}== ==={{pron}}=== *{{hu-IPA}} *{{hyph|hu|bi|zony|nyal}} ==={{etym}}=== {{suffix+|bizony|val|lang=hu}} ==={{adv}}=== {{hu-adv|-}} # {{label|hu|通常 {{m|hu|minden}} とともに解釈される}} [[十中八九]]、[[ほとんど]]の場合で、ほぼ[[必ず]]、[[おそらく]]、{{ふりがな|勿論|もちろん}}。 #: {{syn|hu|bizonyára|alighanem}} #: {{uxi|hu|minden '''bizonnyal'''|おそらく}} # {{label|hu|archaic}} {{l|hu|bizonyosan}} または {{l|hu|biztosan}} の類義語。[[まちがい|間違い]]なく。 #: {{syn|hu|kétségtelenül}} # {{label|hu|archaic}} {{l|hu|mindenképpen}} または {{l|hu|okvetlenül}} の類義語。[[どうぞ]]、[[是非]] ===参考文献=== *{{R:ErtSz}} *{{R:Nagyszotar}} 2u3wxc13rm5rcgvnco54zcekrewedrm チェチェン共和国 0 502912 2340772 2044994 2026-09-02T00:05:42Z VioletMother 133290 /* {{ja}} */ Added pronunciation audio 2340772 wikitext text/x-wiki {{kana-DEFAULTSORT|ちぇちぇんきょうわこく}} {{wikipedia}} =={{ja}}== ==={{pron}}=== * {{音声|ja|LL-Q5287 (jpn)-CKali-チェチェン共和国.wav|音声}} ==={{name}}=== {{ja-name|チェチェンきょうわこく}} #{{context|アジアの国|ロシア|lang=ja}} [[ロシア連邦]]を構成する[[共和国]]の一つ[[チェチェン]]の正式名。[[首都]]は[[グロズヌイ]]。 e7plg68brdf0jrkh5ok2lseyos885se gyalogszerrel 0 506045 2340777 2325183 2026-09-02T00:08:14Z NekoyamaWataru 87354 /* {{hu}} */ 語句の修正 2340777 wikitext text/x-wiki =={{hu}}== ==={{pron}}=== *{{hu-IPA}} *{{audio|hu|Hu-gyalogszerrel.ogg}} *{{hyph|hu|gya|log|szer|rel}} ==={{etym}}=== {{affix|hu|gyalog|szerrel}} ==={{adv}}=== {{hu-adv|-}} # {{label|hu|folksy||or||literary|informal}} [[徒歩]]で、[[あるく|歩いて]]。 #: {{syn|hu|gyalog|gyalogosan}} ===参考文献=== *{{R:ErtSz}} aupj1dardc0qh8l8bn35e5537l2z970 életvitelszerűen 0 506230 2340779 2325182 2026-09-02T00:11:23Z NekoyamaWataru 87354 /* {{hu}} */ 語句の修正 2340779 wikitext text/x-wiki {{DEFAULTSORT:eletvitelszeruen}} =={{hu}}== ==={{pron}}=== *{{hu-IPA|életvitelszerüen}} *{{hyph|hu|élet|vi|tel|sze|rű|en}} ==={{etym}}=== {{suffix+|életvitelszerű|en|pos2=副詞形成接尾辞|lang=hu}} ==={{adv}}=== {{hu-adv|-}} # {{label|hu|formal}} [[つねに|常に]]、[[いつも|何時も]]、[[通常]]、[[だいたい]]。 #: {{ant|hu|átmenetileg}} # [[生活]]のために、[[くらす|暮らして]]いくために。 ml7celad6wlmys8nookpoyo2l5u3ei8 hasonlóképp 0 506959 2340781 2325181 2026-09-02T00:11:46Z NekoyamaWataru 87354 /* {{hu}} */ 語句の修正 2340781 wikitext text/x-wiki {{DEFAULTSORT:hasonlokepp}} =={{hu}}== ==={{pron}}=== *{{hu-IPA}} *{{hyph|hu|ha|son|ló|képp}} ==={{etym}}=== {{suffix+|hasonló|képp|lang=hu}} ==={{adv}}=== {{hu-adv|-}} # [[おなじく|同じく]]、[[同様]]に、[[ひとしく|等しく]]、[[平等]]に。 #: {{syn|hu|hasonlóképpen}} # {{label|hu|返答や応答で}} [[同感]]です、[[あなた]]も。 #: {{syn|hu|hasonlóképpen}} 9pq4ibx2a72i4qxwfrcbqwrgy3zjuzc hasonlóképpen 0 506960 2340783 2325179 2026-09-02T00:12:31Z NekoyamaWataru 87354 /* {{hu}} */ 語句の修正 2340783 wikitext text/x-wiki {{DEFAULTSORT:hasonlokeppen}} =={{hu}}== ==={{pron}}=== *{{hu-IPA}} *{{hyph|hu|ha|son|ló|kép|pen}} ==={{etym}}=== {{suffix+|hasonló|képpen|lang=hu}} ==={{adv}}=== {{hu-adv|-}} # [[おなじく|同じく]]、[[同様]]に、[[ひとしく|等しく]]、[[平等]]に。 #: {{syn|hu|hasonlóképp}} # {{label|hu|返答や応答で}} [[同感]]です、[[あなた]]も。 #: {{syn|hu|hasonlóképp}} bjyvwdnbh3zmoof5278r3o2mwgjhj07 életfogytig 0 514668 2340782 2325180 2026-09-02T00:12:09Z NekoyamaWataru 87354 /* {{hu}} */ 語句の修正 2340782 wikitext text/x-wiki {{DEFAULTSORT:eletfogytig}} =={{hu}}== ==={{pron}}=== *{{hu-IPA}} *{{hyph|hu|élet|fogy|tig}} ==={{etym}}=== {{affix|hu|élet|fogytig}} ==={{adv}}=== {{hu-adv|-}} # {{label|hu|人物}} [[終身]]で、[[終生]]で、[[一生]]で。 #: {{syn|hu|élethosszig|halálig}} #: {{uxi|hu|'''Életfogytig''' tartó száműzetésre ítélték.|彼/彼女は'''終身'''流刑の判決を受けた。}} #: {{uxi|hu|'''életfogytig''' tartó börtönbüntetés|'''終身'''刑}} ===={{drv}}==== *{{l|hu|életfogytiglan}} ===参考文献=== *{{R:ErtSz}} *{{R:Nagyszotar}} 5n8g4wzc5tspqecq2w51y0qqe7eywcv 巻耳 0 516824 2340627 2335073 2026-09-01T16:23:20Z ~2026-47618-09 133310 /* {{name}} */ 2340627 wikitext text/x-wiki {{kana-DEFAULTSORT|けんじ}} =={{L|ja}}== {{ja-kanjitab|けん|じ|yomi=o}} {{ja-kanjitab|おなもみ2|yomi=juku}} ==={{noun}}=== {{ja-noun|[[けんじ]]|reki=くゑんじ|kyu=卷耳}} #{{context|植物|夏|古用法|lang=ja}}[[みみなぐさ|耳菜草]]の[[古名]]。 ==={{name}}=== {{ja-name|けんじ}} #{{context|lang=ja|作品名}}『{{ruby|{{w|詩経}}|しきょう}}』{{ruby|周南|しゅうなん}}の詩の題名<small>(参考:『角川新字源』改訂新版)</small>。 ==={{wago}}=== {{ja-wagokanji|おなもみ|みみなぐさ}} #{{wagokanji of|おなもみ}} #{{wagokanji of|みみなぐさ}}<small>(参考:『漢検漢字辞典』第二版)</small> orsrmyluk7anpw73avhhroze5wmy7i2 きゅうてい 0 520999 2340745 2084449 2026-09-01T23:36:18Z うーむ 129171 /* 日本語 */ 2340745 wikitext text/x-wiki {{kana-DEFAULTSORT}} {{also|ぎゅうてい}} =={{L|ja}}== ==={{homonym}}=== {{head|ja|同音異義}} *【[[宮廷]]・[[宮庭]]】:[[禁中]] *【[[旧帝]]】:旧[[帝国大学]] *【[[急呈]]】:急ぎの手紙の冒頭に頭語として記載する語句の一つ。 *【[[旧邸]]】:前に住んでいた屋敷。 *【[[休廷]]】:[[裁判]]を一時休むこと。 *【[[九鼎]]】:[[貴重]]なもの。 *【[[旧堤]]】:[[在来]]の[[堤防]]。 *【[[泣涕]]】:[[落涙]]して泣くこと。 t5m1v0d0kzs87nsn0w9ek3uo6hy51jq folyton-folyvást 0 537669 2340784 2325170 2026-09-02T00:12:58Z NekoyamaWataru 87354 /* {{hu}} */ 語句の修正 2340784 wikitext text/x-wiki {{DEFAULTSORT:folyton-folyvast}} =={{hu}}== ==={{pron}}=== *{{hu-IPA}} *{{hyph|hu|foly|ton-|foly|vást}} ==={{etym}}=== {{affix|hu|folyton|folyvást}} ==={{adv}}=== {{hu-adv|-|head=[[folyton]]-[[folyvást]]}} # {{label|hu|slightly||pejorative}} [[ずっと]]、[[ずるずる]]と、[[延延|延々]]と、[[のべつまくなし|のべつ幕無し]]に、[[ひっきりなし]]に、[[四六時中]]、[[いつも|何時も]]。 #: {{uxi|hu|'''Folyton-folyvást''' ezt kell hallgatnom.|これを'''延々と'''聞かないといけない。}} ===参考文献=== *{{R:ErtSz}} pooshxb4sj6rdn874ed5bl9ot85n2lp 良習 0 546273 2340551 2139107 2026-09-01T14:12:20Z ~2026-47450-34 133302 /* {{L|ja}} */ 2340551 wikitext text/x-wiki {{kana-DEFAULTSORT|りょうしゅう}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[りょうしゅう]]}} #{{おくりがな2|良|よ|い|よい}}[[風習]]。 ===={{syn}}==== *[[美風]] ===={{ant}}==== *[[悪習]] *[[陋習]] *[[弊習]] *[[弊風]] np4at6ktqbst5dndju0a8ouh8xun9b8 口唱 0 546412 2340545 2139330 2026-09-01T13:39:21Z うーむ 129171 /* 日本語 */ 2340545 wikitext text/x-wiki {{kana-DEFAULTSORT|くそう}} =={{L|ja}}== ==={{noun}}=== {{ja-noun-suru|[[くそう]]|[[こうしょう]]}} #(くそう){{タグ|ja|仏教}}[[ほとけ|仏]]、[[菩薩]]の名を口で唱えること。 #(こうしょう)[[うたう|歌う]]こと。 ==={{verb}}=== {{ja-verb-suru|くそう|こうしょう}} {{日本語サ変活用}} hcs07arivvphegrikp37whvt4duev3l 中國夢 0 549391 2340740 2213827 2026-09-01T21:26:04Z Jiba1219 100610 2340740 wikitext text/x-wiki =={{L|zh}}== {{zh-cat|zhong1guo2meng4|noun|政治}} {{yue-cat|jung1gwok3mung6|noun|政治}} {{wikipedia|lang=zh}} {{wikipedia|lang=yue}} {{wikipedia|lang=nan|Tiong-kok Bāng}} ==={{pron}}=== {{cmn-pron|Zhōngguómèng}} {{yue-pron|zung1 gwok3 mung6}} ==={{noun}}=== {{zhchar|中國|夢|s=中国梦}} #[[w:中国の夢|中国の夢]]。 fxqae6hh5aa87ul98ltsk4sq20rdld7 2340899 2340740 2026-09-02T08:41:57Z Jiba1219 100610 2340899 wikitext text/x-wiki {{DEFAULTSORT:zhong1guo2meng4}} =={{L|zh}}== {{zh-cat|zhong1guo2meng4|noun|政治}} {{yue-cat|jung1gwok3mung6|noun|政治}} {{wikipedia|lang=zh}} {{wikipedia|lang=yue}} {{wikipedia|lang=nan|Tiong-kok Bāng}} ==={{pron}}=== {{cmn-pron|Zhōngguómèng}} {{yue-pron|zung1 gwok3 mung6}} ==={{noun}}=== {{zhchar|中國|夢|s=中国梦}} #{{タグ|zh|中国|政治}}[[w:中国の夢|中国の夢]]。 atxjurajqq7b70qca1f6i3cg8bvl6at 中国梦 0 549392 2340741 2213828 2026-09-01T21:26:31Z Jiba1219 100610 2340741 wikitext text/x-wiki =={{L|zh}}== {{zh-cat|zhong1guo2meng4|noun|政治}} {{yue-cat|jung1gwok3mung6|noun|政治}} {{wikipedia|lang=zh|中國夢}} ==={{pron}}=== {{cmn-pron|Zhōngguómèng|z=n}} {{yue-pron|zung1 gwok3 mung6|h=n}} ==={{noun}}=== {{zhchar|中国|梦|t=中國夢}} #[[w:中国の夢|中国の夢]]。 jn07v7102099f6j6m54us0vf065w5qj 2340900 2340741 2026-09-02T08:42:14Z Jiba1219 100610 2340900 wikitext text/x-wiki {{DEFAULTSORT:zhong1guo2meng4}} =={{L|zh}}== {{zh-cat|zhong1guo2meng4|noun|政治}} {{yue-cat|jung1gwok3mung6|noun|政治}} {{wikipedia|lang=zh|中國夢}} ==={{pron}}=== {{cmn-pron|Zhōngguómèng|z=n}} {{yue-pron|zung1 gwok3 mung6|h=n}} ==={{noun}}=== {{zhchar|中国|梦|t=中國夢}} #{{タグ|zh|中国|政治}}[[w:中国の夢|中国の夢]]。 kduztpnan1j1n85b1oifiiz0199byny 利用者:Kuroco2k/common.js 2 554760 2340831 2339461 2026-09-02T06:07:02Z Kuroco2k 84207 2340831 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('/wiki/利用者:Kuroco2k/ru-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' ); ceu1l9ng27aatdc08ncauey9j2rm6cg 2340847 2340831 2026-09-02T06:52:46Z Kuroco2k 84207 2340847 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('/wiki/利用者:Kuroco2k/ru-verb-form/test.js?action=raw&ctype=text/javascript'); mw.loader.load( '/w/index.php?title=利用者:Kuroco2k/verb-form-config.js&action=raw&ctype=text/javascript' ); 1gq5r1rtrdo7meyijh67kic2sekwpap 2340970 2340847 2026-09-02T09:04:45Z Kuroco2k 84207 2340970 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 2340988 2340970 2026-09-02T09:25:39Z Kuroco2k 84207 2340988 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/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'); o8fdyks9fskb64puja11bhi9a258mlk egyre 0 555916 2340754 2325366 2026-09-01T23:55:34Z NekoyamaWataru 87354 /* {{hu}} */ 語句の修正 2340754 wikitext text/x-wiki =={{hu}}== ==={{pron}}=== *{{hu-IPA}} *{{audio|hu|Hu-egyre.ogg}} *{{hyph|hu|egy|re}} ==={{etym}}=== {{suffix+|egy|re|lang=hu}} ==={{numeral}}=== {{head|hu|numeral form}} # {{inflection of|egy|egy||s|着格|lang=hu}} #: {{uxi|hu|Szerintem '''egyre''' gondolunk.|私たちは'''同じことを'''考えていると思います。}} ===={{comp}}==== *{{l|hu|egyre-másra}} ===={{idiom}}==== *{{l|hu|egyre megy}} ==={{adv}}=== {{hu-adv|-}} # [[たえず|絶えず]]、[[ずっと]]、[[頻繁]]に、[[ひきつづき|引き続き]]、[[やすむ|休ま]]ずに、[[いつも]]、[[常に]]、[[間断]]なく、[[のべつまくなし|のべつ幕なし]]に。 #: {{uxi|hu|'''egyre''' csak azt hajtogatja, hogy…|彼/彼女は…と言い'''続けている'''。}} # {{label|hu|主に比較級の形容詞または副詞とともに}} [[ますます]]、[[いよいよ]]、[[だんだん]]、[[どんどん]]。 #: {{uxi|hu|Napról napra '''egyre''' ügyesebb vagy!|日に日に上手になってきましたね!}} #: {{uxi|hu|'''Egyre''' kevésbé hiszek Jánosnak.|私はヤーノシュを'''ますます'''信用しなくなっている。}} ===={{usage}}==== この副詞は継続性や進行中のプロセスを強調するため、完了相(完了、結果、達成、または終了)を表す接頭辞が付いた動詞では使用されない。翻って言えば、この副詞(やその類義語)が文中に挿入されるということは、その文が不完了相を持っていることを示している可能性がある。 ===={{drv}}==== *{{l|hu|mindegyre}} ===参考文献=== *{{R:ErtSz}} *{{R:Nagyszotar}} l6zbd27k5m8epw06cfkhqcdswznpuhr hajadonfővel 0 556781 2340788 2325162 2026-09-02T00:18:39Z NekoyamaWataru 87354 /* {{hu}} */ 語句の修正 2340788 wikitext text/x-wiki {{DEFAULTSORT:hajadonfovel}} =={{hu}}== ==={{pron}}=== *{{hu-IPA}} *{{hyph|hu|ha|ja|don|fő|vel}} ==={{etym}}=== {{affix|hu|hajadon|fővel}} ==={{adv}}=== {{hu-adv|-}} # [[無帽]]で、[[帽子]]を[[かぶる|被ら]]ず。 #: {{syn|hu|hajadonfőtt}} # {{label|hu|archaic}} [[おんなのこ|女の子]]として、女の子の立場から。 ===参考文献=== *{{R:ErtSz}} jah5f5d0hfup66a1pzfozdz1hh2mss0 宣言法 0 559343 2340631 2165055 2026-09-01T16:32:13Z ~2026-47618-09 133310 2340631 wikitext text/x-wiki {{kana-DEFAULTSORT|せんげんほう}} =={{L|ja}}== ==={{etym}}=== {{compound|lang=ja|宣言|法}} *語義2は{{calque|ja|en|Declaratory Act}}。 ==={{noun}}=== {{ja-noun|せんげんほう|reki=せんげんはふ}} #{{context|lang=ja|law}}ある[[状況]]を宣言する[[法律]]。 #*2020年[[国家]][[緊急事態]]'''宣言法'''([https://dl.ndl.go.jp/view/prepareDownload?itemId=info:ndljp/pid/12312720 国立国会図書館「【オーストラリア】[立法情報]2020年国家緊急事態宣言法」]) #*[[カンボジア]]の[[中立]]'''宣言法''' #{{タグ|ja|法律|歴史}}1766年、[[イギリス]][[本国]]が[[アメリカ]][[植民地]]に対する[[立法権]][[適用]]の[[正当性]]を宣言した[[法令]]。<small>([https://kotobank.jp/word/%E5%AE%A3%E8%A8%80%E6%B3%95-88175 参考:『ブリタニカ国際大百科事典 小項目事典』(コトバンク内)])</small> #{{タグ|ja|略語|将棋}}「[[入玉宣言法]]」の略。 #*'''宣言法'''の[[規定]]による[[勝利]]を収める。 #*さらに、'''宣言法'''という[[ルール]]を[[採用]]している[[大会]]もあります。([https://www.shogi.or.jp/faq/rules/ 日本将棋連盟ホームページ「よくある質問」より「持将棋の規定はどうなっていますか。」]) #宣言する[[方法]]。 #*{{ふりがな|立直|リーチ}}時の'''宣言法''' tsqwr9evh5h2aqd1o84uk487i2h3ulg elég 0 566334 2340755 2325364 2026-09-01T23:56:01Z NekoyamaWataru 87354 /* {{hu}} */ 語句の修正 2340755 wikitext text/x-wiki {{DEFAULTSORT:eleg}} =={{hu}}== ==={{pron}}=== *{{hu-IPA}} *{{audio|hu|Hu-elég.ogg}} *(形容詞・副詞) {{hyph|hu|elég}} *(動詞) {{hyph|hu|el|ég}} ==={{etym}}1=== ===={{adj}}==== {{hu-adj|-}} # {{senseid|hu|enough}}[[十分]]な、[[たりる|足りる]]、[[不足]]のない。 #: {{syn|hu|elegendő}} #: {{uxi|hu|Nincs sok vizünk, de egy napra biztosan '''elég'''.|水は多くないですが、一日分には'''十分です'''。}} ====={{decl}}===== {{hu-infl-nom|elege|e|stem2=elég|spe_sg_stem=eleg|pos=adjectives}} ====={{drv}}===== {{top4}} *{{l|hu|elégedik}}, {{l|hu|elégszik}} → {{l|hu|megelégedik}}, {{l|hu|megelégszik}} *{{l|hu|elégel}} → {{l|hu|megelégel}} *{{l|hu|elegen}} *{{l|hu|eléggé}} *{{l|hu|elégít}} → {{l|hu|kielégít}} *{{l|hu|elégséges}} *{{l|hu|elégtelen}} *{{l|hu|elégtétel}} *{{l|hu|elégül}} → {{l|hu|kielégül}} {{bottom}} ===={{adv}}==== {{hu-adv|-}} # [[かなり]]、[[なかなか]]、[[まあまあ]]、[[ずいぶん|随分]]、[[とても]]。 #: {{syn|hu|eléggé|viszonylag|aránylag|meglehetősen}} #: {{uxi|hu|Azok nagyon jók, de '''elég''' drágák.|とても良いのですが、'''かなり'''高価です。}} ====={{usage}}===== (副詞の) ''elég'' は、形容詞や副詞との組み合わせでのみ使用できる(例: {{m|hu||elég szép volt|彼/彼女/それはとても素敵だった}}, {{m|hu||elég hamar odaértem|私はすぐにそこに到着しました}})。動詞との組み合わせでは {{m|hu|eléggé}} が必要である(形容詞や副詞との両方に使用できる 例: {{m|hu||eléggé megáztunk|私たちはびしょ濡れになりました}})。 ===={{noun}}==== {{hu-noun}} # 語形変化の接尾辞とともに使用する。 #: {{uxi|hu|[[elege van]]|うんざりする|lit=もう十分である}} #: {{uxi|hu|[[eleget tesz]]|満足させる、満たす、従う|lit=十分に行う}} ====={{decl}}===== {{hu-infl-nom|elege|e|stem2=elég}}{{hu-pos-etek|eleg||ei|n=sg}} ==={{etym}}2=== {{prefix|el|ég|id2=to burn|lang=hu}} ===={{verb}}==== {{hu-verb}} # {{senseid|hu|to burn}}{{label|hu|intransitive}} [[もえつきる|燃え尽きる]]。 ====={{conjug}}===== {{hu-conj-ek|el|é|g|intrans=y|pref=el|caus=et}} ===参考文献=== *{{R:ErtSz|2|​十分な、足りる}} *{{R:ErtSz|1|燃え尽きる}} *{{R:Nagyszotar}} lf3mtxbkarvdhjcgklbmyqlzlqq8why ideiglen 0 566588 2340757 2325363 2026-09-01T23:56:35Z NekoyamaWataru 87354 /* {{hu}} */ 語句の修正 2340757 wikitext text/x-wiki =={{hu}}== ==={{pron}}=== *{{hu-IPA}} *{{hyph|hu|ide|ig|len}} ==={{etym}}=== {{suffix+|ideig|len|pos2=副詞形成接尾辞|lang=hu}} 文字通りは「しばらくの間」、「一頻り」の意味 ==={{adv}}=== {{hu-adv|-}} # {{label|hu|archaic}} [[一時]]、[[かり|仮]]に、[[まにあわせ|間に合わせ]]に。 #: {{syn|hu|[[egy]] [[ideig]]|q1=only for durative actions, like staying somewhere|[[egy]] [[időre]]}} ===={{drv}}==== *{{l|hu|ideiglenes}} 9391llo9swedn3eao0iuo3wcsv0ux8q pediglen 0 568076 2340760 2325360 2026-09-01T23:58:00Z NekoyamaWataru 87354 /* {{hu}} */ 語句の修正 2340760 wikitext text/x-wiki =={{hu}}== ==={{pron}}=== *{{hu-IPA}} *{{hyph|hu|pe|dig|len}} ==={{etym}}=== {{suffix+|pedig|len|lang=hu}} ==={{adv}}=== {{hu-adv|-}} # {{label|hu|archaic|poetic}} {{l|hu|pedig}} の類義語。 ===参考文献=== *{{R:ErtSz}} sm7okhzbfdkkw46wnh3wbgra7dt3a1w ezred 0 569217 2340861 2186484 2026-09-02T07:42:29Z NekoyamaWataru 87354 /* {{hu}} */ 語句の修正 2340861 wikitext text/x-wiki =={{hu}}== {{number box|hu|1000}} ==={{pron}}=== * {{hu-IPA}} * {{hyph|hu|ez|red}} ==={{etym}}=== {{suffix+|ezer|ed|pos2=分数形成接尾辞|lang=hu}} ==={{numeral}}=== {{head|hu|numeral}} # 1000分の1。 ===={{decl}}==== {{hu-infl-nom|ezrede|e}}{{hu-pos-etek|ezred||ei}} ==={{noun}}=== {{hu-noun|ek}} # {{label|hu|military}} [[連隊]]。 # {{label|hu|literary|slightly||dated}} 1000[[年間]]、[[千年紀]]、[[ミレニアム]]。 ===={{decl}}==== {{hu-infl-nom|ezrede|e}}{{hu-pos-etek|ezred||ei}} ===={{cot}}==== {{list:military units/hu}} ===={{drv}}==== * {{l|hu|ezredes}} ===={{comp}}==== {{top3}} * {{l|hu|évezred}} * {{l|hu|ezredév}} * {{l|hu|ezredforduló}} {{bottom}} ===参考文献=== * {{R:ErtSz|1|1000分の1、連隊、千年紀}} * {{R:ErtSz|2|千番目[古語]}} * {{R:Nagyszotar}} 0rw0wgrnkt202l38qexlkvb5nr5u72q teli 0 569281 2340761 2325357 2026-09-01T23:58:52Z NekoyamaWataru 87354 /* {{hu}} */ 語句の修正 2340761 wikitext text/x-wiki =={{hu}}== ==={{pron}}=== *{{hu-IPA}} *{{audio|hu|Hu-teli.ogg}} *{{hyph|hu|te|li}} ==={{adv}}=== {{hu-adv|-}} # {{l|hu|tele||十分に、いっぱい}}の類義語、通常 {{m|hu|van}} とともに使用。 ===={{usage}}==== {{U:hu:separated-verbal-prefix|alt=tele}} ==={{adj}}=== {{hu-adj|bb}} # {{l|hu|tele||十分な、満ちている}}の類義語。 #: {{uxi|hu|A légpárnás hajóm '''teli''' van angolnával.|私のホバークラフトは鰻で'''一杯'''です。}} ===={{decl}}==== {{hu-infl-nom|telie|e|-}} ===={{drv}}==== *{{l|hu|telin}}, {{l|hu|telien}} (副詞形成接尾辞とともに、主に成句で使用) ===={{comp}}==== {{top4}} *{{l|hu|életteli}} *{{l|hu|örömteli}} *{{l|hu|telihold}} *{{l|hu|telis-teli}} {{bottom}} ==={{noun}}=== {{hu-noun|-}} # (語形 {{l|hu|telibe}} で, 主に動詞 {{m|hu|kap}}, {{m|hu|megy}}, {{m|hu|talál}} とともに使用) [[きっかり]]、[[ぴったり]]、[[厳密]]に、[[正確]]で、[[ねらいどおり|狙い通り]]で、[[どんぴしゃ]]で。 # {{label|hu|rare|語形 {{l|hu|telije}} で}} [[充実]]、[[完全性]]。 #: {{syn|hu|telje|teljessége}} ===参考文献=== *{{R:ErtSz|onlylink=y}} は部分的に次の項目を参照: {{R:ErtSz|tele}} ssnmrtt84n36g3talbsde5rwqrpo4zc quantum plane algebra 0 574863 2341094 2199047 2026-09-02T10:17:56Z ふゆくれ 95641 2341094 wikitext text/x-wiki =={{L|en}}== ==={{noun}}=== {{en-noun|-}} #{{context|代数学|lang=en}}[[乗法]]の[[交換法則]]<math>YX=XY</math>に対する[[q-類似]] <math>YX=qXY</math>で定められる代数体系。 ====補足==== 和訳はまだ存在しない。直訳すると「量子平面代数」である。 ===={{rel}}==== *[[quantum affine algebra]] *[[quantum group]] o60nxx31fhx510wixwhzzdllodytl39 テンプレート:uncertain 10 576468 2341178 2202648 2026-09-02T11:46:25Z Kuroco2k 84207 2341178 wikitext text/x-wiki {{#invoke:etymology/templates|misc_variant_no_term|text=不明|cat=語源が不明な語|title2_alias=1}}<noinclude>{{documentation}}[[カテゴリ:語源テンプレート]]</noinclude> nr32q1paq7an7vdjadt54geeldu8jln pofon 0 579717 2340762 2325356 2026-09-01T23:59:31Z NekoyamaWataru 87354 /* {{hu}} */ 語句の修正 2340762 wikitext text/x-wiki {{also|pöfön}} =={{hu}}== ==={{pron}}=== *{{hu-IPA}} *{{hyph|hu|po|fon}} ==={{etym}}=== {{suffix+|pofa|on|pos2=格接尾辞|lit=顔の上に|lang=hu}} ==={{adv}}=== {{hu-adv|-}} # {{label|hu|平手打ちを表す動詞とともに}} [[かお|顔]]に、[[ほお|頬]]に。 ===={{comp}}==== {{top4}} *{{l|hu|pofoncsapás}} *{{l|hu|pofonütés}} *{{l|hu|pofonvágás}} *{{l|hu|pofonverés}} {{bottom}} ==={{noun}}=== {{hu-noun|ok}} # {{label|hu|顔面や頬への}} [[ひらてうち|平手打ち]]、[[びんた]]。 #: {{syn|hu|arculütés|arculcsapás|tasli}} # {{label|hu|figuratively}} [[突然]]の[[屈辱]]、[[いたで|痛手]]。 ===={{decl}}==== {{hu-infl-nom|pofono|o|-}}{{hu-pos-otok|pofon|j|jai}} ===={{comp}}==== *{{l|hu|pofonegyszerű}} ===={{idiom}}==== {{top3}} *{{l|hu|egyszerű, mint a pofon}} *{{l|hu|ízlések és pofonok}} *{{l|hu|minden pofon jó helyre megy}} {{bottom}} ===={{rel}}==== *{{l|hu|pofoz}} ===参考文献=== *{{R:ErtSz}} di3pabaudxy956srrlu0odj159ynfh5 テンプレート:hak-cat/doc 10 580629 2340638 2213903 2026-09-01T16:43:06Z Jiba1219 100610 2340638 wikitext text/x-wiki __TOC__ ==使い方== {{hak}}のカテゴリを付けるためのテンプレート。単漢字にも2つ以上の漢字からなる語彙にも使用出来る。 引数1(ソートキー)には、声調記号つきの白話字をそのまま入力できる。[[:モジュール:hak-cat]]が自動的に声調記号を数字(1〜6)に変換し、「ṳ」は「ii」に変換してソートキーを生成する。入力に半角数字が1つでも含まれている場合は「既に変換済みの手入力ソートキー」とみなし、自動変換せずそのまま使用する。 ==引数== {| class="wikitable" border="1" |+ 引数の一覧 ! 引数 !! 指定内容 !! 既定値 !! 説明 |- ! 1 | ソートキー || 無し || 必須。以下のいずれかの形式で入力する。 * '''声調記号つきの白話字'''(例:<code>â</code>)を入力すると、自動的に数字入りのソートキー(声調は1〜7の番号、'''「ṳ」は「ii」に変える''')に変換される。四県話がない場合は台湾客家語拼音方案(声調は1~7の番号)若しくは拼音({{w|Pinfa|lang=en}}、声調は1~6の番号)で入力。 * 半角数字を含む文字列(例:<code>siin1fa2</code>)を入力すると、既に変換済みのソートキーとみなし、無変換でそのまま使用される。台湾客家語拼音方案は声調1~7の番号、拼音は声調1~6の番号で手動入力する場合に用いる。 |- ! 2 - 10 | カテゴリ || 無し || 省略可。品詞や分野等のカテゴリを入力する。なお、品詞は日本語でも英語(noun、verb等)でも可。 |- ! debug | ソートキー確認表示 || 無し(非表示) || 省略可。<code>debug=1</code> を指定すると、引数1として渡した文字列と、実際に生成されたソートキーをページ上に表示する。ソートキーの変換結果を確認したいときに使う。 |} ==カテゴリ== このテンプレートは、貼り付けられたページに次のカテゴリを適用します: {| class="wikitable" ! カテゴリ !! ソートキー !! 説明 |- | カテゴリ:{{hak}} || 引数1から生成されたソートキー || このテンプレートを使用した全ての項目に適用 |- | カテゴリ:{{hak}} (引数2~10で指定した品詞や分野) || 引数1から生成されたソートキー || 引数2以降を用いた場合に適用 |} ==使用例== *[[昇華]] → <nowiki>{{hak-cat|siin1fa2|noun|verb|化学|心理学}}</nowiki>(既に数字化済みのソートキーを手入力する例) *声調記号つきの白話字をそのまま渡す場合 → <nowiki>{{hak-cat|â|noun}}</nowiki>(自動的に <code>a1</code> に変換される) *ソートキーの変換結果を確認したい場合 → <nowiki>{{hak-cat|â|noun|debug=1}}</nowiki>(ページ上に「入力: â → ソートキー: a1」のような確認表示が出る。確認後は<code>debug=1</code>を外すこと) ==関連項目== * [[:テンプレート:zh-catdata]]: 引数2〜10のカテゴリ付けを行うためのテンプレート * [[:モジュール:hak-cat]]: 引数1の声調記号→数字変換(ソートキー生成)を行うモジュール tllat84qidzcmmyx5kvf0e9twubewvt テンプレート:mnp-cat/doc 10 580630 2340556 2213869 2026-09-01T14:40:19Z M-30722 1202 声調番号に関する説明追加 2340556 wikitext text/x-wiki <noinclude>{{documentation subpage}}</noinclude> __TOC__ ==使い方== {{mnp}}のカテゴリを付けるためのテンプレート。単漢字にも2つ以上の漢字からなる語彙にも使用出来る。 ==引数== {| class="wikitable" border="1" |+ 引数の一覧 ! 引数 !! 指定内容 !! 既定値 !! 説明 |- ! 1 | ソートキー || 無し || 必須。ソートキーは建寧ローマ字(声調は1〜7の番号、'''「ṳ」は「y」・「e̤」は「oe」に変える''')で入力。 |- ! 2 - 10 | カテゴリ || 無し || 省略可。品詞や分野等のカテゴリを入力する。なお、品詞は日本語でも英語(noun、verb等)でも可。 |} 声調番号については下記の通り。 {| class="wikitable" border="1" |+ 声調番号 ! 声調番号 !! 声調名 !! 記号 |- !1 | 陰平 || ˊ |- !2 | 陽平 || ˆ |- !3 | 上声 || ˇ |- !4 | 陰去 ||  ̿ |- !5 | 陽去 || ˉ |- !6 | 陰入 || ˘ |- !7 | 陽入 || ˋ |} ==カテゴリ== このテンプレートは、貼り付けられたページに次のカテゴリを適用します: {| class="wikitable" ! カテゴリ !! ソートキー !! 説明 |- | カテゴリ:{{mnp}} || 引数1 || このテンプレートを使用した全ての項目に適用 |- | カテゴリ:{{mnp}} (引数2~10で指定した品詞や分野) || 引数1 || 引数2以降を用いた場合に適用 |} ==使用例== *[[十一月]] → <nowiki>{{mnp-cat|si1i6ngue7|noun|月名}}</nowiki> ==関連項目== * [[:テンプレート:zh-catdata]]: 引数2〜10のカテゴリ付けを行うためのテンプレート k7ddhacigg46ltk9f5r776nrhyy0vll テンプレート:cdo-cat/doc 10 580631 2340554 2213871 2026-09-01T14:32:56Z M-30722 1202 声調番号に関する説明追加 2340554 wikitext text/x-wiki __TOC__ ==使い方== {{cdo}}のカテゴリを付けるためのテンプレート。単漢字にも2つ以上の漢字からなる語彙にも使用出来る。 ==引数== {| class="wikitable" border="1" |+ 引数の一覧 ! 引数 !! 指定内容 !! 既定値 !! 説明 |- ! 1 | ソートキー || 無し || 必須。ソートキーは平話字(声調は1〜7の番号、'''「a̤」「e̤」「o̤」「ṳ」は「a」「e」「o」「u」に変える''')で入力。 |- ! 2 - 10 | カテゴリ || 無し || 省略可。品詞や分野等のカテゴリを入力する。なお、品詞は日本語でも英語(noun、verb等)でも可。 |} 声調番号については下記の通り。記号によっては3と4、1と7のように同じ組み合わせもあるが、-kや-hで終わるもの([[入声]])は4や7、それ以外の母音で終わるものや-ngで終わるものは1や3とする。 {| class="wikitable" border="1" |+ 声調番号 ! 声調番号 !! 声調名 !! 記号 !! 文字例 |- !1 | 陰平 || ˘ || 君 (gŭng) |- !2 | 上聲 || - || 滾 (gūng) |- !3 | 陰去 || ˊ || 貢 (góng) |- !4 | 陰入 || ˊ || 谷 (gók) |- !5 | 陽平 || ` || 群 (gùng) |- !6 | 陽去 || ^ || 郡 (gông) |- !7 | 陽入 || ˘ || 掘 (gŭk) |} ==カテゴリ== このテンプレートは、貼り付けられたページに次のカテゴリを適用します: {| class="wikitable" ! カテゴリ !! ソートキー !! 説明 |- | カテゴリ:{{cdo}} || 引数1 || このテンプレートを使用した全ての項目に適用 |- | カテゴリ:{{cdo}} (引数2~10で指定した品詞や分野) || 引数1 || 引数2以降を用いた場合に適用 |} ==使用例== *[[昇華]] → <nowiki>{{cdo-cat|sing6hua3|noun|verb|化学|心理学}}</nowiki> ==関連項目== * [[:テンプレート:zh-catdata]]: 引数2〜10のカテゴリ付けを行うためのテンプレート 8y8wor8b61pd9zl3hsx7fxp4jdba38f 2340555 2340554 2026-09-01T14:34:50Z M-30722 1202 2340555 wikitext text/x-wiki <noinclude>{{documentation subpage}}</noinclude> __TOC__ ==使い方== {{cdo}}のカテゴリを付けるためのテンプレート。単漢字にも2つ以上の漢字からなる語彙にも使用出来る。 ==引数== {| class="wikitable" border="1" |+ 引数の一覧 ! 引数 !! 指定内容 !! 既定値 !! 説明 |- ! 1 | ソートキー || 無し || 必須。ソートキーは平話字(声調は1〜7の番号、'''「a̤」「e̤」「o̤」「ṳ」は「a」「e」「o」「u」に変える''')で入力。 |- ! 2 - 10 | カテゴリ || 無し || 省略可。品詞や分野等のカテゴリを入力する。なお、品詞は日本語でも英語(noun、verb等)でも可。 |} 声調番号については下記の通り。記号によっては3と4、1と7のように同じ組み合わせもあるが、-kや-hで終わるもの([[入声]])は4や7、それ以外の母音で終わるものや-ngで終わるものは1や3とする。 {| class="wikitable" border="1" |+ 声調番号 ! 声調番号 !! 声調名 !! 記号 !! 文字例 |- !1 | 陰平 || ˘ || 君 (gŭng) |- !2 | 上聲 || - || 滾 (gūng) |- !3 | 陰去 || ˊ || 貢 (góng) |- !4 | 陰入 || ˊ || 谷 (gók) |- !5 | 陽平 || ` || 群 (gùng) |- !6 | 陽去 || ^ || 郡 (gông) |- !7 | 陽入 || ˘ || 掘 (gŭk) |} ==カテゴリ== このテンプレートは、貼り付けられたページに次のカテゴリを適用します: {| class="wikitable" ! カテゴリ !! ソートキー !! 説明 |- | カテゴリ:{{cdo}} || 引数1 || このテンプレートを使用した全ての項目に適用 |- | カテゴリ:{{cdo}} (引数2~10で指定した品詞や分野) || 引数1 || 引数2以降を用いた場合に適用 |} ==使用例== *[[昇華]] → <nowiki>{{cdo-cat|sing6hua3|noun|verb|化学|心理学}}</nowiki> ==関連項目== * [[:テンプレート:zh-catdata]]: 引数2〜10のカテゴリ付けを行うためのテンプレート ep5jj3eauazxdtopji6ym6hkfpn9pif 2340570 2340555 2026-09-01T14:47:16Z M-30722 1202 2340570 wikitext text/x-wiki <noinclude>{{documentation subpage}}</noinclude> __TOC__ ==使い方== {{cdo}}のカテゴリを付けるためのテンプレート。単漢字にも2つ以上の漢字からなる語彙にも使用出来る。 ==引数== {| class="wikitable" border="1" |+ 引数の一覧 ! 引数 !! 指定内容 !! 既定値 !! 説明 |- ! 1 | ソートキー || 無し || 必須。ソートキーは平話字(声調は1〜7の番号、'''「a̤」「e̤」「o̤」「ṳ」は「a」「e」「o」「u」に変える''')で入力。 |- ! 2 - 10 | カテゴリ || 無し || 省略可。品詞や分野等のカテゴリを入力する。なお、品詞は日本語でも英語(noun、verb等)でも可。 |} 声調番号については下記の通り。記号によっては3と4、1と7のように同じ組み合わせもあるが、-kや-hで終わるもの([[入声]])は4や7、それ以外の母音で終わるものや-ngで終わるものは1や3とする。 {| class="wikitable" border="1" |+ 声調番号 ! 声調番号 !! 声調名 !! 記号 !! 文字例 |- !1 | 陰平 || ˘ || 君 (gŭng) |- !2 | 上声 || - || 滾 (gūng) |- !3 | 陰去 || ˊ || 貢 (góng) |- !4 | 陰入 || ˊ || 谷 (gók) |- !5 | 陽平 || ` || 群 (gùng) |- !6 | 陽去 || ^ || 郡 (gông) |- !7 | 陽入 || ˘ || 掘 (gŭk) |} ==カテゴリ== このテンプレートは、貼り付けられたページに次のカテゴリを適用します: {| class="wikitable" ! カテゴリ !! ソートキー !! 説明 |- | カテゴリ:{{cdo}} || 引数1 || このテンプレートを使用した全ての項目に適用 |- | カテゴリ:{{cdo}} (引数2~10で指定した品詞や分野) || 引数1 || 引数2以降を用いた場合に適用 |} ==使用例== *[[昇華]] → <nowiki>{{cdo-cat|sing6hua3|noun|verb|化学|心理学}}</nowiki> ==関連項目== * [[:テンプレート:zh-catdata]]: 引数2〜10のカテゴリ付けを行うためのテンプレート 78q0vb7fjk4i18ndgml52ui2v1bflh9 milliárdos 0 583039 2340877 2220783 2026-09-02T08:26:57Z NekoyamaWataru 87354 /* {{hu}} */ 語句の修正 2340877 wikitext text/x-wiki {{DEFAULTSORT:milliardos}} =={{hu}}== {{number box|hu|1000000000}} ==={{pron}}=== * {{hu-IPA|miliárdos}} * {{hyph|hu|mil|li|ár|dos}} ==={{etym}}=== {{suffix+|milliárd|os|lang=hu}} ==={{adj}}=== {{hu-adj|-}} # 10[[億]][[台]]の、10億[[相当]]の。 #: {{uxi|hu|'''milliárdos''' veszteség|'''10億相当の'''損失}} ===={{usage}}==== {{U:hu:nominal numerals}} ===={{decl}}==== {{hu-decl-ak|milliárdo|s|at|acc2=t}} ==={{noun}}=== {{hu-noun|ok}} # [[億万長者]]、[[大富豪]]。 #: {{syn|hu|シソーラス:gazdag}} を参照 ===={{decl}}==== {{hu-infl-nom|milliárdoso|o|-}}{{hu-pos-otok|milliárdos||ai}} ===参考文献=== * {{R:ErtSz}} tjgto53l8sbxa4finkk7pqpf15883z6 美帝 0 586804 2340739 2272985 2026-09-01T21:24:13Z Jiba1219 100610 2340739 wikitext text/x-wiki =={{L|zh}}== {{zh-cat|mei3di4|noun|政治}} {{yue-cat|mei5dai3|noun|政治}} ==={{pron}}=== {{cmn-pron|měidì}} {{yue-pron|mei5 dai3}} ==={{noun}}=== {{zhchars}} #[[米帝]]。 n52y926aq4j56j84lagcu9i0u7u9vdj egomism 0 592724 2341179 2292804 2026-09-02T11:47:40Z Kuroco2k 84207 2341179 wikitext text/x-wiki =={{L|en}}== ==={{etym}}=== {{uncertain|en}}。フランス語からか? ==={{noun}}=== {{en-noun|-}} #{{obsolete form of|en|egoism}} =={{L|ro}}== ==={{etym}}=== {{bor+|ro|fr|égomisme}} ==={{noun}}=== {{ro-noun|n|-}} #[[利己主義]]。 ===={{decl}}==== {{ro-noun-n|n=sg}} 07sd20ken44j9g03o8fhdu1h5g17567 さくづけ 0 593916 2341181 2295877 2026-09-02T11:47:40Z Kuroco2k 84207 2341181 wikitext text/x-wiki {{kana-DEFAULTSORT}} =={{L|ja}}== ==={{etym}}1=== ===={{kangokana}}==== {{ja-kangokana}} #{{kangokana of|作付け}} ==={{etym}}2=== {{uncertain|ja}}。『2典』では、「添」を「さく」と誤読した経緯について、「[[添削]]」の「削」との混同ではないかと解釈している<ref name="2ten">{{Cite book|和書|author=2典プロジェクト|title=2典|edition=第三版|year=2005|publisher=宝島社|isbn=978-4-7966-4754-0|page=242}}</ref>。 ===={{alter}}==== *{{alt+|ja|サクズけ}} ===={{noun}}==== {{ja-noun}} #{{context|2ch|lang=ja}} {{synonym of|添付}} ===脚注=== {{Reflist}} i89baac20s4m26ufycr91zvzibzsr3s morango 0 594988 2341180 2298905 2026-09-02T11:47:40Z Kuroco2k 84207 2341180 wikitext text/x-wiki =={{L|gl}}== ==={{alter}}=== *{{alt+|gl|amorango|morengo}} ==={{etym}}=== {{uncertain|gl}}。{{etyl|VL.|-}} {{m|VL.|*moranicum}} < {{etyl|la|-}} {{m|la|morum}} もしくは {{m|la|amora}} + {{m|la|-ango}}とする説がある。ただし関連語 {{m|gl|amorodo}}, {{m|gl|morogo}}, {{m|gl|morote}} に加え同源語 ({{etyl|pt|-}} {{m|pt|morango}}, {{etyl|ast|-}} {{m|ast|miruéndanu}})から判断すれば、層化言語 *morotanuに由来すると考えられる<ref>{{R:es:DCECH|arándano}}</ref>。 ==={{pron}}=== *{{IPA|lang=gl|[moˈɾaŋɡʊ]}} *{{hyph|gl|mo|ran|go}} ==={{noun}}=== {{gl-noun|m}} #{{context|果実|lang=gl}} [[漿果]]、[[ベリー]]。 #{{ふりがな|苺|いちご}}。 ===={{rel}}==== *{{l|gl|morangueiro}} ===脚注=== {{Reflist}} ===参考文献=== *{{R:gl:DDLG}} =={{L|pt}}== ==={{etym}}1=== {{uncertain|pt}}。以下二説の両方からと見られている。{{etyl|la|-}} {{m|la|fragum}}を置き換えた形。 *{{etyl|VL.|-}} {{m|VL.|*moranicum}} < {{etyl|la|-}} {{m|la|morum}} ===={{pron}}==== {{pt-IPA}} *{{rhymes|lang=pt|ɐ̃ɡu|s=3}} *{{hyph|pt|mo|ran|go}} ===={{noun}}==== {{pt-noun+|m}} #{{context|果実|lang=pt}} {{ふりがな|苺|いちご}}。 ====={{drv}}===== {{col2|pt|moranga|morangueiro|moranguinho}} ====={{desc}}===== *{{desc|tet|morangu|bor=1}} ==={{etym}}2=== {{head|pt|verb form}} #{{verb form of|pt|morangar||ind|1|s|pres}} fxv4dwg02777lwhbyizwuki8oyx6kre 利用者:Kuroco2k/es-verb-form.js 2 598080 2340989 2312646 2026-09-02T09:27:51Z Kuroco2k 84207 [[Special:Contributions/Kuroco2k|Kuroco2k]] ([[User talk:Kuroco2k|トーク]]) による版 [[Special:Diff/2312646|2312646]] を取り消し 2340989 javascript text/javascript (function () { 'use strict'; if (mw.config.get('wgAction') !== 'edit') { return; } const textbox = document.getElementById('wpTextbox1'); if (!textbox) { return; } if (!document.referrer) { return; } const title = mw.config.get('wgTitle'); const referrer = new URL(document.referrer); referrer.searchParams.delete('action'); referrer.searchParams.delete('redlink'); referrer.searchParams.delete('veaction'); referrer.searchParams.set('action', 'render'); fetch(referrer.toString(), { credentials: 'same-origin' }) .then(r => r.text()) .then(html => { const doc = new DOMParser().parseFromString(html, 'text/html'); const forms = []; doc.querySelectorAll('span.Latn.form-of').forEach(span => { const spelling = span.textContent.trim(); if (spelling !== title) { return; } const classes = span.className.split(/\s+/); const lang = classes.find(c => c.startsWith('lang-'))?.slice(5); if (lang !== 'es') { return; } const infin = classes.find(c => c.startsWith('origin-'))?.slice(7); const infl = classes.find(c => c.endsWith('-form-of')) ?.replace(/-form-of$/, ''); if (!lang || !infin || !infl) { return; } forms.push({ lang, infin, infl }); }); if (!forms.length) { return; } const infls = [...new Set(forms.map(f => f.infl))]; const lang = forms[0].lang; const infin = forms[0].infin; const newText = `=={{L|${lang}}}== ==={{verb}}=== {{head|${lang}|verb form}} #{{inflection of+|${lang}|${infin}||${infls.join('|;|')}}}`; window.addVerbform(lang, newText); const summary = document.getElementById('wpSummary'); if (summary && !summary.value) { summary.value = '新規作成'; } }) .catch(console.error); })(); 34bed8w4hnmpkis7esszf8zrxobdoas 利用者:Kuroco2k/pt-verb-form.js 2 598195 2340991 2312645 2026-09-02T09:27:51Z Kuroco2k 84207 [[Special:Contributions/Kuroco2k|Kuroco2k]] ([[User talk:Kuroco2k|トーク]]) による版 [[Special:Diff/2312645|2312645]] を取り消し 2340991 javascript text/javascript (function () { 'use strict'; if (mw.config.get('wgAction') !== 'edit') { return; } const textbox = document.getElementById('wpTextbox1'); if (!textbox) { return; } if (!document.referrer) { return; } const title = mw.config.get('wgTitle'); const referrer = new URL(document.referrer); referrer.searchParams.delete('action'); referrer.searchParams.delete('redlink'); referrer.searchParams.delete('veaction'); referrer.searchParams.set('action', 'render'); fetch(referrer.toString(), { credentials: 'same-origin' }) .then(r => r.text()) .then(html => { const doc = new DOMParser().parseFromString(html, 'text/html'); const forms = []; doc.querySelectorAll('span.Latn.form-of').forEach(span => { const spelling = span.textContent.trim(); if (spelling !== title) { return; } const classes = span.className.split(/\s+/); const lang = classes.find(c => c.startsWith('lang-'))?.slice(5); if (lang !== 'pt') { return; } const infin = classes.find(c => c.startsWith('origin-'))?.slice(7); const infl = classes.find(c => c.endsWith('-form-of')) ?.replace(/-form-of$/, ''); if (!lang || !infin || !infl) { return; } forms.push({ lang, infin, infl }); }); if (!forms.length) { return; } const infls = [...new Set(forms.map(f => f.infl))]; const lang = forms[0].lang; const infin = forms[0].infin; const newText = `=={{L|${lang}}}== ==={{verb}}=== {{head|${lang}|verb form}} #{{inflection of+|${lang}|${infin}||${infls.join('|;|')}}}`; window.addVerbform(lang, newText); const summary = document.getElementById('wpSummary'); if (summary && !summary.value) { summary.value = '新規作成'; } }) .catch(console.error); })(); 13e1lhqibt309ft2vpjjvgv8ymhdpmj 利用者:Kuroco2k/verb-form-config.js 2 598199 2340838 2306112 2026-09-02T06:15:48Z Kuroco2k 84207 2340838 javascript text/javascript (function () { 'use strict'; window.verbformConfig = { langOrder: [ 'it', 'en', 'eo', 'nl', 'ca', 'gl', 'fro', 'es', 'de', 'fr', 'pt', 'la', 'ru' ] }; const pending = []; let timer = null; window.addVerbform = function (lang, text) { pending.push({ lang, text }); clearTimeout(timer); timer = setTimeout(() => { const textbox = document.getElementById('wpTextbox1'); if (!textbox) { return; } const re = new RegExp(`^==\\{\\{L\\|${lang}\\}\\}==$`, 'm'); if (re.test(textbox.value)) { return; } const blocks = textbox.value .split(/\n\n+/) .filter(Boolean); for (const item of pending) { if (!blocks.includes(item.text)) { blocks.push(item.text); } } const getLang = s => s.match(/==\{\{L\|([^}]+)\}\}==/)?.[1] ?? ''; blocks.sort((a, b) => { return ( window.verbformConfig.langOrder.indexOf(getLang(a)) - window.verbformConfig.langOrder.indexOf(getLang(b)) ); }); textbox.value = blocks.join('\n\n'); pending.length = 0; }, 1000); }; })(); 0by25w5muk6snrjlb40uehpz39h51vb 2340971 2340838 2026-09-02T09:07:29Z Kuroco2k 84207 [[Special:Contributions/Kuroco2k|Kuroco2k]] ([[User talk:Kuroco2k|トーク]]) による版 [[Special:Diff/2340838|2340838]] を取り消し 2340971 javascript text/javascript (function () { 'use strict'; window.verbformConfig = { langOrder: [ 'it', 'en', 'eo', 'nl', 'ca', 'gl', 'fro', 'es', 'de', 'fr', 'pt', 'la' ] }; const pending = []; let timer = null; window.addVerbform = function (lang, text) { pending.push({ lang, text }); clearTimeout(timer); timer = setTimeout(() => { const textbox = document.getElementById('wpTextbox1'); if (!textbox) { return; } const re = new RegExp(`^==\\{\\{L\\|${lang}\\}\\}==$`, 'm'); if (re.test(textbox.value)) { return; } const blocks = textbox.value .split(/\n\n+/) .filter(Boolean); for (const item of pending) { if (!blocks.includes(item.text)) { blocks.push(item.text); } } const getLang = s => s.match(/==\{\{L\|([^}]+)\}\}==/)?.[1] ?? ''; blocks.sort((a, b) => { return ( window.verbformConfig.langOrder.indexOf(getLang(a)) - window.verbformConfig.langOrder.indexOf(getLang(b)) ); }); textbox.value = blocks.join('\n\n'); pending.length = 0; }, 1000); }; })(); 57j0b9gj26oexztas5f6lkxqj7n1lot 2340992 2340971 2026-09-02T09:28:21Z Kuroco2k 84207 2340992 javascript text/javascript (function () { 'use strict'; window.verbformConfig = { langOrder: [ 'it', 'en', 'eo', 'nl', 'ca', 'gl', 'fro', 'es', 'de', 'fr', 'pt', 'la' ] }; const pending = []; let timer = null; window.addVerbform = function (lang, text) { pending.push({ lang, text }); clearTimeout(timer); timer = setTimeout(() => { const textbox = document.getElementById('wpTextbox1'); if (!textbox) { return; } const re = new RegExp(`^==\\{\\{L\\|${lang}\\}\\}==$`, 'm'); if (re.test(textbox.value)) { return; } const blocks = textbox.value .split(/\n\n+/) .filter(Boolean); for (const item of pending) { if (!blocks.includes(item.text)) { blocks.push(item.text); } } const getLang = s => s.match(/==\{\{L\|([^}]+)\}\}==/)?.[1] ?? ''; blocks.sort((a, b) => { return ( window.verbformConfig.langOrder.indexOf(getLang(a)) - window.verbformConfig.langOrder.indexOf(getLang(b)) ); }); textbox.value = blocks.join('\n\n'); pending.length = 0; }, 500); }; })(); 9abn3ce3wfupgym8o257c1og13np6bv 利用者:Kuroco2k/gl-verb-form.js 2 599273 2340990 2312647 2026-09-02T09:27:51Z Kuroco2k 84207 [[Special:Contributions/Kuroco2k|Kuroco2k]] ([[User talk:Kuroco2k|トーク]]) による版 [[Special:Diff/2312647|2312647]] を取り消し 2340990 javascript text/javascript (function () { 'use strict'; if (mw.config.get('wgAction') !== 'edit') { return; } const textbox = document.getElementById('wpTextbox1'); if (!textbox) { return; } if (!document.referrer) { return; } const title = mw.config.get('wgTitle'); const referrer = new URL(document.referrer); referrer.searchParams.delete('action'); referrer.searchParams.delete('redlink'); referrer.searchParams.delete('veaction'); referrer.searchParams.set('action', 'render'); fetch(referrer.toString(), { credentials: 'same-origin' }) .then(r => r.text()) .then(html => { const doc = new DOMParser().parseFromString(html, 'text/html'); const forms = []; doc.querySelectorAll('span.Latn.form-of').forEach(span => { const spelling = span.textContent.trim(); if (spelling !== title) { return; } const classes = span.className.split(/\s+/); const lang = classes.find(c => c.startsWith('lang-'))?.slice(5); if (lang !== 'gl') { return; } const infin = classes.find(c => c.startsWith('origin-'))?.slice(7); const infl = classes.find(c => c.endsWith('-form-of')) ?.replace(/-form-of$/, ''); if (!lang || !infin || !infl) { return; } forms.push({ lang, infin, infl }); }); if (!forms.length) { return; } const infls = [...new Set(forms.map(f => f.infl))]; const lang = forms[0].lang; const infin = forms[0].infin; const newText = `=={{L|${lang}}}== ==={{verb}}=== {{head|${lang}|verb form}} #{{inflection of+|${lang}|${infin}||${infls.join('|;|')}}}`; window.addVerbform(lang, newText); const summary = document.getElementById('wpSummary'); if (summary && !summary.value) { summary.value = '新規作成'; } }) .catch(console.error); })(); czbgpumhhthenfd6v0mstoealubg0aw 皇統譜 0 603637 2340691 2334055 2026-09-01T17:43:31Z ~2026-47618-09 133310 2340691 wikitext text/x-wiki {{kana-DEFAULTSORT|こうとうふ}} {{wikipedia}} =={{L|ja}}== ==={{pron}}=== {{ja-pron|acc=3|こうとうふ|acc_ref=DJR4}} ==={{noun}}=== {{ja-noun|こうとうふ|head=[[皇統]][[譜]]|reki=くわうとうふ}} #[[天皇]]および[[皇族]]の[[身分]]に関する[[事項]]を[[記載]]する[[帳簿]]。 ===脚注=== {{Reflist}} 0yclvlunht5yse1vg6a29ryyxh58qzl százas 0 603851 2340841 2335951 2026-09-02T06:31:51Z NekoyamaWataru 87354 /* {{adjective}} */ 語句の修正 2340841 wikitext text/x-wiki {{DEFAULTSORT:szazas}} =={{hu}}== {{number box|hu|100}} ==={{alter}}=== * {{l|hu|100-as}}, {{l|hu|egyszázas}} ==={{pron}}=== * {{hu-IPA}} * {{hyph|hu|szá|zas}} ==={{etym}}=== {{suffix+|száz|as|pos2=形容詞形成接尾辞|lang=hu}} ==={{adjective}}=== {{hu-adj|-}} # 100[[番]]の、[[No.]]100の、100の。 #: {{uxi|hu|a '''százas''' szoba|'''100号'''室}} # 100の[[量]]や[[おおきさ|大きさ]]の。 # 100[[個]]入りの、100個[[セット]]の。 # {{label|hu|colloquial|主に否定文で}} {{synonym of|hu|épeszű||精神的に正気}} #: {{uxi|hu|Te '''nem''' vagy '''százas'''…|正気じゃないよ…}} ===={{usage}}==== {{U:hu:nominal numerals}} ===={{decl}}==== {{hu-infl-nom|százasa|o}} ==={{noun}}=== {{hu-noun|ok}} {{wikipedia|lang=hu|A magyar forint pénzérméi}} # {{label|hu|informal}} [[通貨単位]]で100でまとめられる[[硬貨]]や[[紙幣]]。 ## {{label|hu|specifically}} {{l|hu|[[száz]][[forintos]] ([[bankjegy]])||100フォリント硬貨}}の類義語。 ===={{decl}}==== {{hu-infl-nom|százaso|o|-}}{{hu-pos-otok|százas||ai}} ===参考文献=== * {{R:ErtSz}} 7bgoepyqw8a5rins9x5g26yomtpq4th 蘇修 0 604171 2340737 2337274 2026-09-01T21:23:44Z Jiba1219 100610 2340737 wikitext text/x-wiki =={{L|zh}}== {{zh-cat|su1xiu1|noun|政治}} {{yue-cat|sou1sau1|noun|政治}} ==={{etym}}=== {{l|zh|蘇聯修正主義}}の略。 ==={{pron}}=== {{cmn-pron|sūxiū}} {{yue-pron|sou1 sau1}} ==={{noun}}=== {{zhchars|s=苏修}} #[[ソビエト連邦]]およびその[[指導部]]を、[[修正主義]]的であるとして[[批判的]]に呼んだ語。[[文化大革命]]期の[[政治]][[文書]]や[[スローガン]]に[[頻出]]し、しばしば「{{l|zh|美帝}}」(アメリカ帝国主義)と対で「{{lang|zh|美帝苏修}}」の形で用いられた。 tmcxr9hmstqsky28d233q92hp3t4mt2 苏修 0 604172 2340738 2337277 2026-09-01T21:23:58Z Jiba1219 100610 2340738 wikitext text/x-wiki =={{L|zh}}== {{zh-cat|su1xiu1|noun|政治}} {{yue-cat|sou1sau1|noun|政治}} ==={{etym}}=== {{l|zh|苏联修正主义}}の略。 ==={{pron}}=== {{cmn-pron|sūxiū|z=n}} {{yue-pron|sou1 sau1|h=n}} ==={{noun}}=== {{zhchars|t=蘇修}} #[[ソビエト連邦]]およびその[[指導部]]を、[[修正主義]]的であるとして[[批判的]]に呼んだ語。[[文化大革命]]期の[[政治]][[文書]]や[[スローガン]]に[[頻出]]し、しばしば「{{l|zh|美帝}}」(アメリカ帝国主義)と対で「{{lang|zh|美帝苏修}}」の形で用いられた。 8ypmaxb90ulojmcuz3swu0ze0vvjlzz strenuous 0 604258 2340597 2337497 2026-09-01T15:38:01Z M-30722 1202 2340597 wikitext text/x-wiki =={{L|en}}== ==={{etym}}=== {{etyl|la|en}} {{m|la|strenuus}} ==={{pron}}=== * {{IPA|lang=en|/ˈstɹɛ.nju.əs/}} * {{hyph|en|stren|u|ous}} * {{音声|en|en-us-strenuous.ogg|a=US}} ==={{adjective}}=== {{en-adj}} #[[骨が折れる]]、[[努力]]を要する。 #: {{syn|en|ardent|earnest|eager|energetic|determined|resolute|vigorous|zealous}} #(活動などが)[[活発]]な、[[精力的]]な。 ===={{drv}}==== * {{l|en|superstrenuous}} * {{l|en|ultrastrenuous}} * {{l|en|unstrenuous}} * {{l|en|strenuousness}} * {{l|en|strenuously}} * {{l|en|overstrenuous}} * {{l|en|nonstrenuous}} ===={{rel}}==== * {{l|en|strenuity}} * {{l|en|strenuosity}} l56hubvjtkqdfbaytxzp4kna36dqmwk 社僧 0 604746 2340525 2340519 2026-09-01T12:04:14Z うーむ 129171 2340525 wikitext text/x-wiki {{kana-DEFAULTSORT|しゃそう}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[しゃそう]]}} #{{タグ|ja|仏教}}[[神社]]に[[付属]]した神宮寺で[[仏事]]を修めた[[僧侶]]。[[宮僧]]。[[供僧]]。[[神僧]]。 072n7f9at435b7geg5ajtnjorx5ul2n しゃぞう 0 604749 2340523 2026-09-01T12:00:09Z うーむ 129171 ページの作成:「{{kana-DEFAULTSORT}} {{also|しゃそう}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana|h=y}} *【[[写像]]】光学系で物体と像との対応。 *【[[遮像]]】外側から室内が見えづらく、室内からも外側が見えづらいこと。 *【[[遮蔵]]】隠すこと。」 2340523 wikitext text/x-wiki {{kana-DEFAULTSORT}} {{also|しゃそう}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana|h=y}} *【[[写像]]】光学系で物体と像との対応。 *【[[遮像]]】外側から室内が見えづらく、室内からも外側が見えづらいこと。 *【[[遮蔵]]】隠すこと。 9ty23w0d7b3jniz592y1t5dm9yyh2na 塵俗 0 604750 2340526 2026-09-01T12:13:28Z うーむ 129171 ページの作成:「{{kana-DEFAULTSORT|じんぞく}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[じんぞく]]}} #穢れた[[俗世]]。[[俗世間]]。また、そこに住む人。」 2340526 wikitext text/x-wiki {{kana-DEFAULTSORT|じんぞく}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[じんぞく]]}} #穢れた[[俗世]]。[[俗世間]]。また、そこに住む人。 5nopdbqfbp2pwvg6rq5fpv29oiqhyl3 じんぞく 0 604751 2340527 2026-09-01T12:14:26Z うーむ 129171 ページの作成:「{{kana-DEFAULTSORT}} {{also|しんそく|しんぞく|じんそく}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana}} *【[[塵俗]]】俗世間。」 2340527 wikitext text/x-wiki {{kana-DEFAULTSORT}} {{also|しんそく|しんぞく|じんそく}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana}} *【[[塵俗]]】俗世間。 1w8g2k795mv05n8ev4vqz2yv70af68s 神僧 0 604752 2340531 2026-09-01T12:18:48Z うーむ 129171 ページの作成:「{{kana-DEFAULTSORT|しんそう}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[しんそう]]}} #[[社僧]]。[[宮僧]]。」 2340531 wikitext text/x-wiki {{kana-DEFAULTSORT|しんそう}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[しんそう]]}} #[[社僧]]。[[宮僧]]。 m5y55zzn23prv8c0bk5uw3k3iqawkbf 供奉僧 0 604753 2340533 2026-09-01T12:26:16Z うーむ 129171 ページの作成:「{{kana-DEFAULTSORT|ぐぶそう}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|ぐぶそう}} #{{タグ|ja|仏教}}[[ほとけ|仏]]に[[供奉]]する[[僧侶]]。[[供僧]]。」 2340533 wikitext text/x-wiki {{kana-DEFAULTSORT|ぐぶそう}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|ぐぶそう}} #{{タグ|ja|仏教}}[[ほとけ|仏]]に[[供奉]]する[[僧侶]]。[[供僧]]。 c7w5q6gpflcpto6kbvpn2pecxlhf0bj 供僧 0 604754 2340534 2026-09-01T12:29:25Z うーむ 129171 ページの作成:「{{kana-DEFAULTSORT|ぐそう}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[ぐそう]]}} #{{タグ|ja|略語|仏教}}「[[供奉僧]]」の略。 #{{タグ|ja|仏教}}[[社僧]]。[[宮僧]]。」 2340534 wikitext text/x-wiki {{kana-DEFAULTSORT|ぐそう}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[ぐそう]]}} #{{タグ|ja|略語|仏教}}「[[供奉僧]]」の略。 #{{タグ|ja|仏教}}[[社僧]]。[[宮僧]]。 sybqois0k5f6a3v5mnrugbqdgxyjcpv 具相 0 604755 2340535 2026-09-01T12:34:21Z うーむ 129171 ページの作成:「{{kana-DEFAULTSORT|ぐそう}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[ぐそう]]}} #{{タグ|ja|仏教}}[[ほとけ|仏]]が三十二の[[相好]]を備えていること。」 2340535 wikitext text/x-wiki {{kana-DEFAULTSORT|ぐそう}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[ぐそう]]}} #{{タグ|ja|仏教}}[[ほとけ|仏]]が三十二の[[相好]]を備えていること。 0mykb9bddidjhc00zz4axpo8lypxfun ぐそう 0 604756 2340537 2026-09-01T13:12:37Z うーむ 129171 ページの作成:「{{kana-DEFAULTSORT}} {{also|くそう}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana|h=y}} *【[[供僧]]】「供奉僧」の略。 *【[[具相]]】仏が相好を備えていること。 *【[[愚草]]】自分の草稿を謙遜する語。 *【[[愚僧]]】僧が自分を謙遜する語。」 2340537 wikitext text/x-wiki {{kana-DEFAULTSORT}} {{also|くそう}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana|h=y}} *【[[供僧]]】「供奉僧」の略。 *【[[具相]]】仏が相好を備えていること。 *【[[愚草]]】自分の草稿を謙遜する語。 *【[[愚僧]]】僧が自分を謙遜する語。 fj0xfy9r1gadj9uqlick0y3zbdl6r4i 愚僧 0 604757 2340538 2026-09-01T13:15:13Z うーむ 129171 ページの作成:「{{kana-DEFAULTSORT|ぐそう}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[ぐそう]]}} #愚かな[[僧]]。 #{{タグ|ja|謙譲語}}僧が[[自分]]を[[謙遜]]する語。 [[カテゴリ:日本語 仏教]]」 2340538 wikitext text/x-wiki {{kana-DEFAULTSORT|ぐそう}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[ぐそう]]}} #愚かな[[僧]]。 #{{タグ|ja|謙譲語}}僧が[[自分]]を[[謙遜]]する語。 [[カテゴリ:日本語 仏教]] ndjjtmjq314s7bxv9xrquj8duyeleke 愚草 0 604758 2340539 2026-09-01T13:17:54Z うーむ 129171 ページの作成:「{{kana-DEFAULTSORT|ぐそう}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[ぐそう]]}} #{{タグ|ja|謙譲語}}[[自分]]の[[草稿]]を[[謙遜]]する語。」 2340539 wikitext text/x-wiki {{kana-DEFAULTSORT|ぐそう}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[ぐそう]]}} #{{タグ|ja|謙譲語}}[[自分]]の[[草稿]]を[[謙遜]]する語。 1168pi8eldq4xcyvswaqw3n7jcccvz6 九僧 0 604759 2340540 2026-09-01T13:24:15Z うーむ 129171 ページの作成:「{{kana-DEFAULTSORT|くそう}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[くそう]]}} #{{タグ|ja|仏教}}大きな[[法会]]での九[[種類]]の役僧。導師、呪願師、唄師、散華師、梵音師、錫杖師、引頭、堂達、衲衆。」 2340540 wikitext text/x-wiki {{kana-DEFAULTSORT|くそう}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[くそう]]}} #{{タグ|ja|仏教}}大きな[[法会]]での九[[種類]]の役僧。導師、呪願師、唄師、散華師、梵音師、錫杖師、引頭、堂達、衲衆。 42c03yf73osio8iq4ucmo5np2w2wj2j 九想 0 604760 2340541 2026-09-01T13:33:19Z うーむ 129171 ページの作成:「{{kana-DEFAULTSORT|くそう}} =={{L|ja}}== ===={{alter}}==== *[[九相]] ==={{noun}}=== {{ja-noun|[[くそう]]|きゅうそう}} #{{タグ|ja|仏教}}人の[[しかばね|屍]]が[[土灰]]に帰すまでの[[変化]]を表した九[[種類]]のすがた。また、[[肉体]]への[[執着]]を断つための屍に対する九つの[[観想]]。」 2340541 wikitext text/x-wiki {{kana-DEFAULTSORT|くそう}} =={{L|ja}}== ===={{alter}}==== *[[九相]] ==={{noun}}=== {{ja-noun|[[くそう]]|きゅうそう}} #{{タグ|ja|仏教}}人の[[しかばね|屍]]が[[土灰]]に帰すまでの[[変化]]を表した九[[種類]]のすがた。また、[[肉体]]への[[執着]]を断つための屍に対する九つの[[観想]]。 niqfs2rnd8eo0vpee7o7dig4tymg64m 九相 0 604761 2340542 2026-09-01T13:34:54Z うーむ 129171 ページの作成:「{{kana-DEFAULTSORT|くそう}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[くそう]]|きゅうそう}} #{{タグ|ja|仏教}}「[[九想]]」に同じ。」 2340542 wikitext text/x-wiki {{kana-DEFAULTSORT|くそう}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[くそう]]|きゅうそう}} #{{タグ|ja|仏教}}「[[九想]]」に同じ。 838yzg7zfz0kx1pmn6x72au2xpdzgz9 土灰 0 604762 2340543 2026-09-01T13:36:57Z うーむ 129171 ページの作成:「{{kana-DEFAULTSORT|どかい}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[どかい]]}} #[[つち|土]]や[[はい|灰]]。」 2340543 wikitext text/x-wiki {{kana-DEFAULTSORT|どかい}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[どかい]]}} #[[つち|土]]や[[はい|灰]]。 t92kl2147fg4ytybb12ea9dpun3o4rm くそう 0 604763 2340546 2026-09-01T13:43:23Z うーむ 129171 ページの作成:「{{kana-DEFAULTSORT}} {{also|ぐそう}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana|h=y}} *【[[九僧]]】大きな法会での九種類の役僧。 *【[[九想]]・[[九相]]】屍が土灰に帰すまでの九種類のすがた。 *【[[口唱]]】口で名号を唱えること。 *【[[宮僧]]】社僧。」 2340546 wikitext text/x-wiki {{kana-DEFAULTSORT}} {{also|ぐそう}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana|h=y}} *【[[九僧]]】大きな法会での九種類の役僧。 *【[[九想]]・[[九相]]】屍が土灰に帰すまでの九種類のすがた。 *【[[口唱]]】口で名号を唱えること。 *【[[宮僧]]】社僧。 na5r1856wc3n5hsvc5e7yb3tksjvexg carbons 0 604764 2340553 2026-09-01T14:15:10Z M-30722 1202 新規作成 2340553 wikitext text/x-wiki {{also|Carbons|carbóns}} =={{L|en}}== ==={{noun}}=== {{en-plural}} #{{plural of|en|carbon}} ==={{anag}}=== * {{anagrams|en|a=abcnors|Brancos|bancors|corbans}} g4gqsnu56j29afou5rteqp9ncrlosps إنجيل 0 604766 2340572 2026-09-01T15:01:42Z M-30722 1202 [[en:إنجيل]]より 2340572 wikitext text/x-wiki {{also|انجیل}} =={{L|ar}}== ==={{etym}}=== {{etyl|grc|ar}} {{m|grc|εὐαγγέλιον}} ({{etyl|syc|ar}} {{m|syc|ܐܘܢܓܠܝܘܢ|tr=ʾewwangellīōn}} を経由か) ==={{pron}}=== {{ar-pr|إِنْجِيل}} ==={{noun}}=== {{ar-noun+|إِنْجِيل|m|pl=أَنَاجِيل}} #{{タグ|ar|キリスト教|イスラム教}}[[福音]]、[[インジール]]。 #{{タグ|ar|キリスト教}}[[新約聖書]]。 {{ar-decl-noun|إِنْجِيل|pl=أَنَاجِيل}} ===={{drv}}==== * {{l|ar|إنْجِيلِيّ}} * {{l|ar|إنْجِيلِيَّة}} ===={{rel}}==== * {{l|ar|الْكِتَاب الْمُقَدَّس}} * {{l|ar|الْعَهْد الْقَدِيم}} * {{l|ar|الْعَهْد الْجَدِيد}} * {{l|ar|تَوْرَاة}} * {{l|ar|زَبُور}} * {{l|ar|الْقُرْآن}} ===={{desc}}==== * {{desc|mt|inġil}} * {{desc|bor=1|az|İncil}} ** {{desc|ba|Инжил}} * {{desc|bor=1|ota|انجیل}} ** {{desc|tr|İncil|incil}} * {{desc|bor=1|kk|Інжіл}} * {{desc|bor=1|kmr|încîl}} * {{desc|chg|bor=1}} ** {{desc|uz|injil}} * {{desc|bor=1|ja|インジール}} * {{desc|bor=1|fa|انجیل|tr=enjil}} * {{desc|bor=1|bn|ইঞ্জিল}} * {{desc|bor=1|ms|Injil}} **{{desc|bor=1|id|Injil}} lpqku0ri7q1b6fhrnxe0r4cdr9t1eld εὐαγγέλιον 0 604767 2340573 2026-09-01T15:03:54Z M-30722 1202 [[en:εὐαγγέλιον]]より 2340573 wikitext text/x-wiki {{DEFAULTSORT:ευαγγελιον}} =={{L|grc}}== ==={{alter}}=== * {{alter+|grc|βαγγέλιον|βαγγέλιο}} ==={{etym}}=== {{m|grc|εὐάγγελος}} < {{affix|grc|εὐ-|ἀγγέλλω}} ==={{pron}}=== {{grc-IPA|εὐα˘γγέλι˘ον}} ==={{noun}}=== {{grc-noun|εὐαγγελίου|n|second}} #良い{{おくりがな2|知|し|らせ|しらせ}}、[[朗報]]。 #{{タグ|grc|聖書|キリスト教}}[[福音]]。 {{grc-decl|εὐαγγέλιον|εὐαγγελίου}} ===={{drv}}==== * {{l|grc|εὐαγγελίζω}} ===={{desc}}==== {{top}} * {{desc|gkm|βαγγέλιον|βαγγέλιο}} ** {{desc|el|βαγγέλιο}} * {{desc|am|ወንጌል|bor=1}} * {{desc|bor=1|ar|إِنْجِيل}} ** {{desc|mt|inġil}} ** {{desc|bor=1|az|İncil}} *** {{desc|ba|Инжил}} ** {{desc|bor=1|ota|انجیل}} *** {{desc|tr|İncil|incil}} ** {{desc|bor=1|kk|Інжіл}} ** {{desc|bor=1|kmr|încîl}} ** {{desc|chg|bor=1}} *** {{desc|uz|injil}} ** {{desc|bor=1|ja|インジール}} ** {{desc|bor=1|fa|انجیل|tr=enjil}} ** {{desc|bor=1|bn|ইঞ্জিল}} ** {{desc|bor=1|ms|Injil}} ***{{desc|bor=1|id|Injil}} * {{desc|lbor=1|el|ευαγγέλιο}} * {{desc|bor=1|cop|ⲉⲩⲁⲅⲅⲉⲗⲓⲟⲛ}} * {{desc|bor=1|got|𐌰𐌹𐍅𐌰𐌲𐌲𐌴𐌻𐌾𐍉}} * {{desc|bor=1|syc|ܐܘܢܓܠܝܘܢ|ts=ʾewangeliyōn}} *: {{desc|bor=1|fa|انگلیون|ts=angelyun}} * {{desc|bor=1|sh|јеванђеље|jevanđelje}} * {{desc|hi|सुसमाचार|tr=susamācār|clq=1}} * {{desc|bn|সুসমাচার|clq=1}} * {{desc|bor=1|la|evangelium}} * {{desc|la|[[bona]] [[annuntiatio]]|[[bonus]] [[nuntius]]|clq=1}} ** {{desc|clq=1|nl|blijde boodschap}} ** {{desc|sga|soiscélae|soscéle|clq=1}} *** {{desc|mga|soiscéla|soscéla}} **** {{desc|ga|soscéala}} ** {{desc|clq=1|ang|godspell|godspel|gōdspel|gōdspell}} *** {{desc|enm|gospel|gospell|godspel|godspell}} **** {{desc|en|gospel}} **** {{desc|sco|gospel}} ** {{desc|clq=1|osx|gōdspel}} ** {{desc|mga|*soiscél|clq=1}} *** {{desc|ga|soiscéal}} *** {{desc|gd|soisgeul}} *** {{desc|gv|sushtal}} * {{desc|bor=1|ru|евангелие}} {{bottom}} 2r3g04s0aydd84vbi55jeimbuojbcei インジール 0 604768 2340575 2026-09-01T15:07:34Z M-30722 1202 新規作成 2340575 wikitext text/x-wiki {{kana-DEFAULTSORT}} =={{L|ja}}== {{wikipedia}} ==={{etym}}=== {{bor|ja|ar|إِنْجِيل}} ==={{noun}}=== {{ja-noun}} #{{タグ|ja|イスラム教}}[[福音]]。[[預言者]][[イーサー]]に下された[[アッラーフ]]の[[啓示]]。 5ix52xnh0hzf4safye9xq0ze4qnoxtz inġil 0 604769 2340579 2026-09-01T15:13:17Z M-30722 1202 [[en:inġil]]より 2340579 wikitext text/x-wiki {{DEFAULTSORT:ingil}} =={{L|mt}}== ==={{alter}}=== * {{alter+|mt|inġir}} ==={{etym}}=== {{etyl|ar|mt}} {{m|ar|إنْجِيل}} ==={{pron}}=== * {{IPA|lang=mt|/ɪnˈd͡ʒiːl/}} * {{rhymes|lang=mt|iːl|s=2}} ==={{noun}}=== {{mt-noun|g=m}} #{{タグ|mt|キリスト教|廃語}}[[福音]]。 #: {{syn|mt|vanġelu|evanġelju}} pozjk9jeo9k2bnw8tfq4bpdy3k5uf58 evanġelju 0 604770 2340580 2026-09-01T15:15:16Z M-30722 1202 [[en:evanġelju]]より 2340580 wikitext text/x-wiki {{DEFAULTSORT:evangelju}} =={{L|mt}}== ==={{alter}}=== * {{l|mt|Evanġelju}} * {{alter+|mt|vanġelu|Vanġelu}} ==={{etym}}=== {{bor|mt|la|evangelium}} < {{etyl|grc|mt}} {{m|grc|εὐαγγέλιον}} ==={{pron}}=== * {{IPA|lang=mt|/ɛvanˈd͡ʒɛːlju/}} * {{rhymes|lang=mt|ɛːlju|s=2}} ==={{noun}}=== {{mt-noun|g=m|p=evanġelji}} #{{タグ|mt|キリスト教}}[[福音]]。 #: {{syn|mt|inġir}} 16790rzxumkc3aqlcpx6azhzkkhk8c3 vanġelu 0 604771 2340581 2026-09-01T15:16:53Z M-30722 1202 [[en:vanġelu]]より 2340581 wikitext text/x-wiki {{DEFAULTSORT:vangelu}} =={{L|mt}}== ==={{alter}}=== * {{l|mt|Vanġelu}} * {{alter+|mt|evanġelju|Evanġelju}} ==={{etym}}=== {{bor+|mt|it|vangelo}} < {{etyl|la|mt}} {{m|la|evangelium}} < {{etyl|grc|mt}} {{m|grc|εὐαγγέλιον}} ==={{pron}}=== * {{IPA|lang=mt|/vanˈd͡ʒɛːlu/}} * {{rhymes|lang=mt|ɛːlu|s=2}} ==={{noun}}=== {{mt-noun|g=m|p=vanġeli}} #{{タグ|mt|キリスト教}}[[福音]]。 #: {{syn|mt|inġir}} qo6p9dd9cngyr2jp57tenqbff6l87c8 inġir 0 604772 2340582 2026-09-01T15:19:04Z M-30722 1202 [[en:inġir]]より 2340582 wikitext text/x-wiki {{DEFAULTSORT:ingir}} =={{L|mt}}== ==={{pron}}=== * {{IPA|lang=mt|/ɪnˈd͡ʒiːr/}} * {{rhymes|lang=mt|iːr|s=2}} ==={{etym}}1=== ===={{noun}}==== {{mt-noun|g=m}} #{{l|mt|inġil}}の異形。 ==={{etym}}2=== {{bor|mt|it|în giro}} ===={{adverb}}==== {{head|mt|adverb}} #{{おくりがな2|周|まわ|り|まわり}}に、{{おくりがな2|辺|あた|り|あたり}}に。 f7nwir42iaqdejis5txrl8p33vh7zsw トーク:トラップ 1 604773 2340583 2026-09-01T15:22:23Z PuzzleBachelor 26979 /* サッカー */ 新しい節 2340583 wikitext text/x-wiki == サッカー == サッカーの捕球技術を追加したいけど正しいていっが分からないので誰か書いてください--[[利用者:PuzzleBachelor|PuzzleBachelor]] ([[利用者・トーク:PuzzleBachelor|トーク]]) 2026年9月1日 (火) 15:22 (UTC) i00vmc22gqrzaablpi13gq8gchdjl0a 2340585 2340583 2026-09-01T15:22:56Z PuzzleBachelor 26979 2340585 wikitext text/x-wiki == サッカー == サッカーの捕球技術を追加したいけど正しい定義が分からないので誰か書いてください--[[利用者:PuzzleBachelor|PuzzleBachelor]] ([[利用者・トーク:PuzzleBachelor|トーク]]) 2026年9月1日 (火) 15:22 (UTC) 33amljucijfox2jnxnq1iq9jg962lon 2340589 2340585 2026-09-01T15:31:47Z M-30722 1202 /* サッカー */ 返信 2340589 wikitext text/x-wiki == サッカー == サッカーの捕球技術を追加したいけど正しい定義が分からないので誰か書いてください--[[利用者:PuzzleBachelor|PuzzleBachelor]] ([[利用者・トーク:PuzzleBachelor|トーク]]) 2026年9月1日 (火) 15:22 (UTC) :{{対処}} サッカーの語義を追加しました。--[[利用者:M-30722|M-30722]] ([[利用者・トーク:M-30722|トーク]]) 2026年9月1日 (火) 15:31 (UTC) k2wjezw4dorgkxr07ukdbpyhsltddzn 2340591 2340589 2026-09-01T15:34:06Z PuzzleBachelor 26979 /* サッカー */ 返信 2340591 wikitext text/x-wiki == サッカー == サッカーの捕球技術を追加したいけど正しい定義が分からないので誰か書いてください--[[利用者:PuzzleBachelor|PuzzleBachelor]] ([[利用者・トーク:PuzzleBachelor|トーク]]) 2026年9月1日 (火) 15:22 (UTC) :{{対処}} サッカーの語義を追加しました。--[[利用者:M-30722|M-30722]] ([[利用者・トーク:M-30722|トーク]]) 2026年9月1日 (火) 15:31 (UTC) ::ありがとうございます--[[利用者:PuzzleBachelor|PuzzleBachelor]] ([[利用者・トーク:PuzzleBachelor|トーク]]) 2026年9月1日 (火) 15:34 (UTC) g08vmg2t81ez2rulb8qetmwnxr9c1g6 vangelo 0 604774 2340584 2026-09-01T15:22:26Z M-30722 1202 [[en:vangelo]]より 2340584 wikitext text/x-wiki =={{L|it}}== ==={{etym}}=== {{etyl|EL.|it}} {{m|la|ēvangelium}} < {{etyl|grc|it}} {{m|grc|εὐαγγέλιον|t=朗報}} ==={{pron}}=== {{it-pr|vangèlo}} ==={{noun}}=== {{it-noun|vangel|m|o|i}} #{{タグ|it|キリスト教}}[[福音]]。 #[[絶対的]][[真実]]。 ==={{anag}}=== * {{anagrams|it|a=aeglnov|legnavo|longeva}} 0rv1i7uymlh63wgj1gpm2z4ffmnheoh vangeli 0 604775 2340586 2026-09-01T15:23:06Z M-30722 1202 新規作成 2340586 wikitext text/x-wiki =={{L|it}}== ==={{noun}}=== {{head|it|plural|g=m}} #{{plural of|it|vangelo}} ==={{anag}}=== * {{anagrams|it|a=aegilnv|legnavi|vangile}} 2762zh4c515y6p2aebuc5vn16pajuxk preachings 0 604776 2340590 2026-09-01T15:33:28Z M-30722 1202 新規作成 2340590 wikitext text/x-wiki =={{L|en}}== ==={{pron}}=== * {{音声|en|LL-Q1860 (eng)-Wodencafe-preachings.wav|a=US}} ==={{noun}}=== {{en-plural}} #{{plural of|en|preaching}} 98m8u2qvrxa8ay2kuro2ze4dvol44ji evangelium 0 604777 2340600 2026-09-01T15:50:55Z M-30722 1202 [[en:evangelium]]より 2340600 wikitext text/x-wiki {{also|Evangelium|evangélium}} =={{L|sv}}== ==={{etym}}=== {{etyl|grc|sv}} {{m|grc|εὐαγγέλιον}} ==={{noun}}=== {{sv-noun|n}} #{{タグ|sv|キリスト教}}[[福音]]。 #{{タグ|sv|figuratively}} [[教義]]。 #{{タグ|sv|聖書}}[[福音書]]。 {{sv-infl-noun-n-r|2=evangelie}} ===={{seealso}}==== * {{l|sv|gospel}} =={{L|cs}}== ==={{etym}}=== {{etyl|grc|cs}} {{m|grc|εὐαγγέλιον}} ==={{pron}}=== * {{cs-IPA}} * {{音声|cs|LL-Q9056 (ces)-TranslateForFun-{{PAGENAME}}.wav}} ==={{noun}}=== {{cs-noun|n}} #{{タグ|cs|キリスト教}}[[福音]]。 {{cs-ndecl|<n.foreign>}} ===={{rel}}==== * {{l|cs|evangelík}} * {{l|cs|evangelista}} * {{l|cs|evangelický}} =={{L|da}}== ==={{alter}}=== * {{l|da|evangelie}} ==={{etym}}=== {{etyl|grc|da}} {{m|grc|εὐαγγέλιον}} ==={{pron}}=== * {{IPA|lang=da|[evɑŋˈɡ̊eːljɔm]}} ==={{noun}}=== {{da-noun|g=n|evangeliet|evangelier}} #{{タグ|da|キリスト教}}[[福音]]。 #{{タグ|da|聖書}}[[福音書]]。 {{da-noun-infl|evangeliet|evangelier|evangelierne}} ===={{drv}}==== *{{l|da|evangelietekst}} *{{l|da|juleevangelium}} *{{l|da|evangelist}} *{{l|da|evangelisk}} *{{l|da|evangelisk-luthersk}} =={{L|nn}}== ==={{etym}}=== {{etyl|grc|nn}} {{m|grc|εὐαγγέλιον}} ==={{noun}}=== {{head|nn|noun|g=n|限定単数|evangeliet|非限定複数|evangelium|限定複数|evangelia}} #{{タグ|nn|キリスト教}}[[福音]]。 #{{タグ|nn|聖書}}[[福音書]]。 =={{L|nb}}== ==={{etym}}=== {{etyl|grc|nb}} {{m|grc|εὐαγγέλιον}} ==={{noun}}=== {{head|nb|noun|g=n|限定単数|evangeliet|非限定複数|evangelier|限定複数|evangelia|or|evangeliene}} #{{タグ|nb|キリスト教}}[[福音]]。 #{{タグ|nb|聖書}}[[福音書]]。 =={{L|fo}}== ==={{etym}}=== {{etyl|grc|fo}} {{m|grc|εὐαγγέλιον}} ==={{noun}}=== {{fo-noun|n|evangelis|evangelium}} #{{タグ|fo|キリスト教}}[[福音]]。 {{fo-decl-noun|evangelium|evangeliið|evangelium|evangeliini|evangelium|evangeliið|evangelium|evangeliini|evangelii|evangelinum|evangelium|evangeliunum|evangelis|evangelisins|evangelia|evagelianna}} =={{L|la}}== ==={{alter}}=== * {{alter+|la|euangelium|euuangelium|evuangelium|euguangelium}} * {{alter+|la|Evangelium|Euangelium|Euuangelium|Evuangelium|Euguangelium}} * {{alter+|la|evangelia|Evangelia|g2=f}} ==={{etym}}=== {{etyl|grc|la}} {{m|grc|εὐαγγέλιον}} ==={{pron}}=== * {{la-IPA|eu.angelium|eccl=0}} * {{la-IPA|evangelium|cl=0}} ==={{noun}}=== {{la-noun+|evangelium<2>}} #良い{{おくりがな2|知|し|らせ|しらせ}}、[[朗報]]。 #: {{syn|la|[[bona]] [[annūntiātiō]]|bona [[nūntiātiō]]}} #{{タグ|la|教会ラテン語|キリスト教}}[[キリスト教]]の[[教義]]、[[福音]]。 ##{{タグ|la|聖書}}[[福音書]]。 {{la-ndecl|evangelium<2>}} ===={{rel}}==== * {{l|la|evangelicus}} * {{l|la|evangelista}} * {{l|la|evangelīzātor}} * {{l|la|evangelīzō}} ===={{desc}}==== {{top}} * {{desc|ast|evanxeliu|bor=1}} * {{desc|sq|ungjill|bor=1}} * {{desc|gsw|Efangeli|bor=1}} * {{desc|ist|vanzeîlio|bor=1}} * {{desc|it|vangelo|slb=1}} * {{desc|vec|vangeło|bor=1}} * {{desc|en|evangel|bor=1}} * {{desc|oc|evangèli|bor=1}} * {{desc|ca|evangeli|bor=1}} * {{desc|gl|evanxeo|slb=1}} * {{desc|osp|evangelio|bor=1}} ** {{desc|es|evangelio}} *** {{desc|eu|ebanjelio|bor=1}} * {{desc|bor=1|fro|evangile|evangelie|evangelie}} ** {{desc|fr|évangile}} * {{desc|sc|banzelu|bor=1}} * {{desc|scn|vancelu|bor=1}} * {{desc|de|Evangelium|bor=1}} * {{desc|fi|evankeliumi|bor=1}} * {{desc|fur|vanzeli|bor=1}} * {{desc|pt|evangelho|bor=1}} * {{desc|wa|evandjîle|bor=1}} * {{desc|cel-bry-pro|*eβengɨl|bor=1}} {{bottom}} 953lrb0tjrrwxy641q5wmuxc60c3h1o Evangelium 0 604778 2340602 2026-09-01T15:54:28Z M-30722 1202 [[en:Evangelium]]より 2340602 wikitext text/x-wiki {{also|evangelium|evangélium}} =={{L|de}}== ==={{alter}}=== * {{l|de|Euangelium}} ==={{etym}}=== {{bor+|de|la|[[euangelium]], [[evangelium]]}} < {{etyl|grc|de}} {{m|grc|εὐαγγέλιον}} ==={{pron}}=== * {{IPA|lang=de|/evaŋˈɡeːli̯ʊm/}} * {{音声|de|De-Evangelium.ogg|a=Berlin}} * {{音声|de|De-Evangelium2.ogg|a=Berlin}} * {{hyph|de|Evan|ge|li|um}} ==={{noun}}=== {{de-noun|g=n||Evangelien}} {{de-noun|g=n|Evangelii|Evangelia}} #{{タグ|de|聖書}}[[福音書]]。 #{{タグ|de|キリスト教}}[[福音]]。 lfvt80jwnovv08olkj3lx4dkwn7v3kf Evolution 0 604779 2340604 2026-09-01T15:57:40Z M-30722 1202 [[en:Evolution]]より 2340604 wikitext text/x-wiki {{also|evolution|évolution|e-volution}} =={{L|de}}== ==={{etym}}=== {{bor+|de|la|evolutio|ēvolūtiōnem}} ==={{pron}}=== * {{IPA|lang=de|/ʔevoluˈtsi̯oːn/}} * {{音声|de|De-Evolution.ogg|a=Berlin}} * {{hyphenation|Evo|lu|ti|on}} ==={{noun}}=== {{de-noun|g=f}} #[[発展]]。 #{{タグ|de|生物学}}[[進化]]。 {{de-decl-noun-f}} je8vqhmp6qsd12bi4adujo7fs7c5rg1 Evolutionen 0 604780 2340606 2026-09-01T15:59:42Z M-30722 1202 新規作成 2340606 wikitext text/x-wiki {{also|evolutionen}} =={{L|de}}== ==={{pron}}=== * {{音声|de|De-Evolutionen.ogg|a=Berlin}} ==={{noun}}=== {{head|de|noun form|g=f}} #{{plural of|de|Evolution}} szjzcdakwohsologxw46ndicrz7oggg evolutio 0 604781 2340607 2026-09-01T16:02:16Z M-30722 1202 [[en:evolutio]]より 2340607 wikitext text/x-wiki =={{L|la}}== ==={{etym}}=== {{affix|la|ēvolvere|-tiō}} ==={{pron}}=== * {{la-IPA|ēvolūtiō}} ==={{noun}}=== {{la-noun+|ēvolūtiō<3>}} #[[本]]を{{おくりがな2|開|ひら|く|ひらく}}こと、[[読書]]。 {{la-ndecl|ēvolūtiō<3>}} ===={{desc}}==== {{top}} * {{desc|bor=1|it|evoluzione}} * {{desc|bor=1|oc|evolucion}} * {{desc|bor=1|en|evolution}} * {{desc|bor=1|ca|evolució}} * {{desc|bor=1|gl|evolución}} * {{desc|bor=1|es|evolución}} * {{desc|bor=1|de|Evolution}} * {{desc|bor=1|pms|evolussion}} * {{desc|bor=1|fr|évolution}} * {{desc|bor=1|fur|evoluzion}} * {{desc|bor=1|pt|evolução}} * {{desc|bor=1|ro|evoluție}} * {{desc|bor=1|ru|эволюция}} {{bottom}} 3tj0urh8ub0it4wwxddqj3ay5u11wi8 evolutiones 0 604782 2340608 2026-09-01T16:03:33Z M-30722 1202 新規作成 2340608 wikitext text/x-wiki =={{L|la}}== ==={{noun}}=== {{la-noun-form|ēvolūtiōnēs}} #{{l|la|ēvolūtiō}}の複数主格。 #{{l|la|ēvolūtiō}}の複数対格。 #{{l|la|ēvolūtiō}}の複数呼格。 ey5ub4skuesxcfkrywhn0ahv5f12iv9 evolutionibus 0 604783 2340609 2026-09-01T16:03:51Z M-30722 1202 新規作成 2340609 wikitext text/x-wiki =={{L|la}}== ==={{noun}}=== {{la-noun-form|ēvolūtiōnibus}} #{{l|la|ēvolūtiō}}の複数与格。 #{{l|la|ēvolūtiō}}の複数奪格。 5mvpjejerla4sc9q2ruhu41zvj7gb9o evolutionum 0 604784 2340611 2026-09-01T16:04:08Z M-30722 1202 新規作成 2340611 wikitext text/x-wiki =={{L|la}}== ==={{noun}}=== {{la-noun-form|ēvolūtiōnum}} #{{l|la|ēvolūtiō}}の複数属格。 arqgmdyzk5jble8n2vsqfhb5bm7foox evolutionem 0 604785 2340612 2026-09-01T16:04:27Z M-30722 1202 新規作成 2340612 wikitext text/x-wiki =={{L|la}}== ==={{noun}}=== {{la-noun-form|ēvolūtiōnem}} #{{l|la|ēvolūtiō}}の単数対格。 5yefpyh3nj1spb45l1vdqdbpo3lkj0g evolutionis 0 604786 2340613 2026-09-01T16:04:42Z M-30722 1202 新規作成 2340613 wikitext text/x-wiki =={{L|la}}== ==={{noun}}=== {{la-noun-form|ēvolūtiōnis}} #{{l|la|ēvolūtiō}}の単数属格。 1hugc37ff45wk8h1z968k41ox53qbw6 evolutione 0 604787 2340614 2026-09-01T16:04:56Z M-30722 1202 新規作成 2340614 wikitext text/x-wiki =={{L|la}}== ==={{noun}}=== {{la-noun-form|ēvolūtiōne}} #{{l|la|ēvolūtiō}}の単数奪格。 8bjsdizqapfk3iu23tlo6s0hy4qk3nc evolutioni 0 604788 2340615 2026-09-01T16:05:18Z M-30722 1202 新規作成 2340615 wikitext text/x-wiki =={{L|la}}== ==={{noun}}=== {{la-noun-form|ēvolūtiōnī}} #{{l|la|ēvolūtiō}}の単数与格。 jixmxmp6ot0jdf60uu1diti66r6wz90 evolució 0 604789 2340617 2026-09-01T16:07:30Z M-30722 1202 [[en:evolució]]より 2340617 wikitext text/x-wiki {{DEFAULTSORT:evolucio}} {{also|evolúció}} =={{L|ca}}== ==={{etym}}=== {{bor+|ca|la|ēvolūtiō|ēvolūtiōnem}} ==={{pron}}=== * {{ca-IPA}} * {{音声|ca|LL-Q7026 (cat)-Unjoanqualsevol-evolució.wav|a=Catalonia}} ==={{noun}}=== {{ca-noun|f|evolucions}} #[[発展]]、[[発達]]、[[進歩]]。 #{{タグ|ca|生物学}}[[進化]]。 ===={{drv}}==== * {{l|ca|evolucionar}} * {{l|ca|macroevolució}} * {{l|ca|microevolució}} ===={{rel}}==== * {{l|ca|evolutiu}} qjopbwe3lvg6kcpa5nhbyqjlil4pt1t 수양 0 604790 2340618 2026-09-01T16:08:10Z Jiba1219 100610 ページの作成:「=={{L|ko}}== ==={{pron}}=== {{ko-IPA}} ==={{noun}}=== {{head|ko|noun|cat2=漢字語}} *&lt;[[修]][[養]]&gt;;[[修養|*]] #[[修養]]。」 2340618 wikitext text/x-wiki =={{L|ko}}== ==={{pron}}=== {{ko-IPA}} ==={{noun}}=== {{head|ko|noun|cat2=漢字語}} *&lt;[[修]][[養]]&gt;;[[修養|*]] #[[修養]]。 6g2rg0moc0gm7iy3qa2sjbvoc02ixw6 evolucions 0 604791 2340619 2026-09-01T16:08:12Z M-30722 1202 新規作成 2340619 wikitext text/x-wiki =={{L|oc}}== ==={{noun}}=== {{head|oc|plural}} #{{plural of|oc|evolucion}} =={{L|ca}}== ==={{noun}}=== {{head|ca|plural}} #{{plural of|ca|evolució}} k7f3sx1imvvwqis8ywzmxwbzkkhstup evoluzione 0 604792 2340622 2026-09-01T16:15:09Z M-30722 1202 [[en:evoluzione]]より 2340622 wikitext text/x-wiki =={{L|it}}== ==={{etym}}=== {{bor+|it|la|ēvolūtiō|ēvolūtiōnem}} < {{m|la|ēvolvere}} ==={{pron}}=== {{it-pr}} ==={{noun}}=== {{it-noun|evoluzion|f|e|i}} #[[秩序]]ある{{おくりがな2|動|うご|き|うごき}}。 #: {{syn|it|movimento}} #{{タグ|it|軍事}}[[移動]]。 #: {{syn|it|manovra|movimento}} #{{タグ|it|比喩}}[[発展]]、[[発達]]、[[進歩]]。 #: {{syn|it|progresso|sviluppo}} #: {{ant|it|involuzione}} #{{タグ|it|生物学}}[[進化]]。 ===={{drv}}==== * {{l|it|evoluzionario}} * {{l|it|evoluzionismo}} * {{l|it|evoluzionista}} ===={{rel}}==== * {{l|it|evoluire}} * {{l|it|evolutivo}} * {{l|it|evoluto}} * {{l|it|evolvente}} * {{l|it|evolversi}} * {{l|it|evolvibile}} fimcwfjlb1nmcyc1ykrec8uw8wyqn83 evoluzioni 0 604793 2340625 2026-09-01T16:17:19Z M-30722 1202 新規作成 2340625 wikitext text/x-wiki =={{L|it}}== ==={{noun}}=== {{head|it|plural|g=f}} #{{plural of|it|evoluzione}} hg5nnbsk9eu8j1exo73vs4hf3tjzshk evolucion 0 604794 2340626 2026-09-01T16:21:35Z M-30722 1202 ページの作成:「{{also|evolución}} =={{L|eo}}== ==={{pron}}=== {{eo-pr}} ==={{noun}}=== {{eo-noun-form|evolucio|n}} =={{L|oc}}== ==={{etym}}=== {{etyl|la|oc}} {{m|la|ēvolūtiō}} ==={{pron}}=== * {{音声|oc|LL-Q14185 (oci)-Davidgrosclaude-evolucion.wav|a=Béarn}} ==={{noun}}=== {{oc-noun|f}} #[[発展]]、[[発達]]、[[進歩]]。 #{{タグ|oc|生物学}}[[進化]]。 ===={{drv}}==== * {{l|oc|evolucionar}}」 2340626 wikitext text/x-wiki {{also|evolución}} =={{L|eo}}== ==={{pron}}=== {{eo-pr}} ==={{noun}}=== {{eo-noun-form|evolucio|n}} =={{L|oc}}== ==={{etym}}=== {{etyl|la|oc}} {{m|la|ēvolūtiō}} ==={{pron}}=== * {{音声|oc|LL-Q14185 (oci)-Davidgrosclaude-evolucion.wav|a=Béarn}} ==={{noun}}=== {{oc-noun|f}} #[[発展]]、[[発達]]、[[進歩]]。 #{{タグ|oc|生物学}}[[進化]]。 ===={{drv}}==== * {{l|oc|evolucionar}} 4v8uudg38gq3wvs1af0ple26i5xltnt angulojn 0 604795 2340632 2026-09-01T16:32:57Z M-30722 1202 新規作成 2340632 wikitext text/x-wiki =={{L|eo}}== ==={{noun}}=== {{eo-noun-form|angulo|jn|root=angul}} lz12caru6wour10q3hl01ah85omj2cn angulon 0 604796 2340633 2026-09-01T16:33:11Z M-30722 1202 新規作成 2340633 wikitext text/x-wiki =={{L|eo}}== ==={{noun}}=== {{eo-noun-form|angulo|n|root=angul}} s5ptbeqg0us662nu79muxms0oez6j9g anguloj 0 604797 2340634 2026-09-01T16:33:24Z M-30722 1202 新規作成 2340634 wikitext text/x-wiki =={{L|eo}}== ==={{noun}}=== {{eo-noun-form|angulo|j|root=angul}} nijpcjfe8iyr322op1a94t7ejdbdqpv 𛀁し 0 604798 2340636 2026-09-01T16:41:47Z MO.SH.ST.BE 96631 新規作成 2340636 wikitext text/x-wiki =={{L|ojp}}== ==={{adjective}}=== {{head|ojp|adjective|cat2=上代語}}【[[吉]]し、[[善]]し】 #(上代語){{おくりがな2|良|よ|い|よい}}。 {{古典日本語ク活用|𛀁}} ===={{desc}}==== *中古日本語: [[よし]] **現代日本語: [[よい]]、[[いい]] hdy61zaj750j7yqepsgpp1xwieolho4 2340650 2340636 2026-09-01T17:01:35Z MO.SH.ST.BE 96631 変体仮名フォント 2340650 wikitext text/x-wiki {{DISPLAYTITLE:{{変体仮名フォント|𛀁}}し}} =={{L|ojp}}== ==={{adjective}}=== {{head|ojp|adjective|cat2=上代語}}【[[吉]]し、[[善]]し】 #(上代語){{おくりがな2|良|よ|い|よい}}。 {{古典日本語ク活用|{{変体仮名フォント|𛀁}}}} ===={{desc}}==== *中古日本語: [[よし]] **現代日本語: [[よい]]、[[いい]] mqeh31y044txu9xfgs45uplvke44uhf 2340656 2340650 2026-09-01T17:06:23Z MO.SH.ST.BE 96631 headを修正 2340656 wikitext text/x-wiki {{DISPLAYTITLE:{{変体仮名フォント|𛀁}}し}} =={{L|ojp}}== ==={{adjective}}=== {{head|ojp|adjective|cat2=上代語|head={{変体仮名フォント|𛀁}}し}}【[[吉]]し、[[善]]し】 #(上代語){{おくりがな2|良|よ|い|よい}}。 {{古典日本語ク活用|{{変体仮名フォント|𛀁}}}} ===={{desc}}==== *中古日本語: [[よし]] **現代日本語: [[よい]]、[[いい]] e2f0rukulmguu90kd8icrekqd6celrg 神機箭 0 604799 2340641 2026-09-01T16:45:01Z ~2026-47618-09 133310 ページの作成:「{{kana-DEFAULTSORT|シンギジョン}} == {{L|ja}} == === {{etym}} === {{bor|ja|ko|신기전}} === {{noun}} === {{ja-noun|シンギジョン}} #15世紀の[[朝鮮]]王朝で開発されたとされる、[[火薬]]を用いた[[兵器]]の一種。しんきせん。 === {{name}} === {{ja-name|シンギジョン}} #{{context|lang=ja|作品名}}2008年公開の[[韓国]]映画。」 2340641 wikitext text/x-wiki {{kana-DEFAULTSORT|シンギジョン}} == {{L|ja}} == === {{etym}} === {{bor|ja|ko|신기전}} === {{noun}} === {{ja-noun|シンギジョン}} #15世紀の[[朝鮮]]王朝で開発されたとされる、[[火薬]]を用いた[[兵器]]の一種。しんきせん。 === {{name}} === {{ja-name|シンギジョン}} #{{context|lang=ja|作品名}}2008年公開の[[韓国]]映画。 gwhlawcp1kze6q7rqo13zz2h66099xe 2340648 2340641 2026-09-01T16:57:29Z ~2026-47618-09 133310 2340648 wikitext text/x-wiki {{kana-DEFAULTSORT|シンギジョン}} == {{L|ja}} == === {{etym}} === {{bor|ja|ko|신기전}} === {{noun}} === {{ja-noun|シンギジョン}} #15世紀の[[朝鮮]]王朝で開発されたとされる、[[火薬]]を用いた[[兵器]]の一種。しんきせん。 dooqvv1k6kx1y5ktohmayzqqur4j1lw テンプレート:eo-noun-form/doc 10 604800 2340642 2026-09-01T16:49:54Z M-30722 1202 説明 2340642 wikitext text/x-wiki <noinclude>{{documentation subpage}}</noinclude> __TOC__ ==使い方== エスペラントの名詞の定形に用いる見出し語テンプレートです。引数1と2を入力(任意)すると「〇〇の複数形。」等の説明を自動出力出来ます。 ==引数== {| class="wikitable" border="1" |+ 引数の一覧 ! 引数 !! 指定内容 !! 既定値 !! 説明 |- ! 1 | 不定形 || 無し|| 単数主格(元の形)を入力する。 |- ! 2 | 品詞語尾 || 無し || 品詞語尾(n、j、jn)を入力する。対格で「単数」の記述を省きたい場合は「n-」とする。 |- ! root | 語根 || 無し || 語根を指定する |- ! root2 | 語根 || 無し || 語根を指定する |- ! root3 | 語根 || 無し || 語根を指定する |} ==カテゴリ== このテンプレートは、貼り付けられたページに次のカテゴリを適用します: {| class="wikitable" ! カテゴリ !! ソートキー |- | カテゴリ:エスペラント || 項目名又はデフォルトソートで指定されたもの |- | カテゴリ:エスペラント‎ 名詞 定形 || 上記に同じ |} ==使用例== *[[evolucion]] → <nowiki>{{eo-noun-form|evolucio|n}}</nowiki> *[[angulojn]] → <nowiki>{{eo-noun-form|angulo|jn|root=angul}}</nowiki> *[[manganon]] → <nowiki>{{eo-noun-form|mangano|n-|root=mangan}}</nowiki> h4imltqo2ng8k2vu2b9r3185jpgmkzs evolucio 0 604801 2340643 2026-09-01T16:51:38Z M-30722 1202 新規作成 2340643 wikitext text/x-wiki =={{L|eo}}== ==={{etym}}=== {{etyl|la|eo}} {{m|la|ēvolūtiō}} ==={{pron}}=== {{eo-pr|a=LL-Q143 (epo)-Lepticed7-evolucio.wav}} ==={{noun}}=== {{eo-noun}} #{{l|eo|evoluo}}に同じ。 0wvftr872yusoorz7nen7a3hov0ljl2 evoluciojn 0 604802 2340644 2026-09-01T16:51:56Z M-30722 1202 新規作成 2340644 wikitext text/x-wiki =={{L|eo}}== ==={{pron}}=== {{eo-pr}} ==={{noun}}=== {{eo-noun-form|evolucio|jn}} 5718hm5dsyflimwsjijh6721lddroic evolucioj 0 604803 2340645 2026-09-01T16:52:09Z M-30722 1202 新規作成 2340645 wikitext text/x-wiki =={{L|eo}}== ==={{pron}}=== {{eo-pr}} ==={{noun}}=== {{eo-noun-form|evolucio|j}} ifz9zqnj86yo02zxk2utsbq8bmacyjj トーク:神機箭 1 604804 2340646 2026-09-01T16:55:01Z M-30722 1202 /* 作品名に関して */ 新しい節 2340646 wikitext text/x-wiki == 作品名に関して == {{@|~2026-47618-09}} 作品名の部分についてですが、これは以下の[[Wiktionary:編集方針#人名・団体名及び芸術作品名の扱い]]の要件のいずれかを満たしておりますか? #市販の辞書及びそれに準ずる辞書に掲載されている。 #日本の学校教育教科書(小学校〜高校)に掲載されており、主たる活躍時期が第2次世界大戦終戦時までの人名・団体名及び芸術作品名。 --[[利用者:M-30722|M-30722]] ([[利用者・トーク:M-30722|トーク]]) 2026年9月1日 (火) 16:55 (UTC) r8ow68n7328ygusa234n9mwhxq50wm3 2340653 2340646 2026-09-01T17:02:47Z ~2026-47618-09 133310 /* 作品名に関して */ 返信 2340653 wikitext text/x-wiki == 作品名に関して == {{@|~2026-47618-09}} 作品名の部分についてですが、これは以下の[[Wiktionary:編集方針#人名・団体名及び芸術作品名の扱い]]の要件のいずれかを満たしておりますか? #市販の辞書及びそれに準ずる辞書に掲載されている。 #日本の学校教育教科書(小学校〜高校)に掲載されており、主たる活躍時期が第2次世界大戦終戦時までの人名・団体名及び芸術作品名。 --[[利用者:M-30722|M-30722]] ([[利用者・トーク:M-30722|トーク]]) 2026年9月1日 (火) 16:55 (UTC) :どちらの条件も満たしていません。 :私としては、「その表記が普通名詞と一致する固有名詞」であることから作品名の記述を追加したまでです。しかし、その理屈が通るとすれば、無名な作品までいちいち記載する羽目になるので、冷静に考えれば不適切です。 :したがって、当該の記述は削除しました。--[[特別:投稿記録/&#126;2026-47618-09|&#126;2026-47618-09]] ([[利用者・トーク:&#126;2026-47618-09|トーク]]) 2026年9月1日 (火) 17:02 (UTC) 35ezjjnclc2lbshs9c7ynx0unq6auba 2340655 2340653 2026-09-01T17:03:47Z M-30722 1202 /* 作品名に関して */ 2340655 wikitext text/x-wiki == 作品名に関して == {{@|~2026-47618-09}} 作品名の部分についてですが、これは以下の[[Wiktionary:編集方針#人名・団体名及び芸術作品名の扱い]]の要件のいずれかを満たしておりますか? #市販の辞書及びそれに準ずる辞書に掲載されている。 #日本の学校教育教科書(小学校〜高校)に掲載されており、主たる活躍時期が第2次世界大戦終戦時までの人名・団体名及び芸術作品名。 --[[利用者:M-30722|M-30722]] ([[利用者・トーク:M-30722|トーク]]) 2026年9月1日 (火) 16:55 (UTC) :どちらの条件も満たしていません。 :私としては、「その表記が普通名詞と一致する固有名詞」であることから作品名の記述を追加したまでです。しかし、その理屈が通るとすれば、無名な作品までいちいち記載する羽目になるので、冷静に考えれば不適切です。 :したがって、当該の記述は削除しました。--[[特別:投稿記録/&#126;2026-47618-09|&#126;2026-47618-09]] ([[利用者・トーク:&#126;2026-47618-09|トーク]]) 2026年9月1日 (火) 17:02 (UTC) ::承知しました、対応ありがとうございます。 --[[利用者:M-30722|M-30722]] ([[利用者・トーク:M-30722|トーク]]) 2026年9月1日 (火) 17:03 (UTC) ndkjxwafvucatfu4nacqkd9fngywmg0 evoluție 0 604805 2340649 2026-09-01T16:59:05Z M-30722 1202 [[en:evoluție]]より 2340649 wikitext text/x-wiki {{DEFAULTSORT:evolutie}} {{also|evolutie}} =={{L|ro}}== ==={{etym}}=== {{bor+|ro|fr|évolution}}、{{bor+|ro|la|ēvolūtiō}} ==={{pron}}=== * {{IPA|lang=ro|[evoˈlut͡sie]}} * {{rhymes|lang=ro|ut͡sie|s=5}} * {{hyph|ro|e|vo|lu|ți|e}} ==={{noun}}=== {{ro-noun|f|evoluții|head=evolúție}} #[[発展]]、[[発達]]、[[進歩]]。 #: {{syn|ro|dezvoltare|desfășurare}} #{{タグ|ro|生物学}}[[進化]]。 {{ro-noun-f-ie|evoluți}} hbg5diyarigajjyd4my72at6n8evt0m evolutie 0 604806 2340651 2026-09-01T17:01:40Z M-30722 1202 [[en:evolutie]]より 2340651 wikitext text/x-wiki {{also|evoluție}} =={{L|nl}}== ==={{etym}}=== {{bor|nl|fr|évolution}} ==={{pron}}=== * {{IPA|lang=nl|/ˌeː.voːˈly.(t)si/}} * {{音声|nl|nl-evolutie.ogg}} * {{hyphenation|evo|lu|tie}} * {{rhymes|lang=nl|ytsi}} ==={{noun}}=== {{nl-noun|g=f|evoluties|evolutietje}} #[[発展]]、[[発達]]、[[進歩]]。 #{{タグ|nl|生物学}}[[進化]]。 ===={{drv}}==== * {{l|nl|evolutiebioloog}} * {{l|nl|evolutiebiologie}} * {{l|nl|evolutiebiologisch}} * {{l|nl|evolutieleer}} * {{l|nl|evolutietheorie}} * {{l|nl|sterevolutie}} ===={{rel}}==== * {{l|nl|evolueren}} * {{l|nl|evolutionair}} ===={{desc}}==== * {{desc|af|evolusie}} * {{desc|id|bor=1|evolusi}} ** {{desc|ms|bor=1|evolusi}} etccff7rxukeh8f65wfvi1gom48h4zh evoluties 0 604807 2340652 2026-09-01T17:02:27Z M-30722 1202 新規作成 2340652 wikitext text/x-wiki =={{L|nl}}== ==={{pron}}=== * {{音声|nl|Nl-evoluties.ogg}} ==={{noun}}=== {{head|nl|plural}} #{{plural of|nl|evolutie}} sfxtsqoh543tzmwg107o3w116244zul evolutietje 0 604808 2340654 2026-09-01T17:02:56Z M-30722 1202 新規作成 2340654 wikitext text/x-wiki =={{L|nl}}== ==={{noun}}=== {{nl-noun-dim}} #{{diminutive of|nl|evolutie}} 5mqmabi87pbor21tfap3ozrplr0d6fe эволюция 0 604809 2340657 2026-09-01T17:08:37Z M-30722 1202 [[en:эволюция]]より 2340657 wikitext text/x-wiki =={{L|kk}}== ==={{etym}}=== {{bor|kk|ru|эволю́ция}} < {{etyl|la|kk}} {{m|la|ēvolūtiō}} ==={{pron}}=== * {{IPA|lang=kk|[ɪvɐˈlʲut͡sɨjə]}} ==={{noun}}=== {{kk-noun}} #[[発展]]、[[発達]]、[[進歩]]。 #{{タグ|kk|生物学}}[[進化]]。 {{kk-noun-c|а|а}} ===={{drv}}==== * {{l|kk|эволюциялық}} * {{l|kk|эволюцияшыл}}, {{l|kk|эволюцияшылдық}} =={{L|ru}}== ==={{etym}}=== {{bor|ru|la|ēvolūtiō}} ==={{pron}}=== * {{ru-IPA|эволю́ция}} * {{音声|ru|Ru-эволюция.ogg}} ==={{noun}}=== {{ru-noun+|эволю́ция}} #[[発展]]、[[発達]]、[[進歩]]。 #{{タグ|ru|生物学}}[[進化]]。 {{ru-noun-table|эволю́ция}} ===={{rel}}==== * {{l|ru|эволюцио́нный}} * {{l|ru|эволюциони́ровать}} ===={{desc}}==== * {{desc|hy|էվոլյուցիա|bor=1}} * {{desc|kk|эволюция|bor=1}} 9j4dk6f7nywu5avhhx24ayvmpankcdm эволюции 0 604810 2340658 2026-09-01T17:11:17Z M-30722 1202 新規作成 2340658 wikitext text/x-wiki {{also|эволюций}} =={{L|ru}}== ==={{pron}}=== * {{ru-IPA|эволю́ции}} ==={{noun}}=== {{head|ru|noun form|head=эволю́ции|g=f-in}} #{{l|ru|эволю́ция}}の複数主格。 #{{l|ru|эволю́ция}}の単数生格。 #{{l|ru|эволю́ция}}の単数与格。 #{{l|ru|эволю́ция}}の複数対格。 #{{l|ru|эволю́ция}}の単数前置格。 midt0773913h8873x63egu1e12bmdz9 эволюций 0 604811 2340659 2026-09-01T17:11:41Z M-30722 1202 新規作成 2340659 wikitext text/x-wiki {{also|эволюции}} =={{L|ru}}== ==={{pron}}=== * {{ru-IPA|эволю́ций}} ==={{noun}}=== {{head|ru|noun form|head=эволю́ций|g=f-in}} #{{l|ru|эволю́ция}}の複数生格。 5kncwd5iesgwe6di9kyigpnlm99lbib эволюциями 0 604812 2340660 2026-09-01T17:12:20Z M-30722 1202 新規作成 2340660 wikitext text/x-wiki =={{L|ru}}== ==={{pron}}=== * {{ru-IPA|эволю́ция̣ми}} ==={{noun}}=== {{head|ru|noun form|head=эволю́циями|g=f-in}} #{{l|ru|эволю́ция}}の複数造格。 qsr3g64h5x6gebkss6xwp2wmu0tlpkn эволюциям 0 604813 2340661 2026-09-01T17:12:39Z M-30722 1202 新規作成 2340661 wikitext text/x-wiki =={{L|ru}}== ==={{pron}}=== * {{ru-IPA|эволю́ция̣м}} ==={{noun}}=== {{head|ru|noun form|head=эволю́циям|g=f-in}} #{{l|ru|эволю́ция}}の複数与格。 d1sgr26srvtbvc29prsjgih4ufdk8vr эволюциях 0 604814 2340662 2026-09-01T17:13:01Z M-30722 1202 新規作成 2340662 wikitext text/x-wiki =={{L|ru}}== ==={{pron}}=== * {{ru-IPA|эволю́ция̣х}} ==={{noun}}=== {{head|ru|noun form|head=эволю́циях|g=f-in}} #{{l|ru|эволю́ция}}の複数前置格。 p18junvuywe8b60n71iub9ptqp70g7v эволюциею 0 604815 2340663 2026-09-01T17:13:22Z M-30722 1202 新規作成 2340663 wikitext text/x-wiki =={{L|ru}}== ==={{pron}}=== * {{ru-IPA|эволю́циею}} ==={{noun}}=== {{head|ru|noun form|head=эволю́циею|g=f-in}} #{{l|ru|эволю́ция}}の単数造格。 mp766ufga7f79nu6d9jvwl2583kg2i5 эволюцию 0 604816 2340664 2026-09-01T17:13:39Z M-30722 1202 新規作成 2340664 wikitext text/x-wiki =={{L|ru}}== ==={{pron}}=== * {{ru-IPA|эволю́цию}} ==={{noun}}=== {{head|ru|noun form|head=эволю́цию|g=f-in}} #{{l|ru|эволю́ция}}の単数対格。 63rjvyrb23h80lvgik4ip2855kzhusf эволюцией 0 604817 2340665 2026-09-01T17:13:58Z M-30722 1202 新規作成 2340665 wikitext text/x-wiki =={{L|ru}}== ==={{pron}}=== * {{ru-IPA|эволю́цией}} ==={{noun}}=== {{head|ru|noun form|head=эволю́цией|g=f-in}} #{{l|ru|эволю́ция}}の単数造格。 qihoj2ajerjmdc6g8wyof7vl1oux8sg 炒魷魚 0 604818 2340666 2026-09-01T17:15:13Z Jiba1219 100610 ページの作成:「=={{L|zh}}== {{zh-cat|chao3you2yu2|verb|比喩}} {{yue-cat|chaau2yau4yu2|verb|比喩}} {{wuu-cat|tshau3yeu3ng3|verb|比喩}} ==={{pron}}=== {{cmn-pron|chǎo yóuyú}} {{yue-pron|caau2 jau4 jyu4-2|t=cau2 yiu3 ngui3*}} {{hak-pron|gd=cau3 yu2 n2}} {{wuu-pron|sh:5tshau+6yeu ng6}} ==={{noun}}=== {{zhchars|炒|魷魚|s=炒鱿鱼}} #(比喩) [[リストラ]]する。」 2340666 wikitext text/x-wiki =={{L|zh}}== {{zh-cat|chao3you2yu2|verb|比喩}} {{yue-cat|chaau2yau4yu2|verb|比喩}} {{wuu-cat|tshau3yeu3ng3|verb|比喩}} ==={{pron}}=== {{cmn-pron|chǎo yóuyú}} {{yue-pron|caau2 jau4 jyu4-2|t=cau2 yiu3 ngui3*}} {{hak-pron|gd=cau3 yu2 n2}} {{wuu-pron|sh:5tshau+6yeu ng6}} ==={{noun}}=== {{zhchars|炒|魷魚|s=炒鱿鱼}} #(比喩) [[リストラ]]する。 slq7zc2e4xpvufm0ni4l9p2zjzk5iki 2340669 2340666 2026-09-01T17:16:28Z Jiba1219 100610 2340669 wikitext text/x-wiki =={{L|zh}}== {{zh-cat|chao3you2yu2|verb|比喩}} {{yue-cat|chaau2yau4yu2|verb|比喩}} {{wuu-cat|tshau3yeu3ng3|verb|比喩}} ==={{pron}}=== {{cmn-pron|chǎo yóuyú}} {{yue-pron|caau2 jau4 jyu4-2|t=cau2 yiu3 ngui3*}} {{hak-pron|gd=cau3 yu2 n2}} {{wuu-pron|sh:5tshau+6yeu ng6}} ==={{noun}}=== {{zhchar|炒|魷魚|s=炒鱿鱼}} #(比喩) [[リストラ]]する。 b1wnjt03fko9m8bdq2ak393yo5oh8e7 էվոլյուցիա 0 604819 2340667 2026-09-01T17:16:04Z M-30722 1202 [[en:էվոլյուցիա]]より 2340667 wikitext text/x-wiki =={{L|hy}}== ==={{alter}}=== * {{alter+|hy|էվոլուցիա|եվոլյուցիա}} ==={{etym}}=== {{bor|hy|ru|эволю́ция}} < {{etyl|la|hy}} {{m|la|ēvolūtiō}} ==={{pron}}=== {{hy-IPA|էվոլյու՛ցիա}} ==={{noun}}=== {{hy-h|noun}} #[[発展]]、[[発達]]、[[進歩]]。 #{{タグ|hy|生物学}}[[進化]]。 {{hy-noun-ի-ներ}} rjn64f7r6cz74azvmt0zrotd389pwxb 炒鱿鱼 0 604820 2340668 2026-09-01T17:16:15Z Jiba1219 100610 ページの作成:「=={{L|zh}}== {{zh-cat|chao3you2yu2|verb|比喩}} {{yue-cat|chaau2yau4yu2|verb|比喩}} {{wuu-cat|tshau3yeu3ng3|verb|比喩}} ==={{pron}}=== {{cmn-pron|chǎo yóuyú|z=n}} {{yue-pron|caau2 jau4 jyu4-2|t=cau2 yiu3 ngui3*|h=n}} {{hak-pron|gd=cau3 yu2 n2}} {{wuu-pron|sh:5tshau+6yeu ng6}} ==={{noun}}=== {{zhchar|炒|鱿鱼|t=炒魷魚}} #(比喩) [[リストラ]]する。」 2340668 wikitext text/x-wiki =={{L|zh}}== {{zh-cat|chao3you2yu2|verb|比喩}} {{yue-cat|chaau2yau4yu2|verb|比喩}} {{wuu-cat|tshau3yeu3ng3|verb|比喩}} ==={{pron}}=== {{cmn-pron|chǎo yóuyú|z=n}} {{yue-pron|caau2 jau4 jyu4-2|t=cau2 yiu3 ngui3*|h=n}} {{hak-pron|gd=cau3 yu2 n2}} {{wuu-pron|sh:5tshau+6yeu ng6}} ==={{noun}}=== {{zhchar|炒|鱿鱼|t=炒魷魚}} #(比喩) [[リストラ]]する。 ou5iimzb3qmg5bxyi09pzkzx2rw01m9 Emotion 0 604821 2340670 2026-09-01T17:18:52Z M-30722 1202 [[en:Emotion]]より 2340670 wikitext text/x-wiki {{also|emotion|émotion}} =={{L|de}}== ==={{pron}}=== * {{IPA|lang=de|/emoˈtsioːn/}} * {{音声|de|De-Emotion.ogg|a=Berlin}} ==={{noun}}=== {{de-noun|g=f}} #[[感情]]、[[情緒]]。 #: {{syn|de|Gefühl}} {{de-decl-noun-f}} ===={{drv}}==== * {{l|de|emotionslos}} qy1dmddg4nlltwu0en5ps001arbcxpf Emotionen 0 604822 2340671 2026-09-01T17:20:51Z M-30722 1202 新規作成 2340671 wikitext text/x-wiki =={{L|de}}== ==={{pron}}=== * {{音声|de|De-Emotionen.ogg|a=Berlin}} ==={{noun}}=== {{head|de|noun form}} #{{plural of|de|Emotion}} nc92b6ck7mwh4djix8vmhvki5u2zvti evangelia 0 604823 2340672 2026-09-01T17:23:55Z M-30722 1202 新規作成 2340672 wikitext text/x-wiki =={{L|nn}}== ==={{noun}}=== {{head|nn|noun form|g=n}} #{{l|nn|evangelium}}の限定複数形。 =={{L|nb}}== ==={{alter}}=== * {{alter+|nb|evangeliene}} ==={{noun}}=== {{head|nb|noun form|g=n}} #{{l|nb|evangelium}}の限定複数形。 =={{L|la}}== ==={{noun}}=== {{la-noun-form|ēvangelia}} #{{l|la|ēvangelium}}の複数主格。 #{{l|la|ēvangelium}}の複数対格。 #{{l|la|ēvangelium}}の複数呼格。 bh9lv2lv3atjnq1bvmqxs6a31hbgozu evangeliene 0 604824 2340673 2026-09-01T17:24:50Z M-30722 1202 新規作成 2340673 wikitext text/x-wiki =={{L|nb}}== ==={{alter}}=== * {{alter+|nb|evangelia}} ==={{noun}}=== {{head|nb|noun form|g=n}} #{{l|nb|evangelium}}の限定複数形。 rsle55fhk3nm85h5ac109mpj7u6ezsj evangeliis 0 604825 2340674 2026-09-01T17:25:45Z M-30722 1202 新規作成 2340674 wikitext text/x-wiki =={{L|la}}== ==={{noun}}=== {{la-noun-form|evangeliīs}} #{{l|la|ēvangelium}}の複数与格。 #{{l|la|ēvangelium}}の複数奪格。 2mp0gduu2wga51zzzhxuemfb2b6cs8c evangeliorum 0 604826 2340675 2026-09-01T17:27:23Z M-30722 1202 新規作成 2340675 wikitext text/x-wiki =={{L|la}}== ==={{noun}}=== {{la-noun-form|ēvangeliōrum}} #{{l|la|ēvangelium}}の複数属格。 0wzlj4330pztzw82te9n1467zqzf9b8 evangelii 0 604827 2340676 2026-09-01T17:27:48Z M-30722 1202 新規作成 2340676 wikitext text/x-wiki =={{L|la}}== ==={{noun}}=== {{la-noun-form|ēvangeliī}} #{{l|la|ēvangelium}}の単数属格。 kgpd0fwpqv7azxypnrl8onjsuxhrmve on duty 0 604828 2340678 2026-09-01T17:31:55Z M-30722 1202 新規作成 2340678 wikitext text/x-wiki {{DEFAULTSORT:onduty}} {{also|on-duty}} =={{L|en}}== ==={{alter}}=== * {{l|en|on-duty}} ==={{preposition}}=== {{en-prep}} #{{タグ|en|労働}}[[勤務]][[時間]]中で。 #: {{ant|en|off duty}} ==={{seealso}}=== * {{l|en|on call}} 8gyx8na61s1xzrkulxl7oi0sjvhilt9 deĵori 0 604829 2340679 2026-09-01T17:34:32Z M-30722 1202 [[en:deĵori]]より 2340679 wikitext text/x-wiki {{DEFAULTSORT:dejori}} =={{L|eo}}== ==={{etym}}=== {{etyl|pl|eo}} {{m|pl|dyżur|dyżurować}}、{{etyl|ru|eo}} {{m|ru|дежу́рить}} < {{etyl|fr|eo}} {{m|fr|de jour}} ==={{pron}}=== {{eo-pr|a=LL-Q143 (epo)-Lepticed7-deĵori.wav}} ==={{verb}}=== {{eo-verb|deĵor}} #{{タグ|eo|自動詞}}[[当直]]する。 {{eo-conj|intr=yes}} ===={{drv}}==== * {{l|eo|deĵorejo}} * {{l|eo|deĵoro}} ===={{rel}}==== * {{l|eo|gardi}} 6caf1d33lrat8bnotttczfbundhf0sk カテゴリ:エスペラント 語根 deĵor' 14 604830 2340680 2026-09-01T17:35:04Z M-30722 1202 新規作成 2340680 wikitext text/x-wiki {{DEFAULTSORT:dejor}} [[カテゴリ:{{eo}}_{{root}}]] [[カテゴリ:{{eo}}_基本語根第9類]] js7j7gb1w68ldkrmznnvp4cpvzyk60o deĵoras 0 604831 2340681 2026-09-01T17:35:48Z M-30722 1202 新規作成 2340681 wikitext text/x-wiki =={{L|eo}}== ==={{verb}}=== {{eo-verb-form|deĵor|as|root=deĵor}} bppvo3kadogfncbjjppaotom2d9k0s7 2340684 2340681 2026-09-01T17:40:55Z M-30722 1202 2340684 wikitext text/x-wiki {{DEFAULTSORT:dejoras}} =={{L|eo}}== ==={{verb}}=== {{eo-verb-form|deĵor|as|root=deĵor}} 9gkhejkrd7ici6x16y2c9mu12ihjjhm テンプレート:eo-verb-form/doc 10 604832 2340683 2026-09-01T17:40:38Z M-30722 1202 説明 2340683 wikitext text/x-wiki <noinclude>{{documentation subpage}}</noinclude> __TOC__ ==使い方== エスペラントの動詞の定形に用いる見出し語テンプレートです。引数1と2を入力(任意)すると「〇〇の現在形。」等の説明を自動出力出来ます。 ==引数== {| class="wikitable" border="1" |+ 引数の一覧 ! 引数 !! 指定内容 !! 既定値 !! 説明 |- ! 1 | 語幹 || 無し|| 対象の語の語幹を入力する。 |- ! 2 | 品詞語尾 || 無し || 品詞語尾(as、is、os、us、u)を入力する。 |- ! root | 語根 || 無し || 語根を指定する |- ! root2 | 語根 || 無し || 語根を指定する |- ! root3 | 語根 || 無し || 語根を指定する |} ==カテゴリ== このテンプレートは、貼り付けられたページに次のカテゴリを適用します: {| class="wikitable" ! カテゴリ !! ソートキー |- | カテゴリ:エスペラント || 項目名又はデフォルトソートで指定されたもの |- | カテゴリ:エスペラント‎ 動詞 定形 || 上記に同じ |} ==使用例== *[[deĵoras]] → <nowiki>{{eo-verb-form|deĵor|as|root=deĵor}}</nowiki> 6hhohpqrmfei3kpwn9rpzvmkkakykms deĵoris 0 604833 2340686 2026-09-01T17:41:08Z M-30722 1202 新規作成 2340686 wikitext text/x-wiki {{DEFAULTSORT:dejoris}} =={{L|eo}}== ==={{verb}}=== {{eo-verb-form|deĵor|is|root=deĵor}} it5d2zhnz39s4yuh6rdancghoz2a6ps deĵoros 0 604834 2340687 2026-09-01T17:41:21Z M-30722 1202 新規作成 2340687 wikitext text/x-wiki {{DEFAULTSORT:dejoros}} =={{L|eo}}== ==={{verb}}=== {{eo-verb-form|deĵor|os|root=deĵor}} e34nvh65qvbnmikqdwzlp9bdnl8mid4 deĵorus 0 604835 2340688 2026-09-01T17:41:36Z M-30722 1202 新規作成 2340688 wikitext text/x-wiki {{DEFAULTSORT:dejorus}} =={{L|eo}}== ==={{verb}}=== {{eo-verb-form|deĵor|us|root=deĵor}} rrtpy2dctdtsjubb8zciev3tfkq2o01 deĵoru 0 604836 2340690 2026-09-01T17:41:48Z M-30722 1202 新規作成 2340690 wikitext text/x-wiki {{DEFAULTSORT:dejoru}} =={{L|eo}}== ==={{verb}}=== {{eo-verb-form|deĵor|u|root=deĵor}} 8fdvde0uvzxxhnvsjaewfnccn2ngv3r degeli 0 604837 2340692 2026-09-01T17:44:41Z M-30722 1202 [[en:degeli]]より 2340692 wikitext text/x-wiki =={{L|eo}}== ==={{etym}}=== {{bor+|eo|fr|dégeler}}、{{bor+|eo|it|sgelare}} ==={{pron}}=== {{eo-pr|a=LL-Q143 (epo)-Lepticed7-degeli.wav}} ==={{verb}}=== {{eo-verb|degel}} #{{タグ|eo|自動詞|雪や氷が}}{{おくりがな2|解|と|ける|とける}}。 {{eo-conj|intr=yes}} tazbxmcdfr70fch0vfwy4zysyd4axbd カテゴリ:エスペラント 語根 degel' 14 604838 2340693 2026-09-01T17:45:57Z M-30722 1202 新規作成 2340693 wikitext text/x-wiki {{DEFAULTSORT:degel}} [[カテゴリ:{{eo}}_語根]] [[カテゴリ:{{eo}}_基本語根第8類]] t5dobnyxrn0e5txw2z1i7ivqcy1uhqx degelas 0 604839 2340694 2026-09-01T17:47:26Z M-30722 1202 新規作成 2340694 wikitext text/x-wiki {{also|dégelas}} =={{L|eo}}== ==={{verb}}=== {{eo-verb-form|degel|as|root=degel}} =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{l|pt|degelar}}の直説法現在第二人称単数形。 hr9n6sv59009wfxfiw0cdevopjb1qn0 degelis 0 604840 2340695 2026-09-01T17:47:43Z M-30722 1202 新規作成 2340695 wikitext text/x-wiki =={{L|eo}}== ==={{verb}}=== {{eo-verb-form|degel|is|root=degel}} aq88y78ywp2tgtgq2rbp85ymwfkoedf degelos 0 604841 2340696 2026-09-01T17:48:18Z M-30722 1202 新規作成 2340696 wikitext text/x-wiki =={{L|eo}}== ==={{verb}}=== {{eo-verb-form|degel|os|root=degel}} =={{L|pt}}== ==={{noun}}=== {{head|pt|plural|g=m}} #{{plural of|pt|degelo}} i94s49g695uu46gguraocccsptkwss9 degelus 0 604842 2340697 2026-09-01T17:48:47Z M-30722 1202 新規作成 2340697 wikitext text/x-wiki =={{L|eo}}== ==={{verb}}=== {{eo-verb-form|degel|us|root=degel}} 3btflxe02tc7knef91de2uk2ld6e6h7 degelu 0 604843 2340698 2026-09-01T17:48:58Z M-30722 1202 新規作成 2340698 wikitext text/x-wiki =={{L|eo}}== ==={{verb}}=== {{eo-verb-form|degel|u|root=degel}} fsfnmv6n5bt1j0wgolbplugnggvu7xz thaw 0 604844 2340699 2026-09-01T18:04:18Z M-30722 1202 [[en:thaw]]より 2340699 wikitext text/x-wiki =={{L|cy}}== ==={{pron}}=== * {{IPA|lang=cy|/θau̯/}} ==={{verb}}=== {{head|cy|mutated verb}} #{{aspirate mutation of|cy|taw}} {{cy-mut-auto|taw}} =={{L|en}}== ==={{etym}}=== *動詞は{{etyl|enm|en}} {{m|enm|thawen}}, {{m|enm|thowen}} < {{etyl|ang|en}} {{m|ang|þāwian}}, {{m|ang|*þāwan}} < {{etyl|gmw-pro|en}} {{m|gmw-pro|*þauwjan}} < {{etyl|gem-pro|en}} {{m|gem-pro|*þawjaną}} < {{etyl|ine-pro|en}} {{m|ine-pro|*teh₂-}} *名詞は{{etyl|enm|en}} {{m|enm|thawe}}, {{m|enm|thowe}} < 動詞 {{m|enm|thawen}}, {{m|enm|thowen}} (上記参照) ==={{pron}}=== * {{IPA|lang=en|/θɔː/|a=RP}} * {{IPA|lang=en|/θoː/|a=SSB|a2=AU|a3=NZ}} * {{a|US}} ** {{IPA|lang=en|/θɔ/|a=non-cot-caught}} ** {{IPA|lang=en|/θɑ/|a=cot-caught}} *** {{音声|en|En-us-thaw.ogg|a=US|a2=cot-caught}} * {{IPA|lang=en|/θɒ/|a=CA}} * {{IPA|lang=en|/θɔ/|a=Scotland}} * {{homophones|lang=en|Thor|for|four}} * {{rhymes|lang=en|ɔː|s=1}} ==={{verb}}=== {{en-verb}} #{{タグ|en|他動詞|雪や氷を}}{{おくりがな2|解|と|かす|とかす}}、[[解凍]]する。 #{{タグ|en|比喩|態度・緊張などが}}{{おくりがな2|和|やわ|らぐ|やわらぐ}}、{{おくりがな3|打|う|ち|解|と|ける|うちとける}}。 #{{タグ|en|自動詞|雪や氷が}}{{おくりがな2|解|と|ける|とける}}。 #:{{syn|en|deice}} #{{タグ|en|自動詞|体などが}}{{おくりがな2|暖|あたた|まる|あたたまる}}。 ===={{alter}}==== * {{alter+|en|thow||スコットランド}} ===={{drv}}==== {{col3|lang=en|postthaw|rethaw|thawable|thawer|thawless|thawy|unthawed|thawingly|dethaw|freeze-thaw|thawed|thawer|thawing|thaw out|unthaw}} ==={{noun}}=== {{en-noun}} #{{タグ|en|雪|label=雪や氷が}}解けること、{{おくりがな3|雪|ゆき||解|ど|け|ゆきどけ}}、解凍。 #{{タグ|en|比喩}}{{おくりがな2|和|やわ|らぎ|やわらぎ}}、[[緩和]]。 #{{タグ|en|気象}}雪解けの[[時期]]。 ===={{drv}}==== * {{l|en|silver thaw}} * {{l|en|thaw-drop}} * {{l|en|thawless}} * {{l|en|thaw wind}} * {{l|en|thawy}} * {{l|en|under-thaw}} ===={{seealso}}==== * {{l|en|snowmelt}} ==={{anag}}=== * {{anagrams|en|a=ahtw|HAWT|Wath|hawt|wath|what}} =={{L|lus}}== ==={{verb}}=== {{head|lus|verb}} #{{タグ|lus|風||が}}{{おくりがな2|吹|ふ|く|ふく}}。 fzgy3b7uuoqdg4nutz9rkjsvcl03dwl テンプレート:aspirate mutation of 10 604845 2340700 2026-09-01T18:05:03Z M-30722 1202 新規作成 2340700 wikitext text/x-wiki {{check deprecated lang param usage|lang={{{lang|}}}|<!-- -->{{#invoke:form of/templates|form_of_t|{{#if:{{{nodot|}}}|&nbsp;の[[帯気音化]]|&nbsp;の[[帯気音化]]。}}|ignore=POS|withcap=1}}<!-- -->}}<!-- --><noinclude>[[カテゴリ:文法形態テンプレート]]{{documentation}}</noinclude> 07qq4z2xxogze8te6aevblq62qkj7pb kaprica 0 604846 2340704 2026-09-01T18:10:10Z M-30722 1202 新規作成 2340704 wikitext text/x-wiki =={{L|eo}}== ==={{pron}}=== {{eo-pr}} ==={{adjective}}=== {{eo-adj|root=kapric}} #[[急変]]する、{{おくりがな3|気|き||紛|まぐ|れ|きまぐれ}}。 ===={{drv}}==== * {{l|eo|kaprico}} iln75omc1ootybozy549li0m72gpvf3 カテゴリ:エスペラント 語根 kapric' 14 604847 2340705 2026-09-01T18:10:43Z M-30722 1202 新規作成 2340705 wikitext text/x-wiki {{DEFAULTSORT:kapric}} [[カテゴリ:{{eo}}_語根]] [[カテゴリ:{{eo}}_基本語根第8類]] cqcodzhnvrko1ofu3v6z0abwq0i9q03 kapricaj 0 604848 2340706 2026-09-01T18:11:33Z M-30722 1202 新規作成 2340706 wikitext text/x-wiki =={{L|eo}}== ==={{pron}}=== {{eo-pr}} ==={{adjective}}=== {{eo-adj-form|kapric|aj|root=kapric}} e0ptwu19loltd6p0p7br1li4ncprwqn 2340707 2340706 2026-09-01T18:14:23Z M-30722 1202 2340707 wikitext text/x-wiki =={{L|eo}}== ==={{pron}}=== {{eo-pr}} ==={{adjective}}=== {{eo-adj-form|kaprica|j|root=kapric}} fxm83foba6521cygqsivhlzka5kz7pw テンプレート:eo-adj-form/doc 10 604849 2340709 2026-09-01T18:15:52Z M-30722 1202 説明 2340709 wikitext text/x-wiki <noinclude>{{documentation subpage}}</noinclude> __TOC__ ==使い方== エスペラントの形容詞の定形に用いる見出し語テンプレートです。引数1と2を入力(任意)すると「〇〇の複数形。」等の説明を自動出力出来ます。 ==引数== {| class="wikitable" border="1" |+ 引数の一覧 ! 引数 !! 指定内容 !! 既定値 !! 説明 |- ! 1 | 不定形 || 無し|| 単数主格(元の形)を入力する。 |- ! 2 | 品詞語尾 || 無し || 品詞語尾(n、j、jn)を入力する。 |- ! root | 語根 || 無し || 語根を指定する |- ! root2 | 語根 || 無し || 語根を指定する |- ! root3 | 語根 || 無し || 語根を指定する |} ==カテゴリ== このテンプレートは、貼り付けられたページに次のカテゴリを適用します: {| class="wikitable" ! カテゴリ !! ソートキー |- | カテゴリ:エスペラント || 項目名又はデフォルトソートで指定されたもの |- | カテゴリ:エスペラント‎ 形容詞 定形 || 上記に同じ |} ==使用例== *[[kapricaj]] → <nowiki>{{eo-adj-form|kaprica|j|root=kapric}}</nowiki> 3tb3i6q0n2vn073t8zflsa021cfv2xm kapricajn 0 604850 2340710 2026-09-01T18:16:15Z M-30722 1202 新規作成 2340710 wikitext text/x-wiki =={{L|eo}}== ==={{pron}}=== {{eo-pr}} ==={{adjective}}=== {{eo-adj-form|kaprica|jn|root=kapric}} soq7x1cyqowajwmtufrqdfjzyrzoh4i kaprican 0 604851 2340711 2026-09-01T18:16:29Z M-30722 1202 新規作成 2340711 wikitext text/x-wiki =={{L|eo}}== ==={{pron}}=== {{eo-pr}} ==={{adjective}}=== {{eo-adj-form|kaprica|n|root=kapric}} eviqop3i1nxj2qlfnki7f9aswsbi1gj kaprico 0 604852 2340712 2026-09-01T18:17:55Z M-30722 1202 新規作成 2340712 wikitext text/x-wiki {{also|kapriĉo}} =={{L|eo}}== ==={{pron}}=== {{eo-pr|a=LL-Q143 (epo)-Lepticed7-kaprico.wav}} ==={{noun}}=== {{eo-noun|head=[[kaprica|kapric]]/[[-o|o]]|root=kapric}} #{{おくりがな3|気|き||紛|まぐ|れ|きまぐれ}}。 rq6aum70id7auhgbvah5cz21ntrj0d2 kapricojn 0 604853 2340713 2026-09-01T18:18:41Z M-30722 1202 新規作成 2340713 wikitext text/x-wiki {{also|kapriĉojn}} =={{L|eo}}== ==={{noun}}=== {{eo-noun-form|kaprico|jn|root=kapric}} mvf9i58g89ekf23u9os1iqz5xz27stq kapricon 0 604854 2340714 2026-09-01T18:18:55Z M-30722 1202 新規作成 2340714 wikitext text/x-wiki {{also|kapriĉon}} =={{L|eo}}== ==={{noun}}=== {{eo-noun-form|kaprico|n|root=kapric}} eu2auzs8j30axvo7c3bry6dm9dwyok9 kapricoj 0 604855 2340715 2026-09-01T18:19:08Z M-30722 1202 新規作成 2340715 wikitext text/x-wiki {{also|kapriĉoj}} =={{L|eo}}== ==={{noun}}=== {{eo-noun-form|kaprico|j|root=kapric}} 73ffgj5oumyfh4jznd1tp85q2og3ln5 Baby boo 0 604856 2340716 2026-09-01T18:23:31Z Chroma 379 133311 ページの作成:「==英語== ===名詞=== # 恋人への愛情表現。」 2340716 wikitext text/x-wiki ==英語== ===名詞=== # 恋人への愛情表現。 i5ffu4e9sxfn6yqhf2r28w7v6goetu6 2340718 2340716 2026-09-01T18:31:18Z Chroma 379 133311 2340718 wikitext text/x-wiki ==英語== ===名詞=== # {{alternative spelling of|baby boo}} 897i6wlqq9wh944k8t4bm37vmoesb4i baby boo 0 604857 2340717 2026-09-01T18:30:32Z Chroma 379 133311 ページの作成:「==英語== ===名詞=== # 恋人への愛情表現。」 2340717 wikitext text/x-wiki ==英語== ===名詞=== # 恋人への愛情表現。 i5ffu4e9sxfn6yqhf2r28w7v6goetu6 一国二制度 0 604860 2340734 2026-09-01T21:07:58Z Jiba1219 100610 ページの作成:「{{kana-DEFAULTSORT|いっこくにせいど}} =={{L|ja}}== {{wikipedia}} ==={{noun}}=== {{ja-noun|いっこくにせいど|head=[[一]] [[国]] [[二]] [[制度]]}} #{{タグ|ja|中国|政治}}[[中華人民共和国]]の[[政治]][[制度]]において、[[本土]][[領域]]から[[分離]]した[[領域]]を[[設置]]し、[[主権国家]]の[[わくぐみ|枠組み]]の中において[[一定]]の[[自治]]や[[国際]][[参加]]を[[可能]]とする[[構想]]…」 2340734 wikitext text/x-wiki {{kana-DEFAULTSORT|いっこくにせいど}} =={{L|ja}}== {{wikipedia}} ==={{noun}}=== {{ja-noun|いっこくにせいど|head=[[一]] [[国]] [[二]] [[制度]]}} #{{タグ|ja|中国|政治}}[[中華人民共和国]]の[[政治]][[制度]]において、[[本土]][[領域]]から[[分離]]した[[領域]]を[[設置]]し、[[主権国家]]の[[わくぐみ|枠組み]]の中において[[一定]]の[[自治]]や[[国際]][[参加]]を[[可能]]とする[[構想]]。 ===={{trans}}==== *{{T|en}}: {{t|en|one country, two systems}} *{{T|zh}}: {{zh-ts|[[一國兩制]]|[[一国两制]]}} (yī guó liǎng zhì) *{{T|ko}}: {{t|ko|일국양제(一國兩制)}} stavcuzsnl4k1ozg6jyfq3hrz6pim17 一國兩制 0 604861 2340735 2026-09-01T21:18:29Z Jiba1219 100610 ページの作成:「{{DEFAULTSORT:yi1guo2liang3zhi4}} =={{L|zh}}== {{wikipedia|lang=zh|一国两制}} {{wikipedia|lang=yue}} {{wikipedia|lang=nan|It-kok-lióng-chè}} {{zh-cat|yi1guo2liang3zhi4|noun|政治}} {{yue-cat|yat1gwok3leung5jai3|noun|政治}} {{nan-cat|it4kok4liong2che3|noun|政治}} {{cpx-cat|ih6gorh6lyorng3ze4|noun|政治}} {{hak-cat|yit-koet-lióng-chṳ|noun|政治}} {{hak-hl-cat|rhid gued liongˊ zhiˇ|noun|政治}} ==={{pron}}=== *官話: :*標準中国語: ::w:拼音|…」 2340735 wikitext text/x-wiki {{DEFAULTSORT:yi1guo2liang3zhi4}} =={{L|zh}}== {{wikipedia|lang=zh|一国两制}} {{wikipedia|lang=yue}} {{wikipedia|lang=nan|It-kok-lióng-chè}} {{zh-cat|yi1guo2liang3zhi4|noun|政治}} {{yue-cat|yat1gwok3leung5jai3|noun|政治}} {{nan-cat|it4kok4liong2che3|noun|政治}} {{cpx-cat|ih6gorh6lyorng3ze4|noun|政治}} {{hak-cat|yit-koet-lióng-chṳ|noun|政治}} {{hak-hl-cat|rhid gued liongˊ zhiˇ|noun|政治}} ==={{pron}}=== *官話: :*標準中国語: ::[[w:拼音|拼音]]: yī guó liǎng zhì → '''yì''' guó liǎng zhì ::[[w:注音符号|注音符号]]: ㄧ ㄍㄨㄛˊ ㄌㄧㄤˇ ㄓˋ ::[[w:ウェード式|ウェード式]]: i1 kuo2 liang3 chih4 ::[[w:国語ローマ字|国語ローマ字]]: i gwo leang jyh ::[[w:通用拼音|通用拼音]]: yi guó liǎng jhìh ::{{IPA|i⁵⁵⁻⁵¹ kwɔ³⁵ ljɑŋ²¹⁴⁻²¹¹ ʈ͡ʂʐ̩⁵¹|lang=zh}} {{yue-pron|jat1 gwok3 loeng5 zai3}} {{nan-pron|tw:it-kok-lióng-chè}} {{cpx-pron|pt:ih6 gorh6# lyorng3 *ze4/xy:ih6 gorh6# lyoeng3 *ze4}} {{hak-pron|yit-koet-lióng-chṳ|h=rhid gued liongˊ zhiˇ}} ==={{noun}}==== {{zhchars|s=一国两制}} #{{タグ|zh|中国|政治}}[[一国二制度]]。 0fqsoq4cj832r1yo6xnb2z0xof058dl 一国两制 0 604862 2340736 2026-09-01T21:20:10Z Jiba1219 100610 ページの作成:「{{DEFAULTSORT:yi1guo2liang3zhi4}} =={{L|zh}}== {{wikipedia|lang=zh}} {{zh-cat|yi1guo2liang3zhi4|noun|政治}} {{yue-cat|yat1gwok3leung5jai3|noun|政治}} {{cpx-cat|ih6gorh6lyorng3ze4|noun|政治}} {{hak-hl-cat|rhid gued liongˊ zhiˇ|noun|政治}} ==={{pron}}=== *官話: :*標準中国語: ::[[w:拼音|拼音]]: yī guó liǎng zhì → '''yì''' guó liǎng zhì ::[[w:ウェード式|ウェード式]]: i1 kuo2 liang3 chih4 ::{{IPA|i⁵⁵⁻⁵¹ kwɔ³⁵ ljɑŋ²…」 2340736 wikitext text/x-wiki {{DEFAULTSORT:yi1guo2liang3zhi4}} =={{L|zh}}== {{wikipedia|lang=zh}} {{zh-cat|yi1guo2liang3zhi4|noun|政治}} {{yue-cat|yat1gwok3leung5jai3|noun|政治}} {{cpx-cat|ih6gorh6lyorng3ze4|noun|政治}} {{hak-hl-cat|rhid gued liongˊ zhiˇ|noun|政治}} ==={{pron}}=== *官話: :*標準中国語: ::[[w:拼音|拼音]]: yī guó liǎng zhì → '''yì''' guó liǎng zhì ::[[w:ウェード式|ウェード式]]: i1 kuo2 liang3 chih4 ::{{IPA|i⁵⁵⁻⁵¹ kwɔ³⁵ ljɑŋ²¹⁴⁻²¹¹ ʈ͡ʂʐ̩⁵¹|lang=zh}} {{yue-pron|jat1 gwok3 loeng5 zai3|h=n}} {{cpx-pron|pt:ih6 gorh6# lyorng3 *ze4/xy:ih6 gorh6# lyoeng3 *ze4}} {{hak-pron|h=rhid gued liongˊ zhiˇ}} ==={{noun}}==== {{zhchars|t=一國兩制}} #{{タグ|zh|中国|政治}}[[一国二制度]]。 7r0qyv3mflt18dth6f8maja9v7f3ft9 くもん 0 604863 2340743 2026-09-01T23:19:45Z うーむ 129171 ページの作成:「{{kana-DEFAULTSORT}} {{also|ぐもん}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana|h=y}} *【[[公文]]】律令制の時代の公文書。 *【[[苦悶]]】苦しみ、悶えること。」 2340743 wikitext text/x-wiki {{kana-DEFAULTSORT}} {{also|ぐもん}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana|h=y}} *【[[公文]]】律令制の時代の公文書。 *【[[苦悶]]】苦しみ、悶えること。 bhvjzidkglosghqh049gkn9ret866e0 宮庭 0 604864 2340744 2026-09-01T23:35:22Z うーむ 129171 ページの作成:「{{kana-DEFAULTSORT|きゅうてい}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[きゅうてい]]}} #[[宮廷]]。」 2340744 wikitext text/x-wiki {{kana-DEFAULTSORT|きゅうてい}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[きゅうてい]]}} #[[宮廷]]。 bsju87pqxgtujuu90i6efk66tu18msi 虞門 0 604865 2340746 2026-09-01T23:38:09Z うーむ 129171 ページの作成:「{{kana-DEFAULTSORT|ぐもん}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[ぐもん]]}} #[[宮廷]]。」 2340746 wikitext text/x-wiki {{kana-DEFAULTSORT|ぐもん}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[ぐもん]]}} #[[宮廷]]。 qbucqhdxq9ab9t0vx7obokpbwz5ofus ぐもん 0 604866 2340747 2026-09-01T23:39:47Z うーむ 129171 ページの作成:「{{kana-DEFAULTSORT}} {{also|くもん}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana|h=y}} *【[[愚問]]】愚かな質問。 *【[[虞門]]】宮廷。」 2340747 wikitext text/x-wiki {{kana-DEFAULTSORT}} {{also|くもん}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana|h=y}} *【[[愚問]]】愚かな質問。 *【[[虞門]]】宮廷。 ba1acetz04h069jr2xlb0e2dof320gv 諜諜 0 604867 2340750 2026-09-01T23:52:34Z うーむ 129171 ページの作成:「{{kana-DEFAULTSORT|ちょうちょう}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[ちょうちょう]]}} #[[おしゃべり]]。」 2340750 wikitext text/x-wiki {{kana-DEFAULTSORT|ちょうちょう}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[ちょうちょう]]}} #[[おしゃべり]]。 jepw3siewkqj3np5urgtflvmjayburr 糶糴 0 604868 2340768 2026-09-02T00:04:08Z うーむ 129171 ページの作成:「{{kana-DEFAULTSORT|}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[]]}} #{{ruby|買い米|かいよね}}と{{ruby|売り米|うりよね}}。 #[[こめ|米]]([[穀物]])の[[売買]]。」 2340768 wikitext text/x-wiki {{kana-DEFAULTSORT|}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[]]}} #{{ruby|買い米|かいよね}}と{{ruby|売り米|うりよね}}。 #[[こめ|米]]([[穀物]])の[[売買]]。 t3c0znc76xff9tyj5s6ag9reytenm72 2340770 2340768 2026-09-02T00:04:55Z うーむ 129171 2340770 wikitext text/x-wiki {{kana-DEFAULTSORT|ちょうてき}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[ちょうてき]]}} #{{ruby|買米|かいよね}}と{{ruby|売米|うりよね}}。 #[[こめ|米]]([[穀物]])の[[売買]]。 nhw8bxdu19ps2cke7wn6w26h2b3jq7l ちょうてき 0 604869 2340774 2026-09-02T00:06:19Z うーむ 129171 ページの作成:「{{kana-DEFAULTSORT}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana|h=y}} *【[[朝敵]]】国賊。 *【[[糶糴]]】米の売買。」 2340774 wikitext text/x-wiki {{kana-DEFAULTSORT}} =={{L|ja}}== ==={{kangokana}}=== {{ja-kangokana|h=y}} *【[[朝敵]]】国賊。 *【[[糶糴]]】米の売買。 o127ufi6ph45tas6kd1j3cqwystj8hr 冢田 0 604870 2340778 2026-09-02T00:10:53Z うーむ 129171 ページの作成:「{{kana-DEFAULTSORT|ちょうでん}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[ちょうでん]]}} #[[墓地]]。」 2340778 wikitext text/x-wiki {{kana-DEFAULTSORT|ちょうでん}} =={{L|ja}}== ==={{noun}}=== {{ja-noun|[[ちょうでん]]}} #[[墓地]]。 jhs063yio5je8laupms4oknuoya7bzz troli 0 604871 2340799 2026-09-02T00:30:18Z NekoyamaWataru 87354 /* 新規作成 */ [[en:troli]]より翻訳 2340799 wikitext text/x-wiki =={{hu}}== [[File:Solaris-Trolleybus-Budapest.jpg|thumb|troli]] ==={{pron}}=== * {{hu-IPA}} * {{hyph|hu|tro|li}} ==={{etym}}=== {{ellipsis of|hu|trolibusz}} ==={{noun}}=== {{hu-noun|k}} # {{label|hu|informal}} [[トロリーバス]]。 ===={{decl}}==== {{hu-infl-nom|troli|o}}{{hu-pos-tok|troli|ja}} ===={{comp}}==== {{top4}} * {{l|hu|troliközlekedés}} * {{l|hu|trolimegálló}} * {{l|hu|trolivégállomás}} * {{l|hu|trolivezető}} * {{l|hu|trolivonal}} {{bottom}} ===参考文献=== * {{R:ErtSz}} [[Category:{{hu}}_車両]] 9267s99ruthv3qdv4kcjftixa9ey2g4 テンプレート:R:hu:AkH2015 10 604872 2340800 2026-09-02T01:00:09Z NekoyamaWataru 87354 /* 新規作成 */ [[en:Template:R:hu:AkH2015]]を参考に追加 2340800 wikitext text/x-wiki <onlyinclude><!-- -->{{#if:{{{section|}}}<!-- -->|{{#if:{{{gloss|}}}<!-- -->|[https://helyesiras.mta.hu/helyesiras/default/akh#{{{section}}} {{{gloss}}}]{{#if:{{{onlylink|}}}||&nbsp;in}}<!-- -->|[https://helyesiras.mta.hu/helyesiras/default/akh#{{{section}}} § {{{section}}}]{{#if:{{{onlylink|}}}||&nbsp;in}}<!-- -->}}<!-- -->|{{cln|hu|terms referencing the spelling regulation without specifying its section}}<!-- -->}}<!-- -->{{#if:{{{onlylink|}}}||&nbsp;[https://helyesiras.mta.hu/helyesiras/default/akh ''A magyar helyesírás szabályai, 12. kiadás''] (‘The Rules of Hungarian Orthography, 12th edition’). Budapest: Akadémiai Kiadó, 2015. {{ISBN|978 963 05 8630 6}}}}<!-- --></onlyinclude><!-- --><noinclude>{{documentation}}</noinclude> 63bxnau0cdx9goed62zfaraqlq9u0cz 2340801 2340800 2026-09-02T01:01:28Z NekoyamaWataru 87354 語句の修正 2340801 wikitext text/x-wiki <onlyinclude><!-- -->{{#if:{{{section|}}}<!-- -->|{{#if:{{{gloss|}}}<!-- -->|[https://helyesiras.mta.hu/helyesiras/default/akh#{{{section}}} {{{gloss}}}]{{#if:{{{onlylink|}}}||&nbsp;in}}<!-- -->|[https://helyesiras.mta.hu/helyesiras/default/akh#{{{section}}} § {{{section}}}]{{#if:{{{onlylink|}}}||&nbsp;in}}<!-- -->}}<!-- -->|{{cln|hu|terms referencing the spelling regulation without specifying its section}}<!-- -->}}<!-- -->{{#if:{{{onlylink|}}}||&nbsp;[https://helyesiras.mta.hu/helyesiras/default/akh ''A magyar helyesírás szabályai, 12. kiadás''] (『ハンガリー語正書法規則、第12版』). Budapest: Akadémiai Kiadó, 2015. {{ISBN|978 963 05 8630 6}}}}<!-- --></onlyinclude><!-- --><noinclude>{{documentation}}</noinclude> 87jls6eclh7s1kt06ou86qocvnzscjx テンプレート:R:hu:AkH2015/doc 10 604873 2340802 2026-09-02T01:01:35Z NekoyamaWataru 87354 /* 新規作成 */ [[en:Template:R:hu:AkH2015/documentation]]を参考に追加 2340802 wikitext text/x-wiki {{documentation subpage}} ==このテンプレートについて== このテンプレートは、『ハンガリー語正書法規則』の第12版の情報を参照するように設計されている。 ===名前のある引数=== ; <code>section=</code> :特定のセクション番号を表示してリンクする必要がある場合、このパラメータを追加 ; <code>gloss=</code> :セクションタイトルを表示し、指定されたセクション番号にリンクさせる必要がある場合は、このパラメータを追加。グロスパラメータは、セクションパラメータも指定されている場合にのみ機能。 ; <code>onlylink=</code> :リンクのみが必要な場合(例えば、同じソース内の別のエントリへの書誌データを含む別のリンクがある場合など)、このパラメータに"y"(または何も指定しない以外の任意の値)を追加。 ===使用例=== {{m|hu|árboc||pos=árbóc「マスト」の置き換えられた綴り}}の場合: :<nowiki>{{R:hu:AkH2015}}</nowiki> {{m|hu|gondolatjel||ダッシュ}}の場合("§ 251"と表示し、セクション251へリンク): :<nowiki>{{R:hu:AkH2015|section=251}}</nowiki> {{m|hu|különírás||pos=別々の単語として書く}}の場合、セクションタイトル(解説)を表示し、§ F4にリンク: :<nowiki>{{R:hu:AkH2015|section=F4|gloss=A különírás és az egybeírás}} 次のような結果となる:</nowiki> {{R:hu:AkH2015|section=F4|gloss=A különírás és az egybeírás}} 10nkzufwfki52zghlgp1we93pusuh87 földalatti 0 604874 2340803 2026-09-02T01:14:40Z NekoyamaWataru 87354 /* 新規作成 */ [[en:földalatti]]より翻訳 2340803 wikitext text/x-wiki {{DEFAULTSORT:foldalatti}} {{also|föld alatti}} =={{hu}}== ==={{pron}}=== * {{hu-IPA}} * {{hyph|hu|föld|alat|ti}} ==={{etym}}=== {{affix|hu|föld|alatti}} ==={{adjective}}=== {{hu-adj|-}} # [[地下]]の、[[秘密裏]]の、[[違法]]な、[[禁制]]の。 #: {{syn|hu|illegális|rejtett|titkos}} ===={{usage}}==== 次の文献およびセクション({{R:hu:AkH2015|section=108}})によれば、この語は名詞(「地下鉄」の意味、下記を参照)や「違法な」という意味など、元の文字通りの意味とは異なって使用される場合にのみ1語として表記される。文字通りの「地下の、地底の」という意味では、2単語に分かち書きされる。しかしながら、母語話者でさえその綴りを間違えることがある。 ===={{decl}}==== {{hu-infl-nom|földalattia|o|-}} ===={{rel}}==== * {{l|hu|föld alatti}} ==={{noun}}=== {{hu-noun|k}} # [[metro]], [[underground]], [[Tube]] {{qualifier|UK}}, [[subway]] {{qualifier|US}} (underground railway) ===={{usage}}==== ブダペストの地下鉄に関して言えば、''földalatti'' は特に歴史的で比較的規模の小さい[[w:ブダペスト地下鉄1号線|ブダペスト地下鉄1号線(M1)]]を指し、その他の路線は {{m|hu|metró}} と呼ばれる。地下鉄に部分的に統合されているその他の郊外鉄道路線については、{{m|hu|HÉV}} を参照。 ===={{decl}}==== {{hu-infl-nom|földalatti|o}}{{hu-pos-tok|földalatti|ja}} ===参考文献=== * {{R:ErtSz}} [[Category:{{hu}}_鉄道]] 6dgk98dtpv5tjg5shcuomjt60keljmm roller 0 604875 2340804 2026-09-02T01:20:57Z NekoyamaWataru 87354 /* 新規作成 */ [[en:roller]]より翻訳 2340804 wikitext text/x-wiki =={{hu}}== {{wikipedia|lang=hu}} [[File:Early razor scooter.jpg|thumb|roller]] ==={{pron}}=== * {{hu-IPA}} * {{hyph|hu|rol|ler}} ==={{etym}}=== {{bor+|hu|de|Roller}} ==={{noun}}=== {{hu-noun|ek}} # [[キックスケーター]]、[[キックスクーター]]。 #: 地面を蹴って進むハンドル付きの乗物 ===={{decl}}==== {{hu-infl-nom|rollere|e|-}}{{hu-pos-etek|roller||ei|j=y}} または {{hu-infl-nom|rollero|o|-}}{{hu-pos-otok|roller|j|jai}} ===={{drv}}==== * {{l|hu|rolleres}} * {{l|hu|rollerezik}} ===参考文献=== * {{R:ErtSz}} [[Category:{{hu}}_乗り物]] nydmv19jmv9qjqxnx13sqwf2dvpd6p7 iroda 0 604876 2340805 2026-09-02T01:51:30Z NekoyamaWataru 87354 /* 新規作成 */ [[en:iroda]]より翻訳 2340805 wikitext text/x-wiki =={{hu}}== ==={{pron}}=== * {{hu-IPA}} * {{hyph|hu|iro|da}} ==={{etym}}=== {{suffix+|ír|id1=to write|oda|lang=hu}} ==={{noun}}=== {{hu-noun|pl=irodák}} # {{label|hu|建物|部屋}} [[事務所]]、[[事務室]]、[[執務室]]、[[オフィス]]。 ===={{decl}}==== {{hu-infl-nom|irodá|o}}{{hu-pos-tok|irodá}} ===={{drv}}==== * {{l|hu|irodai}} ===={{comp}}==== {{top4}} * {{l|hu|fordítóiroda}} * {{l|hu|irodaszék}} * {{l|hu|irodaszer}} * {{l|hu|nyomozóiroda}} {{bottom}} ===={{idiom}}==== * {{l|hu|Magyar Távirati Iroda}} * {{l|hu|utazási iroda}} ===参考文献=== * {{R:ErtSz}} g2lbb8uxze1hjz9jv9768e28jxvprr4 irodai 0 604877 2340806 2026-09-02T01:51:33Z NekoyamaWataru 87354 /* 新規作成 */ [[en:irodai]]より翻訳 2340806 wikitext text/x-wiki =={{hu}}== ==={{pron}}=== * {{hu-IPA}} * {{hyph|hu|iro|dai}} ==={{etym}}=== {{suffix+|iroda|i|pos2=形容詞形成接尾辞|lang=hu}} ==={{adjective}}=== {{hu-adj|bb}} # [[事務]]の、[[事務所]]の、[[事務室]]の、[[執務室]]の、[[オフィス]]の。 #: {{uxi|hu|'''irodai''' kellékek|'''事務'''用品}} ===={{decl}}==== {{hu-infl-nom|irodaia|o|-}} ===参考文献=== * {{R:ErtSz}} 2nc63iujguoqmawipw5zh7lmi5krb1i Szövetségi Nyomozóiroda 0 604878 2340807 2026-09-02T01:51:36Z NekoyamaWataru 87354 /* 新規作成 */ [[en:Szövetségi Nyomozóiroda]]より翻訳 2340807 wikitext text/x-wiki {{DEFAULTSORT:Szovetsegi Nyomozóiroda}} =={{hu}}== {{wikipedia|lang=hu}} ==={{pron}}=== * {{hu-IPA}} ==={{name}}=== {{head|hu|proper noun|head=[[szövetségi|Szövetségi]] [[nyomozóiroda|Nyomozóiroda]]}} # [[FBI]]、米国連邦捜査局。 #: アメリカ合衆国の国内情報機関および保安局 2b1l4vkeys0ddctqksdpefu11hepcqd utazási iroda 0 604879 2340808 2026-09-02T01:51:38Z NekoyamaWataru 87354 /* 新規作成 */ [[en:utazási iroda]]より翻訳 2340808 wikitext text/x-wiki {{DEFAULTSORT:utazasi iroda}} =={{hu}}== ==={{pron}}=== * {{hu-IPA|utazási ˌiroda}} ==={{noun}}=== {{hu-noun|pl=[[utazási]] [[irodák]]}} # [[旅行代理店]]。 #: 旅行者の旅行と宿泊を手配する会社 [[Category:{{hu}}_交通]] bxiaryuy68rbdvu5x1qrjjof18eunc7 intézmény 0 604880 2340810 2026-09-02T02:07:29Z NekoyamaWataru 87354 /* 新規作成 */ [[en:intézmény]]より翻訳 2340810 wikitext text/x-wiki {{DEFAULTSORT:intezmeny}} =={{hu}}== ==={{pron}}=== * {{hu-IPA}} * {{audio|hu|Hu-intézmény.ogg}} * {{hyph|hu|in|téz|mény}} ==={{etym}}=== {{suffix+|intéz|mény|lang=hu}} ==={{noun}}=== {{hu-noun|ek}} # [[施設]]、[[公共]]施設。 # [[制度]]、[[社会]]制度、[[政治]]制度、社会形態。 ===={{decl}}==== {{hu-infl-nom|intézménye|e|-}}{{hu-pos-etek|intézmény||ei}} ===={{drv}}==== * {{l|hu|intézményes}} * {{l|hu|intézményi}} ===={{comp}}==== * {{l|hu|intézményrendszer}} ===参考文献=== * {{R:ErtSz}} hodw3qxyuh1axga1kf65yna1nuzse3y intézményes 0 604881 2340811 2026-09-02T02:07:32Z NekoyamaWataru 87354 /* 新規作成 */ [[en:intézményes]]より翻訳 2340811 wikitext text/x-wiki {{DEFAULTSORT:intezmenyes}} =={{hu}}== ==={{pron}}=== * {{hu-IPA}} * {{hyph|hu|in|téz|mé|nyes}} ==={{etym}}=== {{suffix+|intézmény|es|lang=hu}} ==={{adjective}}=== {{hu-adj|ebb}} # [[制度上]]の、[[制度化]]された、[[組織化]]された。 #: {{uxi|hu|'''intézményes''' vallás|'''組織'''宗教}} ===={{decl}}==== {{hu-decl-ek|intézménye|s|et|acc2=t}} ===参考文献=== * {{R:ErtSz}} ffzfx7kdvqvxzehkh7oa1vznzld0jhp intézményi 0 604882 2340812 2026-09-02T02:07:37Z NekoyamaWataru 87354 /* 新規作成 */ [[en:intézményi]]より翻訳 2340812 wikitext text/x-wiki {{DEFAULTSORT:intezmenyi}} =={{hu}}== ==={{pron}}=== * {{hu-IPA}} * {{hyph|hu|in|téz|mé|nyi}} ==={{etym}}=== {{suffix+|intézmény|i|pos2=形容詞形成接尾辞|lang=hu}} ==={{adjective}}=== {{hu-adj|-}} # [[施設]]の、[[公共]]施設の。 # [[制度]]の、[[社会]]制度の、[[政治]]制度の、社会形態の。 ===={{decl}}==== {{hu-infl-nom|intézményie|e|-}} np6a324f3n1ejibncup86h7n1m61w25 mosoda 0 604883 2340814 2026-09-02T02:27:43Z NekoyamaWataru 87354 /* 新規作成 */ [[en:mosoda]]より翻訳 2340814 wikitext text/x-wiki =={{hu}}== ==={{pron}}=== * {{hu-IPA}} * {{hyph|hu|mo|so|da}} ==={{etym}}=== {{suffix+|mos|oda|lang=hu}} ==={{noun}}=== {{hu-noun|pl=mosodák}} # [[洗濯屋]]、[[クリーニング屋]]、[[クリーニング店]]。 #: {{syn|hu|patyolat|tisztító|vegytisztító|ruhatisztító|mosóüzem|q5=industrial|puceráj|q6=dated or archaic}} # [[コインランドリー]]。 #: 特に形容詞 {{m|hu|önkiszolgáló||セルフサービス}}で指定された場合 #: {{syn|hu|mosószalon}} ===={{decl}}==== {{hu-infl-nom|mosodá|o}}{{hu-pos-tok|mosodá}} ===={{drv}}==== * {{l|hu|mosodai}} * {{l|hu|mosodás}} ===参考文献=== * {{R:ErtSz}} 2s68ehnq7vimm7d032nq5ixcd6fmnqm フットワーク 0 604884 2340815 2026-09-02T04:16:35Z うーむ 129171 ページの作成:「{{kana-DEFAULTSORT}} =={{L|ja}}== ==={{etym}}=== {{bor|ja|en|footwork}} ==={{noun}}=== {{ja-noun}} #[[ボクシング]]、[[球技]]などで足の運び方。 #[[機動力]]。」 2340815 wikitext text/x-wiki {{kana-DEFAULTSORT}} =={{L|ja}}== ==={{etym}}=== {{bor|ja|en|footwork}} ==={{noun}}=== {{ja-noun}} #[[ボクシング]]、[[球技]]などで足の運び方。 #[[機動力]]。 12fq4lwxxtqaq413mswvy15koqoead3 2340828 2340815 2026-09-02T06:05:41Z ~2026-47499-78 133320 /* */ 2340828 wikitext text/x-wiki 2340835 2340828 2026-09-02T06:09:04Z NDG 124532 [[特別:Contributions/~2026-47499-78|~2026-47499-78]]による編集を取り消し、うーむによる最新版へと差し戻しを行いました。 2340815 wikitext text/x-wiki {{kana-DEFAULTSORT}} =={{L|ja}}== ==={{etym}}=== {{bor|ja|en|footwork}} ==={{noun}}=== {{ja-noun}} #[[ボクシング]]、[[球技]]などで足の運び方。 #[[機動力]]。 12fq4lwxxtqaq413mswvy15koqoead3 テンプレート:即時版指定削除 10 604885 2340821 2026-09-02T05:25:08Z Kuroco2k 84207 新規作成 2340821 wikitext text/x-wiki {| style="border:solid #999 1px; margin:1ex auto; font-size: small;width:80%;background:#FDD;" |- | [[ファイル:OOUI_icon-like_to_delete_2.svg|50px|即時削除]] | このページの一部の版は[[Wiktionary:即時削除|即時削除]]の[[Wiktionary:即時削除の方針|対象]]となっており、まもなく削除される予定です。 :'''理由:''' {{{2|<span style="color:red">'''理由を記入してください。'''</span>}}} :'''削除対象の版''': {{{1|<span style="color:red">'''版を記入してください。'''</span>}}} もしこのページの削除に同意できなければ、'''記事を適切な内容に改めた上で''' &#123;&#123;即時版指定削除&#125;&#125; を取り除いてください。 [[Wiktionary:管理者|管理者]]へ - 削除の前に[[Special:Whatlinkshere/{{FULLPAGENAME}}|リンク元]]と[{{fullurl:{{FULLPAGENAME}}|action=history}} 履歴]のチェックを忘れずに |}<includeonly>{{#if: {{{nocat|}}} | | [[Category:即時削除]] }}</includeonly><noinclude> {{Documentation}}[[カテゴリ:お知らせテンプレート]][[カテゴリ:削除関連のテンプレート]] </noinclude> ie9qhefw7knfg8sk9wg18oejthspczj 2340830 2340821 2026-09-02T06:06:54Z ~2026-47499-78 133320 /* */ 2340830 wikitext text/x-wiki 2340836 2340830 2026-09-02T06:09:05Z NDG 124532 [[特別:Contributions/~2026-47499-78|~2026-47499-78]]による編集を取り消し、Kuroco2kによる最新版へと差し戻しを行いました。 2340821 wikitext text/x-wiki {| style="border:solid #999 1px; margin:1ex auto; font-size: small;width:80%;background:#FDD;" |- | [[ファイル:OOUI_icon-like_to_delete_2.svg|50px|即時削除]] | このページの一部の版は[[Wiktionary:即時削除|即時削除]]の[[Wiktionary:即時削除の方針|対象]]となっており、まもなく削除される予定です。 :'''理由:''' {{{2|<span style="color:red">'''理由を記入してください。'''</span>}}} :'''削除対象の版''': {{{1|<span style="color:red">'''版を記入してください。'''</span>}}} もしこのページの削除に同意できなければ、'''記事を適切な内容に改めた上で''' &#123;&#123;即時版指定削除&#125;&#125; を取り除いてください。 [[Wiktionary:管理者|管理者]]へ - 削除の前に[[Special:Whatlinkshere/{{FULLPAGENAME}}|リンク元]]と[{{fullurl:{{FULLPAGENAME}}|action=history}} 履歴]のチェックを忘れずに |}<includeonly>{{#if: {{{nocat|}}} | | [[Category:即時削除]] }}</includeonly><noinclude> {{Documentation}}[[カテゴリ:お知らせテンプレート]][[カテゴリ:削除関連のテンプレート]] </noinclude> ie9qhefw7knfg8sk9wg18oejthspczj 2340986 2340836 2026-09-02T09:17:12Z ~2026-47774-81 133325 2340986 wikitext text/x-wiki 2340987 2340986 2026-09-02T09:25:36Z 20041027 tatsu 59964 [[特別:Contributions/~2026-47774-81|~2026-47774-81]]による編集を取り消し、NDGによる最新版へと差し戻しを行いました。 2340821 wikitext text/x-wiki {| style="border:solid #999 1px; margin:1ex auto; font-size: small;width:80%;background:#FDD;" |- | [[ファイル:OOUI_icon-like_to_delete_2.svg|50px|即時削除]] | このページの一部の版は[[Wiktionary:即時削除|即時削除]]の[[Wiktionary:即時削除の方針|対象]]となっており、まもなく削除される予定です。 :'''理由:''' {{{2|<span style="color:red">'''理由を記入してください。'''</span>}}} :'''削除対象の版''': {{{1|<span style="color:red">'''版を記入してください。'''</span>}}} もしこのページの削除に同意できなければ、'''記事を適切な内容に改めた上で''' &#123;&#123;即時版指定削除&#125;&#125; を取り除いてください。 [[Wiktionary:管理者|管理者]]へ - 削除の前に[[Special:Whatlinkshere/{{FULLPAGENAME}}|リンク元]]と[{{fullurl:{{FULLPAGENAME}}|action=history}} 履歴]のチェックを忘れずに |}<includeonly>{{#if: {{{nocat|}}} | | [[Category:即時削除]] }}</includeonly><noinclude> {{Documentation}}[[カテゴリ:お知らせテンプレート]][[カテゴリ:削除関連のテンプレート]] </noinclude> ie9qhefw7knfg8sk9wg18oejthspczj 2341172 2340987 2026-09-02T10:49:18Z ~2026-47913-22 133326 jawpみたいにspmode全帯域ブロックされるまで荒らし続けるぞ 2341172 wikitext text/x-wiki 利用者:Kuroco2k/ru-verb-form.js 2 604886 2340829 2026-09-02T06:06:38Z Kuroco2k 84207 初稿 2340829 javascript text/javascript (function () { 'use strict'; if (mw.config.get('wgAction') !== 'edit') { return; } const textbox = document.getElementById('wpTextbox1'); if (!textbox) { return; } if (!document.referrer) { return; } const title = mw.config.get('wgTitle'); const referrer = new URL(document.referrer); referrer.searchParams.delete('action'); referrer.searchParams.delete('redlink'); referrer.searchParams.delete('veaction'); referrer.searchParams.set('action', 'render'); fetch(referrer.toString(), { credentials: 'same-origin' }) .then(r => r.text()) .then(html => { const doc = new DOMParser().parseFromString(html, 'text/html'); const posMap = { 'ru-conj': 'verb', 'ru-verb': 'verb', 'ru-noun-table': 'noun', 'ru-decl-noun': 'noun', 'ru-decl-noun-irreg': 'noun', 'ru-decl-noun-unc': 'noun', 'ru-decl-noun-pl': 'noun', 'ru-decl-adj': 'adj', 'ru-adj-table': 'adj', 'ru-decl-pronoun': 'pron', 'ru-decl-num': 'num' }; function getTemplateName(table) { const dataMw = table.getAttribute('data-mw'); if (!dataMw) { return null; } try { const data = JSON.parse(dataMw); for (const part of data.parts || []) { if ( part.template && part.template.target && part.template.target.wt ) { return part.template.target.wt .trim() .replace(/^Template:/i, '') .trim(); } } } catch (e) { console.warn('data-mw の解析に失敗:', e); } return null; } function getLinkInfo(a) { const lemma = a.textContent.trim(); const href = a.getAttribute('href'); if (!href) { return { lemma, page: null }; } try { const url = new URL(href, location.origin); const page = decodeURIComponent( url.pathname .replace(/^\/wiki\//, '') ); return { lemma, page }; } catch (e) { return { lemma, page: null }; } } function getNoms(table) { const cells = [ ...table.querySelectorAll('th, td') ]; for (const cell of cells) { const dataValues = [ cell.dataset.case, cell.dataset.number, cell.dataset.gender, cell.dataset.form ] .filter(Boolean) .join('|'); if ( dataValues.includes('nom') || dataValues.includes('nominative') || dataValues.includes('主格') ) { const strong = cell.querySelector('strong'); if (strong) { return strong.textContent.trim(); } } const text = cell.textContent .replace(/\s+/g, '') .trim(); if ( text.includes('主格') && ( text.includes('|s') || text.includes('s') ) ) { const strong = cell.querySelector('strong'); if (strong) { return strong.textContent.trim(); } } } return null; } function getInfls(doc, table) { const infls = []; table.querySelectorAll( 'span[class*="-form-of"]' ).forEach(span => { const classes = span.className.split(/\s+/); const infl = classes .find(c => c.endsWith('-form-of')) ?.replace(/-form-of$/, ''); if (infl) { infls.push(infl); } }); if (!infls.length) { table.querySelectorAll( '[data-pos], [data-form], [data-inflection]' ).forEach(el => { const value = el.dataset.pos || el.dataset.form || el.dataset.inflection; if (value) { infls.push(value.trim()); } }); } return [ ...new Set( infls.filter(Boolean) ) ]; } const tables = [ ...doc.querySelectorAll('table[data-mw]') ]; if (!tables.length) { return; } let targetTable = null; let templateName = null; for (const table of tables) { const name = getTemplateName(table); if (name && posMap[name]) { targetTable = table; templateName = name; break; } } if (!targetTable || !templateName) { return; } const pos = posMap[templateName]; const links = [ ...targetTable.querySelectorAll('a') ]; let lemma = null; let page = null; for (const a of links) { const info = getLinkInfo(a); if (!info.lemma || !info.page) { continue; } if ( info.page.startsWith('Special:') || info.page.startsWith('Template:') || info.page.startsWith('Category:') ) { continue; } lemma = info.lemma; page = info.page; break; } if (!lemma || !page) { return; } const noms = getNoms(targetTable); if (!noms) { console.warn( '✖' ); return; } const infls = getInfls(doc, targetTable); if (!infls.length) { console.warn( 'infls が取得できません' ); return; } let headTemplate; if (page !== lemma) { headTemplate = `{{head|ru|${pos}|head=${lemma}}}`; } else { headTemplate = `{{head|ru|${pos}}}`; } let newText = `=={{L|ru}}== ===${pos}=== ${headTemplate} #{{inflection of+|ru|${noms}||${infls.join('|;|')}}}`; if (page === title && lemma !== title) { newText = `#{{inflection of+|ru|${noms}||${infls.join('|;|')}}}`; } window.addVerbform('ru', newText); const summary = document.getElementById('wpSummary'); if (summary && !summary.value) { summary.value = '新規作成'; } }) .catch(console.error); })(); t1f73ppxcwt4k7rhznkxjnosb4qvm8m 2340840 2340829 2026-09-02T06:27:20Z Kuroco2k 84207 2340840 javascript text/javascript (function () { 'use strict'; if (mw.config.get('wgAction') !== 'edit') { return; } const textbox = document.getElementById('wpTextbox1'); if (!textbox) { return; } if (!document.referrer) { return; } const title = mw.config.get('wgTitle'); const referrer = new URL(document.referrer); referrer.searchParams.delete('action'); referrer.searchParams.delete('redlink'); referrer.searchParams.delete('veaction'); referrer.searchParams.set('action', 'render'); fetch(referrer.toString(), { credentials: 'same-origin' }) .then(r => r.text()) .then(html => { const doc = new DOMParser().parseFromString(html, 'text/html'); const posMap = { 'ru-conj': 'verb', 'ru-verb': 'verb', 'ru-noun-table': 'noun', 'ru-decl-noun': 'noun', 'ru-decl-noun-irreg': 'noun', 'ru-decl-noun-unc': 'noun', 'ru-decl-noun-pl': 'noun', 'ru-decl-adj': 'adj', 'ru-adj-table': 'adj', 'ru-decl-pronoun': 'pron', 'ru-decl-num': 'num' }; function getTemplateName(table) { const dataMw = table.getAttribute('data-mw'); if (!dataMw) { return null; } try { const data = JSON.parse(dataMw); for (const part of data.parts || []) { if ( part.template && part.template.target && part.template.target.wt ) { return part.template.target.wt .trim() .replace(/^テンプレート:/i, '') .trim(); } } } catch (e) { console.warn('data-mw の解析に失敗:', e); } return null; } function getLinkInfo(a) { const lemma = a.textContent.trim(); const href = a.getAttribute('href'); if (!href) { return { lemma, page: null }; } try { const url = new URL(href, location.origin); const page = decodeURIComponent( url.pathname .replace(/^\/wiki\//, '') ); return { lemma, page }; } catch (e) { return { lemma, page: null }; } } function getNoms(table) { const cells = [ ...table.querySelectorAll('th, td') ]; for (const cell of cells) { const dataValues = [ cell.dataset.case, cell.dataset.number, cell.dataset.gender, cell.dataset.form ] .filter(Boolean) .join('|'); if ( dataValues.includes('nom') || dataValues.includes('nominative') || dataValues.includes('主格') ) { const strong = cell.querySelector('strong'); if (strong) { return strong.textContent.trim(); } } const text = cell.textContent .replace(/\s+/g, '') .trim(); if ( text.includes('主格') && ( text.includes('|s') || text.includes('s') ) ) { const strong = cell.querySelector('strong'); if (strong) { return strong.textContent.trim(); } } } return null; } function getInfls(doc, table) { const infls = []; table.querySelectorAll( 'span[class*="-form-of"]' ).forEach(span => { const classes = span.className.split(/\s+/); const infl = classes .find(c => c.endsWith('-form-of')) ?.replace(/-form-of$/, ''); if (infl) { infls.push(infl); } }); if (!infls.length) { table.querySelectorAll( '[data-pos], [data-form], [data-inflection]' ).forEach(el => { const value = el.dataset.pos || el.dataset.form || el.dataset.inflection; if (value) { infls.push(value.trim()); } }); } return [ ...new Set( infls.filter(Boolean) ) ]; } const tables = [ ...doc.querySelectorAll('table[data-mw]') ]; if (!tables.length) { return; } let targetTable = null; let templateName = null; for (const table of tables) { const name = getTemplateName(table); if (name && posMap[name]) { targetTable = table; templateName = name; break; } } if (!targetTable || !templateName) { return; } const pos = posMap[templateName]; const links = [ ...targetTable.querySelectorAll('a') ]; let lemma = null; let page = null; for (const a of links) { const info = getLinkInfo(a); if (!info.lemma || !info.page) { continue; } if ( info.page.startsWith('Special:') || info.page.startsWith('Template:') || info.page.startsWith('Category:') ) { continue; } lemma = info.lemma; page = info.page; break; } if (!lemma || !page) { return; } const noms = getNoms(targetTable); if (!noms) { console.warn( '✖' ); return; } const infls = getInfls(doc, targetTable); if (!infls.length) { console.warn( 'infls が取得できません' ); return; } let headTemplate; if (page !== lemma) { headTemplate = `{{head|ru|${pos}|head=${lemma}}}`; } else { headTemplate = `{{head|ru|${pos}}}`; } let newText = `=={{L|ru}}== ===${pos}=== ${headTemplate} #{{inflection of+|ru|${noms}||${infls.join('|;|')}}}`; if (page === title && lemma !== title) { newText = `#{{inflection of+|ru|${noms}||${infls.join('|;|')}}}`; } window.addVerbform('ru', newText); const summary = document.getElementById('wpSummary'); if (summary && !summary.value) { summary.value = '新規作成'; } }) .catch(console.error); })(); 907mof4hlmnkoeykkjb3yp5lt0oqcfp 2340842 2340840 2026-09-02T06:32:46Z Kuroco2k 84207 2340842 javascript text/javascript (function () { 'use strict'; if (mw.config.get('wgAction') !== 'edit') { return; } const textbox = document.getElementById('wpTextbox1'); if (!textbox) { return; } if (!document.referrer) { return; } const title = mw.config.get('wgTitle'); const referrer = new URL(document.referrer); referrer.searchParams.delete('action'); referrer.searchParams.delete('redlink'); referrer.searchParams.delete('veaction'); referrer.searchParams.set('action', 'render'); fetch(referrer.toString(), { credentials: 'same-origin' }) .then(r => r.text()) .then(html => { const doc = new DOMParser().parseFromString(html, 'text/html'); const posMap = { 'ru-conj': 'verb', 'ru-verb': 'verb', 'ru-noun-table': 'noun', 'ru-decl-noun': 'noun', 'ru-decl-noun-irreg': 'noun', 'ru-decl-noun-unc': 'noun', 'ru-decl-noun-pl': 'noun', 'ru-decl-adj': 'adj', 'ru-adj-table': 'adj', 'ru-decl-pronoun': 'pron', 'ru-decl-num': 'num' }; function getTemplateName(table) { const dataMw = table.getAttribute('data-mw'); if (!dataMw) { return null; } try { const data = JSON.parse(dataMw); for (const part of data.parts || []) { if ( part.template && part.template.target && part.template.target.wt ) { return part.template.target.wt.trim(); } } } catch (e) { console.warn('data-mw の解析に失敗:', e); } return null; } function getLinkInfo(a) { const lemma = a.textContent.trim(); const href = a.getAttribute('href'); if (!href) { return { lemma, page: null }; } try { const url = new URL(href, location.origin); const page = decodeURIComponent( url.pathname .replace(/^\/wiki\//, '') ); return { lemma, page }; } catch (e) { return { lemma, page: null }; } } function getNoms(table) { const cells = [ ...table.querySelectorAll('th, td') ]; for (const cell of cells) { const dataValues = [ cell.dataset.case, cell.dataset.number, cell.dataset.gender, cell.dataset.form ] .filter(Boolean) .join('|'); if ( dataValues.includes('nom') || dataValues.includes('nominative') || dataValues.includes('主格') ) { const strong = cell.querySelector('strong'); if (strong) { return strong.textContent.trim(); } } const text = cell.textContent .replace(/\s+/g, '') .trim(); if ( text.includes('主格') && ( text.includes('|s') || text.includes('s') ) ) { const strong = cell.querySelector('strong'); if (strong) { return strong.textContent.trim(); } } } return null; } function getInfls(doc, table) { const infls = []; table.querySelectorAll( 'span[class*="-form-of"]' ).forEach(span => { const classes = span.className.split(/\s+/); const infl = classes .find(c => c.endsWith('-form-of')) ?.replace(/-form-of$/, ''); if (infl) { infls.push(infl); } }); if (!infls.length) { table.querySelectorAll( '[data-pos], [data-form], [data-inflection]' ).forEach(el => { const value = el.dataset.pos || el.dataset.form || el.dataset.inflection; if (value) { infls.push(value.trim()); } }); } return [ ...new Set( infls.filter(Boolean) ) ]; } const tables = [ ...doc.querySelectorAll('table[data-mw]') ]; if (!tables.length) { return; } let targetTable = null; let templateName = null; for (const table of tables) { const name = getTemplateName(table); if (name && posMap[name]) { targetTable = table; templateName = name; break; } } if (!targetTable || !templateName) { return; } const pos = posMap[templateName]; const links = [ ...targetTable.querySelectorAll('a') ]; let lemma = null; let page = null; for (const a of links) { const info = getLinkInfo(a); if (!info.lemma || !info.page) { continue; } if ( info.page.startsWith('Special:') || info.page.startsWith('Template:') || info.page.startsWith('Category:') ) { continue; } lemma = info.lemma; page = info.page; break; } if (!lemma || !page) { return; } const noms = getNoms(targetTable); if (!noms) { console.warn( '✖' ); return; } const infls = getInfls(doc, targetTable); if (!infls.length) { console.warn( 'infls が取得できません' ); return; } let headTemplate; if (page !== lemma) { headTemplate = `{{head|ru|${pos}|head=${lemma}}}`; } else { headTemplate = `{{head|ru|${pos}}}`; } let newText = `=={{L|ru}}== ===${pos}=== ${headTemplate} #{{inflection of+|ru|${noms}||${infls.join('|;|')}}}`; if (page === title && lemma !== title) { newText = `#{{inflection of+|ru|${noms}||${infls.join('|;|')}}}`; } window.addVerbform('ru', newText); const summary = document.getElementById('wpSummary'); if (summary && !summary.value) { summary.value = '新規作成'; } }) .catch(console.error); })(); idwbiiaarbhsk5io84utgpc92xkj42t 2340843 2340842 2026-09-02T06:37:54Z Kuroco2k 84207 2340843 javascript text/javascript (function () { 'use strict'; if (mw.config.get('wgAction') !== 'edit') { return; } const textbox = document.getElementById('wpTextbox1'); if (!textbox) { return; } if (!document.referrer) { return; } const title = mw.config.get('wgTitle'); const referrer = new URL(document.referrer); referrer.searchParams.delete('action'); referrer.searchParams.delete('redlink'); referrer.searchParams.delete('veaction'); referrer.searchParams.set('action', 'render'); fetch(referrer.toString(), { credentials: 'same-origin' }) .then(r => r.text()) .then(html => { const doc = new DOMParser().parseFromString(html, 'text/html'); const posMap = { 'ru-conj': 'verb', 'ru-verb': 'verb', 'ru-noun-table': 'noun', 'ru-decl-noun': 'noun', 'ru-decl-noun-irreg': 'noun', 'ru-decl-noun-unc': 'noun', 'ru-decl-noun-pl': 'noun', 'ru-decl-adj': 'adj', 'ru-adj-table': 'adj', 'ru-decl-pronoun': 'pron', 'ru-decl-num': 'num' }; function getTemplateName(table) { const dataMw = table.getAttribute('data-mw'); if (!dataMw) { return null; } try { const data = JSON.parse(dataMw); for (const part of data.parts || []) { if ( part.template && part.template.target && part.template.target.wt ) { return part.template.target.wt.trim(); } } } catch (e) { console.warn('data-mw の解析に失敗:', e); } return null; } function getLinkInfo(a) { const lemma = a.textContent.trim(); const href = a.getAttribute('href'); if (!href) { return { lemma, page: null }; } try { const url = new URL(href, location.origin); const page = decodeURIComponent( url.pathname .replace(/^\/wiki\//, '') ); return { lemma, page }; } catch (e) { return { lemma, page: null }; } } const tables = [ ...doc.querySelectorAll('table[data-mw]') ]; if (!tables.length) { return; } let targetTable = null; let templateName = null; for (const table of tables) { const name = getTemplateName(table); if (name && posMap[name]) { targetTable = table; templateName = name; break; } } if (!targetTable || !templateName) { return; } const pos = posMap[templateName]; const links = [ ...targetTable.querySelectorAll('a') ]; let lemma = null; let page = null; for (const a of links) { const info = getLinkInfo(a); if (!info.lemma || !info.page) { continue; } if ( info.page.startsWith('Special:') || info.page.startsWith('Template:') || info.page.startsWith('Category:') ) { continue; } lemma = info.lemma; page = info.page; break; } if (!lemma || !page) { return; } const spans = [ ...doc.querySelectorAll('span.Cyrl.form-of.lang-ru') ]; const noms = spans .find(span => { const classes = span.className.split(/\s+/); return classes.includes('主格|s-form-of'); }) ?.querySelector('strong') ?.textContent .trim(); if (!noms) { console.warn( '✖' ); return; } const infls = [...new Set( spans .map(span => { const classes = span.className.split(/\s+/); return classes .find(c => c.endsWith('-form-of')) ?.replace(/-form-of$/, ''); }) .filter(Boolean) )]; if (!infls.length) { console.warn( 'infls が取得できません' ); return; } let headTemplate; if (page !== lemma) { headTemplate = `{{head|ru|${pos} form|head=${lemma}}}`; } else { headTemplate = `{{head|ru|${pos} form}}`; } let newText = `=={{L|ru}}== ===${pos}=== ${headTemplate} #{{inflection of+|ru|${noms}||${infls.join('|;|')}}}`; if (page === title && lemma !== title) { newText = `#{{inflection of+|ru|${noms}||${infls.join('|;|')}}}`; } window.addVerbform('ru', newText); const summary = document.getElementById('wpSummary'); if (summary && !summary.value) { summary.value = '新規作成'; } }) .catch(console.error); })(); krz7x4vs0jsx5trrd1ma9qrjc2tns99 2340844 2340843 2026-09-02T06:45:33Z Kuroco2k 84207 2340844 javascript text/javascript (function () { 'use strict'; if (mw.config.get('wgAction') !== 'edit') { return; } const textbox = document.getElementById('wpTextbox1'); if (!textbox) { return; } if (!document.referrer) { return; } const title = mw.config.get('wgTitle'); const referrer = new URL(document.referrer); referrer.searchParams.delete('action'); referrer.searchParams.delete('redlink'); referrer.searchParams.delete('veaction'); referrer.searchParams.set('action', 'render'); fetch(referrer.toString(), { credentials: 'same-origin' }) .then(r => r.text()) .then(html => { const doc = new DOMParser().parseFromString(html, 'text/html'); const posMap = { 'ru-conj': 'verb', 'ru-verb': 'verb', 'ru-noun-table': 'noun', 'ru-decl-noun': 'noun', 'ru-decl-noun-irreg': 'noun', 'ru-decl-noun-unc': 'noun', 'ru-decl-noun-pl': 'noun', 'ru-decl-adj': 'adj', 'ru-adj-table': 'adj', 'ru-decl-pronoun': 'pron', 'ru-decl-num': 'num' }; function getTemplateName(table) { const dataMw = table.getAttribute('data-mw'); if (!dataMw) { return null; } try { const data = JSON.parse(dataMw); for (const part of data.parts || []) { if ( part.template && part.template.target && part.template.target.wt ) { return part.template.target.wt.trim(); } } } catch (e) { console.warn('data-mw の解析に失敗:', e); } return null; } function getLinkInfo(a) { const lemma = a.textContent.trim(); const href = a.getAttribute('href'); if (!href) { return { lemma, page: null }; } try { const url = new URL(href, location.origin); const page = decodeURIComponent( url.pathname .replace(/^\/wiki\//, '') ); return { lemma, page }; } catch (e) { return { lemma, page: null }; } } const tables = [ ...doc.querySelectorAll('table[data-mw]') ]; if (!tables.length) { return; } let targetTable = null; let templateName = null; for (const table of tables) { const name = getTemplateName(table); if (name && posMap[name]) { targetTable = table; templateName = name; break; } } if (!targetTable || !templateName) { return; } const pos = posMap[templateName]; const links = [ ...targetTable.querySelectorAll('a') ]; let lemma = null; let page = null; for (const a of links) { const info = getLinkInfo(a); if (!info.lemma || !info.page) { continue; } if ( info.page.startsWith('Special:') || info.page.startsWith('Template:') || info.page.startsWith('Category:') ) { continue; } lemma = info.lemma; page = info.page; break; } if (!lemma || !page) { return; } const spans = [ ...doc.querySelectorAll('span.Cyrl.form-of.lang-ru') ]; const noms = spans .find(span => span.className .split(/\s+/) .includes('主格|s-form-of') ) ?.querySelector('strong') ?.textContent .trim(); const infls = [...new Set( spans .map(span => { const classes = span.className.split(/\s+/); return classes .find(c => c.endsWith('-form-of')) ?.replace(/-form-of$/, ''); }) .filter(Boolean) )]; if (!infls.length) { console.warn( 'infls が取得できません' ); return; } let headTemplate; if (page !== lemma) { headTemplate = `{{head|ru|${pos} form|head=${lemma}}}`; } else { headTemplate = `{{head|ru|${pos} form}}`; } let newText = `=={{L|ru}}== ===${pos}=== ${headTemplate} #{{inflection of+|ru|${noms}||${infls.join('|;|')}}}`; if (page === title && lemma !== title) { newText = `#{{inflection of+|ru|${noms}||${infls.join('|;|')}}}`; } window.addVerbform('ru', newText); const summary = document.getElementById('wpSummary'); if (summary && !summary.value) { summary.value = '新規作成'; } }) .catch(console.error); })(); l1m76zxiu0uxuthxx7drqz5ktxpzwyo 2340845 2340844 2026-09-02T06:49:48Z Kuroco2k 84207 2340845 javascript text/javascript (function () { 'use strict'; if (mw.config.get('wgAction') !== 'edit') { return; } const textbox = document.getElementById('wpTextbox1'); if (!textbox) { return; } if (!document.referrer) { return; } const title = mw.config.get('wgTitle'); const referrer = new URL(document.referrer); referrer.searchParams.delete('action'); referrer.searchParams.delete('redlink'); referrer.searchParams.delete('veaction'); referrer.searchParams.set('action', 'render'); fetch(referrer.toString(), { credentials: 'same-origin' }) .then(r => r.text()) .then(html => { const doc = new DOMParser().parseFromString(html, 'text/html'); let pos = null; for (const table of doc.querySelectorAll('table[data-mw]')) { const dataMw = table.getAttribute('data-mw'); if (!dataMw) { continue; } try { const data = JSON.parse(dataMw); for (const part of data.parts || []) { const templateName = part.template?.target?.wt?.trim(); if (templateName === 'ru-noun-table') { pos = 'noun'; break; } } } catch (e) { console.error('data-mw の解析に失敗:', e); } if (pos) { break; } } if (!pos) { return; } const lemmaLink = [...doc.querySelectorAll('a[href]')] .find(a => { const href = a.getAttribute('href'); if (!href) { return false; } try { const url = new URL(href, location.origin); const path = decodeURIComponent(url.pathname); if (!path.startsWith('/wiki/')) { return false; } const page = path.slice('/wiki/'.length); return page === title || a.textContent.trim() !== ''; } catch (e) { return false; } }); if (!lemmaLink) { return; } const lemma = lemmaLink.textContent.trim(); const lemmaUrl = new URL( lemmaLink.getAttribute('href'), location.origin ); const page = decodeURIComponent( lemmaUrl.pathname.slice('/wiki/'.length) ); if (!lemma || !page) { return; } const spans = [ ...doc.querySelectorAll( 'span.Cyrl.form-of.lang-ru' ) ]; if (!spans.length) { return; } const nomsSpan = spans.find(span => span.className .split(/\s+/) .includes('主格|s-form-of') ); if (!nomsSpan) { return; } const noms = nomsSpan .querySelector('strong') ?.textContent .trim(); if (!noms) { return; } const infls = [ ...new Set( spans .map(span => { const classes = span.className.split(/\s+/); return classes .find(c => c.endsWith('-form-of')) ?.replace(/-form-of$/, ''); }) .filter(Boolean) ) ]; if (!infls.length) { return; } const head = lemma !== page ? `{{head|ru|${pos} form|head=${lemma}}}` : `{{head|ru|${pos} form}}`; let newText; if (page === title && lemma !== title) { newText = `#{{inflection of+|ru|${noms}||${infls.join('|;|')}}}`; } else { newText = `=={{L|ru}}== ==={{${pos}}}=== ${head} #{{inflection of+|ru|${noms}||${infls.join('|;|')}}}`; } window.addVerbform('ru', newText); const summary = document.getElementById('wpSummary'); if (summary && !summary.value) { summary.value = '新規作成'; } }) .catch(console.error); })(); k1atdt0cgbcbivz617ckjpwi87u8ew4 利用者:Kuroco2k/ru-verb-form/test.js 2 604887 2340846 2026-09-02T06:52:25Z Kuroco2k 84207 あまりにもエラーが出すぎる 2340846 javascript text/javascript (function () { 'use strict'; console.log('[ru-form] START'); if (mw.config.get('wgAction') !== 'edit') { console.log('[ru-form] STOP: edit page ではない'); return; } const textbox = document.getElementById('wpTextbox1'); if (!textbox) { console.log('[ru-form] STOP: wpTextbox1 がない'); return; } if (!document.referrer) { console.log('[ru-form] STOP: referrer がない'); return; } const title = mw.config.get('wgTitle'); console.log('[ru-form] title =', title); const referrer = new URL(document.referrer); referrer.searchParams.delete('action'); referrer.searchParams.delete('redlink'); referrer.searchParams.delete('veaction'); referrer.searchParams.set('action', 'render'); console.log('[ru-form] fetch =', referrer.toString()); fetch(referrer.toString(), { credentials: 'same-origin' }) .then(r => { console.log('[ru-form] fetch response =', r.status); if (!r.ok) { throw new Error('HTTP ' + r.status); } return r.text(); }) .then(html => { console.log('[ru-form] HTML取得成功'); console.log('[ru-form] HTML length =', html.length); const doc = new DOMParser().parseFromString(html, 'text/html'); console.log('[ru-form] DOMParser OK'); // ================================ // 1. ru-noun-table // ================================ const tables = [...doc.querySelectorAll('table[data-mw]')]; console.log( '[ru-form] data-mw付きtable =', tables.length ); let pos = null; for (const table of tables) { const dataMw = table.getAttribute('data-mw'); try { const data = JSON.parse(dataMw); for (const part of data.parts || []) { const templateName = part.template?.target?.wt?.trim(); console.log( '[ru-form] template =', templateName ); if (templateName === 'ru-noun-table') { pos = 'noun'; break; } } } catch (e) { console.log( '[ru-form] data-mw JSON parse失敗', e ); } if (pos) { break; } } console.log('[ru-form] pos =', pos); if (!pos) { console.log( '[ru-form] STOP: ru-noun-table が見つからない' ); return; } // ================================ // 2. form-of span // ================================ const spans = [ ...doc.querySelectorAll( 'span.Cyrl.form-of.lang-ru' ) ]; console.log( '[ru-form] Russian form-of spans =', spans.length ); if (!spans.length) { console.log( '[ru-form] STOP: Russian form-of がない' ); return; } // ================================ // 3. noms // ================================ const nomsSpan = spans.find(span => span.className .split(/\s+/) .includes('主格|s-form-of') ); console.log( '[ru-form] nomsSpan =', nomsSpan ); if (!nomsSpan) { console.log( '[ru-form] STOP: 主格|s-form-of がない' ); return; } const strong = nomsSpan.querySelector('strong'); console.log( '[ru-form] noms strong =', strong ); const noms = strong?.textContent.trim(); console.log( '[ru-form] noms =', noms ); if (!noms) { console.log( '[ru-form] STOP: noms が取れない' ); return; } // ================================ // 4. infls // ================================ const infls = [ ...new Set( spans .map(span => { const classes = span.className.split(/\s+/); return classes .find(c => c.endsWith('-form-of') ) ?.replace( /-form-of$/, '' ); }) .filter(Boolean) ) ]; console.log( '[ru-form] infls =', infls ); if (!infls.length) { console.log( '[ru-form] STOP: infls が空' ); return; } // ================================ // 5. aタグ // ================================ const links = [...doc.querySelectorAll('a[href]')]; console.log( '[ru-form] a[href] =', links.length ); links.forEach((a, i) => { console.log( '[ru-form] LINK', i, 'a.text =', a.textContent.trim(), 'a.href =', a.href ); }); // とりあえず title と一致するページへのリンクを探す const lemmaLink = links.find(a => { try { const url = new URL( a.getAttribute('href'), location.origin ); const path = decodeURIComponent( url.pathname ); if (!path.startsWith('/wiki/')) { return false; } const page = path.slice('/wiki/'.length); return page === title; } catch (e) { return false; } }); console.log( '[ru-form] lemmaLink =', lemmaLink ); if (!lemmaLink) { console.log( '[ru-form] STOP: lemmaLink が見つからない' ); return; } const lemma = lemmaLink.textContent.trim(); const lemmaUrl = new URL( lemmaLink.getAttribute('href'), location.origin ); const page = decodeURIComponent( lemmaUrl.pathname .slice('/wiki/'.length) ); console.log( '[ru-form] lemma =', lemma ); console.log( '[ru-form] page =', page ); // ================================ // 6. 出力 // ================================ const head = lemma !== page ? `{{head|ru|${pos}|head=${lemma}}}` : `{{head|ru|${pos}}}`; let newText; if (page === title && lemma !== title) { newText = `#{{inflection of+|ru|${noms}||${infls.join('|;|')}}}`; } else { newText = `=={{L|ru}}== ===${pos}=== ${head} #{{inflection of+|ru|${noms}||${infls.join('|;|')}}}`; } console.log( '[ru-form] newText =\n' + newText ); // ================================ // 7. addVerbform // ================================ console.log( '[ru-form] addVerbform 実行' ); window.addVerbform('ru', newText); console.log( '[ru-form] 完了' ); const summary = document.getElementById('wpSummary'); if (summary && !summary.value) { summary.value = '新規作成'; } }) .catch(error => { console.error( '[ru-form] ERROR:', error ); }); })(); dgfn55rx0mr8jogt2ht7faqy7cqskbh 2340848 2340846 2026-09-02T06:55:44Z Kuroco2k 84207 2340848 javascript text/javascript (function () { 'use strict'; console.log('[ru-form] START'); if (mw.config.get('wgAction') !== 'edit') { console.log('[ru-form] STOP: edit page ではない'); return; } const textbox = document.getElementById('wpTextbox1'); if (!textbox) { console.log('[ru-form] STOP: wpTextbox1 がない'); return; } if (!document.referrer) { console.log('[ru-form] STOP: referrer がない'); return; } const title = mw.config.get('wgTitle'); console.log('[ru-form] title =', title); const referrer = new URL(document.referrer); referrer.searchParams.delete('action'); referrer.searchParams.delete('redlink'); referrer.searchParams.delete('veaction'); referrer.searchParams.set('action', 'render'); console.log('[ru-form] fetch =', referrer.toString()); fetch(referrer.toString(), { credentials: 'same-origin' }) .then(r => { console.log('[ru-form] fetch response =', r.status); if (!r.ok) { throw new Error('HTTP ' + r.status); } return r.text(); }) .then(html => { console.log('[ru-form] HTML取得成功'); console.log('[ru-form] HTML length =', html.length); const doc = new DOMParser().parseFromString(html, 'text/html'); console.log('[ru-form] DOMParser OK'); // ================================ // 1. ru-noun-table // ================================ const tables = [...doc.querySelectorAll('[data-mw]')]; console.log( '[ru-form] data-mw付き要素 =', tables.length ); let pos = null; for (const table of tables) { const dataMw = table.getAttribute('data-mw'); try { const data = JSON.parse(dataMw); for (const part of data.parts || []) { const templateName = part.template?.target?.wt?.trim(); console.log( '[ru-form] template =', templateName ); if (templateName === 'ru-noun-table') { pos = 'noun'; break; } } } catch (e) { console.log( '[ru-form] data-mw JSON parse失敗', e ); } if (pos) { break; } } console.log('[ru-form] pos =', pos); if (!pos) { console.log( '[ru-form] STOP: ru-noun-table が見つからない' ); return; } // ================================ // 2. form-of span // ================================ const spans = [ ...doc.querySelectorAll( 'span.Cyrl.form-of.lang-ru' ) ]; console.log( '[ru-form] Russian form-of spans =', spans.length ); if (!spans.length) { console.log( '[ru-form] STOP: Russian form-of がない' ); return; } // ================================ // 3. noms // ================================ const nomsSpan = spans.find(span => span.className .split(/\s+/) .includes('主格|s-form-of') ); console.log( '[ru-form] nomsSpan =', nomsSpan ); if (!nomsSpan) { console.log( '[ru-form] STOP: 主格|s-form-of がない' ); return; } const strong = nomsSpan.querySelector('strong'); console.log( '[ru-form] noms strong =', strong ); const noms = strong?.textContent.trim(); console.log( '[ru-form] noms =', noms ); if (!noms) { console.log( '[ru-form] STOP: noms が取れない' ); return; } // ================================ // 4. infls // ================================ const infls = [ ...new Set( spans .map(span => { const classes = span.className.split(/\s+/); return classes .find(c => c.endsWith('-form-of') ) ?.replace( /-form-of$/, '' ); }) .filter(Boolean) ) ]; console.log( '[ru-form] infls =', infls ); if (!infls.length) { console.log( '[ru-form] STOP: infls が空' ); return; } // ================================ // 5. aタグ // ================================ const links = [...doc.querySelectorAll('a[href]')]; console.log( '[ru-form] a[href] =', links.length ); links.forEach((a, i) => { console.log( '[ru-form] LINK', i, 'a.text =', a.textContent.trim(), 'a.href =', a.href ); }); // とりあえず title と一致するページへのリンクを探す const lemmaLink = links.find(a => { try { const url = new URL( a.getAttribute('href'), location.origin ); const path = decodeURIComponent( url.pathname ); if (!path.startsWith('/wiki/')) { return false; } const page = path.slice('/wiki/'.length); return page === title; } catch (e) { return false; } }); console.log( '[ru-form] lemmaLink =', lemmaLink ); if (!lemmaLink) { console.log( '[ru-form] STOP: lemmaLink が見つからない' ); return; } const lemma = lemmaLink.textContent.trim(); const lemmaUrl = new URL( lemmaLink.getAttribute('href'), location.origin ); const page = decodeURIComponent( lemmaUrl.pathname .slice('/wiki/'.length) ); console.log( '[ru-form] lemma =', lemma ); console.log( '[ru-form] page =', page ); // ================================ // 6. 出力 // ================================ const head = lemma !== page ? `{{head|ru|${pos}|head=${lemma}}}` : `{{head|ru|${pos}}}`; let newText; if (page === title && lemma !== title) { newText = `#{{inflection of+|ru|${noms}||${infls.join('|;|')}}}`; } else { newText = `=={{L|ru}}== ===${pos}=== ${head} #{{inflection of+|ru|${noms}||${infls.join('|;|')}}}`; } console.log( '[ru-form] newText =\n' + newText ); // ================================ // 7. addVerbform // ================================ console.log( '[ru-form] addVerbform 実行' ); window.addVerbform('ru', newText); console.log( '[ru-form] 完了' ); const summary = document.getElementById('wpSummary'); if (summary && !summary.value) { summary.value = '新規作成'; } }) .catch(error => { console.error( '[ru-form] ERROR:', error ); }); })(); ej3h13v08smrww7hqaprxzo8wd33cxm 2340849 2340848 2026-09-02T06:59:31Z Kuroco2k 84207 2340849 javascript text/javascript (function () { 'use strict'; console.log('[ru-form] START'); if (mw.config.get('wgAction') !== 'edit') { console.log('[ru-form] STOP: edit page ではない'); return; } const textbox = document.getElementById('wpTextbox1'); if (!textbox) { console.log('[ru-form] STOP: wpTextbox1 がない'); return; } if (!document.referrer) { console.log('[ru-form] STOP: referrer がない'); return; } const title = mw.config.get('wgTitle'); console.log('[ru-form] title =', title); const referrer = new URL(document.referrer); referrer.searchParams.delete('action'); referrer.searchParams.delete('redlink'); referrer.searchParams.delete('veaction'); referrer.searchParams.set('action', 'render'); console.log('[ru-form] fetch =', referrer.toString()); fetch(referrer.toString(), { credentials: 'same-origin' }) .then(r => { console.log('[ru-form] fetch response =', r.status); if (!r.ok) { throw new Error('HTTP ' + r.status); } return r.text(); }) .then(html => { console.log('[ru-form] HTML取得成功'); console.log('[ru-form] HTML length =', html.length); const doc = new DOMParser().parseFromString(html, 'text/html'); console.log('[ru-form] DOMParser OK'); // ================================ // 1. ru-noun-table // ================================ const tables = [...doc.querySelectorAll('[data-mw]')]; console.log( '[ru-form] data-mw付き要素 =', tables.length ); let pos = null; for (const table of tables) { const dataMw = table.getAttribute('data-mw'); try { const data = JSON.parse(dataMw); for (const part of data.parts || []) { const templateName = part.template?.target?.wt?.trim(); console.log( '[ru-form] template =', templateName ); if (templateName === 'ru-noun-table') { pos = 'noun'; break; } } } catch (e) { console.log( '[ru-form] data-mw JSON parse失敗', e ); } if (pos) { break; } } console.log('[ru-form] pos =', pos); if (!pos) { console.log( '[ru-form] STOP: ru-noun-table が見つからない' ); return; } // ================================ // 2. form-of span // ================================ const spans = [ ...pos.querySelectorAll('span.Cyrl.form-of.lang-ru') ]; console.log( '[ru-form] Russian form-of spans =', spans.length ); if (!spans.length) { console.log( '[ru-form] STOP: Russian form-of がない' ); return; } // ================================ // 3. noms // ================================ const nomsSpan = spans.find(span => span.className .split(/\s+/) .includes('主格|s-form-of') ); console.log( '[ru-form] nomsSpan =', nomsSpan ); if (!nomsSpan) { console.log( '[ru-form] STOP: 主格|s-form-of がない' ); return; } const strong = nomsSpan.querySelector('strong'); console.log( '[ru-form] noms strong =', strong ); const noms = strong?.textContent.trim(); console.log( '[ru-form] noms =', noms ); if (!noms) { console.log( '[ru-form] STOP: noms が取れない' ); return; } // ================================ // 4. infls // ================================ const infls = [ ...new Set( spans .map(span => { const classes = span.className.split(/\s+/); return classes .find(c => c.endsWith('-form-of') ) ?.replace( /-form-of$/, '' ); }) .filter(Boolean) ) ]; console.log( '[ru-form] infls =', infls ); if (!infls.length) { console.log( '[ru-form] STOP: infls が空' ); return; } // ================================ // 5. aタグ // ================================ const links = [...doc.querySelectorAll('a[href]')]; console.log( '[ru-form] a[href] =', links.length ); links.forEach((a, i) => { console.log( '[ru-form] LINK', i, 'a.text =', a.textContent.trim(), 'a.href =', a.href ); }); // とりあえず title と一致するページへのリンクを探す const lemmaLink = links.find(a => { try { const url = new URL( a.getAttribute('href'), location.origin ); const path = decodeURIComponent( url.pathname ); if (!path.startsWith('/wiki/')) { return false; } const page = path.slice('/wiki/'.length); return page === title; } catch (e) { return false; } }); console.log( '[ru-form] lemmaLink =', lemmaLink ); if (!lemmaLink) { console.log( '[ru-form] STOP: lemmaLink が見つからない' ); return; } const lemma = lemmaLink.textContent.trim(); const lemmaUrl = new URL( lemmaLink.getAttribute('href'), location.origin ); const page = decodeURIComponent( lemmaUrl.pathname .slice('/wiki/'.length) ); console.log( '[ru-form] lemma =', lemma ); console.log( '[ru-form] page =', page ); // ================================ // 6. 出力 // ================================ const head = lemma !== page ? `{{head|ru|${pos}|head=${lemma}}}` : `{{head|ru|${pos}}}`; let newText; if (page === title && lemma !== title) { newText = `#{{inflection of+|ru|${noms}||${infls.join('|;|')}}}`; } else { newText = `=={{L|ru}}== ===${pos}=== ${head} #{{inflection of+|ru|${noms}||${infls.join('|;|')}}}`; } console.log( '[ru-form] newText =\n' + newText ); // ================================ // 7. addVerbform // ================================ console.log( '[ru-form] addVerbform 実行' ); window.addVerbform('ru', newText); console.log( '[ru-form] 完了' ); const summary = document.getElementById('wpSummary'); if (summary && !summary.value) { summary.value = '新規作成'; } }) .catch(error => { console.error( '[ru-form] ERROR:', error ); }); })(); ajhya1p1472bp38ecanw64e6bosii0b 2340850 2340849 2026-09-02T07:02:26Z Kuroco2k 84207 2340850 javascript text/javascript (function () { 'use strict'; if (mw.config.get('wgAction') !== 'edit') { return; } const textbox = document.getElementById('wpTextbox1'); if (!textbox) { return; } if (!document.referrer) { return; } const title = mw.config.get('wgTitle'); const referrer = new URL(document.referrer); referrer.searchParams.delete('action'); referrer.searchParams.delete('redlink'); referrer.searchParams.delete('veaction'); referrer.searchParams.set('action', 'render'); fetch(referrer.toString(), { credentials: 'same-origin' }) .then(r => r.text()) .then(html => { const doc = new DOMParser().parseFromString(html, 'text/html'); // ======================================== // 1. ru-noun-table を探す // ======================================== let nounTable = null; let pos = null; for (const element of doc.querySelectorAll('[data-mw]')) { const dataMw = element.getAttribute('data-mw'); if (!dataMw) { continue; } try { const data = JSON.parse(dataMw); for (const part of data.parts || []) { const templateName = part.template?.target?.wt?.trim(); if (templateName === 'ru-noun-table') { nounTable = element; pos = 'noun'; break; } } } catch (e) { console.error( '[ru-form] data-mw parse error:', e ); } if (nounTable) { break; } } if (!nounTable || !pos) { return; } // ======================================== // 2. ロシア語の form-of span // ======================================== /* * nounTable の中だけを見る。 * * ここが重要。 * ページ全体の span を拾わない。 */ const spans = [ ...nounTable.querySelectorAll( 'span.Cyrl.form-of.lang-ru' ) ]; if (!spans.length) { return; } // ======================================== // 3. noms // ======================================== /* * class に * * 主格|s-form-of * * を持つ span を探す。 * * noms は、その中の strong の文字列。 */ const nomsSpan = spans.find(span => span.className .split(/\s+/) .includes('主格|s-form-of') ); if (!nomsSpan) { return; } const noms = nomsSpan .querySelector('strong') ?.textContent .trim(); if (!noms) { return; } // ======================================== // 4. infls // ======================================== const infls = [ ...new Set( spans .map(span => { const classes = span.className.split(/\s+/); return classes .find(c => c.endsWith('-form-of') ) ?.replace( /-form-of$/, '' ); }) .filter(Boolean) ) ]; if (!infls.length) { return; } // ======================================== // 5. lemma / page // ======================================== /* * noms の span には a タグはない。 * * lemma / page は別の a タグから取得する。 * * href のページ名が現在の title と一致する * リンクを探す。 */ const lemmaLink = [...doc.querySelectorAll('a[href]')] .find(a => { try { const url = new URL( a.getAttribute('href'), location.origin ); if (!url.pathname.startsWith('/wiki/')) { return false; } const page = decodeURIComponent( url.pathname.slice('/wiki/'.length) ); return page === title; } catch (e) { return false; } }); if (!lemmaLink) { return; } const lemma = lemmaLink.textContent.trim(); const lemmaUrl = new URL( lemmaLink.getAttribute('href'), location.origin ); const page = decodeURIComponent( lemmaUrl.pathname.slice('/wiki/'.length) ); if (!lemma || !page) { return; } // ======================================== // 6. head // ======================================== const head = lemma !== page ? `{{head|ru|${pos}|head=${lemma}}}` : `{{head|ru|${pos}}}`; // ======================================== // 7. 出力 // ======================================== let newText; /* * page が現在のページ名と同じ * かつ lemma が現在のページ名と違う * * → head より下だけ出力 */ if (page === title && lemma !== title) { newText = `#{{inflection of+|ru|${noms}||${infls.join('|;|')}}}`; } else { newText = `=={{L|ru}}== ===${pos}=== ${head} #{{inflection of+|ru|${noms}||${infls.join('|;|')}}}`; } // ======================================== // 8. 出力 // ======================================== window.addVerbform('ru', newText); const summary = document.getElementById('wpSummary'); if (summary && !summary.value) { summary.value = '新規作成'; } }) .catch(console.error); })(); f3ivphn7epbkxwxdiv5v4r1ylzo6x7v 2340851 2340850 2026-09-02T07:09:28Z Kuroco2k 84207 2340851 javascript text/javascript (function () { 'use strict'; if (mw.config.get('wgAction') !== 'edit') { return; } const textbox = document.getElementById('wpTextbox1'); if (!textbox) { return; } if (!document.referrer) { return; } const title = mw.config.get('wgTitle'); const referrer = new URL(document.referrer); referrer.searchParams.delete('action'); referrer.searchParams.delete('redlink'); referrer.searchParams.delete('veaction'); referrer.searchParams.set('action', 'render'); fetch(referrer.toString(), { credentials: 'same-origin' }) .then(r => r.text()) .then(html => { const doc = new DOMParser().parseFromString(html, 'text/html'); const forms = []; /* * ロシア語の活用テンプレート名 → 品詞 * * 必要に応じてここへ追加・変更する。 */ const posMap = { 'ru-conj': 'verb', 'ru-verb': 'verb', 'ru-noun-table': 'noun', 'ru-decl-noun': 'noun', 'ru-decl-noun-irreg': 'noun', 'ru-decl-noun-unc': 'noun', 'ru-decl-noun-pl': 'noun', 'ru-decl-adj': 'adj', 'ru-adj-table': 'adj', 'ru-decl-pronoun': 'pron', 'ru-decl-num': 'num' }; /* * 主格の s-form-of を含む箇所から、 * <strong class="selflink">○○</strong> * の ○○ を取得する。 */ const noms = (() => { const nodes = [ ...doc.querySelectorAll( '[class*="s-form-of"]' ) ]; for (const node of nodes) { if (!node.textContent.includes('主格')) { continue; } const selflink = node.querySelector('strong.selflink'); if (selflink) { const value = selflink.textContent.trim(); if (value) { return value; } } } return null; })(); if (!noms) { return; } /* * ロシア語の活用形を探す。 * * div の data-mw に含まれる * 「テンプレート:○○」からテンプレート名を取得する。 */ doc.querySelectorAll('div[data-mw]').forEach(div => { const dataMw = div.getAttribute('data-mw'); if (!dataMw) { return; } const match = dataMw.match( /テンプレート:([^|}"\s]+)/u ); if (!match) { return; } const template = match[1]; /* * テンプレート名から品詞を取得。 */ const pos = posMap[template]; if (!pos) { return; } /* * div 内の項目名とリンク先ページ名を取得。 * * lemma = <a>...</a> の表示文字列 * page = リンク先のページ名 */ const link = div.querySelector('a'); if (!link) { return; } const lemma = link.textContent.trim(); let page = link.getAttribute('title'); if (!page) { const href = link.getAttribute('href'); if (href) { try { page = decodeURIComponent( href.replace(/^.*\/wiki\//, '') ); } catch (e) { page = null; } } } if (!lemma || !page) { return; } /* * 同じ活用形が複数回出てくる場合に備えて、 * 重複をまとめる。 */ forms.push({ lemma, page, template, pos }); }); if (!forms.length) { return; } /* * 品詞・テンプレートごとにまとめる。 */ const groups = new Map(); for (const form of forms) { const key = `${form.template}\t${form.pos}`; if (!groups.has(key)) { groups.set(key, { template: form.template, pos: form.pos, forms: [] }); } groups.get(key).forms.push(form); } const output = []; for (const group of groups.values()) { /* * head の生成。 * * lemma と page が違う場合だけ * |head=lemma を追加する。 */ const head = group.forms[0]; let headTemplate = `{{head|ru|${group.pos} form`; if (head.lemma !== head.page) { headTemplate += `|head=${head.lemma}`; } headTemplate += '}}'; /* * 活用形テンプレート。 * * 必要ならここをロシア語用の * 実際のテンプレート形式に変更する。 */ output.push( `=={{L|ru}}==\n` + `===${group.pos}===\n` + `${headTemplate}\n` + `#{{inflection of+|ru|${noms}||` + `${group.forms .map(f => f.lemma) .filter((v, i, a) => a.indexOf(v) === i) .join('|;|')}}}` ); } const newText = output.join('\n\n'); window.addVerbform('ru', newText); const summary = document.getElementById('wpSummary'); if (summary && !summary.value) { summary.value = '新規作成'; } }) .catch(console.error); })(); ltb30tpyhemppnblpqiymec3fven19s 2340852 2340851 2026-09-02T07:20:15Z Kuroco2k 84207 2340852 javascript text/javascript (function () { 'use strict'; if (mw.config.get('wgAction') !== 'edit') { return; } const textbox = document.getElementById('wpTextbox1'); if (!textbox) { return; } if (!document.referrer) { return; } const title = mw.config.get('wgTitle'); const referrer = new URL(document.referrer); referrer.searchParams.delete('action'); referrer.searchParams.delete('redlink'); referrer.searchParams.delete('veaction'); referrer.searchParams.set('action', 'render'); fetch(referrer.toString(), { credentials: 'same-origin' }) .then(r => r.text()) .then(html => { const doc = new DOMParser().parseFromString( html, 'text/html' ); const forms = []; /* * ロシア語のテンプレート名 → 品詞 * * ここは使用しているテンプレートに合わせて * 追加・変更する。 */ const posMap = { // 動詞 'ru-conj-1a': 'verb', 'ru-conj-1b': 'verb', 'ru-conj-1c': 'verb', 'ru-conj-2a': 'verb', 'ru-conj-2b': 'verb', // 名詞 'ru-decl-noun': 'noun', // 形容詞 'ru-decl-adj': 'adjective' }; /* * ---------------------------------------- * 主格から noms を取得 * ---------------------------------------- * * 「主格」「s-form-of」を含む要素を探し、 * * <strong class="selflink">○○</strong> * * の ○○ を noms とする。 * * まず Cyrl form-of の周辺を探し、 * 見つからなければページ全体から探す。 */ let noms = null; const formSpans = [ ...doc.querySelectorAll('span.Cyrl.form-of') ]; for (const span of formSpans) { const text = span.textContent.trim(); if (!text.includes('主格')) { continue; } const classes = span.className.split(/\s+/); const isSFormOf = classes.some( c => c === 's-form-of' ); if (!isSFormOf) { continue; } const selflink = span.querySelector('strong.selflink'); if (selflink) { noms = selflink.textContent.trim(); break; } /* * span 自身に selflink がない場合は、 * 近い親要素内から探す。 */ const parent = span.parentElement; if (parent) { const parentSelflink = parent.querySelector( 'strong.selflink' ); if (parentSelflink) { noms = parentSelflink.textContent.trim(); break; } } } /* * 主格を取得できなければ処理終了。 */ if (!noms) { return; } /* * ---------------------------------------- * Cyrl form-of を処理 * ---------------------------------------- */ formSpans.forEach(span => { /* * 現在のページ名と一致する活用形だけ処理。 */ const spelling = span.textContent.trim(); if (spelling !== title) { return; } const classes = span.className.split(/\s+/); /* * 言語確認 */ const lang = classes .find(c => c.startsWith('lang-')) ?.slice(5); if (lang !== 'ru') { return; } /* * s-form-of を取得。 * * 例: * s-form-of */ const infl = classes .find(c => c.endsWith('-form-of') ) ?.replace(/-form-of$/, ''); if (!infl) { return; } /* * ------------------------------------ * lemma / page * ------------------------------------ * * lemma: * <a>...</a> の表示文字列 * * page: * リンク先のページ名 */ const link = span.querySelector('a'); if (!link) { return; } const lemma = link.textContent.trim(); /* * MediaWiki のリンクでは title 属性に * ページ名が入っていることが多い。 */ let page = link.getAttribute('title'); /* * title がなければ href から取得。 */ if (!page) { const href = link.getAttribute('href'); if (href) { try { page = decodeURIComponent( href .replace(/^.*\/wiki\//, '') ); } catch (e) { return; } } } if (!lemma || !page) { return; } /* * ------------------------------------ * div[data-mw] からテンプレート名を取得 * ------------------------------------ * * span を含んでいる div[data-mw] を * 上方向に探す。 */ const div = span.closest('div[data-mw]'); if (!div) { return; } const dataMw = div.getAttribute('data-mw'); if (!dataMw) { return; } /* * data-mw から * * テンプレート:○○ * * の ○○ を取得。 */ const templateMatch = dataMw.match( /テンプレート:([^|}"\s]+)/u ); if (!templateMatch) { return; } const template = templateMatch[1]; /* * テンプレート名から品詞を決定。 */ const pos = posMap[template]; if (!pos) { return; } /* * ------------------------------------ * forms に保存 * ------------------------------------ */ forms.push({ lang, lemma, page, infl, template, pos }); }); if (!forms.length) { return; } /* * ---------------------------------------- * 重複除去 * ---------------------------------------- */ const uniqueForms = []; const seen = new Set(); for (const form of forms) { const key = `${form.template}\t` + `${form.pos}\t` + `${form.lemma}\t` + `${form.page}\t` + `${form.infl}`; if (seen.has(key)) { continue; } seen.add(key); uniqueForms.push(form); } /* * ---------------------------------------- * テンプレート・品詞ごとにグループ化 * ---------------------------------------- */ const groups = new Map(); for (const form of uniqueForms) { const key = `${form.template}\t${form.pos}`; if (!groups.has(key)) { groups.set(key, { template: form.template, pos: form.pos, forms: [] }); } groups.get(key).forms.push(form); } /* * ---------------------------------------- * 出力 * ---------------------------------------- */ const outputs = []; for (const group of groups.values()) { /* * head の基準となる lemma/page。 * * 同じグループ内で複数の lemma がある場合は * 最初のものを使用。 */ const first = group.forms[0]; /* * {{head|ru|品詞 form}} * * lemma と page が違う場合: * * {{head|ru|品詞 form|head=lemma}} */ let head = `{{head|ru|${group.pos} form`; if (first.lemma !== first.page) { head += `|head=${first.lemma}`; } head += '}}'; /* * inflection of の語形情報を作成。 */ const infls = [ ...new Set( group.forms.map(f => f.infl) ) ]; const newText = `=={{L|ru}}==\n` + `===${group.pos}===\n` + `${head}\n` + `#{{inflection of+|ru|${noms}||` + `${infls.join('|;|')}}}`; outputs.push(newText); } if (!outputs.length) { return; } /* * 複数グループがある場合は空行で連結。 */ const newText = outputs.join('\n\n'); window.addVerbform('ru', newText); const summary = document.getElementById('wpSummary'); if (summary && !summary.value) { summary.value = '新規作成'; } }) .catch(console.error); })(); 7l4gx20d5211tdxiwa7vqj5pqkxieg7 2340853 2340852 2026-09-02T07:21:31Z Kuroco2k 84207 2340853 javascript text/javascript (function () { 'use strict'; if (mw.config.get('wgAction') !== 'edit') { return; } const textbox = document.getElementById('wpTextbox1'); if (!textbox) { return; } if (!document.referrer) { return; } const title = mw.config.get('wgTitle'); const referrer = new URL(document.referrer); referrer.searchParams.delete('action'); referrer.searchParams.delete('redlink'); referrer.searchParams.delete('veaction'); referrer.searchParams.set('action', 'render'); fetch(referrer.toString(), { credentials: 'same-origin' }) .then(r => r.text()) .then(html => { const doc = new DOMParser().parseFromString( html, 'text/html' ); const forms = []; /* * ロシア語のテンプレート名 → 品詞 * * ここは使用しているテンプレートに合わせて * 追加・変更する。 */ const posMap = { 'ru-conj': 'verb', 'ru-verb': 'verb', 'ru-noun-table': 'noun', 'ru-decl-noun': 'noun', 'ru-decl-noun-irreg': 'noun', 'ru-decl-noun-unc': 'noun', 'ru-decl-noun-pl': 'noun', 'ru-decl-adj': 'adj', 'ru-adj-table': 'adj', 'ru-decl-pronoun': 'pron', 'ru-decl-num': 'num' }; /* * ---------------------------------------- * 主格から noms を取得 * ---------------------------------------- * * 「主格」「s-form-of」を含む要素を探し、 * * <strong class="selflink">○○</strong> * * の ○○ を noms とする。 * * まず Cyrl form-of の周辺を探し、 * 見つからなければページ全体から探す。 */ let noms = null; const formSpans = [ ...doc.querySelectorAll('span.Cyrl.form-of') ]; for (const span of formSpans) { const text = span.textContent.trim(); if (!text.includes('主格')) { continue; } const classes = span.className.split(/\s+/); const isSFormOf = classes.some( c => c === 's-form-of' ); if (!isSFormOf) { continue; } const selflink = span.querySelector('strong.selflink'); if (selflink) { noms = selflink.textContent.trim(); break; } /* * span 自身に selflink がない場合は、 * 近い親要素内から探す。 */ const parent = span.parentElement; if (parent) { const parentSelflink = parent.querySelector( 'strong.selflink' ); if (parentSelflink) { noms = parentSelflink.textContent.trim(); break; } } } /* * 主格を取得できなければ処理終了。 */ if (!noms) { return; } /* * ---------------------------------------- * Cyrl form-of を処理 * ---------------------------------------- */ formSpans.forEach(span => { /* * 現在のページ名と一致する活用形だけ処理。 */ const spelling = span.textContent.trim(); if (spelling !== title) { return; } const classes = span.className.split(/\s+/); /* * 言語確認 */ const lang = classes .find(c => c.startsWith('lang-')) ?.slice(5); if (lang !== 'ru') { return; } /* * s-form-of を取得。 * * 例: * s-form-of */ const infl = classes .find(c => c.endsWith('-form-of') ) ?.replace(/-form-of$/, ''); if (!infl) { return; } /* * ------------------------------------ * lemma / page * ------------------------------------ * * lemma: * <a>...</a> の表示文字列 * * page: * リンク先のページ名 */ const link = span.querySelector('a'); if (!link) { return; } const lemma = link.textContent.trim(); /* * MediaWiki のリンクでは title 属性に * ページ名が入っていることが多い。 */ let page = link.getAttribute('title'); /* * title がなければ href から取得。 */ if (!page) { const href = link.getAttribute('href'); if (href) { try { page = decodeURIComponent( href .replace(/^.*\/wiki\//, '') ); } catch (e) { return; } } } if (!lemma || !page) { return; } /* * ------------------------------------ * div[data-mw] からテンプレート名を取得 * ------------------------------------ * * span を含んでいる div[data-mw] を * 上方向に探す。 */ const div = span.closest('div[data-mw]'); if (!div) { return; } const dataMw = div.getAttribute('data-mw'); if (!dataMw) { return; } /* * data-mw から * * テンプレート:○○ * * の ○○ を取得。 */ const templateMatch = dataMw.match( /テンプレート:([^|}"\s]+)/u ); if (!templateMatch) { return; } const template = templateMatch[1]; /* * テンプレート名から品詞を決定。 */ const pos = posMap[template]; if (!pos) { return; } /* * ------------------------------------ * forms に保存 * ------------------------------------ */ forms.push({ lang, lemma, page, infl, template, pos }); }); if (!forms.length) { return; } /* * ---------------------------------------- * 重複除去 * ---------------------------------------- */ const uniqueForms = []; const seen = new Set(); for (const form of forms) { const key = `${form.template}\t` + `${form.pos}\t` + `${form.lemma}\t` + `${form.page}\t` + `${form.infl}`; if (seen.has(key)) { continue; } seen.add(key); uniqueForms.push(form); } /* * ---------------------------------------- * テンプレート・品詞ごとにグループ化 * ---------------------------------------- */ const groups = new Map(); for (const form of uniqueForms) { const key = `${form.template}\t${form.pos}`; if (!groups.has(key)) { groups.set(key, { template: form.template, pos: form.pos, forms: [] }); } groups.get(key).forms.push(form); } /* * ---------------------------------------- * 出力 * ---------------------------------------- */ const outputs = []; for (const group of groups.values()) { /* * head の基準となる lemma/page。 * * 同じグループ内で複数の lemma がある場合は * 最初のものを使用。 */ const first = group.forms[0]; /* * {{head|ru|品詞 form}} * * lemma と page が違う場合: * * {{head|ru|品詞 form|head=lemma}} */ let head = `{{head|ru|${group.pos} form`; if (first.lemma !== first.page) { head += `|head=${first.lemma}`; } head += '}}'; /* * inflection of の語形情報を作成。 */ const infls = [ ...new Set( group.forms.map(f => f.infl) ) ]; const newText = `=={{L|ru}}==\n` + `===${group.pos}===\n` + `${head}\n` + `#{{inflection of+|ru|${noms}||` + `${infls.join('|;|')}}}`; outputs.push(newText); } if (!outputs.length) { return; } /* * 複数グループがある場合は空行で連結。 */ const newText = outputs.join('\n\n'); window.addVerbform('ru', newText); const summary = document.getElementById('wpSummary'); if (summary && !summary.value) { summary.value = '新規作成'; } }) .catch(console.error); })(); o2ra9s9snx18krnzzsojbtysnim0jiq 2340854 2340853 2026-09-02T07:28:33Z Kuroco2k 84207 2340854 javascript text/javascript (function () { 'use strict'; if (mw.config.get('wgAction') !== 'edit') { return; } const textbox = document.getElementById('wpTextbox1'); if (!textbox) { return; } if (!document.referrer) { return; } const title = mw.config.get('wgTitle'); const referrer = new URL(document.referrer); referrer.searchParams.delete('action'); referrer.searchParams.delete('redlink'); referrer.searchParams.delete('veaction'); referrer.searchParams.set('action', 'render'); fetch(referrer.toString(), { credentials: 'same-origin' }) .then(r => r.text()) .then(html => { const doc = new DOMParser().parseFromString( html, 'text/html' ); const forms = []; /* * ロシア語のテンプレート名 → 品詞 * * ここは使用しているテンプレートに合わせて * 追加・変更する。 */ const posMap = { 'ru-conj': 'verb', 'ru-verb': 'verb', 'ru-noun-table': 'noun', 'ru-decl-noun': 'noun', 'ru-decl-noun-irreg': 'noun', 'ru-decl-noun-unc': 'noun', 'ru-decl-noun-pl': 'noun', 'ru-decl-adj': 'adj', 'ru-adj-table': 'adj', 'ru-decl-pronoun': 'pron', 'ru-decl-num': 'num' }; /* * ---------------------------------------- * 主格から noms を取得 * ---------------------------------------- * * 「主格」「s-form-of」を含む要素を探し、 * * <strong class="selflink">○○</strong> * * の ○○ を noms とする。 * * まず Cyrl form-of の周辺を探し、 * 見つからなければページ全体から探す。 */ let noms = null; console.log('[ru-form] start'); const formSpans = [ ...doc.querySelectorAll('span.Cyrl.form-of') ]; console.log('[ru-form] Cyrl form-of:', formSpans.length); for (const span of formSpans) { const text = span.textContent.trim(); if (!text.includes('主格')) { continue; } const classes = span.className.split(/\s+/); const isSFormOf = classes.some( c => c === 's-form-of' ); if (!isSFormOf) { continue; } const selflink = span.querySelector('strong.selflink'); if (selflink) { noms = selflink.textContent.trim(); break; } /* * span 自身に selflink がない場合は、 * 近い親要素内から探す。 */ const parent = span.parentElement; if (parent) { const parentSelflink = parent.querySelector( 'strong.selflink' ); if (parentSelflink) { noms = parentSelflink.textContent.trim(); break; } } } /* * 主格を取得できなければ処理終了。 */ if (!noms) { return; } /* * ---------------------------------------- * Cyrl form-of を処理 * ---------------------------------------- */ formSpans.forEach(span => { /* * 現在のページ名と一致する活用形だけ処理。 */ const spelling = span.textContent.trim(); if (spelling !== title) { return; } const classes = span.className.split(/\s+/); /* * 言語確認 */ const lang = classes .find(c => c.startsWith('lang-')) ?.slice(5); if (lang !== 'ru') { return; } /* * s-form-of を取得。 * * 例: * s-form-of */ const infl = classes .find(c => c.endsWith('-form-of') ) ?.replace(/-form-of$/, ''); if (!infl) { return; } /* * ------------------------------------ * lemma / page * ------------------------------------ * * lemma: * <a>...</a> の表示文字列 * * page: * リンク先のページ名 */ const link = span.querySelector('a'); if (!link) { return; } const lemma = link.textContent.trim(); /* * MediaWiki のリンクでは title 属性に * ページ名が入っていることが多い。 */ let page = link.getAttribute('title'); /* * title がなければ href から取得。 */ if (!page) { const href = link.getAttribute('href'); if (href) { try { page = decodeURIComponent( href .replace(/^.*\/wiki\//, '') ); } catch (e) { return; } } } if (!lemma || !page) { return; } /* * ------------------------------------ * div[data-mw] からテンプレート名を取得 * ------------------------------------ * * span を含んでいる div[data-mw] を * 上方向に探す。 */ const div = span.closest('div[data-mw]'); if (!div) { return; } const dataMw = div.getAttribute('data-mw'); if (!dataMw) { return; } /* * data-mw から * * テンプレート:○○ * * の ○○ を取得。 */ const templateMatch = dataMw.match( /テンプレート:([^|}"\s]+)/u ); if (!templateMatch) { return; } const template = templateMatch[1]; /* * テンプレート名から品詞を決定。 */ const pos = posMap[template]; if (!pos) { return; } /* * ------------------------------------ * forms に保存 * ------------------------------------ */ forms.push({ lang, lemma, page, infl, template, pos }); }); if (!forms.length) { return; } /* * ---------------------------------------- * 重複除去 * ---------------------------------------- */ const uniqueForms = []; const seen = new Set(); for (const form of forms) { const key = `${form.template}\t` + `${form.pos}\t` + `${form.lemma}\t` + `${form.page}\t` + `${form.infl}`; if (seen.has(key)) { continue; } seen.add(key); uniqueForms.push(form); } /* * ---------------------------------------- * テンプレート・品詞ごとにグループ化 * ---------------------------------------- */ const groups = new Map(); for (const form of uniqueForms) { const key = `${form.template}\t${form.pos}`; if (!groups.has(key)) { groups.set(key, { template: form.template, pos: form.pos, forms: [] }); } groups.get(key).forms.push(form); } /* * ---------------------------------------- * 出力 * ---------------------------------------- */ const outputs = []; for (const group of groups.values()) { /* * head の基準となる lemma/page。 * * 同じグループ内で複数の lemma がある場合は * 最初のものを使用。 */ const first = group.forms[0]; /* * {{head|ru|品詞 form}} * * lemma と page が違う場合: * * {{head|ru|品詞 form|head=lemma}} */ let head = `{{head|ru|${group.pos} form`; if (first.lemma !== first.page) { head += `|head=${first.lemma}`; } head += '}}'; /* * inflection of の語形情報を作成。 */ const infls = [ ...new Set( group.forms.map(f => f.infl) ) ]; const newText = `=={{L|ru}}==\n` + `===${group.pos}===\n` + `${head}\n` + `#{{inflection of+|ru|${noms}||` + `${infls.join('|;|')}}}`; outputs.push(newText); } if (!outputs.length) { return; } /* * 複数グループがある場合は空行で連結。 */ const newText = outputs.join('\n\n'); window.addVerbform('ru', newText); const summary = document.getElementById('wpSummary'); if (summary && !summary.value) { summary.value = '新規作成'; } }) .catch(console.error); })(); 15q751j3sy1i1vrd0ym6rpzzvmc0xh8 2340855 2340854 2026-09-02T07:32:31Z Kuroco2k 84207 2340855 javascript text/javascript (function () { 'use strict'; if (mw.config.get('wgAction') !== 'edit') { return; } const textbox = document.getElementById('wpTextbox1'); if (!textbox) { return; } if (!document.referrer) { return; } const title = mw.config.get('wgTitle'); const referrer = new URL(document.referrer); referrer.searchParams.delete('action'); referrer.searchParams.delete('redlink'); referrer.searchParams.delete('veaction'); referrer.searchParams.set('action', 'render'); fetch(referrer.toString(), { credentials: 'same-origin' }) .then(r => r.text()) .then(html => { const doc = new DOMParser().parseFromString( html, 'text/html' ); const forms = []; /* * テンプレート名 → 品詞 * * 実際に使うテンプレートに応じて * ここを追加する。 */ const posMap = { 'ru-conj-1a': 'verb', 'ru-conj-1b': 'verb', 'ru-conj-1c': 'verb', 'ru-conj-2a': 'verb', 'ru-conj-2b': 'verb' }; /* * ロシア語の form-of を取得 */ const spans = [ ...doc.querySelectorAll('span.Cyrl.form-of') ]; spans.forEach(span => { const spelling = span.textContent.trim(); /* * 現在作成しようとしているページ名と * 一致するものだけ処理。 */ if (spelling !== title) { return; } const classes = span.className.split(/\s+/); /* * 言語 */ const lang = classes .find(c => c.startsWith('lang-')) ?.slice(5); if (lang !== 'ru') { return; } /* * origin-○○ * * 例: * origin-говорить * ↓ * noms = говорить */ const noms = classes .find(c => c.startsWith('origin-')) ?.slice(7); /* * ○○-form-of * * 例: * nom-form-of * ↓ * infl = nom */ const infl = classes .find(c => c.endsWith('-form-of')) ?.replace(/-form-of$/, ''); if (!lang || !noms || !infl) { return; } /* * ------------------------------------ * lemma / page * ------------------------------------ */ const link = span.querySelector('a'); if (!link) { return; } /* * aタグの表示文字列 */ const lemma = link.textContent.trim(); /* * リンク先ページ名 */ let page = link.getAttribute('title'); /* * title がない場合は href から取得 */ if (!page) { const href = link.getAttribute('href'); if (href) { try { page = decodeURIComponent( href.replace(/^.*\/wiki\//, '') ); } catch (e) { return; } } } if (!lemma || !page) { return; } /* * ------------------------------------ * div[data-mw] からテンプレート名 * ------------------------------------ */ const div = span.closest('div[data-mw]'); if (!div) { return; } const dataMw = div.getAttribute('data-mw'); if (!dataMw) { return; } /* * 「テンプレート:○○」の ○○ を取得 */ const templateMatch = dataMw.match( /テンプレート:([^|}"\s]+)/u ); if (!templateMatch) { return; } const template = templateMatch[1]; /* * テンプレート名から品詞を決定 */ const pos = posMap[template]; if (!pos) { return; } forms.push({ lang, noms, infl, lemma, page, template, pos }); }); if (!forms.length) { return; } /* * 品詞・テンプレートごとにまとめる */ const groups = new Map(); forms.forEach(form => { const key = `${form.template}\t${form.pos}\t${form.noms}`; if (!groups.has(key)) { groups.set(key, { template: form.template, pos: form.pos, noms: form.noms, forms: [] }); } groups.get(key).forms.push(form); }); const outputs = []; groups.forEach(group => { /* * head */ const first = group.forms[0]; let head = `{{head|ru|${group.pos} form`; /* * lemma と page が違う場合のみ * |head=lemma を付ける。 */ if (first.lemma !== first.page) { head += `|head=${first.lemma}`; } head += '}}'; /* * 活用情報 */ const infls = [ ...new Set( group.forms.map(f => f.infl) ) ]; const newText = `=={{L|ru}}==\n` + `===${group.pos}===\n` + `${head}\n` + `#{{inflection of+|ru|${group.noms}||` + `${infls.join('|;|')}}}`; outputs.push(newText); }); if (!outputs.length) { return; } const newText = outputs.join('\n\n'); window.addVerbform('ru', newText); const summary = document.getElementById('wpSummary'); if (summary && !summary.value) { summary.value = '新規作成'; } }) .catch(console.error); })(); hjcawndjmyu7bm58x7ottxf68x8h63u 2340856 2340855 2026-09-02T07:33:30Z Kuroco2k 84207 2340856 javascript text/javascript (function () { 'use strict'; if (mw.config.get('wgAction') !== 'edit') { return; } const textbox = document.getElementById('wpTextbox1'); if (!textbox) { return; } if (!document.referrer) { return; } const title = mw.config.get('wgTitle'); const referrer = new URL(document.referrer); referrer.searchParams.delete('action'); referrer.searchParams.delete('redlink'); referrer.searchParams.delete('veaction'); referrer.searchParams.set('action', 'render'); fetch(referrer.toString(), { credentials: 'same-origin' }) .then(r => r.text()) .then(html => { const doc = new DOMParser().parseFromString( html, 'text/html' ); const forms = []; /* * テンプレート名 → 品詞 * * 実際に使うテンプレートに応じて * ここを追加する。 */ const posMap = { 'ru-conj': 'verb', 'ru-verb': 'verb', 'ru-noun-table': 'noun', 'ru-decl-noun': 'noun', 'ru-decl-noun-irreg': 'noun', 'ru-decl-noun-unc': 'noun', 'ru-decl-noun-pl': 'noun', 'ru-decl-adj': 'adj', 'ru-adj-table': 'adj', 'ru-decl-pronoun': 'pron', 'ru-decl-num': 'num' }; /* * ロシア語の form-of を取得 */ const spans = [ ...doc.querySelectorAll('span.Cyrl.form-of') ]; spans.forEach(span => { const spelling = span.textContent.trim(); /* * 現在作成しようとしているページ名と * 一致するものだけ処理。 */ if (spelling !== title) { return; } const classes = span.className.split(/\s+/); /* * 言語 */ const lang = classes .find(c => c.startsWith('lang-')) ?.slice(5); if (lang !== 'ru') { return; } /* * origin-○○ * * 例: * origin-говорить * ↓ * noms = говорить */ const noms = classes .find(c => c.startsWith('origin-')) ?.slice(7); /* * ○○-form-of * * 例: * nom-form-of * ↓ * infl = nom */ const infl = classes .find(c => c.endsWith('-form-of')) ?.replace(/-form-of$/, ''); if (!lang || !noms || !infl) { return; } /* * ------------------------------------ * lemma / page * ------------------------------------ */ const link = span.querySelector('a'); if (!link) { return; } /* * aタグの表示文字列 */ const lemma = link.textContent.trim(); /* * リンク先ページ名 */ let page = link.getAttribute('title'); /* * title がない場合は href から取得 */ if (!page) { const href = link.getAttribute('href'); if (href) { try { page = decodeURIComponent( href.replace(/^.*\/wiki\//, '') ); } catch (e) { return; } } } if (!lemma || !page) { return; } /* * ------------------------------------ * div[data-mw] からテンプレート名 * ------------------------------------ */ const div = span.closest('div[data-mw]'); if (!div) { return; } const dataMw = div.getAttribute('data-mw'); if (!dataMw) { return; } /* * 「テンプレート:○○」の ○○ を取得 */ const templateMatch = dataMw.match( /テンプレート:([^|}"\s]+)/u ); if (!templateMatch) { return; } const template = templateMatch[1]; /* * テンプレート名から品詞を決定 */ const pos = posMap[template]; if (!pos) { return; } forms.push({ lang, noms, infl, lemma, page, template, pos }); }); if (!forms.length) { return; } /* * 品詞・テンプレートごとにまとめる */ const groups = new Map(); forms.forEach(form => { const key = `${form.template}\t${form.pos}\t${form.noms}`; if (!groups.has(key)) { groups.set(key, { template: form.template, pos: form.pos, noms: form.noms, forms: [] }); } groups.get(key).forms.push(form); }); const outputs = []; groups.forEach(group => { /* * head */ const first = group.forms[0]; let head = `{{head|ru|${group.pos} form`; /* * lemma と page が違う場合のみ * |head=lemma を付ける。 */ if (first.lemma !== first.page) { head += `|head=${first.lemma}`; } head += '}}'; /* * 活用情報 */ const infls = [ ...new Set( group.forms.map(f => f.infl) ) ]; const newText = `=={{L|ru}}==\n` + `==={{${group.pos}}}===\n` + `${head}\n` + `#{{inflection of+|ru|${group.noms}||` + `${infls.join('|;|')}}}`; outputs.push(newText); }); if (!outputs.length) { return; } const newText = outputs.join('\n\n'); window.addVerbform('ru', newText); const summary = document.getElementById('wpSummary'); if (summary && !summary.value) { summary.value = '新規作成'; } }) .catch(console.error); })(); 0sv9rxrfqt5ssr3e9qins9us7ihm59y 2340857 2340856 2026-09-02T07:38:10Z Kuroco2k 84207 2340857 javascript text/javascript (function () { 'use strict'; if (mw.config.get('wgAction') !== 'edit') { return; } const textbox = document.getElementById('wpTextbox1'); if (!textbox) { return; } if (!document.referrer) { return; } const title = mw.config.get('wgTitle'); /* * ---------------------------------------- * テンプレート名から品詞を決める * ---------------------------------------- */ function getPos(template) { /* * まず明示指定 * 必要ならここに追加 */ const posMap = { 'ru-conj': 'verb', 'ru-verb': 'verb', 'ru-noun-table': 'noun', 'ru-decl-noun': 'noun', 'ru-decl-noun-irreg': 'noun', 'ru-decl-noun-unc': 'noun', 'ru-decl-noun-pl': 'noun', 'ru-decl-adj': 'adj', 'ru-adj-table': 'adj', 'ru-decl-pronoun': 'pron', 'ru-decl-num': 'num' }; if (posMap[template]) { return posMap[template]; } /* * ロシア語テンプレートの一般的な命名に対応 */ if (/^ru-conj(?:-|$)/i.test(template)) { return 'verb'; } if (/^ru-noun(?:-|$)/i.test(template)) { return 'noun'; } if (/^ru-adj(?:-|$)/i.test(template)) { return 'adjective'; } if (/^ru-pron(?:-|$)/i.test(template)) { return 'pronoun'; } if (/^ru-adv(?:-|$)/i.test(template)) { return 'adverb'; } if (/^ru-num(?:-|$)/i.test(template)) { return 'numeral'; } return null; } /* * ---------------------------------------- * data-mw からテンプレート名を取得 * ---------------------------------------- */ function getTemplateNames(div) { const dataMw = div.getAttribute('data-mw'); if (!dataMw) { return []; } const names = []; /* * data-mw は JSON のことが多い */ try { const json = JSON.parse(dataMw); function walk(obj) { if (!obj || typeof obj !== 'object') { return; } /* * template.target.wt */ if ( obj.template && obj.template.target && typeof obj.template.target.wt === 'string' ) { names.push( obj.template.target.wt .trim() .replace(/^テンプレート:/u, '') .replace(/^Template:/i, '') ); } if (Array.isArray(obj)) { obj.forEach(walk); } else { Object.values(obj).forEach(walk); } } walk(json); } catch (e) { /* * JSON として読めなかった場合の保険 */ } /* * JSON から取れなかった場合、 * 「テンプレート:○○」形式も試す */ if (!names.length) { const matches = dataMw.matchAll( /(?:テンプレート:|Template:)([^|}"\s]+)/giu ); for (const match of matches) { names.push(match[1]); } } return [...new Set(names)]; } /* * ---------------------------------------- * リンク先ページ名を正規化 * ---------------------------------------- */ function getPageName(link) { let page = link.getAttribute('title'); if (page) { return page.trim().replace(/_/g, ' '); } const href = link.getAttribute('href'); if (!href) { return null; } try { const url = new URL( href, location.origin ); page = decodeURIComponent( url.pathname.replace(/^\/wiki\//, '') ); return page.replace(/_/g, ' ').trim(); } catch (e) { return null; } } /* * ---------------------------------------- * 元ページを render * ---------------------------------------- */ const referrer = new URL(document.referrer); referrer.searchParams.delete('action'); referrer.searchParams.delete('redlink'); referrer.searchParams.delete('veaction'); referrer.searchParams.set('action', 'render'); fetch(referrer.toString(), { credentials: 'same-origin' }) .then(r => { if (!r.ok) { throw new Error( `render取得失敗: ${r.status}` ); } return r.text(); }) .then(html => { const doc = new DOMParser().parseFromString( html, 'text/html' ); const forms = []; /* * ロシア語・キリル文字の form-of */ const spans = [ ...doc.querySelectorAll( 'span.Cyrl.form-of' ) ]; console.log( '[ru-form] span.Cyrl.form-of:', spans.length ); spans.forEach(span => { const classes = [...span.classList]; /* * lang-ru * * lang class が無い場合でも * Cyrl.form-of なので ru として扱う。 */ const lang = classes .find(c => c.startsWith('lang-')) ?.slice(5) || 'ru'; if (lang !== 'ru') { return; } /* * -------------------------------- * noms = origin-○○ * -------------------------------- */ const originClass = classes.find( c => c.startsWith('origin-') ); if (!originClass) { console.log( '[ru-form] origin- が無い:', span ); return; } const noms = originClass.slice(7); /* * -------------------------------- * infl = ○○-form-of の ○○ * -------------------------------- */ const inflClass = classes.find( c => c.endsWith('-form-of') ); if (!inflClass) { console.log( '[ru-form] *-form-of が無い:', span ); return; } const infl = inflClass.replace( /-form-of$/, '' ); /* * -------------------------------- * aタグ * -------------------------------- */ const link = span.querySelector('a'); if (!link) { console.log( '[ru-form] aタグが無い:', span ); return; } /* * lemma = aタグの文字列 */ const lemma = link.textContent.trim(); /* * page = リンク先ページ名 */ const page = getPageName(link); if (!lemma || !page) { console.log( '[ru-form] lemma/page取得失敗:', { lemma, page, link } ); return; } /* * -------------------------------- * 一番近い data-mw * -------------------------------- */ const div = span.closest( 'div[data-mw]' ); if (!div) { console.log( '[ru-form] div[data-mw] が無い:', span ); return; } const templates = getTemplateNames(div); if (!templates.length) { console.log( '[ru-form] template取得失敗:', div.getAttribute('data-mw') ); return; } /* * この中から品詞を判定できる * テンプレートを探す */ let template = null; let pos = null; for (const t of templates) { const p = getPos(t); if (p) { template = t; pos = p; break; } } if (!template || !pos) { console.log( '[ru-form] 品詞判定失敗:', templates ); return; } /* * 取得成功 */ forms.push({ lang, noms, infl, lemma, page, template, pos }); console.log( '[ru-form] 取得:', { noms, infl, lemma, page, template, pos } ); }); /* * ---------------------------------------- * 結果が無ければ終了 * ---------------------------------------- */ if (!forms.length) { console.log( '[ru-form] forms = 0' ); return; } /* * ---------------------------------------- * noms + pos ごとにまとめる * ---------------------------------------- */ const groups = new Map(); forms.forEach(form => { const key = `${form.pos}\t${form.noms}`; if (!groups.has(key)) { groups.set(key, { pos: form.pos, noms: form.noms, forms: [] }); } groups .get(key) .forms .push(form); }); /* * ---------------------------------------- * 本文生成 * ---------------------------------------- */ const outputs = []; groups.forEach(group => { const first = group.forms[0]; /* * infl を重複排除 */ const infls = [ ...new Set( group.forms.map( f => f.infl ) ) ]; /* * head */ let head = `{{head|ru|${group.pos} form`; /* * lemma と page が違う場合だけ * head=lemma */ if ( first.lemma !== first.page ) { head += `|head=${first.lemma}`; } head += '}}'; const newText = `=={{L|ru}}==\n` + `===${group.pos}===\n` + `${head}\n` + `#{{inflection of+|ru|` + `${group.noms}||` + `${infls.join('|;|')}}}`; outputs.push(newText); }); if (!outputs.length) { return; } const newText = outputs.join('\n\n'); console.log( '[ru-form] 出力:', newText ); window.addVerbform( 'ru', newText ); const summary = document.getElementById( 'wpSummary' ); if ( summary && !summary.value ) { summary.value = '新規作成'; } }) .catch(error => { console.error( '[ru-form] エラー:', error ); }); })(); r0eo3xvx384gzk3miqe3ty4ozmglf94 2340863 2340857 2026-09-02T07:52:39Z Kuroco2k 84207 2340863 javascript text/javascript (function () { 'use strict'; if (mw.config.get('wgAction') !== 'edit') { return; } const textbox = document.getElementById('wpTextbox1'); if (!textbox) { return; } if (!document.referrer) { return; } const title = mw.config.get('wgTitle'); /* * ======================================== * テンプレート名 → 品詞 * ======================================== * * 必要なテンプレートがあればここに追加。 */ function getPos(template) { const posMap = { // 'テンプレート名': 'verb', // 'テンプレート名': 'noun', // 'テンプレート名': 'adjective', }; if (posMap[template]) { return posMap[template]; } /* * ロシア語テンプレートの命名規則による判定 */ if (/^ru-conj(?:-|$)/i.test(template)) { return 'verb'; } if (/^ru-noun(?:-|$)/i.test(template)) { return 'noun'; } if (/^ru-adj(?:-|$)/i.test(template)) { return 'adjective'; } if (/^ru-pron(?:-|$)/i.test(template)) { return 'pronoun'; } if (/^ru-adv(?:-|$)/i.test(template)) { return 'adverb'; } if (/^ru-num(?:-|$)/i.test(template)) { return 'numeral'; } return null; } /* * ======================================== * data-mw からテンプレート名を取得 * ======================================== */ function getTemplateNames(div) { const dataMw = div.getAttribute('data-mw'); if (!dataMw) { return []; } const names = []; /* * data-mw は基本的に JSON */ try { const json = JSON.parse(dataMw); function walk(obj) { if (!obj || typeof obj !== 'object') { return; } if ( obj.template && obj.template.target && typeof obj.template.target.wt === 'string' ) { const name = obj.template.target.wt .trim() .replace(/^テンプレート:/u, '') .replace(/^Template:/i, ''); if (name) { names.push(name); } } if (Array.isArray(obj)) { obj.forEach(walk); } else { Object.values(obj).forEach(walk); } } walk(json); } catch (e) { /* * JSON でなかった場合の保険 */ } /* * JSON から取れなかった場合 */ if (!names.length) { const matches = dataMw.matchAll( /(?:テンプレート:|Template:)([^|}"\s]+)/giu ); for (const match of matches) { names.push(match[1]); } } return [...new Set(names)]; } /* * ======================================== * aタグからリンク先ページ名を取得 * ======================================== */ function getPageName(link) { /* * title 属性を優先 */ let page = link.getAttribute('title'); if (page) { return page .trim() .replace(/_/g, ' '); } /* * title が無ければ href */ const href = link.getAttribute('href'); if (!href) { return null; } try { const url = new URL( href, location.origin ); page = decodeURIComponent( url.pathname .replace(/^\/wiki\//, '') ); return page .replace(/_/g, ' ') .trim(); } catch (e) { return null; } } /* * ======================================== * 元ページを render * ======================================== */ const referrer = new URL(document.referrer); referrer.searchParams.delete('action'); referrer.searchParams.delete('redlink'); referrer.searchParams.delete('veaction'); referrer.searchParams.set( 'action', 'render' ); fetch(referrer.toString(), { credentials: 'same-origin' }) .then(response => { if (!response.ok) { throw new Error( `render取得失敗: ${response.status}` ); } return response.text(); }) .then(html => { const doc = new DOMParser().parseFromString( html, 'text/html' ); const forms = []; /* * ==================================== * Cyrl form-of を候補にする * ==================================== */ const spans = [ ...doc.querySelectorAll( 'span.Cyrl.form-of' ) ]; console.log( '[ru-form] span数:', spans.length ); spans.forEach(span => { /* * -------------------------------- * lang * -------------------------------- */ const classes = [...span.classList]; const lang = classes .find( c => c.startsWith('lang-') ) ?.slice(5) || 'ru'; if (lang !== 'ru') { return; } /* * -------------------------------- * aタグ * -------------------------------- */ const link = span.querySelector('a'); if (!link) { return; } /* * -------------------------------- * lemma * * aタグの表示文字列 * -------------------------------- */ const lemma = link.textContent.trim(); if (!lemma) { return; } /* * -------------------------------- * page * * aタグのリンク先ページ名 * -------------------------------- */ const page = getPageName(link); if (!page) { return; } /* * ================================= * ★ここが今回の重要部分 * * リンク先ページ名が * 現在のページタイトルと一致する * span だけを処理する。 * ================================= */ if (page !== title) { return; } console.log( '[ru-form] 対象:', { lemma, page, title } ); /* * -------------------------------- * origin-○○ → noms * -------------------------------- */ const originClass = classes.find( c => c.startsWith('origin-') ); if (!originClass) { console.log( '[ru-form] origin-なし:', span ); return; } const noms = originClass.slice( 'origin-'.length ); /* * -------------------------------- * ○○-form-of → infl * -------------------------------- */ const inflClass = classes.find( c => c.endsWith('-form-of') ); if (!inflClass) { console.log( '[ru-form] *-form-ofなし:', span ); return; } const infl = inflClass.replace( /-form-of$/, '' ); /* * -------------------------------- * data-mw * -------------------------------- */ const div = span.closest( 'div[data-mw]' ); if (!div) { console.log( '[ru-form] data-mwなし:', span ); return; } /* * -------------------------------- * テンプレート名 * -------------------------------- */ const templates = getTemplateNames(div); if (!templates.length) { console.log( '[ru-form] template取得失敗:', div.getAttribute('data-mw') ); return; } /* * -------------------------------- * テンプレート → 品詞 * -------------------------------- */ let template = null; let pos = null; for (const t of templates) { const p = getPos(t); if (p) { template = t; pos = p; break; } } if (!template || !pos) { console.log( '[ru-form] 品詞判定失敗:', templates ); return; } /* * -------------------------------- * 採用 * -------------------------------- */ forms.push({ lang: 'ru', noms, infl, lemma, page, template, pos }); }); /* * ==================================== * forms が無ければ終了 * ==================================== */ if (!forms.length) { console.log( '[ru-form] 採用されたformなし' ); return; } /* * ==================================== * pos + noms ごとにまとめる * ==================================== */ const groups = new Map(); forms.forEach(form => { const key = `${form.pos}\t${form.noms}`; if (!groups.has(key)) { groups.set(key, { pos: form.pos, noms: form.noms, forms: [] }); } groups .get(key) .forms .push(form); }); /* * ==================================== * 本文生成 * ==================================== */ const outputs = []; groups.forEach(group => { const first = group.forms[0]; /* * infl 重複排除 */ const infls = [ ...new Set( group.forms.map( f => f.infl ) ) ]; /* * -------------------------------- * head * -------------------------------- */ let head = `{{head|ru|${group.pos} form`; /* * lemma と page が違う場合だけ * head=lemma を付ける */ if ( first.lemma !== first.page ) { head += `|head=${first.lemma}`; } head += '}}'; /* * -------------------------------- * 完成 * -------------------------------- */ const newText = `=={{L|ru}}==\n` + `===${group.pos}===\n` + `${head}\n` + `#{{inflection of+|ru|` + `${group.noms}||` + `${infls.join('|;|')}}}`; outputs.push(newText); }); if (!outputs.length) { return; } const newText = outputs.join('\n\n'); console.log( '[ru-form] 最終出力:', newText ); /* * ==================================== * 既存の addVerbform を利用 * ==================================== */ window.addVerbform( 'ru', newText ); /* * ==================================== * Summary * ==================================== */ const summary = document.getElementById( 'wpSummary' ); if ( summary && !summary.value ) { summary.value = '新規作成'; } }) .catch(error => { console.error( '[ru-form] エラー:', error ); }); })(); bsmk1m13oirxo6v2fkbjdfvm041vvty 2340864 2340863 2026-09-02T07:53:30Z Kuroco2k 84207 2340864 javascript text/javascript (function () { 'use strict'; if (mw.config.get('wgAction') !== 'edit') { return; } const textbox = document.getElementById('wpTextbox1'); if (!textbox) { return; } if (!document.referrer) { return; } const title = mw.config.get('wgTitle'); /* * ======================================== * テンプレート名 → 品詞 * ======================================== * * 必要なテンプレートがあればここに追加。 */ function getPos(template) { const posMap = { 'ru-conj': 'verb', 'ru-verb': 'verb', 'ru-noun-table': 'noun', 'ru-decl-noun': 'noun', 'ru-decl-noun-irreg': 'noun', 'ru-decl-noun-unc': 'noun', 'ru-decl-noun-pl': 'noun', 'ru-decl-adj': 'adj', 'ru-adj-table': 'adj', 'ru-decl-pronoun': 'pron', 'ru-decl-num': 'num' }; if (posMap[template]) { return posMap[template]; } /* * ロシア語テンプレートの命名規則による判定 */ if (/^ru-conj(?:-|$)/i.test(template)) { return 'verb'; } if (/^ru-noun(?:-|$)/i.test(template)) { return 'noun'; } if (/^ru-adj(?:-|$)/i.test(template)) { return 'adjective'; } if (/^ru-pron(?:-|$)/i.test(template)) { return 'pronoun'; } if (/^ru-adv(?:-|$)/i.test(template)) { return 'adverb'; } if (/^ru-num(?:-|$)/i.test(template)) { return 'numeral'; } return null; } /* * ======================================== * data-mw からテンプレート名を取得 * ======================================== */ function getTemplateNames(div) { const dataMw = div.getAttribute('data-mw'); if (!dataMw) { return []; } const names = []; /* * data-mw は基本的に JSON */ try { const json = JSON.parse(dataMw); function walk(obj) { if (!obj || typeof obj !== 'object') { return; } if ( obj.template && obj.template.target && typeof obj.template.target.wt === 'string' ) { const name = obj.template.target.wt .trim() .replace(/^テンプレート:/u, '') .replace(/^Template:/i, ''); if (name) { names.push(name); } } if (Array.isArray(obj)) { obj.forEach(walk); } else { Object.values(obj).forEach(walk); } } walk(json); } catch (e) { /* * JSON でなかった場合の保険 */ } /* * JSON から取れなかった場合 */ if (!names.length) { const matches = dataMw.matchAll( /(?:テンプレート:|Template:)([^|}"\s]+)/giu ); for (const match of matches) { names.push(match[1]); } } return [...new Set(names)]; } /* * ======================================== * aタグからリンク先ページ名を取得 * ======================================== */ function getPageName(link) { /* * title 属性を優先 */ let page = link.getAttribute('title'); if (page) { return page .trim() .replace(/_/g, ' '); } /* * title が無ければ href */ const href = link.getAttribute('href'); if (!href) { return null; } try { const url = new URL( href, location.origin ); page = decodeURIComponent( url.pathname .replace(/^\/wiki\//, '') ); return page .replace(/_/g, ' ') .trim(); } catch (e) { return null; } } /* * ======================================== * 元ページを render * ======================================== */ const referrer = new URL(document.referrer); referrer.searchParams.delete('action'); referrer.searchParams.delete('redlink'); referrer.searchParams.delete('veaction'); referrer.searchParams.set( 'action', 'render' ); fetch(referrer.toString(), { credentials: 'same-origin' }) .then(response => { if (!response.ok) { throw new Error( `render取得失敗: ${response.status}` ); } return response.text(); }) .then(html => { const doc = new DOMParser().parseFromString( html, 'text/html' ); const forms = []; /* * ==================================== * Cyrl form-of を候補にする * ==================================== */ const spans = [ ...doc.querySelectorAll( 'span.Cyrl.form-of' ) ]; console.log( '[ru-form] span数:', spans.length ); spans.forEach(span => { /* * -------------------------------- * lang * -------------------------------- */ const classes = [...span.classList]; const lang = classes .find( c => c.startsWith('lang-') ) ?.slice(5) || 'ru'; if (lang !== 'ru') { return; } /* * -------------------------------- * aタグ * -------------------------------- */ const link = span.querySelector('a'); if (!link) { return; } /* * -------------------------------- * lemma * * aタグの表示文字列 * -------------------------------- */ const lemma = link.textContent.trim(); if (!lemma) { return; } /* * -------------------------------- * page * * aタグのリンク先ページ名 * -------------------------------- */ const page = getPageName(link); if (!page) { return; } /* * ================================= * ★ここが今回の重要部分 * * リンク先ページ名が * 現在のページタイトルと一致する * span だけを処理する。 * ================================= */ if (page !== title) { return; } console.log( '[ru-form] 対象:', { lemma, page, title } ); /* * -------------------------------- * origin-○○ → noms * -------------------------------- */ const originClass = classes.find( c => c.startsWith('origin-') ); if (!originClass) { console.log( '[ru-form] origin-なし:', span ); return; } const noms = originClass.slice( 'origin-'.length ); /* * -------------------------------- * ○○-form-of → infl * -------------------------------- */ const inflClass = classes.find( c => c.endsWith('-form-of') ); if (!inflClass) { console.log( '[ru-form] *-form-ofなし:', span ); return; } const infl = inflClass.replace( /-form-of$/, '' ); /* * -------------------------------- * data-mw * -------------------------------- */ const div = span.closest( 'div[data-mw]' ); if (!div) { console.log( '[ru-form] data-mwなし:', span ); return; } /* * -------------------------------- * テンプレート名 * -------------------------------- */ const templates = getTemplateNames(div); if (!templates.length) { console.log( '[ru-form] template取得失敗:', div.getAttribute('data-mw') ); return; } /* * -------------------------------- * テンプレート → 品詞 * -------------------------------- */ let template = null; let pos = null; for (const t of templates) { const p = getPos(t); if (p) { template = t; pos = p; break; } } if (!template || !pos) { console.log( '[ru-form] 品詞判定失敗:', templates ); return; } /* * -------------------------------- * 採用 * -------------------------------- */ forms.push({ lang: 'ru', noms, infl, lemma, page, template, pos }); }); /* * ==================================== * forms が無ければ終了 * ==================================== */ if (!forms.length) { console.log( '[ru-form] 採用されたformなし' ); return; } /* * ==================================== * pos + noms ごとにまとめる * ==================================== */ const groups = new Map(); forms.forEach(form => { const key = `${form.pos}\t${form.noms}`; if (!groups.has(key)) { groups.set(key, { pos: form.pos, noms: form.noms, forms: [] }); } groups .get(key) .forms .push(form); }); /* * ==================================== * 本文生成 * ==================================== */ const outputs = []; groups.forEach(group => { const first = group.forms[0]; /* * infl 重複排除 */ const infls = [ ...new Set( group.forms.map( f => f.infl ) ) ]; /* * -------------------------------- * head * -------------------------------- */ let head = `{{head|ru|${group.pos} form`; /* * lemma と page が違う場合だけ * head=lemma を付ける */ if ( first.lemma !== first.page ) { head += `|head=${first.lemma}`; } head += '}}'; /* * -------------------------------- * 完成 * -------------------------------- */ const newText = `=={{L|ru}}==\n` + `===${group.pos}===\n` + `${head}\n` + `#{{inflection of+|ru|` + `${group.noms}||` + `${infls.join('|;|')}}}`; outputs.push(newText); }); if (!outputs.length) { return; } const newText = outputs.join('\n\n'); console.log( '[ru-form] 最終出力:', newText ); /* * ==================================== * 既存の addVerbform を利用 * ==================================== */ window.addVerbform( 'ru', newText ); /* * ==================================== * Summary * ==================================== */ const summary = document.getElementById( 'wpSummary' ); if ( summary && !summary.value ) { summary.value = '新規作成'; } }) .catch(error => { console.error( '[ru-form] エラー:', error ); }); })(); 7fvhqkm7p67r0f1wfxn6nj8xpmk8y6v 2340865 2340864 2026-09-02T08:06:31Z Kuroco2k 84207 2340865 javascript text/javascript (function () { 'use strict'; if (mw.config.get('wgAction') !== 'edit') { return; } const textbox = document.getElementById('wpTextbox1'); if (!textbox) { return; } if (!document.referrer) { return; } const title = mw.config.get('wgTitle'); const referrer = new URL(document.referrer); referrer.searchParams.delete('action'); referrer.searchParams.delete('redlink'); referrer.searchParams.delete('veaction'); referrer.searchParams.set('action', 'render'); fetch(referrer.toString(), { credentials: 'same-origin' }) .then(r => r.text()) .then(html => { const doc = new DOMParser().parseFromString( html, 'text/html' ); const forms = []; /* * ---------------------------------------- * テンプレート名 → 品詞 * ---------------------------------------- * * 必要なテンプレートがあればここに追加。 */ const posMap = { 'ru-conj': 'verb', 'ru-verb': 'verb', 'ru-noun-table': 'noun', 'ru-decl-noun': 'noun', 'ru-decl-noun-irreg': 'noun', 'ru-decl-noun-unc': 'noun', 'ru-decl-noun-pl': 'noun', 'ru-decl-adj': 'adj', 'ru-adj-table': 'adj', 'ru-decl-pronoun': 'pron', 'ru-decl-num': 'num' }; /* * ---------------------------------------- * テンプレート名を data-mw から取得 * ---------------------------------------- * * ここは前版で動いていた方式を維持。 */ function getTemplateName(div) { const dataMw = div.getAttribute('data-mw'); if (!dataMw) { return null; } const match = dataMw.match( /テンプレート:([^|}"\s]+)/u ); if (match) { return match[1]; } return null; } /* * ---------------------------------------- * リンク先ページ名を取得 * ---------------------------------------- * * title: * 「невежества (存在しないページ)」 * * → невежества */ function getPageName(link) { const titleAttr = link.getAttribute('title'); if (titleAttr) { return titleAttr .replace( /\s*\(存在しないページ\)\s*$/u, '' ) .trim(); } const href = link.getAttribute('href'); if (!href) { return null; } try { const url = new URL( href, location.origin ); return decodeURIComponent( url.pathname .replace(/^\/wiki\//, '') ) .replace(/_/g, ' ') .trim(); } catch (e) { return null; } } /* * ---------------------------------------- * ロシア語 form-of を取得 * ---------------------------------------- */ const spans = [ ...doc.querySelectorAll( 'span.Cyrl.form-of' ) ]; /* * ---------------------------------------- * span を1個ずつ処理 * ---------------------------------------- */ spans.forEach(span => { const classes = [...span.classList]; /* * lang-ru */ const lang = classes .find( c => c.startsWith('lang-') ) ?.slice(5); if (lang !== 'ru') { return; } /* * -------------------------------- * aタグがあるものだけ対象 * * span 0: * <strong class="selflink"> * неве́жество * </strong> * * → aタグなし → 除外 * * span 1: * <a>неве́жества</a> * * → 対象 * -------------------------------- */ const link = span.querySelector('a'); if (!link) { return; } /* * -------------------------------- * lemma * * aタグの文字列 * -------------------------------- */ const lemma = link.textContent.trim(); if (!lemma) { return; } /* * -------------------------------- * page * * リンク先のページ名 * -------------------------------- */ const page = getPageName(link); if (!page) { return; } /* * -------------------------------- * この span が現在の対象ページの * lemma に対応しているか確認 * * ページタイトルにアクセント記号が * 付いていない場合もあるので、 * アクセントを除去して比較する。 * -------------------------------- */ function normalizeWord(word) { return word .normalize('NFD') .replace( /[\u0300-\u036f]/g, '' ) .trim(); } if ( normalizeWord(lemma) !== normalizeWord(page) ) { /* * lemma とリンク先が違う場合は * それ自体は正常。 * * 例えば: * lemma = неве́жества * page = невежества * * なのでここでは除外しない。 */ } /* * -------------------------------- * noms * * origin-○○ * ↓ * ○○ * -------------------------------- */ const originClass = classes.find( c => c.startsWith('origin-') ); if (!originClass) { return; } const noms = originClass.slice(7); if (!noms) { return; } /* * -------------------------------- * infl * * ○○-form-of * ↓ * ○○ * -------------------------------- */ const inflClass = classes.find( c => c.endsWith('-form-of') ); if (!inflClass) { return; } const infl = inflClass.replace( /-form-of$/, '' ); if (!infl) { return; } /* * -------------------------------- * data-mw からテンプレート名 * -------------------------------- */ const div = span.closest( 'div[data-mw]' ); if (!div) { return; } const template = getTemplateName(div); if (!template) { return; } /* * -------------------------------- * テンプレート → 品詞 * -------------------------------- */ const pos = posMap[template]; if (!pos) { return; } /* * -------------------------------- * 取得成功 * -------------------------------- */ forms.push({ lang, noms, infl, lemma, page, template, pos }); }); /* * ---------------------------------------- * データなし * ---------------------------------------- */ if (!forms.length) { return; } /* * ---------------------------------------- * 同じ noms + pos をまとめる * ---------------------------------------- */ const groups = new Map(); forms.forEach(form => { const key = `${form.pos}\t${form.noms}`; if (!groups.has(key)) { groups.set(key, { pos: form.pos, noms: form.noms, forms: [] }); } groups .get(key) .forms .push(form); }); /* * ---------------------------------------- * 本文作成 * ---------------------------------------- */ const outputs = []; groups.forEach(group => { const first = group.forms[0]; /* * infl 重複排除 */ const infls = [ ...new Set( group.forms.map( f => f.infl ) ) ]; /* * head */ let head = `{{head|ru|${group.pos} form`; /* * lemma と page が違う場合のみ * * |head=${lemma} */ if ( normalizeWord(first.lemma) !== normalizeWord(first.page) ) { head += `|head=${first.lemma}`; } head += '}}'; /* * 本文 */ const newText = `=={{L|ru}}==\n` + `===${group.pos}===\n` + `${head}\n` + `#{{inflection of+|ru|` + `${group.noms}||` + `${infls.join('|;|')}}}`; outputs.push(newText); }); /* * ---------------------------------------- * 出力 * ---------------------------------------- */ if (!outputs.length) { return; } const newText = outputs.join('\n\n'); window.addVerbform( 'ru', newText ); const summary = document.getElementById( 'wpSummary' ); if ( summary && !summary.value ) { summary.value = '新規作成'; } }) .catch(console.error); })(); 32hf5nn6v8jh8o9yv7yv41487wy4ui2 2340872 2340865 2026-09-02T08:11:46Z Kuroco2k 84207 2340872 javascript text/javascript (function () { 'use strict'; if (mw.config.get('wgAction') !== 'edit') { return; } const textbox = document.getElementById('wpTextbox1'); if (!textbox) { return; } if (!document.referrer) { return; } const title = mw.config.get('wgTitle'); const referrer = new URL(document.referrer); referrer.searchParams.delete('action'); referrer.searchParams.delete('redlink'); referrer.searchParams.delete('veaction'); referrer.searchParams.set('action', 'render'); fetch(referrer.toString(), { credentials: 'same-origin' }) .then(r => r.text()) .then(html => { const doc = new DOMParser().parseFromString(html, 'text/html'); const forms = []; /* * アクセント記号を無視して比較する。 * 例: * неве́жества * невежества * を同じものとして扱う。 */ const normalizeWord = str => String(str || '') .normalize('NFD') .replace(/[\u0300-\u036f]/g, '') .trim(); /* * ロシア語の form-of span */ const spans = [ ...doc.querySelectorAll('span.Cyrl.form-of') ]; spans.forEach(span => { const classes = span.className.split(/\s+/); /* * lang-ru */ const lang = classes.find(c => c.startsWith('lang-'))?.slice(5); if (lang !== 'ru') { return; } /* * origin-неве́жество * ↓ * noms */ const noms = classes.find(c => c.startsWith('origin-'))?.slice(7); /* * 主格|p-form-of * ↓ * infl = p */ const infl = classes.find(c => c.endsWith('-form-of')) ?.replace(/-form-of$/, ''); if (!noms || !infl) { return; } /* * a がある span だけを対象にする。 * * span 0: * <strong class="selflink">неве́жество</strong> * * span 1: * <a ...>неве́жества</a> * * → span 0 は除外 */ const a = span.querySelector('a'); if (!a) { return; } /* * a の表示文字列 * → lemma */ const lemma = a.textContent.trim(); if (!lemma) { return; } /* * href からページ名を取得 * * https://ja.wiktionary.org/wiki/невежества?action=edit&redlink=1 * * → невежества */ let page = ''; try { const url = new URL(a.href); const parts = url.pathname.split('/wiki/'); if (parts.length > 1) { page = decodeURIComponent(parts[1]); } } catch (e) { return; } /* * 現在編集しているページと一致するものだけ。 * * title: * невежества * * lemma: * неве́жества * * → アクセントを除去して比較。 */ if ( normalizeWord(lemma) !== normalizeWord(title) ) { return; } forms.push({ lang, noms, infl, lemma, page }); }); if (!forms.length) { console.log( 'ロシア語の form-of が見つかりません。', { title, spans: spans.length } ); return; } /* * 重複する活用形を除去 */ const infls = [ ...new Set(forms.map(f => f.infl)) ]; const form = forms[0]; const lang = form.lang; const noms = form.noms; /* * lemma と page が異なる場合は head=lemma * * 例: * lemma = неве́жества * page = невежества * * → |head=неве́жества */ const head = normalizeWord(form.lemma) !== normalizeWord(form.page) ? `|head=${form.lemma}` : ''; /* * ここは現在使っている data-mw / pos の処理を * そのまま入れる場所。 * * いったん動作確認用として noun にしている。 */ const pos = 'noun'; const newText = `=={{L|${lang}}}== ===${pos}=== {{head|${lang}|${pos} form${head}}} #{{inflection of+|${lang}|${noms}||${infls.join('|;|')}}}`; console.log('生成結果:', newText); window.addVerbform(lang, newText); const summary = document.getElementById('wpSummary'); if (summary && !summary.value) { summary.value = '新規作成'; } }) .catch(console.error); })(); 56ppy2v9uq04rn4ds4jdcqq7ogrbkz3 2340873 2340872 2026-09-02T08:20:54Z Kuroco2k 84207 2340873 javascript text/javascript (function () { 'use strict'; if (mw.config.get('wgAction') !== 'edit') { return; } const textbox = document.getElementById('wpTextbox1'); if (!textbox) { return; } if (!document.referrer) { return; } const title = mw.config.get('wgTitle'); /* * 比較専用。 * アクセント記号を除去して比較する。 * * неве́жества → невежества * невежества → невежества */ const normalizeWord = str => String(str || '') .normalize('NFD') .replace(/[\u0300-\u036f]/g, '') .trim(); /* * data-mw からテンプレート名を取得。 * * 「テンプレート:△△」なら △△ を返す。 */ function getTemplateName(div) { const dataMw = div.getAttribute('data-mw'); if (!dataMw) { return ''; } try { const data = JSON.parse(dataMw); const parts = []; function walk(obj) { if (!obj || typeof obj !== 'object') { return; } if (obj.target && obj.target.wt) { parts.push(obj.target.wt); } if (Array.isArray(obj)) { obj.forEach(walk); } else { Object.values(obj).forEach(walk); } } walk(data); for (const wt of parts) { const m = wt.match(/テンプレート:([^\s|]+)/); if (m) { return m[1]; } } } catch (e) { console.error('data-mw の解析に失敗:', e); } return ''; } /* * テンプレート名 → 品詞 * * ここは現在使っている対応表があるなら、そのまま入れる。 */ const posMap = { 'ru-conj': 'verb', 'ru-verb': 'verb', 'ru-noun-table': 'noun', 'ru-decl-noun': 'noun', 'ru-decl-noun-irreg': 'noun', 'ru-decl-noun-unc': 'noun', 'ru-decl-noun-pl': 'noun', 'ru-decl-adj': 'adj', 'ru-adj-table': 'adj', 'ru-decl-pronoun': 'pron', 'ru-decl-num': 'num' }; function getPos(doc) { const divs = [...doc.querySelectorAll('div[data-mw]')]; for (const div of divs) { const templateName = getTemplateName(div); if (!templateName) { continue; } if (posMap[templateName]) { return posMap[templateName]; } } return ''; } const referrer = new URL(document.referrer); referrer.searchParams.delete('action'); referrer.searchParams.delete('redlink'); referrer.searchParams.delete('veaction'); referrer.searchParams.set('action', 'render'); fetch(referrer.toString(), { credentials: 'same-origin' }) .then(r => r.text()) .then(html => { const doc = new DOMParser().parseFromString(html, 'text/html'); const forms = []; /* * ロシア語の form-of * * 例: * <span class="Cyrl form-of lang-ru 主格|p-form-of origin-неве́жество"> */ const spans = [ ...doc.querySelectorAll('span.Cyrl.form-of') ]; spans.forEach(span => { const classes = span.className.split(/\s+/); /* * lang-ru */ const lang = classes.find(c => c.startsWith('lang-'))?.slice(5); if (lang !== 'ru') { return; } /* * origin-неве́жество * * → noms = неве́жество */ const noms = classes .find(c => c.startsWith('origin-')) ?.slice(7); if (!noms) { return; } /* * 「主格|p-form-of」のようなクラスから * 最後の p-form-of を取り出す。 * * 主格|p-form-of * ↓ * p-form-of * ↓ * p */ const formClass = classes.find(c => c.includes('-form-of')); if (!formClass) { return; } const infl = formClass .split('|') .pop() .replace(/-form-of$/, ''); if (!infl) { return; } /* * <a> がない selflink は対象外。 * * span: * <strong class="selflink">неве́жество</strong> * * はここで除外される。 */ const a = span.querySelector('a'); if (!a) { return; } /* * a の表示文字列 * * → lemma */ const lemma = a.textContent.trim(); if (!lemma) { return; } /* * 編集対象 title と lemma を比較。 * * ここではアクセントを無視する。 * * title: * невежества * * lemma: * неве́жества * * → 同一と判定 */ if ( normalizeWord(lemma) !== normalizeWord(title) ) { return; } /* * a のリンク先ページ名 * * href: * /wiki/невежества?action=edit&redlink=1 * * → page = невежества */ let page = ''; try { const url = new URL(a.href); const marker = '/wiki/'; if (url.pathname.startsWith(marker)) { page = decodeURIComponent( url.pathname.slice(marker.length) ); } } catch (e) { console.error('リンクURLの解析に失敗:', e); } forms.push({ lang, noms, infl, lemma, page }); }); if (!forms.length) { console.log( '対象となるロシア語 form-of がありません。', { title, spanCount: spans.length } ); return; } /* * 活用形を重複除去 */ const infls = [ ...new Set(forms.map(f => f.infl)) ]; const form = forms[0]; const lang = form.lang; const noms = form.noms; const lemma = form.lemma; const page = form.page; /* * title と lemma は、 * 比較時にはアクセントを無視した。 * * しかし head の要否は「実際の文字列」で比較する。 * * title = невежества * lemma = неве́жества * * → head=neве́жества を付ける */ const head = lemma !== title ? `|head=${lemma}` : ''; /* * data-mw から品詞を取得。 */ const pos = getPos(doc); if (!pos) { console.log( '品詞を取得できませんでした。', { title, templateCandidates: [...doc.querySelectorAll('div[data-mw]')] .map(getTemplateName) .filter(Boolean) } ); return; } const newText = `=={{L|${lang}}}== ===${pos}=== {{head|${lang}|${pos} form${head}}} #{{inflection of+|${lang}|${noms}||${infls.join('|;|')}}}`; console.log('生成結果:', newText); window.addVerbform(lang, newText); const summary = document.getElementById('wpSummary'); if (summary && !summary.value) { summary.value = '新規作成'; } }) .catch(console.error); })(); iwi65y18so2klrlyxjauk6crcxvnwfg 2340875 2340873 2026-09-02T08:23:23Z Kuroco2k 84207 2340875 javascript text/javascript (function () { 'use strict'; if (mw.config.get('wgAction') !== 'edit') { return; } const textbox = document.getElementById('wpTextbox1'); if (!textbox) { return; } if (!document.referrer) { return; } const title = mw.config.get('wgTitle'); /* * 比較専用。 * アクセント記号を除去して比較する。 * * неве́жества → невежества * невежества → невежества */ const normalizeWord = str => String(str || '') .normalize('NFD') .replace(/[\u0300-\u036f]/g, '') .trim(); /* * data-mw からテンプレート名を取得。 * * 「テンプレート:△△」なら △△ を返す。 */ function getTemplateName(div) { const dataMw = div.getAttribute('data-mw'); if (!dataMw) { return ''; } try { const data = JSON.parse(dataMw); const parts = []; function walk(obj) { if (!obj || typeof obj !== 'object') { return; } if (obj.target && obj.target.wt) { parts.push(obj.target.wt); } if (Array.isArray(obj)) { obj.forEach(walk); } else { Object.values(obj).forEach(walk); } } walk(data); for (const wt of parts) { const m = wt.match(/テンプレート:([^\s|]+)/); if (m) { return m[1]; } } } catch (e) { console.error('data-mw の解析に失敗:', e); } return ''; } /* * テンプレート名 → 品詞 * * ここは現在使っている対応表があるなら、そのまま入れる。 */ const posMap = { 'ru-conj': 'verb', 'ru-verb': 'verb', 'ru-noun-table': 'noun', 'ru-decl-noun': 'noun', 'ru-decl-noun-irreg': 'noun', 'ru-decl-noun-unc': 'noun', 'ru-decl-noun-pl': 'noun', 'ru-decl-adj': 'adj', 'ru-adj-table': 'adj', 'ru-decl-pronoun': 'pron', 'ru-decl-num': 'num' }; function getPos(doc) { const divs = [...doc.querySelectorAll('div[data-mw]')]; for (const div of divs) { const templateName = getTemplateName(div); if (!templateName) { continue; } if (posMap[templateName]) { return posMap[templateName]; } } return ''; } const referrer = new URL(document.referrer); referrer.searchParams.delete('action'); referrer.searchParams.delete('redlink'); referrer.searchParams.delete('veaction'); referrer.searchParams.set('action', 'render'); fetch(referrer.toString(), { credentials: 'same-origin' }) .then(r => r.text()) .then(html => { const doc = new DOMParser().parseFromString(html, 'text/html'); const forms = []; /* * ロシア語の form-of * * 例: * <span class="Cyrl form-of lang-ru 主格|p-form-of origin-неве́жество"> */ const spans = [ ...doc.querySelectorAll('span.Cyrl.form-of') ]; spans.forEach(span => { const classes = span.className.split(/\s+/); /* * lang-ru */ const lang = classes.find(c => c.startsWith('lang-'))?.slice(5); if (lang !== 'ru') { return; } /* * origin-неве́жество * * → noms = неве́жество */ const noms = classes .find(c => c.startsWith('origin-')) ?.slice(7); if (!noms) { return; } /* * 「主格|p-form-of」のようなクラスから * 最後の p-form-of を取り出す。 * * 主格|p-form-of * ↓ * p-form-of * ↓ * p */ const formClass = classes.find(c => c.includes('-form-of')); if (!formClass) { return; } const infl = formClass .split('|') .pop() .replace(/-form-of$/, ''); if (!infl) { return; } /* * <a> がない selflink は対象外。 * * span: * <strong class="selflink">неве́жество</strong> * * はここで除外される。 */ const a = span.querySelector('a'); if (!a) { return; } /* * a の表示文字列 * * → lemma */ const lemma = a.textContent.trim(); if (!lemma) { return; } /* * 編集対象 title と lemma を比較。 * * ここではアクセントを無視する。 * * title: * невежества * * lemma: * неве́жества * * → 同一と判定 */ if ( normalizeWord(lemma) !== normalizeWord(title) ) { return; } /* * a のリンク先ページ名 * * href: * /wiki/невежества?action=edit&redlink=1 * * → page = невежества */ let page = ''; try { const url = new URL(a.href); const marker = '/wiki/'; if (url.pathname.startsWith(marker)) { page = decodeURIComponent( url.pathname.slice(marker.length) ); } } catch (e) { console.error('リンクURLの解析に失敗:', e); } forms.push({ lang, noms, infl, lemma, page }); }); if (!forms.length) { console.log( '対象となるロシア語 form-of がありません。', { title, spanCount: spans.length } ); return; } /* * 活用形を重複除去 */ const infls = [ ...new Set(forms.map(f => f.infl)) ]; const form = forms[0]; const lang = form.lang; const noms = form.noms; const lemma = form.lemma; const page = form.page; /* * title と lemma は、 * 比較時にはアクセントを無視した。 * * しかし head の要否は「実際の文字列」で比較する。 * * title = невежества * lemma = неве́жества * * → head=neве́жества を付ける */ const head = lemma !== title ? `|head=${lemma}` : ''; /* * data-mw から品詞を取得。 */ const pos = getPos(doc); if (!pos) { console.log( '品詞を取得できませんでした。', { title, templateCandidates: [...doc.querySelectorAll('div[data-mw]')] .map(getTemplateName) .filter(Boolean) } ); return; } const newText = `=={{L|${lang}}}== ==={{${pos}}}=== {{head|${lang}|${pos} form${head}}} #{{inflection of+|${lang}|${noms}||${infls.join('|;|')}}}`; console.log('生成結果:', newText); window.addVerbform(lang, newText); const summary = document.getElementById('wpSummary'); if (summary && !summary.value) { summary.value = '新規作成'; } }) .catch(console.error); })(); p0uz1dwcvdoo1zjg3mmn2sllya7c6pk 2340878 2340875 2026-09-02T08:28:39Z Kuroco2k 84207 2340878 javascript text/javascript (function () { 'use strict'; if (mw.config.get('wgAction') !== 'edit') { return; } const textbox = document.getElementById('wpTextbox1'); if (!textbox) { return; } if (!document.referrer) { return; } const title = mw.config.get('wgTitle'); /* * 比較専用。 * アクセント記号を除去して比較する。 * * неве́жества → невежества * невежества → невежества */ const normalizeWord = str => String(str || '') .normalize('NFD') .replace(/[\u0300-\u036f]/g, '') .trim(); /* * data-mw からテンプレート名を取得。 * * 「テンプレート:△△」なら △△ を返す。 */ function getTemplateName(div) { const dataMw = div.getAttribute('data-mw'); if (!dataMw) { return ''; } try { const data = JSON.parse(dataMw); console.log('data-mw:', data); const wt = data?.parts?.[0]?.template?.target?.wt || data?.template?.target?.wt || ''; console.log('template wt:', wt); const m = wt.match(/テンプレート:([^|}\s]+)/); if (m) { console.log('template name:', m[1]); return m[1]; } } catch (e) { console.error('data-mw parse error:', e); } return ''; } /* * テンプレート名 → 品詞 * * ここは現在使っている対応表があるなら、そのまま入れる。 */ const posMap = { 'ru-conj': 'verb', 'ru-verb': 'verb', 'ru-noun-table': 'noun', 'ru-decl-noun': 'noun', 'ru-decl-noun-irreg': 'noun', 'ru-decl-noun-unc': 'noun', 'ru-decl-noun-pl': 'noun', 'ru-decl-adj': 'adj', 'ru-adj-table': 'adj', 'ru-decl-pronoun': 'pron', 'ru-decl-num': 'num' }; function getPos(doc) { const divs = [...doc.querySelectorAll('div[data-mw]')]; for (const div of divs) { const templateName = getTemplateName(div); if (!templateName) { continue; } if (posMap[templateName]) { return posMap[templateName]; } } return ''; } const referrer = new URL(document.referrer); referrer.searchParams.delete('action'); referrer.searchParams.delete('redlink'); referrer.searchParams.delete('veaction'); referrer.searchParams.set('action', 'render'); fetch(referrer.toString(), { credentials: 'same-origin' }) .then(r => r.text()) .then(html => { const doc = new DOMParser().parseFromString(html, 'text/html'); const forms = []; /* * ロシア語の form-of * * 例: * <span class="Cyrl form-of lang-ru 主格|p-form-of origin-неве́жество"> */ const spans = [ ...doc.querySelectorAll('span.Cyrl.form-of') ]; spans.forEach(span => { const classes = span.className.split(/\s+/); /* * lang-ru */ const lang = classes.find(c => c.startsWith('lang-'))?.slice(5); if (lang !== 'ru') { return; } /* * origin-неве́жество * * → noms = неве́жество */ const noms = classes .find(c => c.startsWith('origin-')) ?.slice(7); if (!noms) { return; } /* * 「主格|p-form-of」のようなクラスから * 最後の p-form-of を取り出す。 * * 主格|p-form-of * ↓ * p-form-of * ↓ * p */ const formClass = classes.find(c => c.includes('-form-of')); if (!formClass) { return; } const infl = formClass .split('|') .pop() .replace(/-form-of$/, ''); if (!infl) { return; } /* * <a> がない selflink は対象外。 * * span: * <strong class="selflink">неве́жество</strong> * * はここで除外される。 */ const a = span.querySelector('a'); if (!a) { return; } /* * a の表示文字列 * * → lemma */ const lemma = a.textContent.trim(); if (!lemma) { return; } /* * 編集対象 title と lemma を比較。 * * ここではアクセントを無視する。 * * title: * невежества * * lemma: * неве́жества * * → 同一と判定 */ if ( normalizeWord(lemma) !== normalizeWord(title) ) { return; } /* * a のリンク先ページ名 * * href: * /wiki/невежества?action=edit&redlink=1 * * → page = невежества */ let page = ''; try { const url = new URL(a.href); const marker = '/wiki/'; if (url.pathname.startsWith(marker)) { page = decodeURIComponent( url.pathname.slice(marker.length) ); } } catch (e) { console.error('リンクURLの解析に失敗:', e); } forms.push({ lang, noms, infl, lemma, page }); }); if (!forms.length) { console.log( '対象となるロシア語 form-of がありません。', { title, spanCount: spans.length } ); return; } /* * 活用形を重複除去 */ const infls = [ ...new Set(forms.map(f => f.infl)) ]; const form = forms[0]; const lang = form.lang; const noms = form.noms; const lemma = form.lemma; const page = form.page; /* * title と lemma は、 * 比較時にはアクセントを無視した。 * * しかし head の要否は「実際の文字列」で比較する。 * * title = невежества * lemma = неве́жества * * → head=neве́жества を付ける */ const head = lemma !== title ? `|head=${lemma}` : ''; /* * data-mw から品詞を取得。 */ const pos = getPos(doc); if (!pos) { console.log( '品詞を取得できませんでした。', { title, templateCandidates: [...doc.querySelectorAll('div[data-mw]')] .map(getTemplateName) .filter(Boolean) } ); return; } const newText = `=={{L|${lang}}}== ==={{${pos}}}=== {{head|${lang}|${pos} form${head}}} #{{inflection of+|${lang}|${noms}||${infls.join('|;|')}}}`; console.log('生成結果:', newText); window.addVerbform(lang, newText); const summary = document.getElementById('wpSummary'); if (summary && !summary.value) { summary.value = '新規作成'; } }) .catch(console.error); })(); ow4jfcn3847xg7qdq3czolivcf7wruj 2340879 2340878 2026-09-02T08:30:46Z Kuroco2k 84207 2340879 javascript text/javascript (function () { 'use strict'; if (mw.config.get('wgAction') !== 'edit') { return; } const textbox = document.getElementById('wpTextbox1'); if (!textbox) { return; } if (!document.referrer) { return; } const title = mw.config.get('wgTitle'); /* * 比較専用。 * アクセント記号を除去して比較する。 * * неве́жества → невежества * невежества → невежества */ const normalizeWord = str => String(str || '') .normalize('NFD') .replace(/[\u0300-\u036f]/g, '') .trim(); /* * data-mw からテンプレート名を取得。 * * 「テンプレート:△△」なら △△ を返す。 */ function getTemplateName(div) { const dataMw = div.getAttribute('data-mw'); if (!dataMw) { return ''; } try { const data = JSON.parse(dataMw); return data?.parts?.[0]?.template?.target?.wt || ''; } catch (e) { console.error('data-mw parse error:', e); return ''; } } /* * テンプレート名 → 品詞 * * ここは現在使っている対応表があるなら、そのまま入れる。 */ const posMap = { 'ru-conj': 'verb', 'ru-verb': 'verb', 'ru-noun-table': 'noun', 'ru-decl-noun': 'noun', 'ru-decl-noun-irreg': 'noun', 'ru-decl-noun-unc': 'noun', 'ru-decl-noun-pl': 'noun', 'ru-decl-adj': 'adj', 'ru-adj-table': 'adj', 'ru-decl-pronoun': 'pron', 'ru-decl-num': 'num' }; function getPos(doc) { const divs = [...doc.querySelectorAll('div[data-mw]')]; for (const div of divs) { const templateName = getTemplateName(div); if (!templateName) { continue; } if (posMap[templateName]) { return posMap[templateName]; } } return ''; } const referrer = new URL(document.referrer); referrer.searchParams.delete('action'); referrer.searchParams.delete('redlink'); referrer.searchParams.delete('veaction'); referrer.searchParams.set('action', 'render'); fetch(referrer.toString(), { credentials: 'same-origin' }) .then(r => r.text()) .then(html => { const doc = new DOMParser().parseFromString(html, 'text/html'); const forms = []; /* * ロシア語の form-of * * 例: * <span class="Cyrl form-of lang-ru 主格|p-form-of origin-неве́жество"> */ const spans = [ ...doc.querySelectorAll('span.Cyrl.form-of') ]; spans.forEach(span => { const classes = span.className.split(/\s+/); /* * lang-ru */ const lang = classes.find(c => c.startsWith('lang-'))?.slice(5); if (lang !== 'ru') { return; } /* * origin-неве́жество * * → noms = неве́жество */ const noms = classes .find(c => c.startsWith('origin-')) ?.slice(7); if (!noms) { return; } /* * 「主格|p-form-of」のようなクラスから * 最後の p-form-of を取り出す。 * * 主格|p-form-of * ↓ * p-form-of * ↓ * p */ const formClass = classes.find(c => c.includes('-form-of')); if (!formClass) { return; } const infl = formClass .split('|') .pop() .replace(/-form-of$/, ''); if (!infl) { return; } /* * <a> がない selflink は対象外。 * * span: * <strong class="selflink">неве́жество</strong> * * はここで除外される。 */ const a = span.querySelector('a'); if (!a) { return; } /* * a の表示文字列 * * → lemma */ const lemma = a.textContent.trim(); if (!lemma) { return; } /* * 編集対象 title と lemma を比較。 * * ここではアクセントを無視する。 * * title: * невежества * * lemma: * неве́жества * * → 同一と判定 */ if ( normalizeWord(lemma) !== normalizeWord(title) ) { return; } /* * a のリンク先ページ名 * * href: * /wiki/невежества?action=edit&redlink=1 * * → page = невежества */ let page = ''; try { const url = new URL(a.href); const marker = '/wiki/'; if (url.pathname.startsWith(marker)) { page = decodeURIComponent( url.pathname.slice(marker.length) ); } } catch (e) { console.error('リンクURLの解析に失敗:', e); } forms.push({ lang, noms, infl, lemma, page }); }); if (!forms.length) { console.log( '対象となるロシア語 form-of がありません。', { title, spanCount: spans.length } ); return; } /* * 活用形を重複除去 */ const infls = [ ...new Set(forms.map(f => f.infl)) ]; const form = forms[0]; const lang = form.lang; const noms = form.noms; const lemma = form.lemma; const page = form.page; /* * title と lemma は、 * 比較時にはアクセントを無視した。 * * しかし head の要否は「実際の文字列」で比較する。 * * title = невежества * lemma = неве́жества * * → head=neве́жества を付ける */ const head = lemma !== title ? `|head=${lemma}` : ''; /* * data-mw から品詞を取得。 */ const pos = getPos(doc); if (!pos) { console.log( '品詞を取得できませんでした。', { title, templateCandidates: [...doc.querySelectorAll('div[data-mw]')] .map(getTemplateName) .filter(Boolean) } ); return; } const newText = `=={{L|${lang}}}== ==={{${pos}}}=== {{head|${lang}|${pos} form${head}}} #{{inflection of+|${lang}|${noms}||${infls.join('|;|')}}}`; console.log('生成結果:', newText); window.addVerbform(lang, newText); const summary = document.getElementById('wpSummary'); if (summary && !summary.value) { summary.value = '新規作成'; } }) .catch(console.error); })(); jut5wvbhntone5nl9lu4ajg0f5j6yk2 2340880 2340879 2026-09-02T08:33:35Z Kuroco2k 84207 2340880 javascript text/javascript (function () { 'use strict'; if (mw.config.get('wgAction') !== 'edit') { return; } const textbox = document.getElementById('wpTextbox1'); if (!textbox) { return; } if (!document.referrer) { return; } const title = mw.config.get('wgTitle'); /* * 比較専用。 * アクセント記号を除去して比較する。 * * неве́жества → невежества * невежества → невежества */ const normalizeWord = str => String(str || '') .normalize('NFD') .replace(/[\u0300-\u036f]/g, '') .trim(); /* * data-mw からテンプレート名を取得。 * * 「テンプレート:△△」なら △△ を返す。 */ function getTemplateName(div) { const dataMw = div.getAttribute('data-mw'); if (!dataMw) { return ''; } try { const data = JSON.parse(dataMw); return data?.parts?.[0]?.template?.target?.wt || ''; } catch (e) { console.error('data-mw parse error:', e); return ''; } } /* * テンプレート名 → 品詞 * * ここは現在使っている対応表があるなら、そのまま入れる。 */ const posMap = { 'ru-conj': 'verb', 'ru-verb': 'verb', 'ru-noun-table': 'noun', 'ru-decl-noun': 'noun', 'ru-decl-noun-irreg': 'noun', 'ru-decl-noun-unc': 'noun', 'ru-decl-noun-pl': 'noun', 'ru-decl-adj': 'adj', 'ru-adj-table': 'adj', 'ru-decl-pronoun': 'pron', 'ru-decl-num': 'num' }; function getPos(doc) { const divs = [...doc.querySelectorAll('div[data-mw]')]; for (const div of divs) { const templateName = getTemplateName(div); if (!templateName) { continue; } if (posMap[templateName]) { return posMap[templateName]; } } return ''; } const referrer = new URL(document.referrer); referrer.searchParams.delete('action'); referrer.searchParams.delete('redlink'); referrer.searchParams.delete('veaction'); referrer.searchParams.set('action', 'render'); fetch(referrer.toString(), { credentials: 'same-origin' }) .then(r => r.text()) .then(html => { const doc = new DOMParser().parseFromString(html, 'text/html'); const forms = []; /* * ロシア語の form-of * * 例: * <span class="Cyrl form-of lang-ru 主格|p-form-of origin-неве́жество"> */ const spans = [ ...doc.querySelectorAll('span.Cyrl.form-of') ]; spans.forEach(span => { const classes = span.className.split(/\s+/); /* * lang-ru */ const lang = classes.find(c => c.startsWith('lang-'))?.slice(5); if (lang !== 'ru') { return; } /* * origin-неве́жество * * → noms = неве́жество */ const noms = classes .find(c => c.startsWith('origin-')) ?.slice(7); if (!noms) { return; } /* * 「主格|p-form-of」のようなクラスから * 最後の p-form-of を取り出す。 * * 主格|p-form-of * ↓ * p-form-of * ↓ * p */ const formClass = classes.find(c => c.includes('-form-of')); const infl = formClass .replace(/-form-of$/, ''); if (!infl) { return; } /* * <a> がない selflink は対象外。 * * span: * <strong class="selflink">неве́жество</strong> * * はここで除外される。 */ const a = span.querySelector('a'); if (!a) { return; } /* * a の表示文字列 * * → lemma */ const lemma = a.textContent.trim(); if (!lemma) { return; } /* * 編集対象 title と lemma を比較。 * * ここではアクセントを無視する。 * * title: * невежества * * lemma: * неве́жества * * → 同一と判定 */ if ( normalizeWord(lemma) !== normalizeWord(title) ) { return; } /* * a のリンク先ページ名 * * href: * /wiki/невежества?action=edit&redlink=1 * * → page = невежества */ let page = ''; try { const url = new URL(a.href); const marker = '/wiki/'; if (url.pathname.startsWith(marker)) { page = decodeURIComponent( url.pathname.slice(marker.length) ); } } catch (e) { console.error('リンクURLの解析に失敗:', e); } forms.push({ lang, noms, infl, lemma, page }); }); if (!forms.length) { console.log( '対象となるロシア語 form-of がありません。', { title, spanCount: spans.length } ); return; } /* * 活用形を重複除去 */ const infls = [ ...new Set(forms.map(f => f.infl)) ]; const form = forms[0]; const lang = form.lang; const noms = form.noms; const lemma = form.lemma; const page = form.page; /* * title と lemma は、 * 比較時にはアクセントを無視した。 * * しかし head の要否は「実際の文字列」で比較する。 * * title = невежества * lemma = неве́жества * * → head=neве́жества を付ける */ const head = lemma !== title ? `|head=${lemma}` : ''; /* * data-mw から品詞を取得。 */ const pos = getPos(doc); if (!pos) { console.log( '品詞を取得できませんでした。', { title, templateCandidates: [...doc.querySelectorAll('div[data-mw]')] .map(getTemplateName) .filter(Boolean) } ); return; } const newText = `=={{L|${lang}}}== ==={{${pos}}}=== {{head|${lang}|${pos} form${head}}} #{{inflection of+|${lang}|${noms}||${infls.join('|;|')}}}`; console.log('生成結果:', newText); window.addVerbform(lang, newText); const summary = document.getElementById('wpSummary'); if (summary && !summary.value) { summary.value = '新規作成'; } }) .catch(console.error); })(); i11kkaaadb4udnaouyxr081wd6yakru ezres 0 604888 2340858 2026-09-02T07:42:19Z NekoyamaWataru 87354 /* 新規作成 */ [[en:ezres]]より翻訳 2340858 wikitext text/x-wiki =={{hu}}== {{number box|hu|1000}} ==={{alter}}=== * {{l|hu|1000-es}}, {{l|hu|egyezres}} ==={{pron}}=== * {{hu-IPA}} * {{hyph|hu|ez|res}} ==={{etym}}=== {{suffix+|ezer|es|pos2=形容詞形成接尾辞|lang=hu}} ==={{adjective}}=== {{hu-adj|-}} # 1000の[[量]]や[[おおきさ|大きさ]]の。 # 1000[[個]]入りの、1000個[[セット]]の。 # 1000[[番]]の、[[No.]]1000の、1000の。 #: {{uxi|hu|az '''ezres''' szoba|'''1000号'''室}} ===={{usage}}==== {{U:hu:nominal numerals}} ===={{decl}}==== {{hu-decl-ek|ezre|s|et|acc2=t}} ==={{noun}}=== {{hu-noun|ek}} {{wikipedia|lang=hu|A magyar forint pénzjegyei}} # {{label|hu|informal}} [[通貨単位]]で1000でまとめられる[[紙幣]]。 ## {{lb|hu|specifically}} {{l|hu|[[ezer]][[forintos]] ([[bankjegy]])||1000フォリント紙幣}}の類義語。 ===={{decl}}==== {{hu-infl-nom|ezrese|e|-}}{{hu-pos-etek|ezres||ei}} ===参考文献=== * {{R:ErtSz}} * {{R:Nagyszotar}} qal5iny6uhcux2864mq2n0vsgke9e5d ezredik 0 604889 2340859 2026-09-02T07:42:23Z NekoyamaWataru 87354 /* 新規作成 */ [[en:ezredik]]より翻訳 2340859 wikitext text/x-wiki =={{hu}}== {{number box|hu|1000}} ==={{pron}}=== * {{hu-IPA}} * {{hyph|hu|ez|re|dik}} ==={{etym}}=== {{suffix+|ezer|edik|id2=numeral-forming suffix|lang=hu}} ==={{numeral}}=== {{head|hu|numeral}} # [[第千]]、1000[[番目]]。 ===={{decl}}==== {{hu-infl-nom|ezredike|e}}{{hu-pos-etek|ezredik||ei|n=sg}} ===参考文献=== * {{R:ErtSz}} * {{R:Nagyszotar}} lou05gvilpyxdcfq1ld56yeb25u6akk ezerszer 0 604890 2340860 2026-09-02T07:42:26Z NekoyamaWataru 87354 /* 新規作成 */ [[en:ezerszer]]より翻訳 2340860 wikitext text/x-wiki =={{hu}}== {{number box|hu|1000}} ==={{pron}}=== * {{hu-IPA}} * {{hyph|hu|ezer|szer}} ==={{etym}}=== {{suffix+|ezer|szer|lang=hu}} ==={{adverb}}=== {{hu-adv|-}} # 1000[[回]]で、1000[[度]]で、1000[[倍]]で。 ====参考文献==== * {{l|hu|ezerszeres}} h2b6boyisgti8zja17u0ux7n0ehs16y ezren 0 604891 2340862 2026-09-02T07:42:32Z NekoyamaWataru 87354 /* 新規作成 */ [[en:ezren]]より翻訳 2340862 wikitext text/x-wiki =={{hu}}== {{number box|hu|1000}} ==={{pron}}=== * {{hu-IPA}} * {{hyph|hu|ez|ren}} ==={{etym}}=== {{suffix+|ezer|en|id2=number|lang=hu}} ==={{adverb}}=== {{hu-adv|-}} # {{inflection of|hu|ezer||上格|s}}1000人で。 #: {{uxi|hu|Több '''ezren''' vannak.|何'''千人'''もの人がいる}} ij5v3cwsumeavg2x020dbzmsddb6nbb tízezer 0 604892 2340866 2026-09-02T08:09:16Z NekoyamaWataru 87354 /* 新規作成 */ [[en:tízezer]]より翻訳 2340866 wikitext text/x-wiki {{DEFAULTSORT:tizezer}} =={{hu}}== {{number box|hu|10000}} ==={{pron}}=== * {{hu-IPA}} * {{hyph|hu|tíz|ezer}} ==={{etym}}=== {{affix|hu|tíz|ezer}} ==={{numeral}}=== {{head|hu|numeral|plural|tízezrek}} # [[万]]、[[一万]]、10000。 ===={{decl}}==== {{hu-infl-nom|tízezre|e|stem2=tízezer|spe_sg_stem=tízezr|pos=numerals}}{{hu-pos-etek|tízezr||ei}} ===={{comp}}==== * {{l|hu|tízezerszög}} ===参考文献=== * {{R:ErtSz}} i3wtzejr1mljvfn0bfti8vyigigp2kk tízezres 0 604893 2340867 2026-09-02T08:09:20Z NekoyamaWataru 87354 /* 新規作成 */ [[en:tízezres]]より翻訳 2340867 wikitext text/x-wiki {{DEFAULTSORT:tizezres}} =={{hu}}== {{number box|hu|10000}} ==={{alter}}=== * {{l|hu|10 000-es}} ==={{pron}}=== * {{hu-IPA}} * {{hyph|hu|tíz|ez|res}} ==={{etym}}=== {{suffix+|tízezer|es|pos2=形容詞形成接尾辞|lang=hu}} ==={{adjective}}=== {{hu-adj|-}} # 10000[[番]]の、[[No.]]10000の、10000の。 #: {{uxi|hu|a '''tízezres''' szoba|'''10000号'''室}} # 10000[[個]]入りの、10000個[[セット]]の。 ===={{usage}}==== {{U:hu:nominal numerals}} ===={{decl}}==== {{hu-decl-ek|tízezre|s|et|acc2=t}} ===Noun=== {{hu-noun|ek}} {{wikipedia|lang=hu|A magyar forint pénzjegyei}} # {{label|hu|informal}} [[通貨単位]]で10000でまとめられる[[紙幣]]。 ## {{label|hu|specifically}} {{1|hu|[[tízezer]][[forintos]] ([[bankjegy]])||10000フォリント紙幣}}の類義語。 ===={{decl}}==== {{hu-infl-nom|tízezrese|e|-}}{{hu-pos-etek|tízezres||ei}} a820yr4p0zgwbfnqkhg8w87vzh65qpa százezer 0 604894 2340868 2026-09-02T08:09:24Z NekoyamaWataru 87354 /* 新規作成 */ [[en:százezer]]より翻訳 2340868 wikitext text/x-wiki {{DEFAULTSORT:szazezer}} =={{hu}}== {{number box|hu|100000}} ==={{pron}}=== * {{hu-IPA}} * {{hyph|hu|száz|ezer}} ==={{etym}}=== {{affix|hu|száz|ezer}} ==={{numeral}}=== {{head|hu|numeral|plural|százezrek}} # [[十万]]、100000。 ===={{decl}}==== {{hu-infl-nom|százezre|e|stem2=százezer|spe_sg_stem=százezr|pos=numerals}}{{hu-pos-etek|százezr||ei}} ===={{comp}}==== * {{l|hu|százezerszög}} ===参考文献=== * {{R:ErtSz}} 4wa7eurn1ehg4u8xwh80vz4fq9r1h7w millió 0 604895 2340869 2026-09-02T08:09:28Z NekoyamaWataru 87354 /* 新規作成 */ [[en:millió]]より翻訳 2340869 wikitext text/x-wiki {{DEFAULTSORT:millio}} =={{hu}}== {{number box|hu|1000000}} ==={{alter}}=== * {{l|hu|egymillió}} ==={{pron}}=== * {{hu-IPA|milió}} * {{audio|hu|Hu-millió.ogg}} * {{hyph|hu|mil|lió}} ==={{numeral}}=== {{head|hu|numeral|plural|milliók}} # {{label|hu|cardinal numbers}} [[百万]]、10<sup>6</sup>。 ===={{decl}}==== {{hu-infl-nom|millió|o}}{{hu-pos-tok|millió}} ===={{drv}}==== * {{l|hu|milliós}} ===={{comp}}==== {{top3}} * {{l|hu|egymillió}} * {{l|hu|évmillió}} * {{l|hu|félmillió}} * {{l|hu|hatmillió}} * {{l|hu|kétmillió}} * {{l|hu|kismillió}} {{bottom}} ===={{rel}}==== * {{l|hu|milliomodik}} * {{l|hu|milliomos}} ===参考文献=== * {{R:ErtSz}} 05oss6ebm1skrfgjby2s2i8yg4x2l0s milliomodik 0 604896 2340870 2026-09-02T08:09:32Z NekoyamaWataru 87354 /* 新規作成 */ [[en:milliomodik]]より翻訳 2340870 wikitext text/x-wiki =={{hu}}== {{number box|hu|1000000}} ==={{alter}}=== * {{l|hu|1000000.}}, {{l|hu|1 000 000.}}, {{l|hu|1.000.000.}} ==={{pron}}=== * {{hu-IPA}} * {{hyph|hu|mil|li|o|mo|dik}} ==={{etym}}=== {{m|hu|millió}} の古語 {{suffix+|milliom|odik|lang=hu}} ==={{numeral}}=== {{head|hu|numeral}} # {{label|hu|ordinal numbers}} [[第百万]]、1000000[[番目]]。 ===={{decl}}==== {{hu-infl-nom|milliomodiko|o|a}}or {{hu-infl-nom|milliomodika|o}} {{hu-pos-otok|milliomodik||ai|n=sg}} ===={{rel}}==== {{top3}} * {{l|hu|félmilliomodik}} * {{l|hu|milliomod}} * {{l|hu|tízmilliomodik}} {{bottom}} 27m9hip53l0prlrg8bhfo4tw8xmhg9y milliomod 0 604897 2340871 2026-09-02T08:09:36Z NekoyamaWataru 87354 /* 新規作成 */ [[en:milliomod]]より翻訳 2340871 wikitext text/x-wiki =={{hu}}== {{number box|hu|1000000}} ==={{pron}}=== * {{hu-IPA|milliomod|miliomod}} * {{hyph|hu|mil|li|o|mod}} ==={{etym}}=== {{m|hu|millió}} の古語 {{suffix+|milliom|od|pos2=分数形成接尾辞|lang=hu}} ==={{numeral}}=== {{head|hu|numeral}} # 1000000分の1。 ===={{decl}}==== {{hu-infl-nom|milliomodo|o}}{{hu-pos-otok|milliomod||ai|j=y}} ===={{drv}}==== * {{l|hu|egymilliomod}} * {{l|hu|milliomodrész}} hmafgx7tdq8ir82sxaeokkdtm01uugo milliárd 0 604898 2340874 2026-09-02T08:21:19Z NekoyamaWataru 87354 /* 新規作成 */ カテゴリの追加 2340874 wikitext text/x-wiki {{DEFAULTSORT:milliard}} mg8b316zlumbaqhxtcft9ypa56zt1k5 2340876 2340874 2026-09-02T08:26:55Z NekoyamaWataru 87354 /* 新規作成 */ [[en:milliárd]]より翻訳 2340876 wikitext text/x-wiki {{DEFAULTSORT:milliard}} {{also|milliard|Milliard}} =={{hu}}== {{number box|hu|1000000000}} ==={{alter}}=== * {{l|hu|egymilliárd}} ==={{pron}}=== * {{hu-IPA}} * {{hyph|hu|mil|li|árd}} ==={{etym}}=== {{etyl|de|hu}} {{m|de|Milliarde}} < {{etyl|fr|hu}} {{m|fr|milliard}} ==={{numeral}}=== {{head|hu|numeral|plural|milliárdok}} # {{label|hu|cardinal numbers}} [[十億]]、10<sup>9</sup>。 ===={{decl}}==== {{hu-infl-nom|milliárdo|o}}{{hu-pos-otok|milliárd|j|jai}} ===={{drv}}==== {{top4}} * {{l|hu|milliárdan}} * {{l|hu|milliárdodik}} * {{l|hu|milliárdos}} * {{l|hu|Mrd}} (略語) {{bottom}} ===={{comp}}==== * {{l|hu|egymilliárd}} * {{l|hu|kétmilliárd}} ===参考文献=== * {{R:ErtSz}} q0t3cwrxgz0p4axvt6b41pt3fd55gar невежеством 0 604899 2340882 2026-09-02T08:36:58Z Kuroco2k 84207 新規作成 2340882 wikitext text/x-wiki =={{L|ru}}== ==={{noun}}=== {{head|ru|noun form|head=неве́жеством}} #{{inflection of+|ru|неве́жество||造格|s}} 0vcistb4p843ijc8f6e0rlkx0yo1tsi невежества 0 604900 2340883 2026-09-02T08:36:58Z Kuroco2k 84207 新規作成 2340883 wikitext text/x-wiki =={{L|ru}}== ==={{noun}}=== {{head|ru|noun form|head=неве́жества}} #{{inflection of+|ru|неве́жество||主格|p|;|生格|s|;|対格|p}} 2x79gh3zdcnmujxlbxcfhta7c8f3toe невежестве 0 604901 2340884 2026-09-02T08:36:58Z Kuroco2k 84207 新規作成 2340884 wikitext text/x-wiki =={{L|ru}}== ==={{noun}}=== {{head|ru|noun form|head=неве́жестве}} #{{inflection of+|ru|неве́жество||前置格|s}} n4iuunp7f9rzt5aop0t1lfu10hnezaj невежествам 0 604902 2340885 2026-09-02T08:36:59Z Kuroco2k 84207 新規作成 2340885 wikitext text/x-wiki =={{L|ru}}== ==={{noun}}=== {{head|ru|noun form|head=неве́жествам}} #{{inflection of+|ru|неве́жество||与格|p}} 8292otfsr0hk6h2troxf8dgo4mw5xx3 невежеству 0 604903 2340886 2026-09-02T08:36:59Z Kuroco2k 84207 新規作成 2340886 wikitext text/x-wiki =={{L|ru}}== ==={{noun}}=== {{head|ru|noun form|head=неве́жеству}} #{{inflection of+|ru|неве́жество||与格|s}} dhybktnvnmz6qe8r2f9sjk0kaxihe1x невежествами 0 604904 2340887 2026-09-02T08:36:59Z Kuroco2k 84207 新規作成 2340887 wikitext text/x-wiki =={{L|ru}}== ==={{noun}}=== {{head|ru|noun form|head=неве́жествами}} #{{inflection of+|ru|неве́жество||造格|p}} n9prxlb2pn1jq9evzc4bps0ctgkx5dj невежеств 0 604905 2340888 2026-09-02T08:36:59Z Kuroco2k 84207 新規作成 2340888 wikitext text/x-wiki =={{L|ru}}== ==={{noun}}=== {{head|ru|noun form|head=неве́жеств}} #{{inflection of+|ru|неве́жество||生格|p}} b57jx6kbdpfugsnow9o30k9218asgkj невежествах 0 604906 2340889 2026-09-02T08:37:00Z Kuroco2k 84207 新規作成 2340889 wikitext text/x-wiki =={{L|ru}}== ==={{noun}}=== {{head|ru|noun form|head=неве́жествах}} #{{inflection of+|ru|неве́жество||前置格|p}} fak238cphyvi7yldwegquuqjnwc24jd невежами 0 604907 2340890 2026-09-02T08:39:08Z Kuroco2k 84207 新規作成 2340890 wikitext text/x-wiki =={{L|ru}}== ==={{noun}}=== {{head|ru|noun form|head=неве́жами}} #{{inflection of+|ru|неве́жа||造格|p}} 0a4u7dinpwlr2egsvvyxnf6uct2sxj6 невежах 0 604908 2340891 2026-09-02T08:39:08Z Kuroco2k 84207 新規作成 2340891 wikitext text/x-wiki =={{L|ru}}== ==={{noun}}=== {{head|ru|noun form|head=неве́жах}} #{{inflection of+|ru|неве́жа||前置格|p}} rs4pdtfrb6nxvs6phop6teifdtdm7zc невежам 0 604909 2340892 2026-09-02T08:39:08Z Kuroco2k 84207 新規作成 2340892 wikitext text/x-wiki =={{L|ru}}== ==={{noun}}=== {{head|ru|noun form|head=неве́жам}} #{{inflection of+|ru|неве́жа||与格|p}} ludem6tjffyar53rhbv7bmfnfwy3p4t невеж 0 604910 2340893 2026-09-02T08:39:09Z Kuroco2k 84207 新規作成 2340893 wikitext text/x-wiki =={{L|ru}}== ==={{noun}}=== {{head|ru|noun form|head=неве́ж}} #{{inflection of+|ru|неве́жа||生格|p|;|対格|p}} t6wpuq0n52lnxi09tjnxs9vtk0f0u72 невежею 0 604911 2340894 2026-09-02T08:39:09Z Kuroco2k 84207 新規作成 2340894 wikitext text/x-wiki =={{L|ru}}== ==={{noun}}=== {{head|ru|noun form|head=неве́жею}} #{{inflection of+|ru|неве́жа||造格|s}} c0nou93yspu3enh7vzurcv556rieh6c невежей 0 604912 2340895 2026-09-02T08:39:09Z Kuroco2k 84207 新規作成 2340895 wikitext text/x-wiki =={{L|ru}}== ==={{noun}}=== {{head|ru|noun form|head=неве́жей}} #{{inflection of+|ru|неве́жа||造格|s}} kgzw3l06uvwkh1iysej2iifb8otk1yv невежу 0 604913 2340896 2026-09-02T08:39:10Z Kuroco2k 84207 新規作成 2340896 wikitext text/x-wiki =={{L|ru}}== ==={{noun}}=== {{head|ru|noun form|head=неве́жу}} #{{inflection of+|ru|неве́жа||対格|s}} nihaosgk9mvhf580eusbtdbgdfx8o6g невеже 0 604914 2340897 2026-09-02T08:39:10Z Kuroco2k 84207 新規作成 2340897 wikitext text/x-wiki =={{L|ru}}== ==={{noun}}=== {{head|ru|noun form|head=неве́же}} #{{inflection of+|ru|неве́жа||与格|s|;|前置格|s}} 0sphpjvto3fhntciweyo1hqtafsefy8 невежи 0 604915 2340898 2026-09-02T08:39:10Z Kuroco2k 84207 新規作成 2340898 wikitext text/x-wiki =={{L|ru}}== ==={{noun}}=== {{head|ru|noun form|head=неве́жи}} #{{inflection of+|ru|неве́жа||主格|p|;|生格|s}} 7d7czntuy7lpufikwmv3c6s55g671yg невежественною 0 604916 2340902 2026-09-02T08:47:04Z Kuroco2k 84207 新規作成 2340902 wikitext text/x-wiki =={{L|ru}}== ==={{adj}}=== {{head|ru|adj form|head=неве́жественною}} #{{inflection of+|ru|неве́жественный||造格|f|s}} mmmddk8n4qv691ok0qa04nz9d1f4ylf невежественные 0 604917 2340903 2026-09-02T08:47:04Z Kuroco2k 84207 新規作成 2340903 wikitext text/x-wiki =={{L|ru}}== ==={{adj}}=== {{head|ru|adj form|head=неве́жественные}} #{{inflection of+|ru|неве́жественный||nom|p|;|in|対格|p}} puz038ybto7u2rztsgupy8vro8doifm невежественных 0 604918 2340904 2026-09-02T08:47:04Z Kuroco2k 84207 新規作成 2340904 wikitext text/x-wiki =={{L|ru}}== ==={{adj}}=== {{head|ru|adj form|head=неве́жественных}} #{{inflection of+|ru|неве́жественный||生格|p|;|an|対格|p|;|前置格|p}} s65oglrg0aqna2c6pmnjos4o1lcf8xs невежественными 0 604919 2340905 2026-09-02T08:47:05Z Kuroco2k 84207 新規作成 2340905 wikitext text/x-wiki =={{L|ru}}== ==={{adj}}=== {{head|ru|adj form|head=неве́жественными}} #{{inflection of+|ru|неве́жественный||造格|p}} qpx8g1y9b31f7zogswyjli6g7wy5oul невежественного 0 604920 2340906 2026-09-02T08:47:05Z Kuroco2k 84207 新規作成 2340906 wikitext text/x-wiki =={{L|ru}}== ==={{adj}}=== {{head|ru|adj form|head=неве́жественного}} #{{inflection of+|ru|неве́жественный||生格|m//n|s|;|an|対格|m|s}} 2w4gomrm6hcsyf3kxmn11vmnn8n0htr невежественное 0 604921 2340907 2026-09-02T08:47:05Z Kuroco2k 84207 新規作成 2340907 wikitext text/x-wiki =={{L|ru}}== ==={{adj}}=== {{head|ru|adj form|head=неве́жественное}} #{{inflection of+|ru|неве́жественный||主格|n|s|;|対格|n|s}} s4uhs979f01gnfbfs0bki81qv7ath37 невежественным 0 604922 2340908 2026-09-02T08:47:06Z Kuroco2k 84207 新規作成 2340908 wikitext text/x-wiki =={{L|ru}}== ==={{adj}}=== {{head|ru|adj form|head=неве́жественным}} #{{inflection of+|ru|неве́жественный||与格|p|;|造格|m//n|s}} fiis757j9kuaxgkbfx8o5bqelltcsj2 невежественном 0 604923 2340909 2026-09-02T08:47:06Z Kuroco2k 84207 新規作成 2340909 wikitext text/x-wiki =={{L|ru}}== ==={{adj}}=== {{head|ru|adj form|head=неве́жественном}} #{{inflection of+|ru|неве́жественный||前置格|m//n|s}} gff2qd3qqnhdqkqjg9tlupisbykkm6i невежествен 0 604924 2340910 2026-09-02T08:47:07Z Kuroco2k 84207 新規作成 2340910 wikitext text/x-wiki =={{L|ru}}== ==={{adj}}=== {{head|ru|adj form|head=неве́жествен}} #{{inflection of+|ru|неве́жественный||short|m|s}} czc7mj33dn6x8z8xcci8c46bnvmstbm невежественному 0 604925 2340911 2026-09-02T08:47:06Z Kuroco2k 84207 新規作成 2340911 wikitext text/x-wiki =={{L|ru}}== ==={{adj}}=== {{head|ru|adj form|head=неве́жественному}} #{{inflection of+|ru|неве́жественный||与格|m//n|s}} sn6ytam84qog0ln8t3m2kn862vwx6y7 невежественен 0 604926 2340912 2026-09-02T08:47:07Z Kuroco2k 84207 新規作成 2340912 wikitext text/x-wiki =={{L|ru}}== ==={{adj}}=== {{head|ru|adj form|head=неве́жественен}} #{{inflection of+|ru|неве́жественный||short|m|s}} cmkgqolxn3evqwnnykq1dxxhqjn5lzo невежественна 0 604927 2340913 2026-09-02T08:47:07Z Kuroco2k 84207 新規作成 2340913 wikitext text/x-wiki =={{L|ru}}== ==={{adj}}=== {{head|ru|adj form|head=неве́жественна}} #{{inflection of+|ru|неве́жественный||short|f|s}} n5iam2bnfi8q6ijo269tbq5auzqyyke невежественны 0 604928 2340914 2026-09-02T08:47:07Z Kuroco2k 84207 新規作成 2340914 wikitext text/x-wiki =={{L|ru}}== ==={{adj}}=== {{head|ru|adj form|head=неве́жественны}} #{{inflection of+|ru|неве́жественный||short|p}} pjzyc30e1p1yai86jwldvdkl7rq95q3 невежественно 0 604929 2340915 2026-09-02T08:47:08Z Kuroco2k 84207 新規作成 2340915 wikitext text/x-wiki =={{L|ru}}== ==={{adj}}=== {{head|ru|adj form|head=неве́жественно}} #{{inflection of+|ru|неве́жественный||short|n|s}} fxoxs7pdt2smai1kkd246ccm2tayheb невежественной 0 604930 2340916 2026-09-02T08:47:08Z Kuroco2k 84207 新規作成 2340916 wikitext text/x-wiki =={{L|ru}}== ==={{adj}}=== {{head|ru|adj form|head=неве́жественной}} #{{inflection of+|ru|неве́жественный||生格|f|s|;|与格|f|s|;|造格|f|s|;|前置格|f|s}} crfoa5dhfz7963809w3e9m4xuozidjj невежественная 0 604931 2340917 2026-09-02T08:47:08Z Kuroco2k 84207 新規作成 2340917 wikitext text/x-wiki =={{L|ru}}== ==={{adj}}=== {{head|ru|adj form|head=неве́жественная}} #{{inflection of+|ru|неве́жественный||主格|f|s}} sypckp21tufo2htex3owo90x57ga27j невежественную 0 604932 2340918 2026-09-02T08:47:08Z Kuroco2k 84207 新規作成 2340918 wikitext text/x-wiki =={{L|ru}}== ==={{adj}}=== {{head|ru|adj form|head=неве́жественную}} #{{inflection of+|ru|неве́жественный||対格|f|s}} tnn4p6woat2h79afrtt7q4b23wyowtz норвежскими 0 604933 2340919 2026-09-02T08:52:28Z Kuroco2k 84207 新規作成 2340919 wikitext text/x-wiki =={{L|ru}}== ==={{adj}}=== {{head|ru|adj form|head=норве́жскими}} #{{inflection of+|ru|норве́жский||造格|p}} 06kqhlx518ly50bn11cufjnsa32ndab норвежских 0 604934 2340920 2026-09-02T08:52:28Z Kuroco2k 84207 新規作成 2340920 wikitext text/x-wiki =={{L|ru}}== ==={{adj}}=== {{head|ru|adj form|head=норве́жских}} #{{inflection of+|ru|норве́жский||生格|p|;|an|対格|p|;|前置格|p}} 6r10jv9kw5q5b11heoho3yblpqoe1np норвежские 0 604935 2340921 2026-09-02T08:52:29Z Kuroco2k 84207 新規作成 2340921 wikitext text/x-wiki =={{L|ru}}== ==={{adj}}=== {{head|ru|adj form|head=норве́жские}} #{{inflection of+|ru|норве́жский||nom|p|;|in|対格|p}} eac1ieet0zeehvfy5ayumu0fqfhj21z норвежскою 0 604936 2340922 2026-09-02T08:52:29Z Kuroco2k 84207 新規作成 2340922 wikitext text/x-wiki =={{L|ru}}== ==={{adj}}=== {{head|ru|adj form|head=норве́жскою}} #{{inflection of+|ru|норве́жский||造格|f|s}} 8a0qv474jdf3iz4e0b096dcb7nlh6fo норвежскую 0 604937 2340923 2026-09-02T08:52:29Z Kuroco2k 84207 新規作成 2340923 wikitext text/x-wiki =={{L|ru}}== ==={{adj}}=== {{head|ru|adj form|head=норве́жскую}} #{{inflection of+|ru|норве́жский||対格|f|s}} j4hc5zd1ry9l6ljr2jk7z5gzg8bxnx4 норвежской 0 604938 2340924 2026-09-02T08:52:30Z Kuroco2k 84207 新規作成 2340924 wikitext text/x-wiki =={{L|ru}}== ==={{adj}}=== {{head|ru|adj form|head=норве́жской}} #{{inflection of+|ru|норве́жский||生格|f|s|;|与格|f|s|;|造格|f|s|;|前置格|f|s}} 02arko6xk38h8lgawrq7oxj4we78bnm норвежская 0 604939 2340925 2026-09-02T08:52:30Z Kuroco2k 84207 新規作成 2340925 wikitext text/x-wiki =={{L|ru}}== ==={{adj}}=== {{head|ru|adj form|head=норве́жская}} #{{inflection of+|ru|норве́жский||主格|f|s}} j3jmj73752z9n1q2rxvv2o6zqptzzre норвежское 0 604940 2340926 2026-09-02T08:52:31Z Kuroco2k 84207 新規作成 2340926 wikitext text/x-wiki =={{L|ru}}== ==={{adj}}=== {{head|ru|adj form|head=норве́жское}} #{{inflection of+|ru|норве́жский||主格|n|s|;|対格|n|s}} s1xbudu17170974tc5pbz68ilhgt565 румынскими 0 604941 2340927 2026-09-02T08:53:44Z Kuroco2k 84207 新規作成 2340927 wikitext text/x-wiki =={{L|ru}}== ==={{adj}}=== {{head|ru|adj form|head=румы́нскими}} #{{inflection of+|ru|румы́нский||造格|p}} 6w9u2snm7z2s0rizitq1srmamottomr румынских 0 604942 2340928 2026-09-02T08:53:44Z Kuroco2k 84207 新規作成 2340928 wikitext text/x-wiki =={{L|ru}}== ==={{adj}}=== {{head|ru|adj form|head=румы́нских}} #{{inflection of+|ru|румы́нский||生格|p|;|an|対格|p|;|前置格|p}} 2w44i7bbuveo0gvaixij5z2v09j5h1r румынские 0 604943 2340929 2026-09-02T08:53:44Z Kuroco2k 84207 新規作成 2340929 wikitext text/x-wiki =={{L|ru}}== ==={{adj}}=== {{head|ru|adj form|head=румы́нские}} #{{inflection of+|ru|румы́нский||nom|p|;|in|対格|p}} s7h7n84xma7ky2u6ddi8wmqe6lduqyy румынскою 0 604944 2340930 2026-09-02T08:53:45Z Kuroco2k 84207 新規作成 2340930 wikitext text/x-wiki =={{L|ru}}== ==={{adj}}=== {{head|ru|adj form|head=румы́нскою}} #{{inflection of+|ru|румы́нский||造格|f|s}} tonxcxi9a9expcmjybel8ddplawdraz румынскую 0 604945 2340931 2026-09-02T08:53:45Z Kuroco2k 84207 新規作成 2340931 wikitext text/x-wiki =={{L|ru}}== ==={{adj}}=== {{head|ru|adj form|head=румы́нскую}} #{{inflection of+|ru|румы́нский||対格|f|s}} jmqa746x7xs7v1yvm8cpmaxojvxyrq0 румынской 0 604946 2340932 2026-09-02T08:53:45Z Kuroco2k 84207 新規作成 2340932 wikitext text/x-wiki =={{L|ru}}== ==={{adj}}=== {{head|ru|adj form|head=румы́нской}} #{{inflection of+|ru|румы́нский||生格|f|s|;|与格|f|s|;|造格|f|s|;|前置格|f|s}} 96iv8qgh1ytwm307f3yymn07yw5j9u7 румынское 0 604947 2340933 2026-09-02T08:53:46Z Kuroco2k 84207 新規作成 2340933 wikitext text/x-wiki =={{L|ru}}== ==={{adj}}=== {{head|ru|adj form|head=румы́нское}} #{{inflection of+|ru|румы́нский||主格|n|s|;|対格|n|s}} 50ote82mu5n0omobt55u51lv4hyhsx1 румынская 0 604948 2340934 2026-09-02T08:53:46Z Kuroco2k 84207 新規作成 2340934 wikitext text/x-wiki =={{L|ru}}== ==={{adj}}=== {{head|ru|adj form|head=румы́нская}} #{{inflection of+|ru|румы́нский||主格|f|s}} 107i1za4ooyy3yu5c7o3c0wa865aypn линейкам 0 604949 2340935 2026-09-02T08:55:46Z Kuroco2k 84207 新規作成 2340935 wikitext text/x-wiki =={{L|ru}}== ==={{noun}}=== {{head|ru|noun form|head=лине́йкам}} #{{inflection of+|ru|лине́йка||与格|p}} 26ex92gumbf1c6cx904wxxdw107gvul линейками 0 604950 2340936 2026-09-02T08:55:46Z Kuroco2k 84207 新規作成 2340936 wikitext text/x-wiki =={{L|ru}}== ==={{noun}}=== {{head|ru|noun form|head=лине́йками}} #{{inflection of+|ru|лине́йка||造格|p}} mdkgxv8ijjqrimjl5kkh7m12wxuqfw4 линейках 0 604951 2340937 2026-09-02T08:55:46Z Kuroco2k 84207 新規作成 2340937 wikitext text/x-wiki =={{L|ru}}== ==={{noun}}=== {{head|ru|noun form|head=лине́йках}} #{{inflection of+|ru|лине́йка||前置格|p}} 3l8m40aiao3gpesz372182wxhs0ujc6 линеек 0 604952 2340938 2026-09-02T08:55:47Z Kuroco2k 84207 新規作成 2340938 wikitext text/x-wiki =={{L|ru}}== ==={{noun}}=== {{head|ru|noun form|head=лине́ек}} #{{inflection of+|ru|лине́йка||生格|p}} gdwqf19i45zi6zcr03m6ipo7ftr5kgl линейкою 0 604953 2340939 2026-09-02T08:55:47Z Kuroco2k 84207 新規作成 2340939 wikitext text/x-wiki =={{L|ru}}== ==={{noun}}=== {{head|ru|noun form|head=лине́йкою}} #{{inflection of+|ru|лине́йка||造格|s}} nu5wojbeorukacro9garyfqx4ktnsst линейкой 0 604954 2340940 2026-09-02T08:55:47Z Kuroco2k 84207 新規作成 2340940 wikitext text/x-wiki =={{L|ru}}== ==={{noun}}=== {{head|ru|noun form|head=лине́йкой}} #{{inflection of+|ru|лине́йка||造格|s}} 4v90xn9aefuob1stwav6ns8qm7hxp2s линейку 0 604955 2340941 2026-09-02T08:55:47Z Kuroco2k 84207 新規作成 2340941 wikitext text/x-wiki =={{L|ru}}== ==={{noun}}=== {{head|ru|noun form|head=лине́йку}} #{{inflection of+|ru|лине́йка||対格|s}} gm8xhrqrrg8ia725rt9u63fv9kes1ei линейке 0 604956 2340942 2026-09-02T08:55:48Z Kuroco2k 84207 新規作成 2340942 wikitext text/x-wiki =={{L|ru}}== ==={{noun}}=== {{head|ru|noun form|head=лине́йке}} #{{inflection of+|ru|лине́йка||与格|s|;|前置格|s}} 8uwiwenpabzm409qkkmtlilezen6h8e линейки 0 604957 2340943 2026-09-02T08:55:48Z Kuroco2k 84207 新規作成 2340943 wikitext text/x-wiki =={{L|ru}}== ==={{noun}}=== {{head|ru|noun form|head=лине́йки}} #{{inflection of+|ru|лине́йка||主格|p|;|生格|s|;|対格|p}} 6re29z8x298sze4irnxtcncn0zdtaud кошмарах 0 604958 2340944 2026-09-02T08:56:57Z Kuroco2k 84207 新規作成 2340944 wikitext text/x-wiki =={{L|ru}}== ==={{noun}}=== {{head|ru|noun form|head=кошма́рах}} #{{inflection of+|ru|кошма́р||前置格|p}} oeh9hpoqniwt1r8v2rtiz7j70hihjs2 кошмарами 0 604959 2340945 2026-09-02T08:56:57Z Kuroco2k 84207 新規作成 2340945 wikitext text/x-wiki =={{L|ru}}== ==={{noun}}=== {{head|ru|noun form|head=кошма́рами}} #{{inflection of+|ru|кошма́р||造格|p}} c2buphy35zg97fpgdl7qv4eng3jdbyc кошмарам 0 604960 2340946 2026-09-02T08:56:58Z Kuroco2k 84207 新規作成 2340946 wikitext text/x-wiki =={{L|ru}}== ==={{noun}}=== {{head|ru|noun form|head=кошма́рам}} #{{inflection of+|ru|кошма́р||与格|p}} jxkxslsqkqzhcfk0csy7y4wezm7hz90 кошмаров 0 604961 2340947 2026-09-02T08:56:58Z Kuroco2k 84207 新規作成 2340947 wikitext text/x-wiki =={{L|ru}}== ==={{noun}}=== {{head|ru|noun form|head=кошма́ров}} #{{inflection of+|ru|кошма́р||生格|p}} j70d4v65y9bj7v5xc1j60fnpigme9uh кошмары 0 604962 2340948 2026-09-02T08:56:58Z Kuroco2k 84207 新規作成 2340948 wikitext text/x-wiki =={{L|ru}}== ==={{noun}}=== {{head|ru|noun form|head=кошма́ры}} #{{inflection of+|ru|кошма́р||主格|p|;|対格|p}} 1kzzwpy4hynrf8qfhrqffgtyk7d027l кошмаре 0 604963 2340949 2026-09-02T08:56:58Z Kuroco2k 84207 新規作成 2340949 wikitext text/x-wiki =={{L|ru}}== ==={{noun}}=== {{head|ru|noun form|head=кошма́ре}} #{{inflection of+|ru|кошма́р||前置格|s}} 4izj1syal7tdoq8avs5uebdcnmlbuze кошмаром 0 604964 2340950 2026-09-02T08:56:59Z Kuroco2k 84207 新規作成 2340950 wikitext text/x-wiki =={{L|ru}}== ==={{noun}}=== {{head|ru|noun form|head=кошма́ром}} #{{inflection of+|ru|кошма́р||造格|s}} tdboi177yzzfrl06dd2pazul6i4d2h5 кошмару 0 604965 2340951 2026-09-02T08:56:59Z Kuroco2k 84207 新規作成 2340951 wikitext text/x-wiki =={{L|ru}}== ==={{noun}}=== {{head|ru|noun form|head=кошма́ру}} #{{inflection of+|ru|кошма́р||与格|s}} 6460nxhm9afuem7ifjn4tb8o0d74gm1 кошмара 0 604966 2340952 2026-09-02T08:56:59Z Kuroco2k 84207 新規作成 2340952 wikitext text/x-wiki =={{L|ru}}== ==={{noun}}=== {{head|ru|noun form|head=кошма́ра}} #{{inflection of+|ru|кошма́р||生格|s}} 9eklm999la5gyxeb6517swnhx5cvucp товарищах 0 604967 2340953 2026-09-02T08:57:47Z Kuroco2k 84207 新規作成 2340953 wikitext text/x-wiki =={{L|ru}}== ==={{noun}}=== {{head|ru|noun form|head=това́рищах}} #{{inflection of+|ru|това́рищ||前置格|p}} es5204nzdv6qnml1j1au5hi5x13jkl0 товарищи 0 604968 2340954 2026-09-02T08:57:48Z Kuroco2k 84207 新規作成 2340954 wikitext text/x-wiki =={{L|ru}}== ==={{noun}}=== {{head|ru|noun form|head=това́рищи}} #{{inflection of+|ru|това́рищ||主格|p}} sgi3finjhbauihxjkh0bejqny19ag4u товарищей 0 604969 2340955 2026-09-02T08:57:49Z Kuroco2k 84207 新規作成 2340955 wikitext text/x-wiki =={{L|ru}}== ==={{noun}}=== {{head|ru|noun form|head=това́рищей}} #{{inflection of+|ru|това́рищ||生格|p|;|対格|p}} 0x3v4cr83fpgmckyd496wpegvamgu1r товарищем 0 604970 2340956 2026-09-02T08:57:49Z Kuroco2k 84207 新規作成 2340956 wikitext text/x-wiki =={{L|ru}}== ==={{noun}}=== {{head|ru|noun form|head=това́рищем}} #{{inflection of+|ru|това́рищ||造格|s}} g923jz3rzhff4zwjc3m40f5gcg9i1p4 товарищами 0 604971 2340957 2026-09-02T08:57:49Z Kuroco2k 84207 新規作成 2340957 wikitext text/x-wiki =={{L|ru}}== ==={{noun}}=== {{head|ru|noun form|head=това́рищами}} #{{inflection of+|ru|това́рищ||造格|p}} 7kulr4tijk4ci239mzuma1id6av7iux товарищам 0 604972 2340958 2026-09-02T08:57:49Z Kuroco2k 84207 新規作成 2340958 wikitext text/x-wiki =={{L|ru}}== ==={{noun}}=== {{head|ru|noun form|head=това́рищам}} #{{inflection of+|ru|това́рищ||与格|p}} qvoie00tgat9e7r6lahmfk5p3pxkqrf товарищу 0 604973 2340959 2026-09-02T08:57:50Z Kuroco2k 84207 新規作成 2340959 wikitext text/x-wiki =={{L|ru}}== ==={{noun}}=== {{head|ru|noun form|head=това́рищу}} #{{inflection of+|ru|това́рищ||与格|s}} mf5w94nserhf3myrtm4cgral3q5c38d товарища 0 604974 2340960 2026-09-02T08:57:50Z Kuroco2k 84207 新規作成 2340960 wikitext text/x-wiki =={{L|ru}}== ==={{noun}}=== {{head|ru|noun form|head=това́рища}} #{{inflection of+|ru|това́рищ||生格|s|;|対格|s}} 2e0ariy39br765j60j1r7m8bxrnpiua товарище 0 604975 2340961 2026-09-02T08:57:50Z Kuroco2k 84207 新規作成 2340961 wikitext text/x-wiki =={{L|ru}}== ==={{noun}}=== {{head|ru|noun form|head=това́рище}} #{{inflection of+|ru|това́рищ||前置格|s}} t9fd1hx4rbkbow22tvjzc7sdp8nc9j9 Российскую Федерацию 0 604976 2340962 2026-09-02T09:00:10Z Kuroco2k 84207 新規作成 2340962 wikitext text/x-wiki =={{L|ru}}== ==={{noun}}=== {{head|ru|noun form|head=Росси́йскую Федера́цию}} #{{inflection of+|ru|Росси́йская_Федера́ция||対格|s}} 47k6xc73vx62p4fybobewk5bs4p5y5p 2340968 2340962 2026-09-02T09:01:11Z Kuroco2k 84207 2340968 wikitext text/x-wiki =={{L|ru}}== ==={{name}}=== {{head|ru|name form|head=Росси́йскую Федера́цию}} #{{inflection of+|ru|Росси́йская_Федера́ция||対格|s}} ougrkbyva3jet256ywx8ce94gliwc8w Российской Федерации 0 604977 2340963 2026-09-02T09:00:10Z Kuroco2k 84207 新規作成 2340963 wikitext text/x-wiki =={{L|ru}}== ==={{noun}}=== {{head|ru|noun form|head=Росси́йской Федера́ции}} #{{inflection of+|ru|Росси́йская_Федера́ция||生格|s|;|与格|s|;|前置格|s}} 5w7366qg07z3qd85vucnaj8sqlqjol5 2340969 2340963 2026-09-02T09:01:12Z Kuroco2k 84207 2340969 wikitext text/x-wiki =={{L|ru}}== ==={{name}}=== {{head|ru|name form|head=Росси́йской Федера́ции}} #{{inflection of+|ru|Росси́йская_Федера́ция||生格|s|;|与格|s|;|前置格|s}} rzxa4it0gwsj80pg0r4zbbzh3308rsk Российскою Федерациею 0 604978 2340964 2026-09-02T09:00:11Z Kuroco2k 84207 新規作成 2340964 wikitext text/x-wiki =={{L|ru}}== ==={{noun}}=== {{head|ru|noun form|head=Росси́йскою Федера́циею}} #{{inflection of+|ru|Росси́йская_Федера́ция||造格|s}} 5rsqalsm4bs7jq1oakk1430m9ep5b5f 2340966 2340964 2026-09-02T09:01:11Z Kuroco2k 84207 2340966 wikitext text/x-wiki =={{L|ru}}== ==={{name}}=== {{head|ru|name form|head=Росси́йскою Федера́циею}} #{{inflection of+|ru|Росси́йская_Федера́ция||造格|s}} dl8sr8elwci9uzpuqk74a7o0lkh526c Российской Федерацией 0 604979 2340965 2026-09-02T09:00:11Z Kuroco2k 84207 新規作成 2340965 wikitext text/x-wiki =={{L|ru}}== ==={{noun}}=== {{head|ru|noun form|head=Росси́йской Федера́цией}} #{{inflection of+|ru|Росси́йская_Федера́ция||造格|s}} j1iozurdkkmc86wgsq2yg8jky0unvd5 2340967 2340965 2026-09-02T09:01:11Z Kuroco2k 84207 2340967 wikitext text/x-wiki =={{L|ru}}== ==={{name}}=== {{head|ru|name form|head=Росси́йской Федера́цией}} #{{inflection of+|ru|Росси́йская_Федера́ция||造格|s}} 9hq02gt0qgea91vjlp2yqq43zwashao aufzuschließen 0 604980 2340972 2026-09-02T09:10:09Z Kuroco2k 84207 新規作成 2340972 wikitext text/x-wiki =={{L|de}}== ==={{verb}}=== {{head|de|verb form}} #{{inflection of+|de|aufschließen||zu|不定詞}} 4jxn5yv1eixqur5a0m9ctbpc448wjuv schlösset auf 0 604981 2340973 2026-09-02T09:10:59Z Kuroco2k 84207 新規作成 2340973 wikitext text/x-wiki =={{L|de}}== ==={{verb}}=== {{head|de|verb form}} #{{inflection of+|de|aufschließen||接続法|II|2|p}} e9bnh3xm57kfkkntr03cgc0h5qfo9r7 schlösst auf 0 604982 2340974 2026-09-02T09:10:59Z Kuroco2k 84207 新規作成 2340974 wikitext text/x-wiki =={{L|de}}== ==={{verb}}=== {{head|de|verb form}} #{{inflection of+|de|aufschließen||接続法|II|2|s|;|接続法|II|2|p}} mnfmd0vv4u6ilvwfsgujgfp2m4qkifq schlössest auf 0 604983 2340975 2026-09-02T09:11:00Z Kuroco2k 84207 新規作成 2340975 wikitext text/x-wiki =={{L|de}}== ==={{verb}}=== {{head|de|verb form}} #{{inflection of+|de|aufschließen||接続法|II|2|s}} f3b2v1pfzxqx49yt0fteiphmq66nb5p schlössen auf 0 604984 2340976 2026-09-02T09:11:00Z Kuroco2k 84207 新規作成 2340976 wikitext text/x-wiki =={{L|de}}== ==={{verb}}=== {{head|de|verb form}} #{{inflection of+|de|aufschließen||接続法|II|1|p|;|接続法|II|3|p}} gsklzbtq6vq3ihvmil4hu6j2p01q4ka schließest auf 0 604985 2340977 2026-09-02T09:11:01Z Kuroco2k 84207 新規作成 2340977 wikitext text/x-wiki =={{L|de}}== ==={{verb}}=== {{head|de|verb form}} #{{inflection of+|de|aufschließen||接続法|I|2|s}} 1ra98cz5xmdn3rqa88p3llr7j78wj3p schließet auf 0 604986 2340978 2026-09-02T09:11:01Z Kuroco2k 84207 新規作成 2340978 wikitext text/x-wiki =={{L|de}}== ==={{verb}}=== {{head|de|verb form}} #{{inflection of+|de|aufschließen||接続法|I|2|p}} drv6ieg6qw84h5044dh724qbt8f16tc schließ auf 0 604987 2340979 2026-09-02T09:11:01Z Kuroco2k 84207 新規作成 2340979 wikitext text/x-wiki =={{L|de}}== ==={{verb}}=== {{head|de|verb form}} #{{inflection of+|de|aufschließen||命令法|s}} p42vjp3l6zfie761dh5mzcmcx03p9sf schlossen auf 0 604988 2340980 2026-09-02T09:11:01Z Kuroco2k 84207 新規作成 2340980 wikitext text/x-wiki =={{L|de}}== ==={{verb}}=== {{head|de|verb form}} #{{inflection of+|de|aufschließen||直説法|過去|1|p|;|直説法|過去|3|p}} p0abj9xlj8c39bzl82axmzys5ew4r0o schlösse auf 0 604989 2340981 2026-09-02T09:11:01Z Kuroco2k 84207 新規作成 2340981 wikitext text/x-wiki =={{L|de}}== ==={{verb}}=== {{head|de|verb form}} #{{inflection of+|de|aufschließen||接続法|II|1|s|;|接続法|II|3|s}} 1gqw47zbqo495ejfpa1hpi0sfgl0w0p schlosst auf 0 604990 2340982 2026-09-02T09:11:02Z Kuroco2k 84207 新規作成 2340982 wikitext text/x-wiki =={{L|de}}== ==={{verb}}=== {{head|de|verb form}} #{{inflection of+|de|aufschließen||直説法|過去|2|s|;|直説法|過去|2|p}} a8nefndhl14u80prdidbfqm8x1otpxr schlossest auf 0 604991 2340983 2026-09-02T09:11:02Z Kuroco2k 84207 新規作成 2340983 wikitext text/x-wiki =={{L|de}}== ==={{verb}}=== {{head|de|verb form}} #{{inflection of+|de|aufschließen||直説法|過去|2|s}} jgjzd44mw3v5nc6gg3b1kpan5qmdl21 schloss auf 0 604992 2340984 2026-09-02T09:11:02Z Kuroco2k 84207 新規作成 2340984 wikitext text/x-wiki =={{L|de}}== ==={{verb}}=== {{head|de|verb form}} #{{inflection of+|de|aufschließen||直説法|過去|1|s|;|直説法|過去|3|s}} qr1kqpqrc4tl5hk86pjsm4ro90rgwl4 schließen auf 0 604993 2340985 2026-09-02T09:11:02Z Kuroco2k 84207 新規作成 2340985 wikitext text/x-wiki =={{L|de}}== ==={{verb}}=== {{head|de|verb form}} #{{inflection of+|de|aufschließen||直説法|現在|1|p|;|接続法|I|1|p|;|直説法|現在|3|p|;|接続法|I|3|p}} rncbxsehqdvbtb4uqqdqeskbwib61o5 omitiríeis 0 604994 2340993 2026-09-02T09:29:20Z Kuroco2k 84207 新規作成 2340993 wikitext text/x-wiki =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|omitir||可能法|2|p}} op9nl7xqoxzbb23gt74qrupo78r3tlj omitiriam 0 604995 2340994 2026-09-02T09:29:20Z Kuroco2k 84207 新規作成 2340994 wikitext text/x-wiki =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|omitir||可能法|3|p}} 6qybvrl9uq1eoqyh24i0l5g9a1ft6ck omitiríamos 0 604996 2340995 2026-09-02T09:29:21Z Kuroco2k 84207 新規作成 2340995 wikitext text/x-wiki =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|omitir||可能法|1|p}} =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|omitir||可能法|1|p}} 9fci22xda428bavvplmm6skllto3npl omitiria 0 604997 2340996 2026-09-02T09:29:21Z Kuroco2k 84207 新規作成 2340996 wikitext text/x-wiki =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|omitir||可能法|1|s|;|可能法|3|s}} 14d7hwq49dvwpw3sihpex1s0j4aclct omitirão 0 604998 2340997 2026-09-02T09:29:22Z Kuroco2k 84207 新規作成 2340997 wikitext text/x-wiki =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|omitir||直説法|未来|3|p}} asff4yo0qcjma4k52xhz97cxp2iftmf omitireis 0 604999 2340998 2026-09-02T09:29:22Z Kuroco2k 84207 新規作成 2340998 wikitext text/x-wiki =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|omitir||直説法|未来|2|p}} r9otv2lhucq9azh6lp3zy6yvozms42f omitiremos 0 605000 2340999 2026-09-02T09:29:22Z Kuroco2k 84207 新規作成 2340999 wikitext text/x-wiki =={{L|gl}}== ==={{verb}}=== {{head|gl|verb form}} #{{inflection of+|gl|omitir||直説法|未来|1|p}} =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|omitir||直説法|未来|1|p}} =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|omitir||直説法|未来|1|p}} r1b7d3dxerhe8qukh1r33pt12hfjv4y omitirá 0 605001 2341000 2026-09-02T09:29:23Z Kuroco2k 84207 新規作成 2341000 wikitext text/x-wiki =={{L|gl}}== ==={{verb}}=== {{head|gl|verb form}} #{{inflection of+|gl|omitir||直説法|未来|3|s}} =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|omitir||直説法|未来|3|s}} =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|omitir||直説法|未来|3|s}} piz9wsbaxpclkcdzv038ele4sudrk8s omitirei 0 605002 2341001 2026-09-02T09:29:23Z Kuroco2k 84207 新規作成 2341001 wikitext text/x-wiki =={{L|gl}}== ==={{verb}}=== {{head|gl|verb form}} #{{inflection of+|gl|omitir||直説法|未来|1|s}} =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|omitir||直説法|未来|1|s}} ofz0b9ykw0tj2ltnx15tz7lyyl0xjor omitíreis 0 605003 2341002 2026-09-02T09:29:24Z Kuroco2k 84207 新規作成 2341002 wikitext text/x-wiki =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|omitir||直説法|過去完了|2|p}} qwwxml50dxm6ompn1vh68j51nd8aggo omitirás 0 605004 2341003 2026-09-02T09:29:24Z Kuroco2k 84207 新規作成 2341003 wikitext text/x-wiki =={{L|gl}}== ==={{verb}}=== {{head|gl|verb form}} #{{inflection of+|gl|omitir||直説法|未来|2|s}} =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|omitir||直説法|未来|2|s}} =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|omitir||直説法|未来|2|s}} 93tc46shuwugtjp9l19jzngq60dcbl7 omitíramos 0 605005 2341004 2026-09-02T09:29:24Z Kuroco2k 84207 新規作成 2341004 wikitext text/x-wiki =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|omitir||直説法|過去完了|1|p}} lzu5tht02vpuvlr36cphpl26foebw57 omitira 0 605006 2341005 2026-09-02T09:29:25Z Kuroco2k 84207 新規作成 2341005 wikitext text/x-wiki =={{L|gl}}== ==={{verb}}=== {{head|gl|verb form}} #{{inflection of+|gl|omitir||直説法|大過去|1|s|;|直説法|大過去|3|s}} =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|omitir||直説法|過去完了|1|s|;|直説法|過去完了|3|s}} dlr3qy0rmbbz3iaqoiakpo77l9t50f8 omitiras 0 605007 2341006 2026-09-02T09:29:25Z Kuroco2k 84207 新規作成 2341006 wikitext text/x-wiki =={{L|gl}}== ==={{verb}}=== {{head|gl|verb form}} #{{inflection of+|gl|omitir||直説法|大過去|2|s}} =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|omitir||直説法|過去完了|2|s}} 1mpomiooq7f9uo9kow5v2gai2c346mx omitiram 0 605008 2341007 2026-09-02T09:29:25Z Kuroco2k 84207 新規作成 2341007 wikitext text/x-wiki =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|omitir||直説法|完全過去|3|p|;|直説法|過去完了|3|p}} dcrcap85t7bt3ixv9b3veilf2b4jkxx omitistes 0 605009 2341008 2026-09-02T09:29:25Z Kuroco2k 84207 新規作成 2341008 wikitext text/x-wiki =={{L|gl}}== ==={{verb}}=== {{head|gl|verb form}} #{{inflection of+|gl|omitir||直説法|完了|過去|2|p}} =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|omitir||直説法|完全過去|2|p}} 5mtb1f66wyteqc5cablqybrminlirge omitiu 0 605010 2341009 2026-09-02T09:29:26Z Kuroco2k 84207 新規作成 2341009 wikitext text/x-wiki =={{L|gl}}== ==={{verb}}=== {{head|gl|verb form}} #{{inflection of+|gl|omitir||直説法|完了|過去|3|s}} =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|omitir||直説法|完全過去|3|s}} ol2zou5j53xaodb76ocd2wwpqd0f98z omiti 0 605011 2341010 2026-09-02T09:29:26Z Kuroco2k 84207 新規作成 2341010 wikitext text/x-wiki =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|omitir||直説法|完全過去|1|s|;|命令法|2|p}} dt907rcs3udhb8yggmw8qco169e1e1z omitiam 0 605012 2341011 2026-09-02T09:29:27Z Kuroco2k 84207 新規作成 2341011 wikitext text/x-wiki =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|omitir||直説法|不完全過去|3|p}} c2xx0d3tq3b5un0ajoqtdctftj3qbx8 omitiste 0 605013 2341012 2026-09-02T09:29:27Z Kuroco2k 84207 新規作成 2341012 wikitext text/x-wiki =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|omitir||直説法|完了過去|2|s}} =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|omitir||直説法|完全過去|2|s}} pia6rair03p6d7ap8lpdo4ghdqw4rmu omitíeis 0 605014 2341013 2026-09-02T09:29:27Z Kuroco2k 84207 新規作成 2341013 wikitext text/x-wiki =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|omitir||直説法|不完全過去|2|p}} 3y6590i75msq3c692yqwvbddcxnntgp omitíamos 0 605015 2341014 2026-09-02T09:29:27Z Kuroco2k 84207 新規作成 2341014 wikitext text/x-wiki =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|omitir||直説法|不完了過去|1|p}} =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|omitir||直説法|不完全過去|1|p}} fz51f6pinoavh5dcu755c1gt2bvdzo9 omitias 0 605016 2341015 2026-09-02T09:29:27Z Kuroco2k 84207 新規作成 2341015 wikitext text/x-wiki =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|omitir||直説法|不完全過去|2|s}} raqo91rdmqc432zbrjkcn5sw7u2xjnq omitem 0 605017 2341016 2026-09-02T09:29:28Z Kuroco2k 84207 新規作成 2341016 wikitext text/x-wiki =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|omitir||直説法|現在|3|p}} 36vvm32mxewcckczz8bd8nnxvbf1dwk omitia 0 605018 2341017 2026-09-02T09:29:28Z Kuroco2k 84207 新規作成 2341017 wikitext text/x-wiki =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|omitir||直説法|不完全過去|1|s|;|直説法|不完全過去|3|s}} kbamy0hpaysdvqvrdjkwja91br34rpo omitis 0 605019 2341018 2026-09-02T09:29:28Z Kuroco2k 84207 新規作成 2341018 wikitext text/x-wiki =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|omitir||直説法|現在|2|p}} 6fcap9t57ppvwn6mvc3dsetv64gfxpz omitimos 0 605020 2341019 2026-09-02T09:29:29Z Kuroco2k 84207 新規作成 2341019 wikitext text/x-wiki =={{L|gl}}== ==={{verb}}=== {{head|gl|verb form}} #{{inflection of+|gl|omitir||直説法|現在|1|p|;|直説法|完了|過去|1|p}} =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|omitir||直説法|現在|1|p|;|直説法|完了過去|1|p}} =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|omitir||直説法|現在|1|p|;|直説法|完全過去|1|p}} d1mlgw7ljlnmmxwnsi8onzpro9shhi9 omite 0 605021 2341020 2026-09-02T09:29:29Z Kuroco2k 84207 新規作成 2341020 wikitext text/x-wiki =={{L|gl}}== ==={{verb}}=== {{head|gl|verb form}} #{{inflection of+|gl|omitir||直説法|現在|3|s|;|命令法|2|s}} =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|omitir||直説法|現在|3|s|;|命令法|2|s}} =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|omitir||直説法|現在|3|s|;|命令法|2|s}} 2z3nkpt8y1xr6g2to8mty7pt920w2z3 omites 0 605022 2341021 2026-09-02T09:29:29Z Kuroco2k 84207 新規作成 2341021 wikitext text/x-wiki =={{L|gl}}== ==={{verb}}=== {{head|gl|verb form}} #{{inflection of+|gl|omitir||直説法|現在|2|s}} =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|omitir||直説法|現在|2|s}} =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|omitir||直説法|現在|2|s}} dkhf5c8tl33ekqiwuevqr34mkkee093 omito 0 605023 2341022 2026-09-02T09:29:30Z Kuroco2k 84207 新規作成 2341022 wikitext text/x-wiki =={{L|gl}}== ==={{verb}}=== {{head|gl|verb form}} #{{inflection of+|gl|omitir||直説法|現在|1|s}} =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|omitir||直説法|現在|1|s}} =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|omitir||直説法|現在|1|s}} avr4n7h46797d19tsn0fxs0f0z1oxxm omitirem 0 605024 2341023 2026-09-02T09:30:28Z Kuroco2k 84207 新規作成 2341023 wikitext text/x-wiki =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|omitir||pers|不定形|3|p|;|接続法|未来|3|p}} afo7c5dzwthh5xwx9v69fl9d1tf4uq1 omitirdes 0 605025 2341024 2026-09-02T09:30:29Z Kuroco2k 84207 新規作成 2341024 wikitext text/x-wiki =={{L|gl}}== ==={{verb}}=== {{head|gl|verb form}} #{{inflection of+|gl|omitir||pers|不定詞|2|p|;|接続法|未来|2|p}} =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|omitir||pers|不定形|2|p|;|接続法|未来|2|p}} dtx0nh0mpg6w0dz4vlci2y3woirtslw omitires 0 605026 2341025 2026-09-02T09:30:29Z Kuroco2k 84207 新規作成 2341025 wikitext text/x-wiki =={{L|gl}}== ==={{verb}}=== {{head|gl|verb form}} #{{inflection of+|gl|omitir||pers|不定詞|2|s|;|接続法|未来|2|s}} =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|omitir||pers|不定形|2|s|;|接続法|未来|2|s}} mta5dt7tk7c9uhjqfgofusnbpnyrahn omitísseis 0 605027 2341026 2026-09-02T09:30:30Z Kuroco2k 84207 新規作成 2341026 wikitext text/x-wiki =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|omitir||接続法|過去|2|p}} qmxrbme9ekbuymj419yjhdzhqh9a6ei omitissem 0 605028 2341027 2026-09-02T09:30:30Z Kuroco2k 84207 新規作成 2341027 wikitext text/x-wiki =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|omitir||接続法|過去|3|p}} 2ojhizsga4a8st5b21qv18uriclkmwc omitirmos 0 605029 2341028 2026-09-02T09:30:30Z Kuroco2k 84207 新規作成 2341028 wikitext text/x-wiki =={{L|gl}}== ==={{verb}}=== {{head|gl|verb form}} #{{inflection of+|gl|omitir||pers|不定詞|1|p|;|接続法|未来|1|p}} =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|omitir||pers|不定形|1|p|;|接続法|未来|1|p}} st9b3vuzvs15ls62nes6vzef5bm3b9j omitisses 0 605030 2341029 2026-09-02T09:30:30Z Kuroco2k 84207 新規作成 2341029 wikitext text/x-wiki =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|omitir||接続法|過去|2|s}} iinb87g2fwrz5idlghz4ht044879vsl omitam 0 605031 2341030 2026-09-02T09:30:31Z Kuroco2k 84207 新規作成 2341030 wikitext text/x-wiki =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|omitir||接続法|現在|3|p|;|命令法|3|p}} mod7rb4zgw26pqxa18grytzc4dg01no omitisse 0 605032 2341031 2026-09-02T09:30:31Z Kuroco2k 84207 新規作成 2341031 wikitext text/x-wiki =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|omitir||接続法|過去|1|s|;|接続法|過去|3|s}} gnqtxdb0evlr16vf22mkk3hsbcvc73t omitais 0 605033 2341032 2026-09-02T09:30:31Z Kuroco2k 84207 新規作成 2341032 wikitext text/x-wiki =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|omitir||接続法|現在|2|p}} 40mk0pmxeujozqp06rjlhab4sj034s3 omitamos 0 605034 2341033 2026-09-02T09:30:32Z Kuroco2k 84207 新規作成 2341033 wikitext text/x-wiki =={{L|gl}}== ==={{verb}}=== {{head|gl|verb form}} #{{inflection of+|gl|omitir||接続法|現在|1|p|;|命令法|1|p}} =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|omitir||接続法|現在|1|p|;|命令法|1|p}} =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|omitir||接続法|現在|1|p|;|命令法|1|p}} afiylbwzp3xuszdy8mhcm3j1iuxsgvm omitíssemos 0 605035 2341034 2026-09-02T09:30:32Z Kuroco2k 84207 新規作成 2341034 wikitext text/x-wiki =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|omitir||接続法|過去|1|p}} kj0wv17dhguie3c0brvi65mr4t8r57a omitas 0 605036 2341035 2026-09-02T09:30:32Z Kuroco2k 84207 新規作成 2341035 wikitext text/x-wiki =={{L|gl}}== ==={{verb}}=== {{head|gl|verb form}} #{{inflection of+|gl|omitir||接続法|現在|2|s}} =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|omitir||接続法|現在|2|s}} =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|omitir||接続法|現在|2|s}} 5l6yo935mgg7orazo3pw2ml31unaj57 omita 0 605037 2341036 2026-09-02T09:30:32Z Kuroco2k 84207 新規作成 2341036 wikitext text/x-wiki =={{L|gl}}== ==={{verb}}=== {{head|gl|verb form}} #{{inflection of+|gl|omitir||接続法|現在|1|s|;|接続法|現在|3|s|;|命令法|3|s}} =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|omitir||接続法|現在|1|s|;|接続法|現在|3|s|;|命令法|3|s}} =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|omitir||接続法|現在|1|s|;|接続法|現在|3|s|;|命令法|3|s}} lb7r4wfyzq97oprs5rzkixkilhitwc1 omitirias 0 605038 2341037 2026-09-02T09:30:33Z Kuroco2k 84207 新規作成 2341037 wikitext text/x-wiki =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|omitir||可能法|2|s}} n39o2nknctvpsoicjtcwehaakswb5fy omitirían 0 605039 2341038 2026-09-02T09:44:25Z Kuroco2k 84207 新規作成 2341038 wikitext text/x-wiki =={{L|gl}}== ==={{verb}}=== {{head|gl|verb form}} #{{inflection of+|gl|omitir||過去|未来|3|p}} =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|omitir||可能法|3|p}} 9gex72jbufa4rnakbkd4rha3fym7z73 omitirías 0 605040 2341039 2026-09-02T09:44:25Z Kuroco2k 84207 新規作成 2341039 wikitext text/x-wiki =={{L|gl}}== ==={{verb}}=== {{head|gl|verb form}} #{{inflection of+|gl|omitir||過去|未来|2|s}} =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|omitir||可能法|2|s}} rv5bw8ii5xlx5wuonfd0ulk4yu9ejoc omitiríais 0 605041 2341040 2026-09-02T09:44:26Z Kuroco2k 84207 新規作成 2341040 wikitext text/x-wiki =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|omitir||可能法|2|p}} ly0ek5wi5nmv91z2458rl60jkosmgvb omitirán 0 605042 2341041 2026-09-02T09:44:26Z Kuroco2k 84207 新規作成 2341041 wikitext text/x-wiki =={{L|gl}}== ==={{verb}}=== {{head|gl|verb form}} #{{inflection of+|gl|omitir||直説法|未来|3|p}} =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|omitir||直説法|未来|3|p}} lxqun70d0qh8r5ttde0mjo28mbwefop omitiría 0 605043 2341042 2026-09-02T09:44:26Z Kuroco2k 84207 新規作成 2341042 wikitext text/x-wiki =={{L|gl}}== ==={{verb}}=== {{head|gl|verb form}} #{{inflection of+|gl|omitir||過去|未来|1|s|;|過去|未来|3|s}} =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|omitir||可能法|1|s|;|可能法|3|s}} 81h8lrolzygvq86idxdyc2vx7ff50p7 omitiré 0 605044 2341043 2026-09-02T09:44:27Z Kuroco2k 84207 新規作成 2341043 wikitext text/x-wiki =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|omitir||直説法|未来|1|s}} mzt0zapf9k1or1lk01gb5t6cp5skyam omitiréis 0 605045 2341044 2026-09-02T09:44:27Z Kuroco2k 84207 新規作成 2341044 wikitext text/x-wiki =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|omitir||直説法|未来|2|p}} mpe20l0v68i3syj5vgjl3l1fxjeh470 omitieron 0 605046 2341045 2026-09-02T09:44:27Z Kuroco2k 84207 新規作成 2341045 wikitext text/x-wiki =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|omitir||直説法|完了過去|3|p}} adordy80hsbe77fvwkleo4wnmjh7znc omitisteis 0 605047 2341046 2026-09-02T09:44:28Z Kuroco2k 84207 新規作成 2341046 wikitext text/x-wiki =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|omitir||直説法|完了過去|2|p}} 6ndo3qx02603tqimkjj6slu43f2xhru omitió 0 605048 2341047 2026-09-02T09:44:28Z Kuroco2k 84207 新規作成 2341047 wikitext text/x-wiki =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|omitir||直説法|完了過去|3|s}} mj0g23j9elbftzycrv8y8bark3qy682 omití 0 605049 2341048 2026-09-02T09:44:28Z Kuroco2k 84207 新規作成 2341048 wikitext text/x-wiki =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|omitir||直説法|完了過去|1|s|;|命令法|2|s|voseo}} h82dt3kjrw63avopejaxy78bv2ltuiw omitían 0 605050 2341049 2026-09-02T09:44:29Z Kuroco2k 84207 新規作成 2341049 wikitext text/x-wiki =={{L|gl}}== ==={{verb}}=== {{head|gl|verb form}} #{{inflection of+|gl|omitir||直説法|不完了|過去|3|p}} =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|omitir||直説法|不完了過去|3|p}} cb3w1lm1u1hxmdo0i3nfpv8e9siowhq omitíais 0 605051 2341050 2026-09-02T09:44:29Z Kuroco2k 84207 新規作成 2341050 wikitext text/x-wiki =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|omitir||直説法|不完了過去|2|p}} 92xb32fkuqhyrw9h2xd83annr6nunki omitías 0 605052 2341051 2026-09-02T09:44:29Z Kuroco2k 84207 新規作成 2341051 wikitext text/x-wiki =={{L|gl}}== ==={{verb}}=== {{head|gl|verb form}} #{{inflection of+|gl|omitir||直説法|不完了|過去|2|s}} =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|omitir||直説法|不完了過去|2|s}} 9le96bwvh0rn7zki6qhf5obb5pgu0vq omitía 0 605053 2341052 2026-09-02T09:44:30Z Kuroco2k 84207 新規作成 2341052 wikitext text/x-wiki =={{L|gl}}== ==={{verb}}=== {{head|gl|verb form}} #{{inflection of+|gl|omitir||直説法|不完了|過去|1|s|;|直説法|不完了|過去|3|s}} =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|omitir||直説法|不完了過去|1|s|;|直説法|不完了過去|3|s}} koix21fqawmfhzq3yi1wxbyz0ft5gtq omiten 0 605054 2341053 2026-09-02T09:44:30Z Kuroco2k 84207 新規作成 2341053 wikitext text/x-wiki =={{L|gl}}== ==={{verb}}=== {{head|gl|verb form}} #{{inflection of+|gl|omitir||直説法|現在|3|p}} =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|omitir||直説法|現在|3|p}} kd3ozfuw3g9aobk5djy9065wubq7o4j omitís 0 605055 2341054 2026-09-02T09:44:31Z Kuroco2k 84207 新規作成 2341054 wikitext text/x-wiki =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|omitir||直説法|現在|2|s|voseo|;|直説法|現在|2|p}} euazs9ca3dmm5m0qxamybmzg1p1o9xk omitid 0 605056 2341055 2026-09-02T09:45:31Z Kuroco2k 84207 新規作成 2341055 wikitext text/x-wiki =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|omitir||命令法|2|p}} hf7nih0zlwafmc9fi0ic0xga0yfq2ct omitieren 0 605057 2341056 2026-09-02T09:45:32Z Kuroco2k 84207 新規作成 2341056 wikitext text/x-wiki =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|omitir||接続法|未来|3|p}} tmkmjil2jhfmunr5sj7autxkfo9sxjs omitiereis 0 605058 2341057 2026-09-02T09:45:32Z Kuroco2k 84207 新規作成 2341057 wikitext text/x-wiki =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|omitir||接続法|未来|2|p}} njakex1bhgvryq6gx0ri92stw8q84b5 omitiéremos 0 605059 2341058 2026-09-02T09:45:32Z Kuroco2k 84207 新規作成 2341058 wikitext text/x-wiki =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|omitir||接続法|未来|1|p}} sv3i31mngrbl7cpi3hhp5du5td38845 omitiere 0 605060 2341059 2026-09-02T09:45:33Z Kuroco2k 84207 新規作成 2341059 wikitext text/x-wiki =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|omitir||接続法|未来|1|s|;|接続法|未来|3|s}} fjqd426lvtilna22w1jt5nnezkeggvz omitieres 0 605061 2341060 2026-09-02T09:45:33Z Kuroco2k 84207 新規作成 2341060 wikitext text/x-wiki =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|omitir||接続法|未来|2|s}} 1b47lezu0z0pa2b1ip6qxfekdta8gcz omitiesen 0 605062 2341061 2026-09-02T09:45:34Z Kuroco2k 84207 新規作成 2341061 wikitext text/x-wiki =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|omitir||接続法|過去|3|p}} q1d7px6f2jz8b6ilv75qw3ia0au8wq8 omitieseis 0 605063 2341062 2026-09-02T09:45:34Z Kuroco2k 84207 新規作成 2341062 wikitext text/x-wiki =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|omitir||接続法|過去|2|p}} ljwkzvzz9agf8o8nrod1zhogfgdt32b omitiésemos 0 605064 2341063 2026-09-02T09:45:34Z Kuroco2k 84207 新規作成 2341063 wikitext text/x-wiki =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|omitir||接続法|過去|1|p}} 4udrwcgvr7ltstndm9oi3w87rtdtokl omitieses 0 605065 2341064 2026-09-02T09:45:34Z Kuroco2k 84207 新規作成 2341064 wikitext text/x-wiki =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|omitir||接続法|過去|2|s}} pucpggjq038xybho9xn80rowb1e8ruf omitiese 0 605066 2341065 2026-09-02T09:45:35Z Kuroco2k 84207 新規作成 2341065 wikitext text/x-wiki =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|omitir||接続法|過去|1|s|;|接続法|過去|3|s}} pbp2zwsa4eoke6sk9refh5v8nd8c3u1 omitieran 0 605067 2341066 2026-09-02T09:45:35Z Kuroco2k 84207 新規作成 2341066 wikitext text/x-wiki =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|omitir||接続法|過去|3|p}} q1d7px6f2jz8b6ilv75qw3ia0au8wq8 omitierais 0 605068 2341067 2026-09-02T09:45:36Z Kuroco2k 84207 新規作成 2341067 wikitext text/x-wiki =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|omitir||接続法|過去|2|p}} ljwkzvzz9agf8o8nrod1zhogfgdt32b omitiéramos 0 605069 2341068 2026-09-02T09:45:36Z Kuroco2k 84207 新規作成 2341068 wikitext text/x-wiki =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|omitir||接続法|過去|1|p}} 4udrwcgvr7ltstndm9oi3w87rtdtokl omitieras 0 605070 2341069 2026-09-02T09:45:36Z Kuroco2k 84207 新規作成 2341069 wikitext text/x-wiki =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|omitir||接続法|過去|2|s}} pucpggjq038xybho9xn80rowb1e8ruf omitiera 0 605071 2341070 2026-09-02T09:45:37Z Kuroco2k 84207 新規作成 2341070 wikitext text/x-wiki =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|omitir||接続法|過去|1|s|;|接続法|過去|3|s}} pbp2zwsa4eoke6sk9refh5v8nd8c3u1 omitáis 0 605072 2341071 2026-09-02T09:45:38Z Kuroco2k 84207 新規作成 2341071 wikitext text/x-wiki =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|omitir||接続法|現在|2|p}} o5ax7yuh5vl62hama09i0q92df9v376 omitan 0 605073 2341072 2026-09-02T09:45:38Z Kuroco2k 84207 新規作成 2341072 wikitext text/x-wiki =={{L|gl}}== ==={{verb}}=== {{head|gl|verb form}} #{{inflection of+|gl|omitir||接続法|現在|3|p|;|命令法|3|p}} =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|omitir||接続法|現在|3|p|;|命令法|3|p}} 3r8bixojoqhdcn8cn0khw7jeqc4ij3h omitás 0 605074 2341073 2026-09-02T09:45:38Z Kuroco2k 84207 新規作成 2341073 wikitext text/x-wiki =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|omitir||接続法|現在|2|s|voseo}} 1pk4ne10ag7k23xbz9zhu6vyhnvixwa omitiches 0 605075 2341074 2026-09-02T09:46:28Z Kuroco2k 84207 新規作成 2341074 wikitext text/x-wiki =={{L|gl}}== ==={{verb}}=== {{head|gl|verb form}} #{{inflection of+|gl|omitir||直説法|完了|過去|2|s}} 0hgv8fpltyfqy0t2d1tq07j2gzqk2od omitín 0 605076 2341075 2026-09-02T09:46:28Z Kuroco2k 84207 新規作成 2341075 wikitext text/x-wiki =={{L|gl}}== ==={{verb}}=== {{head|gl|verb form}} #{{inflection of+|gl|omitir||直説法|完了|過去|1|s}} 3qoega09nn6u3wcaf84ve81x46wzmy6 omitiriamos 0 605077 2341076 2026-09-02T09:46:29Z Kuroco2k 84207 新規作成 2341076 wikitext text/x-wiki =={{L|gl}}== ==={{verb}}=== {{head|gl|verb form}} #{{inflection of+|gl|omitir||過去|未来|1|p}} 95fku0xcgrkz6ib3ho66ekgcrz65nju omitiramos 0 605078 2341077 2026-09-02T09:46:29Z Kuroco2k 84207 新規作成 2341077 wikitext text/x-wiki =={{L|gl}}== ==={{verb}}=== {{head|gl|verb form}} #{{inflection of+|gl|omitir||直説法|大過去|1|p}} i0t4cmc1bt6449m9i6f2kcmfc0wa5zl omitiamos 0 605079 2341078 2026-09-02T09:46:29Z Kuroco2k 84207 新規作成 2341078 wikitext text/x-wiki =={{L|gl}}== ==={{verb}}=== {{head|gl|verb form}} #{{inflection of+|gl|omitir||直説法|不完了|過去|1|p}} ttsjsdu0rywfq061wtzp949u5gpb5rn omitiran 0 605080 2341079 2026-09-02T09:46:29Z Kuroco2k 84207 新規作成 2341079 wikitext text/x-wiki =={{L|gl}}== ==={{verb}}=== {{head|gl|verb form}} #{{inflection of+|gl|omitir||直説法|大過去|3|p}} 6ebezt30i9a7y415n8wnx5vjrdbcbdr omitiron 0 605081 2341080 2026-09-02T09:46:30Z Kuroco2k 84207 新規作成 2341080 wikitext text/x-wiki =={{L|gl}}== ==={{verb}}=== {{head|gl|verb form}} #{{inflection of+|gl|omitir||直説法|完了|過去|3|p}} o32wrqukpcvtja4623le2ysxnkysx39 omitiredes 0 605082 2341081 2026-09-02T09:46:31Z Kuroco2k 84207 新規作成 2341081 wikitext text/x-wiki =={{L|gl}}== ==={{verb}}=== {{head|gl|verb form}} #{{inflection of+|gl|omitir||直説法|未来|2|p}} bk8ka774hbig7le3cyqvzuljww40gdk omitirades 0 605083 2341082 2026-09-02T09:46:31Z Kuroco2k 84207 新規作成 2341082 wikitext text/x-wiki =={{L|gl}}== ==={{verb}}=== {{head|gl|verb form}} #{{inflection of+|gl|omitir||直説法|大過去|2|p}} adzw9v7jnl4x8wri136l2b47cut3e1o omitiriades 0 605084 2341083 2026-09-02T09:46:31Z Kuroco2k 84207 新規作成 2341083 wikitext text/x-wiki =={{L|gl}}== ==={{verb}}=== {{head|gl|verb form}} #{{inflection of+|gl|omitir||過去|未来|2|p}} kiflf020bieaftrdjxsz8lr2mikh0ot omitiades 0 605085 2341084 2026-09-02T09:46:32Z Kuroco2k 84207 新規作成 2341084 wikitext text/x-wiki =={{L|gl}}== ==={{verb}}=== {{head|gl|verb form}} #{{inflection of+|gl|omitir||直説法|不完了|過去|2|p}} j1ly7swexq5zbssf74djb4x8fon2o3a omitides 0 605086 2341085 2026-09-02T09:46:31Z Kuroco2k 84207 新規作成 2341085 wikitext text/x-wiki =={{L|gl}}== ==={{verb}}=== {{head|gl|verb form}} #{{inflection of+|gl|omitir||直説法|現在|2|p}} 153oy9f43hepyx4s2br5tpvcnk6yabs omitiren 0 605087 2341086 2026-09-02T09:46:32Z Kuroco2k 84207 新規作成 2341086 wikitext text/x-wiki =={{L|gl}}== ==={{verb}}=== {{head|gl|verb form}} #{{inflection of+|gl|omitir||pers|不定詞|3|p|;|接続法|未来|3|p}} i5v5iybhalh76d4bf4d0lgv1w11rn7f omitide 0 605088 2341087 2026-09-02T09:47:03Z Kuroco2k 84207 新規作成 2341087 wikitext text/x-wiki =={{L|gl}}== ==={{verb}}=== {{head|gl|verb form}} #{{inflection of+|gl|omitir||命令法|2|p}} omuagnnwvg6u69yhtqafncqxw9log1d omitades 0 605089 2341088 2026-09-02T09:47:04Z Kuroco2k 84207 新規作成 2341088 wikitext text/x-wiki =={{L|gl}}== ==={{verb}}=== {{head|gl|verb form}} #{{inflection of+|gl|omitir||接続法|現在|2|p}} 4ro2nqtwaw663iy7hq2g4kuvyguum92 omitisen 0 605090 2341089 2026-09-02T09:47:04Z Kuroco2k 84207 新規作成 2341089 wikitext text/x-wiki =={{L|gl}}== ==={{verb}}=== {{head|gl|verb form}} #{{inflection of+|gl|omitir||接続法|過去|3|p}} o161smy3629tonzee3w2r3ym5zmwksn omitísedes 0 605091 2341090 2026-09-02T09:47:05Z Kuroco2k 84207 新規作成 2341090 wikitext text/x-wiki =={{L|gl}}== ==={{verb}}=== {{head|gl|verb form}} #{{inflection of+|gl|omitir||接続法|過去|2|p}} 1vcf7dm8zk1edwy2h64v46yvlub1xh5 omitises 0 605092 2341091 2026-09-02T09:47:05Z Kuroco2k 84207 新規作成 2341091 wikitext text/x-wiki =={{L|gl}}== ==={{verb}}=== {{head|gl|verb form}} #{{inflection of+|gl|omitir||接続法|過去|2|s}} 5pc2slla2lp38a75ukzuz3tjwtxi1b7 omitise 0 605093 2341092 2026-09-02T09:47:05Z Kuroco2k 84207 新規作成 2341092 wikitext text/x-wiki =={{L|gl}}== ==={{verb}}=== {{head|gl|verb form}} #{{inflection of+|gl|omitir||接続法|過去|1|s|;|接続法|過去|3|s}} gz3mjjceotggu7urf53oqvxbublwfpv omitísemos 0 605094 2341093 2026-09-02T09:47:05Z Kuroco2k 84207 新規作成 2341093 wikitext text/x-wiki =={{L|gl}}== ==={{verb}}=== {{head|gl|verb form}} #{{inflection of+|gl|omitir||接続法|過去|1|p}} 0popgppblz02y3o9ylccdc5cux32pd6 denominariam 0 605095 2341095 2026-09-02T10:37:58Z Kuroco2k 84207 新規作成 2341095 wikitext text/x-wiki =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|denominar||可能法|3|p}} 75wl63sbdrx6gy6y9i14daiwfr93gia denominaríeis 0 605096 2341096 2026-09-02T10:37:58Z Kuroco2k 84207 新規作成 2341096 wikitext text/x-wiki =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|denominar||可能法|2|p}} 95l9urc4gf14otjimzlbvnr03b2th01 denominaríamos 0 605097 2341097 2026-09-02T10:37:59Z Kuroco2k 84207 新規作成 2341097 wikitext text/x-wiki =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|denominar||可能法|1|p}} =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|denominar||可能法|1|p}} ap0liugdkot418uwmu9t7wny7fy67y8 denominarias 0 605098 2341098 2026-09-02T10:37:59Z Kuroco2k 84207 新規作成 2341098 wikitext text/x-wiki =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|denominar||可能法|2|s}} joy93zpeicv7uvvms1b3juu7i7ykvow denominarão 0 605099 2341099 2026-09-02T10:38:00Z Kuroco2k 84207 新規作成 2341099 wikitext text/x-wiki =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|denominar||直説法|未来|3|p}} 4b0f91ebwsjkq8fmzzcu61d0f9hi0em denominareis 0 605100 2341100 2026-09-02T10:38:00Z Kuroco2k 84207 新規作成 2341100 wikitext text/x-wiki =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|denominar||接続法|未来|2|p}} =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|denominar||直説法|未来|2|p}} ovyox023qegkgs38mvnw3ebfgd6ftgk denominaria 0 605101 2341101 2026-09-02T10:38:00Z Kuroco2k 84207 新規作成 2341101 wikitext text/x-wiki =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|denominar||可能法|1|s|;|可能法|3|s}} 5lx2se2x5hclnpdfnaxds14ml207uyw denominaremos 0 605102 2341102 2026-09-02T10:38:01Z Kuroco2k 84207 新規作成 2341102 wikitext text/x-wiki =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|denominar||直説法|未来|1|p}} =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|denominar||直説法|未来|1|p}} kpoyad41hoe0xtbwnf2tth26guyaenn denominará 0 605103 2341103 2026-09-02T10:38:01Z Kuroco2k 84207 新規作成 2341103 wikitext text/x-wiki =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|denominar||直説法|未来|3|s}} =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|denominar||直説法|未来|3|s}} qnsyjybzhsfaqrf6eyn6ntehqctooby denominarás 0 605104 2341104 2026-09-02T10:38:01Z Kuroco2k 84207 新規作成 2341104 wikitext text/x-wiki =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|denominar||直説法|未来|2|s}} =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|denominar||直説法|未来|2|s}} eavxkk064ugol5qky6f840zb5x31siz denominarei 0 605105 2341105 2026-09-02T10:38:01Z Kuroco2k 84207 新規作成 2341105 wikitext text/x-wiki =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|denominar||直説法|未来|1|s}} a5rvz05fjexfxk29h43pwkha9y6nw3f denomináreis 0 605106 2341106 2026-09-02T10:38:01Z Kuroco2k 84207 新規作成 2341106 wikitext text/x-wiki =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|denominar||直説法|過去完了|2|p}} 5mpqy0grdmwyqekm7fcaqmqdwx6gbwv denomináramos 0 605107 2341107 2026-09-02T10:38:02Z Kuroco2k 84207 新規作成 2341107 wikitext text/x-wiki =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|denominar||接続法|過去|1|p}} =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|denominar||直説法|過去完了|1|p}} nnwa6fvliwb5q78r8ui1oxmsa4rc8zx denominara 0 605108 2341108 2026-09-02T10:38:02Z Kuroco2k 84207 新規作成 2341108 wikitext text/x-wiki =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|denominar||接続法|過去|1|s|;|接続法|過去|3|s}} =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|denominar||直説法|過去完了|1|s|;|直説法|過去完了|3|s}} 43akht4b0pcn071h3vvf8hc7br5uoit denominaram 0 605109 2341109 2026-09-02T10:38:03Z Kuroco2k 84207 新規作成 2341109 wikitext text/x-wiki =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|denominar||直説法|完全過去|3|p|;|直説法|過去完了|3|p}} kgnoftrg3zpj0jmbjgsbu5rxaqfbz67 denominaras 0 605110 2341110 2026-09-02T10:38:03Z Kuroco2k 84207 新規作成 2341110 wikitext text/x-wiki =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|denominar||接続法|過去|2|s}} =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|denominar||直説法|過去完了|2|s}} bnozdlav0uly36iez2bwbpsai5x2kps denominámos 0 605111 2341111 2026-09-02T10:38:03Z Kuroco2k 84207 新規作成 2341111 wikitext text/x-wiki =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|denominar||直説法|完全過去|1|p}} 7zr7o4cd9ej69wx7oqhljy44oueqvmg denominastes 0 605112 2341112 2026-09-02T10:38:04Z Kuroco2k 84207 新規作成 2341112 wikitext text/x-wiki =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|denominar||直説法|完全過去|2|p}} 8o6x1l7csogmmhee89sqtrnq0a47upt denominou 0 605113 2341113 2026-09-02T10:38:05Z Kuroco2k 84207 新規作成 2341113 wikitext text/x-wiki =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|denominar||直説法|完全過去|3|s}} 64xh0i043uiilr3b483kqf11iggyscq denominaste 0 605114 2341114 2026-09-02T10:38:05Z Kuroco2k 84207 新規作成 2341114 wikitext text/x-wiki =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|denominar||直説法|完了過去|2|s}} =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|denominar||直説法|完全過去|2|s}} okipjokwmix3xf7e8op6b78pujed01j denominei 0 605115 2341115 2026-09-02T10:38:06Z Kuroco2k 84207 新規作成 2341115 wikitext text/x-wiki =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|denominar||直説法|完全過去|1|s}} qik269jxzamaps02jyvmyx1aza9yvha denominavam 0 605116 2341116 2026-09-02T10:38:06Z Kuroco2k 84207 新規作成 2341116 wikitext text/x-wiki =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|denominar||直説法|不完全過去|3|p}} 3twjyd1l05q5eczow2en596mxyxh5cl denominávamos 0 605117 2341117 2026-09-02T10:38:07Z Kuroco2k 84207 新規作成 2341117 wikitext text/x-wiki =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|denominar||直説法|不完全過去|1|p}} hhjwvi4mh5rohci1s6vaid6oquglif6 denomináveis 0 605118 2341118 2026-09-02T10:38:07Z Kuroco2k 84207 新規作成 2341118 wikitext text/x-wiki =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|denominar||直説法|不完全過去|2|p}} pewqse5up0hw7z6nc6q92irqtxfj6io denominavas 0 605119 2341119 2026-09-02T10:38:08Z Kuroco2k 84207 新規作成 2341119 wikitext text/x-wiki =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|denominar||直説法|不完全過去|2|s}} b5pycflbqio6nf9xa929ppspnnjxcvx denominava 0 605120 2341120 2026-09-02T10:38:08Z Kuroco2k 84207 新規作成 2341120 wikitext text/x-wiki =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|denominar||直説法|不完全過去|1|s|;|直説法|不完全過去|3|s}} 6qrgw2hiays0m7221x4qipzj2k1qvj1 denominam 0 605121 2341121 2026-09-02T10:38:08Z Kuroco2k 84207 新規作成 2341121 wikitext text/x-wiki =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|denominar||直説法|現在|3|p}} kew4j83jv23x6iw3oa6641tqcczn621 denominais 0 605122 2341122 2026-09-02T10:38:09Z Kuroco2k 84207 新規作成 2341122 wikitext text/x-wiki =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|denominar||直説法|現在|2|p}} fkjaygij9msvz8pn2ys7y339wn9fgln denominamos 0 605123 2341123 2026-09-02T10:38:09Z Kuroco2k 84207 新規作成 2341123 wikitext text/x-wiki =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|denominar||直説法|現在|1|p|;|直説法|完了過去|1|p}} =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|denominar||直説法|現在|1|p|;|直説法|完全過去|1|p}} 3x0611tlrl7f24gjdwd5sxmv7e1hj0p denomina 0 605124 2341124 2026-09-02T10:38:09Z Kuroco2k 84207 新規作成 2341124 wikitext text/x-wiki =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|denominar||直説法|現在|3|s|;|命令法|2|s}} =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|denominar||直説法|現在|3|s|;|命令法|2|s}} ay7jpgk30n4w10e0s3zaxrdaucqrxhn denominas 0 605125 2341125 2026-09-02T10:38:10Z Kuroco2k 84207 新規作成 2341125 wikitext text/x-wiki =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|denominar||直説法|現在|2|s}} =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|denominar||直説法|現在|2|s}} tiddrue6wo7iklhibau47n663t9pv6b denominai 0 605126 2341126 2026-09-02T10:38:57Z Kuroco2k 84207 新規作成 2341126 wikitext text/x-wiki =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|denominar||命令法|2|p}} ruwqwctd6ree2h2udk1itnp2slioc5w denominarem 0 605127 2341127 2026-09-02T10:38:57Z Kuroco2k 84207 新規作成 2341127 wikitext text/x-wiki =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|denominar||pers|不定形|3|p|;|接続法|未来|3|p}} itslr6x2sxio06d5mby3js8zazypcyc denominarmos 0 605128 2341128 2026-09-02T10:38:57Z Kuroco2k 84207 新規作成 2341128 wikitext text/x-wiki =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|denominar||pers|不定形|1|p|;|接続法|未来|1|p}} kpxjkg5tubbifmievqhi81ewvhu7elp denominardes 0 605129 2341129 2026-09-02T10:38:58Z Kuroco2k 84207 新規作成 2341129 wikitext text/x-wiki =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|denominar||pers|不定形|2|p|;|接続法|未来|2|p}} thjd244yhqmttf0scj678j9gg31f9xy denominassem 0 605130 2341130 2026-09-02T10:38:58Z Kuroco2k 84207 新規作成 2341130 wikitext text/x-wiki =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|denominar||接続法|過去|3|p}} jaiecibgweovr4to89846rq4dpnplm1 denominares 0 605131 2341131 2026-09-02T10:38:59Z Kuroco2k 84207 新規作成 2341131 wikitext text/x-wiki =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|denominar||接続法|未来|2|s}} =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|denominar||pers|不定形|2|s|;|接続法|未来|2|s}} omb42jbwkx058np4zlui0kfhhgrfhs6 denominásseis 0 605132 2341132 2026-09-02T10:38:59Z Kuroco2k 84207 新規作成 2341132 wikitext text/x-wiki =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|denominar||接続法|過去|2|p}} e10gsnszh6kmld43k13soqm58qtf3fh denominássemos 0 605133 2341133 2026-09-02T10:38:59Z Kuroco2k 84207 新規作成 2341133 wikitext text/x-wiki =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|denominar||接続法|過去|1|p}} m08yth3bddqcdvl1zbduyrnna968u1n denominasses 0 605134 2341134 2026-09-02T10:38:59Z Kuroco2k 84207 新規作成 2341134 wikitext text/x-wiki =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|denominar||接続法|過去|2|s}} p5f7yl9tr3yz384g1y59eerv69bu89k denominasse 0 605135 2341135 2026-09-02T10:39:00Z Kuroco2k 84207 新規作成 2341135 wikitext text/x-wiki =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|denominar||接続法|過去|1|s|;|接続法|過去|3|s}} 64bfz6w8w1l3vr66ip9iy71w7qpr6p9 denomineis 0 605136 2341136 2026-09-02T10:39:00Z Kuroco2k 84207 新規作成 2341136 wikitext text/x-wiki =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|denominar||接続法|現在|2|p}} o4708qafrlxbx0rz2pp7j0zyhr308zh denominemos 0 605137 2341137 2026-09-02T10:39:01Z Kuroco2k 84207 新規作成 2341137 wikitext text/x-wiki =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|denominar||接続法|現在|1|p|;|命令法|1|p}} =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|denominar||接続法|現在|1|p|;|命令法|1|p}} plfemtj0c4poyb9wpiyikibn1j7d52v denomines 0 605138 2341138 2026-09-02T10:39:01Z Kuroco2k 84207 新規作成 2341138 wikitext text/x-wiki =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|denominar||接続法|現在|2|s}} =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|denominar||接続法|現在|2|s}} 72nx8wdjse56cbaum2suz5cq8cpbmjy denominem 0 605139 2341139 2026-09-02T10:39:01Z Kuroco2k 84207 新規作成 2341139 wikitext text/x-wiki =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|denominar||接続法|現在|3|p|;|命令法|3|p}} btqiixingvune2lp0qx4qhbkumrqv8d denomine 0 605140 2341140 2026-09-02T10:39:02Z Kuroco2k 84207 新規作成 2341140 wikitext text/x-wiki =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|denominar||接続法|現在|1|s|;|接続法|現在|3|s|;|命令法|3|s}} =={{L|pt}}== ==={{verb}}=== {{head|pt|verb form}} #{{inflection of+|pt|denominar||接続法|現在|1|s|;|接続法|現在|3|s|;|命令法|3|s}} dgi6yac0kuwnnekmucfvti64cb6qbsn denominaríais 0 605141 2341141 2026-09-02T10:39:44Z Kuroco2k 84207 新規作成 2341141 wikitext text/x-wiki =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|denominar||可能法|2|p}} bxd2qbwd82n3jof90w9p76uszva3pm7 denominarías 0 605142 2341142 2026-09-02T10:39:44Z Kuroco2k 84207 新規作成 2341142 wikitext text/x-wiki =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|denominar||可能法|2|s}} 9hies5t72oi73v16i0di4d2r0bgussa denominaría 0 605143 2341143 2026-09-02T10:39:45Z Kuroco2k 84207 新規作成 2341143 wikitext text/x-wiki =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|denominar||可能法|1|s|;|可能法|3|s}} feow59yexj6iooqbcq4bnk3ocfbwwv6 denominarán 0 605144 2341144 2026-09-02T10:39:45Z Kuroco2k 84207 新規作成 2341144 wikitext text/x-wiki =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|denominar||直説法|未来|3|p}} 46o7x82swyloxr49p2v1ggdjcfz0ip5 denominarían 0 605145 2341145 2026-09-02T10:39:45Z Kuroco2k 84207 新規作成 2341145 wikitext text/x-wiki =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|denominar||可能法|3|p}} j2nbc85b97c4lq08npzaqwtt3qhugkr denominaron 0 605146 2341146 2026-09-02T10:39:46Z Kuroco2k 84207 新規作成 2341146 wikitext text/x-wiki =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|denominar||直説法|完了過去|3|p}} jo3k2i41uu050aeme7nx4exctexiwh0 denominaréis 0 605147 2341147 2026-09-02T10:39:46Z Kuroco2k 84207 新規作成 2341147 wikitext text/x-wiki =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|denominar||直説法|未来|2|p}} 5i9l47v1krtvjiw42es6406fuonmoko denominasteis 0 605148 2341148 2026-09-02T10:39:46Z Kuroco2k 84207 新規作成 2341148 wikitext text/x-wiki =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|denominar||直説法|完了過去|2|p}} 7ein4hxdpzzo9u370cm64md3ai4uvlx denominé 0 605149 2341149 2026-09-02T10:39:46Z Kuroco2k 84207 新規作成 2341149 wikitext text/x-wiki =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|denominar||直説法|完了過去|1|s}} 714fmmglgqxgkfz5u9r2kgu7dsblm7q denominaban 0 605150 2341150 2026-09-02T10:39:47Z Kuroco2k 84207 新規作成 2341150 wikitext text/x-wiki =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|denominar||直説法|不完了過去|3|p}} 4lah52yvo9lkulbha4y67dkxkyp2lwh denominabais 0 605151 2341151 2026-09-02T10:39:47Z Kuroco2k 84207 新規作成 2341151 wikitext text/x-wiki =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|denominar||直説法|不完了過去|2|p}} dsv289bnmmrojzh1jvr60d1d3v9ysgd denominábamos 0 605152 2341152 2026-09-02T10:39:47Z Kuroco2k 84207 新規作成 2341152 wikitext text/x-wiki =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|denominar||直説法|不完了過去|1|p}} haj83qjgllnj5dxvojzixi8l4qinru9 denominabas 0 605153 2341153 2026-09-02T10:39:48Z Kuroco2k 84207 新規作成 2341153 wikitext text/x-wiki =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|denominar||直説法|不完了過去|2|s}} 6p8f464l8x7mxu01visnxtcjdjabkcl denominaba 0 605154 2341154 2026-09-02T10:39:48Z Kuroco2k 84207 新規作成 2341154 wikitext text/x-wiki =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|denominar||直説法|不完了過去|1|s|;|直説法|不完了過去|3|s}} 0dyttwzmrs9clzqra4ftrltsw4pls63 denominan 0 605155 2341155 2026-09-02T10:39:48Z Kuroco2k 84207 新規作成 2341155 wikitext text/x-wiki =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|denominar||直説法|現在|3|p}} 1396v1x7dnhlt1aolnq48icc8phahcs denomináis 0 605156 2341156 2026-09-02T10:39:48Z Kuroco2k 84207 新規作成 2341156 wikitext text/x-wiki =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|denominar||直説法|現在|2|p}} 7uvfkpfwm7e81crg1os0f2xxshk4r7q denominad 0 605157 2341157 2026-09-02T10:40:19Z Kuroco2k 84207 新規作成 2341157 wikitext text/x-wiki =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|denominar||命令法|2|p}} 7siw918i4911fx88npktv0ylbqwipwi denominá 0 605158 2341158 2026-09-02T10:40:19Z Kuroco2k 84207 新規作成 2341158 wikitext text/x-wiki =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|denominar||命令法|2|s|voseo}} 21k1enzh5vh3aem455ojg74a0co2os1 denomináremos 0 605159 2341159 2026-09-02T10:40:19Z Kuroco2k 84207 新規作成 2341159 wikitext text/x-wiki =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|denominar||接続法|未来|1|p}} j5hg477k6xtygg48bixy297fna4ogza denominaren 0 605160 2341160 2026-09-02T10:40:19Z Kuroco2k 84207 新規作成 2341160 wikitext text/x-wiki =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|denominar||接続法|未来|3|p}} af4i879vxq8a6pwelxnon5nyjerztit denominasen 0 605161 2341161 2026-09-02T10:40:20Z Kuroco2k 84207 新規作成 2341161 wikitext text/x-wiki =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|denominar||接続法|過去|3|p}} g6qsmn1i82ddjcuz8souvf5gntsywia denominaseis 0 605162 2341162 2026-09-02T10:40:20Z Kuroco2k 84207 新規作成 2341162 wikitext text/x-wiki =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|denominar||接続法|過去|2|p}} 63117uex3kk4c10kbyesrxc4p7ugscj denominásemos 0 605163 2341163 2026-09-02T10:40:21Z Kuroco2k 84207 新規作成 2341163 wikitext text/x-wiki =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|denominar||接続法|過去|1|p}} 5l5vyfbzl5znakd8m2unbxd80w97zed denominases 0 605164 2341164 2026-09-02T10:40:21Z Kuroco2k 84207 新規作成 2341164 wikitext text/x-wiki =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|denominar||接続法|過去|2|s}} n6tq4suobm8i1mrgqcfpd44418cs2jd denominaran 0 605165 2341165 2026-09-02T10:40:21Z Kuroco2k 84207 新規作成 2341165 wikitext text/x-wiki =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|denominar||接続法|過去|3|p}} g6qsmn1i82ddjcuz8souvf5gntsywia denominase 0 605166 2341166 2026-09-02T10:40:21Z Kuroco2k 84207 新規作成 2341166 wikitext text/x-wiki =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|denominar||接続法|過去|1|s|;|接続法|過去|3|s}} i2eaodxu58qqhxt9t6lmg683hwu88p3 denominen 0 605167 2341167 2026-09-02T10:40:22Z Kuroco2k 84207 新規作成 2341167 wikitext text/x-wiki =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|denominar||接続法|現在|3|p|;|命令法|3|p}} nd8ly9ulq56h1k40eoss6nxixwb1mbw denominéis 0 605168 2341168 2026-09-02T10:40:22Z Kuroco2k 84207 新規作成 2341168 wikitext text/x-wiki =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|denominar||接続法|現在|2|p}} k6q8yxnepnfy1604nfg94kixz1t60wi denominés 0 605169 2341169 2026-09-02T10:40:23Z Kuroco2k 84207 新規作成 2341169 wikitext text/x-wiki =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|denominar||接続法|現在|2|s|voseo}} t4nt85u2fp337xsifu5yl1atwz77wk1 denominarais 0 605170 2341170 2026-09-02T10:40:23Z Kuroco2k 84207 新規作成 2341170 wikitext text/x-wiki =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|denominar||接続法|過去|2|p}} 63117uex3kk4c10kbyesrxc4p7ugscj denominás 0 605171 2341171 2026-09-02T10:40:45Z Kuroco2k 84207 新規作成 2341171 wikitext text/x-wiki =={{L|es}}== ==={{verb}}=== {{head|es|verb form}} #{{inflection of+|es|denominar||直説法|現在|2|s|voseo}} hmzgt14c98kg1r4df7f48pj5t4qyar8 テンプレート:krl-decl-V/koira 10 605172 2341174 2026-09-02T11:38:26Z Kuroco2k 84207 [[:en:Template:krl-decl-V/koira]] 2341174 wikitext text/x-wiki {{krl-decl-table|d=V|type=type 5/{{m|krl|koira}}, {{#ifeq:{{{1}}}|{{{2}}}|no gradation|{{{1}}}-{{{2}}} gradation}} <!-- singular --> |{{#invoke:string/templates|sub|{{pagename}}|1|-{{#expr:{{#invoke:string/templates|len|{{{1}}}}}+2}}}}{{{1}}}{{#switch:{{#invoke:string/templates|sub|{{pagename}}|-1|-1}}|a=a|ä=ä|???}} |{{#invoke:string/templates|sub|{{pagename}}|1|-{{#expr:{{#invoke:string/templates|len|{{{1}}}}}+2}}}}{{{2}}}{{#switch:{{#invoke:string/templates|sub|{{pagename}}|-1|-1}}|a=an|ä=än|???}} |{{#invoke:string/templates|sub|{{pagename}}|1|-{{#expr:{{#invoke:string/templates|len|{{{1}}}}}+2}}}}{{{1}}}{{#switch:{{#invoke:string/templates|sub|{{pagename}}|-1|-1}}|a=ua|ä=yä|???}} |{{#invoke:string/templates|sub|{{pagename}}|1|-{{#expr:{{#invoke:string/templates|len|{{{1}}}}}+2}}}}{{{1}}}{{#switch:{{#invoke:string/templates|sub|{{pagename}}|-1|-1}}|a=ah|ä=äh|???}} |{{#invoke:string/templates|sub|{{pagename}}|1|-{{#expr:{{#invoke:string/templates|len|{{{1}}}}}+2}}}}{{{2}}}{{#switch:{{#invoke:string/templates|sub|{{pagename}}|-1|-1}}|a=ašša|ä=äššä|???}} |{{#invoke:string/templates|sub|{{pagename}}|1|-{{#expr:{{#invoke:string/templates|len|{{{1}}}}}+2}}}}{{{2}}}{{#switch:{{#invoke:string/templates|sub|{{pagename}}|-1|-1}}|a=ašta|ä=äštä|???}} |{{#invoke:string/templates|sub|{{pagename}}|1|-{{#expr:{{#invoke:string/templates|len|{{{1}}}}}+2}}}}{{{2}}}{{#switch:{{#invoke:string/templates|sub|{{pagename}}|-1|-1}}|a=alla|ä=ällä|???}} |{{#invoke:string/templates|sub|{{pagename}}|1|-{{#expr:{{#invoke:string/templates|len|{{{1}}}}}+2}}}}{{{2}}}{{#switch:{{#invoke:string/templates|sub|{{pagename}}|-1|-1}}|a=alta|ä=ältä|???}} |{{#invoke:string/templates|sub|{{pagename}}|1|-{{#expr:{{#invoke:string/templates|len|{{{1}}}}}+2}}}}{{{2}}}{{#switch:{{#invoke:string/templates|sub|{{pagename}}|-1|-1}}|a=akši|ä=äkši|???}} |{{#invoke:string/templates|sub|{{pagename}}|1|-{{#expr:{{#invoke:string/templates|len|{{{1}}}}}+2}}}}{{{1}}}{{#switch:{{#invoke:string/templates|sub|{{pagename}}|-1|-1}}|a=ana|ä=änä|???}} |- |{{#invoke:string/templates|sub|{{pagename}}|1|-{{#expr:{{#invoke:string/templates|len|{{{1}}}}}+2}}}}{{{2}}}{{#switch:{{#invoke:string/templates|sub|{{pagename}}|-1|-1}}|a=atta|ä=ättä|???}} |- <!-- plural --> |{{#invoke:string/templates|sub|{{pagename}}|1|-{{#expr:{{#invoke:string/templates|len|{{{1}}}}}+2}}}}{{{2}}}{{#switch:{{#invoke:string/templates|sub|{{pagename}}|-1|-1}}|a=at|ä=ät|???}} |{{#invoke:string/templates|sub|{{pagename}}|1|-{{#expr:{{#invoke:string/templates|len|{{{1}}}}}+2}}}}{{{1}}}{{#switch:{{#invoke:string/templates|sub|{{pagename}}|-1|-1}}|a=ien|ä=ien|???}} |{{#invoke:string/templates|sub|{{pagename}}|1|-{{#expr:{{#invoke:string/templates|len|{{{1}}}}}+2}}}}{{{1}}}{{#switch:{{#invoke:string/templates|sub|{{pagename}}|-1|-1}}|a=ie|ä=ie|???}} |{{#invoke:string/templates|sub|{{pagename}}|1|-{{#expr:{{#invoke:string/templates|len|{{{1}}}}}+2}}}}{{{1}}}{{#switch:{{#invoke:string/templates|sub|{{pagename}}|-1|-1}}|a=ih|ä=ih|???}} |{{#invoke:string/templates|sub|{{pagename}}|1|-{{#expr:{{#invoke:string/templates|len|{{{1}}}}}+2}}}}{{{2}}}{{#switch:{{#invoke:string/templates|sub|{{pagename}}|-1|-1}}|a=issa|ä=issä|???}} |{{#invoke:string/templates|sub|{{pagename}}|1|-{{#expr:{{#invoke:string/templates|len|{{{1}}}}}+2}}}}{{{2}}}{{#switch:{{#invoke:string/templates|sub|{{pagename}}|-1|-1}}|a=ista|ä=istä|???}} |{{#invoke:string/templates|sub|{{pagename}}|1|-{{#expr:{{#invoke:string/templates|len|{{{1}}}}}+2}}}}{{{2}}}{{#switch:{{#invoke:string/templates|sub|{{pagename}}|-1|-1}}|a=illa|ä=illä|???}} |{{#invoke:string/templates|sub|{{pagename}}|1|-{{#expr:{{#invoke:string/templates|len|{{{1}}}}}+2}}}}{{{2}}}{{#switch:{{#invoke:string/templates|sub|{{pagename}}|-1|-1}}|a=ilta|ä=iltä|???}} |{{#invoke:string/templates|sub|{{pagename}}|1|-{{#expr:{{#invoke:string/templates|len|{{{1}}}}}+2}}}}{{{2}}}{{#switch:{{#invoke:string/templates|sub|{{pagename}}|-1|-1}}|a=iksi|ä=iksi|???}} |{{#invoke:string/templates|sub|{{pagename}}|1|-{{#expr:{{#invoke:string/templates|len|{{{1}}}}}+2}}}}{{{1}}}{{#switch:{{#invoke:string/templates|sub|{{pagename}}|-1|-1}}|a=ina|ä=inä|???}} |{{#invoke:string/templates|sub|{{pagename}}|1|-{{#expr:{{#invoke:string/templates|len|{{{1}}}}}+2}}}}{{{2}}}{{#switch:{{#invoke:string/templates|sub|{{pagename}}|-1|-1}}|a=ineh|ä=ineh|???}} |{{#invoke:string/templates|sub|{{pagename}}|1|-{{#expr:{{#invoke:string/templates|len|{{{1}}}}}+2}}}}{{{2}}}{{#switch:{{#invoke:string/templates|sub|{{pagename}}|-1|-1}}|a=itta|ä=ittä|???}} |- |{{#invoke:string/templates|sub|{{pagename}}|1|-{{#expr:{{#invoke:string/templates|len|{{{1}}}}}+2}}}}{{{2}}}{{#switch:{{#invoke:string/templates|sub|{{pagename}}|-1|-1}}|a=in|ä=in|???}} }}<noinclude>[[カテゴリ:{{krl}}_語形変化表テンプレート]]</noinclude> 6527ii4kum6hgstcj4rnwvrjkopf9rz テンプレート:krl-decl-T/koira 10 605173 2341175 2026-09-02T11:38:26Z Kuroco2k 84207 [[:en:Template:krl-decl-T/koira]] 2341175 wikitext text/x-wiki {{krl-decl-table|d=T|type=type 5/{{m|krl|koira}}, {{#ifeq:{{{1}}}|{{{2}}}|no gradation|{{{1}}}-{{{2}}} gradation}} <!-- singular --> |{{#invoke:string/templates|sub|{{pagename}}|1|-{{#expr:{{#invoke:string/templates|len|{{{1}}}}}+2}}}}{{{1}}}{{#switch:{{#invoke:string/templates|sub|{{pagename}}|-1|-1}}|a=a|ä=ä|???}} |{{#invoke:string/templates|sub|{{pagename}}|1|-{{#expr:{{#invoke:string/templates|len|{{{1}}}}}+2}}}}{{{2}}}{{#switch:{{#invoke:string/templates|sub|{{pagename}}|-1|-1}}|a=an|ä=än|???}} |{{#invoke:string/templates|sub|{{pagename}}|1|-{{#expr:{{#invoke:string/templates|len|{{{1}}}}}+2}}}}{{{1}}}{{#switch:{{#invoke:string/templates|sub|{{pagename}}|-1|-1}}|a=ua|ä=iä|???}} |{{#invoke:string/templates|sub|{{pagename}}|1|-{{#expr:{{#invoke:string/templates|len|{{{1}}}}}+2}}}}{{{1}}}{{#switch:{{#invoke:string/templates|sub|{{pagename}}|-1|-1}}|a=ah|ä=äh|???}} |{{#invoke:string/templates|sub|{{pagename}}|1|-{{#expr:{{#invoke:string/templates|len|{{{1}}}}}+2}}}}{{{2}}}{{#switch:{{#invoke:string/templates|sub|{{pagename}}|-1|-1}}|a=ašša|ä=äššä|???}} |{{#invoke:string/templates|sub|{{pagename}}|1|-{{#expr:{{#invoke:string/templates|len|{{{1}}}}}+2}}}}{{{2}}}{{#switch:{{#invoke:string/templates|sub|{{pagename}}|-1|-1}}|a=ašta|ä=äštä|???}} |{{#invoke:string/templates|sub|{{pagename}}|1|-{{#expr:{{#invoke:string/templates|len|{{{1}}}}}+2}}}}{{{2}}}{{#switch:{{#invoke:string/templates|sub|{{pagename}}|-1|-1}}|a=alla|ä=ällä|???}} |{{#invoke:string/templates|sub|{{pagename}}|1|-{{#expr:{{#invoke:string/templates|len|{{{1}}}}}+2}}}}{{{2}}}{{#switch:{{#invoke:string/templates|sub|{{pagename}}|-1|-1}}|a=alda|ä=äldä|???}} |{{#invoke:string/templates|sub|{{pagename}}|1|-{{#expr:{{#invoke:string/templates|len|{{{1}}}}}+2}}}}{{{2}}}{{#switch:{{#invoke:string/templates|sub|{{pagename}}|-1|-1}}|a=akši|ä=äkši|???}} |{{#invoke:string/templates|sub|{{pagename}}|1|-{{#expr:{{#invoke:string/templates|len|{{{1}}}}}+2}}}}{{{1}}}{{#switch:{{#invoke:string/templates|sub|{{pagename}}|-1|-1}}|a=ana|ä=änä|???}} |{{#invoke:string/templates|sub|{{pagename}}|1|-{{#expr:{{#invoke:string/templates|len|{{{1}}}}}+2}}}}{{{2}}}{{#switch:{{#invoke:string/templates|sub|{{pagename}}|-1|-1}}|a=anke|ä=änke|???}} |{{#invoke:string/templates|sub|{{pagename}}|1|-{{#expr:{{#invoke:string/templates|len|{{{1}}}}}+2}}}}{{{2}}}{{#switch:{{#invoke:string/templates|sub|{{pagename}}|-1|-1}}|a=atta|ä=ättä|???}} |{{#invoke:string/templates|sub|{{pagename}}|1|-{{#expr:{{#invoke:string/templates|len|{{{1}}}}}+2}}}}{{{2}}}{{#switch:{{#invoke:string/templates|sub|{{pagename}}|-1|-1}}|a=ačči|ä=äčči|???}} <!-- plural --> |{{#invoke:string/templates|sub|{{pagename}}|1|-{{#expr:{{#invoke:string/templates|len|{{{1}}}}}+2}}}}{{{2}}}{{#switch:{{#invoke:string/templates|sub|{{pagename}}|-1|-1}}|a=at|ä=ät|???}} |{{#invoke:string/templates|sub|{{pagename}}|1|-{{#expr:{{#invoke:string/templates|len|{{{1}}}}}+2}}}}{{{2}}}{{#switch:{{#invoke:string/templates|sub|{{pagename}}|-1|-1}}|a=in|ä=in|???}} |{{#invoke:string/templates|sub|{{pagename}}|1|-{{#expr:{{#invoke:string/templates|len|{{{1}}}}}+2}}}}{{{1}}}{{#switch:{{#invoke:string/templates|sub|{{pagename}}|-1|-1}}|a=ie|ä=ie|???}} |{{#invoke:string/templates|sub|{{pagename}}|1|-{{#expr:{{#invoke:string/templates|len|{{{1}}}}}+2}}}}{{{1}}}{{#switch:{{#invoke:string/templates|sub|{{pagename}}|-1|-1}}|a=ih|ä=ih|???}} |{{#invoke:string/templates|sub|{{pagename}}|1|-{{#expr:{{#invoke:string/templates|len|{{{1}}}}}+2}}}}{{{2}}}{{#switch:{{#invoke:string/templates|sub|{{pagename}}|-1|-1}}|a=issa|ä=issä|???}} |{{#invoke:string/templates|sub|{{pagename}}|1|-{{#expr:{{#invoke:string/templates|len|{{{1}}}}}+2}}}}{{{2}}}{{#switch:{{#invoke:string/templates|sub|{{pagename}}|-1|-1}}|a=ista|ä=istä|???}} |{{#invoke:string/templates|sub|{{pagename}}|1|-{{#expr:{{#invoke:string/templates|len|{{{1}}}}}+2}}}}{{{2}}}{{#switch:{{#invoke:string/templates|sub|{{pagename}}|-1|-1}}|a=illa|ä=illä|???}} |{{#invoke:string/templates|sub|{{pagename}}|1|-{{#expr:{{#invoke:string/templates|len|{{{1}}}}}+2}}}}{{{2}}}{{#switch:{{#invoke:string/templates|sub|{{pagename}}|-1|-1}}|a=ilda|ä=ildä|???}} |{{#invoke:string/templates|sub|{{pagename}}|1|-{{#expr:{{#invoke:string/templates|len|{{{1}}}}}+2}}}}{{{2}}}{{#switch:{{#invoke:string/templates|sub|{{pagename}}|-1|-1}}|a=iksi|ä=iksi|???}} |{{#invoke:string/templates|sub|{{pagename}}|1|-{{#expr:{{#invoke:string/templates|len|{{{1}}}}}+2}}}}{{{1}}}{{#switch:{{#invoke:string/templates|sub|{{pagename}}|-1|-1}}|a=ina|ä=inä|???}} |{{#invoke:string/templates|sub|{{pagename}}|1|-{{#expr:{{#invoke:string/templates|len|{{{1}}}}}+2}}}}{{{2}}}{{#switch:{{#invoke:string/templates|sub|{{pagename}}|-1|-1}}|a=inke|ä=inke|???}} |{{#invoke:string/templates|sub|{{pagename}}|1|-{{#expr:{{#invoke:string/templates|len|{{{1}}}}}+2}}}}{{{2}}}{{#switch:{{#invoke:string/templates|sub|{{pagename}}|-1|-1}}|a=itta|ä=ittä|???}} |{{#invoke:string/templates|sub|{{pagename}}|1|-{{#expr:{{#invoke:string/templates|len|{{{1}}}}}+2}}}}{{{2}}}{{#switch:{{#invoke:string/templates|sub|{{pagename}}|-1|-1}}|a=ičči|ä=ičči|???}} |{{#invoke:string/templates|sub|{{pagename}}|1|-{{#expr:{{#invoke:string/templates|len|{{{1}}}}}+2}}}}{{{2}}}{{#switch:{{#invoke:string/templates|sub|{{pagename}}|-1|-1}}|a=in|ä=in|???}} }}<noinclude>[[カテゴリ:{{krl}}_語形変化表テンプレート]]</noinclude> tdze97k6n4v9rh5ha3kxsztmd3j3fyb kylä 0 605174 2341176 2026-09-02T11:40:48Z Kuroco2k 84207 [[:en:kylä]] 2341176 wikitext text/x-wiki {{also|kyla|Kyla|kýla}} =={{L|izh}}== ==={{etym}}=== {{etyl|fiu-fin-pro|izh}} {{m|fiu-fin-pro|*külä}} ===={{cogn}}==== {{cog|et|küla}} {{cog|fi|kylä}} ==={{pron}}=== *{{izh-p}} ==={{noun}}=== {{head|izh|noun}} #{{ふりがな|村|むら}}。 ===={{decl}}==== {{izh-decl/koira|l|l}} ===={{drv}}==== {{col4|lang=izh |rantakylä|Mäkkylä|kylänvahti|kylänluku|Metsäkylä|Koskisenkylä}} =={{L|olo}}== ==={{etym}}=== {{etyl|fiu-fin-pro|olo}} {{m|fiu-fin-pro|*külä}} ===={{cogn}}==== {{cog|et|küla}} {{cog|fi|kylä}} ==={{pron}}=== *{{IPA|lang=olo|/ˈkylʲæ/}} *{{hyph|olo|ky|lä}} *{{rhymes|lang=olo|ylʲæ|s=2}} ==={{noun}}=== {{head|olo|noun}} #{{ふりがな|村|むら}}。 #:{{syn|olo|hieru}} =={{L|krl}}== ==={{etym}}=== {{etyl|fiu-fin-pro|krl}} {{m|fiu-fin-pro|*külä}} ===={{cogn}}==== {{cog|et|küla}} {{cog|fi|kylä}} ==={{pron}}=== *{{IPA|lang=krl|/ˈkylʲæ/}} *{{hyph|krl|ky|lä}} ==={{noun}}=== {{krl-noun|kylän|kylyä|par2=kyliä}} #{{ふりがな|村|むら}}。 ===={{decl}}==== {{krl-decl-V/koira|l|l}} {{krl-decl-T/koira|l|l}} {{krl-decl-poss}} =={{L|fi}}== ==={{etym}}=== {{etyl|fiu-fin-pro|fi}} {{m|fiu-fin-pro|*külä}} < {{etyl|urj-pro|fi}} {{m|urj-pro|*külä}} 。1330年初出。 ==={{pron}}=== {{fi-pronunciation}} ==={{noun}}=== {{fi-noun}} #{{ふりがな|村|むら}}。 #{{context|dialectal|obsolete|lang=fi}} {{ふりがな|家|いえ}}。 ===={{decl}}==== {{fi-decl-koira|kyl|||ä}} ===={{drv}}==== {{col4|lang=fi|kylittäin|kyläillä|kyläläinen|kylästellä|alppikylä|Alppikylä|asemakylä|asumakylä|autiokylä|ekokylä|emäkylä|hajakylä|harjukylä|Hämeenkylä|hökkelikylä|jokikylä|Jyväskylä|Järvenkylä|järvikylä|kalastajakylä|kasakkakylä|kehäkylä|kirkonkylä|kisakylä|kivikylä|Koivukylä|kolttakylä|kotikylä|Kruununkylä|kyläasutus|kyläbulbuli|kylähullu|kyläjuhla|kyläjärjestys|kyläkalmisto|kyläkauppa|kyläkeinu|kyläkeskus|kyläkokous|kyläkoulu|kyläkunta|kyläkutsu|kyläkuva|kyläluuta|kylämaisema|kyläneuvosto|kylänkäynti|kylänlaita|kylänluku|kylänmetsä|kylänmies|kylänmäki|kylänpää|Kylänpää|kylänraitti|kylänurmikka|kylänvainio|kylänvanhin|kylänäätä|kyläpahanen|kyläpaikka|kyläpoliitikko|kyläpolitikointi|kyläpyörä|kyläpäästäinen|kyläpöllönen|kyläreissu|Kyläsaari|kyläseppä|kyläsirkku|kylässäkäynti|kyläsuunnittelu|kylätalo|kylätappelu|kylätie|kylätoimikunta|kylätoiminta|kylätutkimus|kyläyhdistys|kyläyhdyskunta|kyläyhteisö|käpykylä|lapinkylä|lapsikylä|lomakylä|lähikylä|maailmankylä|maakirjakylä|maalikylä|maarekisterikylä|Matinkylä|Mellunkylä|Messukylä|metsäkylä|Mäkkylä|mökkikylä|naapurikylä|olympiakylä|Oulunkylä|paalukylä|parakkikylä|peräkylä|Peräkylä|Piispankylä|pikkukylä|Pirttikylä|raittikylä|rajakylä|rekisterikylä|rivikylä|ryhmäkylä|rykelmäkylä|saamelaiskylä|salokylä|Sepänkylä|siirtokylä|Simonkylä|Sodankylä|sotilaskylä|syrjäkylä|talouskylä|Tapaninkylä|tasankokylä|tekniikkakylä|teknologiakylä|telttakylä|teollisuuskylä|Tuomarinkylä|tuppukylä|Uusikylä|vaarakylä|Vartiokylä|vuoristokylä|ylioppilaskylä|Yliskylä|yökylä}} n37786k8cany3py0d007gi14l1i39c6 kyllä 0 605175 2341177 2026-09-02T11:40:49Z Kuroco2k 84207 [[:en:kyllä]] 2341177 wikitext text/x-wiki {{also|kylla}} =={{L|krl}}== ==={{etym}}=== {{etyl|fiu-fin-pro|krl}} {{m|fiu-fin-pro|*küllä}} ==={{pron}}=== *{{IPA|lang=krl|/ˈkylʲːæ/}} *{{hyph|krl|kyl|lä}} ==={{adv}}=== {{head|krl|adverb}} #[[勿論]]。 #[[豊富]]に。 ==={{interj}}=== {{head|krl|interjection}} #{{context|North Karelian|lang=krl}} [[はい]]。そうだ。 #:{{syn|krl|jo|da}} =={{L|fi}}== ==={{etym}}=== {{etyl|fiu-fin-pro|fi}} {{m|fiu-fin-pro|*küllä}} < {{m|fiu-fin-pro||*küllä}}。おそらく{{etyl|fiu-pro|-}} {{m|fiu-pro|*k⁽ʷ⁾el-}} か。副詞は名詞の派生、間投詞は副詞の派生。 ==={{pron}}=== {{fi-pronunciation|a=LL-Q1412 (fin)-Seqv-kyllä.wav|a2=Fi-kyllä.ogg}} ==={{adv}}=== {{fi-adv|-}} #強意を示す。 #{{context|archaic|lang=fi}} [[充分]]に。 ==={{interj}}=== {{head|fi|intj}} #{{context|やや||formal|lang=fi}} [[はい]]。そうだ。 #:{{syn|fi|joo|juu}} #:{{syn|fi|ei}} ==={{noun}}=== {{fi-noun}} #{{context|obsolete|lang=fi}} [[とみ|富]]。 ===={{drv}}==== {{col3|lang=fi|kylliksi|kyllin|Kylliäinen|kyllyys|kylläinen|kyllälti|kyllästää|kyllääntyä|Kyllönen|kyltyä|kyllä-mies}} b7unkftg217ch5stdxr3q8f9v2cfmrj