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:利用者名変更依頼|利用者名変更]]
|}
== 投稿にあたって ==
# 投稿時には'''必ず''' "~~~~" を使って[[w:Wikipedia:ノートのページでは投稿に署名をする|日付入りの署名]]をしてください。
# 必ず対象のページを明示、リンクし、'''具体的'''に記載してください。作業に合意が必要な場合は、合意がなされていることをリンクと共に明示してください。
# 質問をする場所ではありません。質問は[[Wiktionary:編集室]]など適切な場所へ。
----
<p align="center">'''[{{fullurl:{{FULLPAGENAME}}|action=edit§ion=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>--[[特別:投稿記録/~2025-52239-7|~2025-52239-7]] ([[利用者・トーク:~2025-52239-7|会話]]) 2025年9月15日 (月) 23:46 (UTC)
::{{返信|~2025-52239-7}} [[玄白|代わりに作成]]しましたので、ご確認をお願いします。--[[利用者:20041027 tatsu|20041027 tatsu]] ([[利用者・トーク:20041027 tatsu|トーク]]) 2025年9月16日 (火) 11:23 (UTC)
:::対処ありがとうございます。--[[特別:投稿記録/~2025-52239-7|~2025-52239-7]] ([[利用者・トーク:~2025-52239-7|会話]]) 2025年9月16日 (火) 12:15 (UTC)
:「後熟」で未だに ja.wiki abuser が発動していて、語釈文が不自然に途切れた状態で放置するしかなくなっています。--[[特別:投稿記録/~2025-27136-46|~2025-27136-46]] ([[利用者・トーク:~2025-27136-46|会話]]) 2025年11月11日 (火) 10:09 (UTC)
:「[[政策]]」を更新しようとしたら「Repeating Characters」に引っ掛かりました。--[[特別:投稿記録/~2025-27136-46|~2025-27136-46]] ([[利用者・トーク:~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>です。--[[特別:投稿記録/~2025-32841-32|~2025-32841-32]] ([[利用者・トーク:~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]]®
*[[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
fú
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, "'", "'"))
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, "'", "'") .. "."
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, "'", "'") .. "."
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 = "—"
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> </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, "'", "'"))
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, "'", "'") .. "."
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, "'", "'") .. "."
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 = "—"
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> </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, "''", "''")
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 "—"
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 "—"
args.short_n = args.short_n or "—"
args.short_f = args.short_f or "—"
args.short_p = args.short_p or "—"
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 "—"
args.short_n = args.short_n or "—"
args.short_f = args.short_f or "—"
args.short_p = args.short_p or "—"
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が類推簡化字であるとして明確に定義づけた文字を、幾つか「簡体字」に変更しています。たとえば[[𫐅]]の項目ですが、私は[[軕]]に対する類推簡化字であると初版で定義づけました。あなたはこれを簡体字に変更しました。中国語の「簡体字」の項目として、どう説明できますか。ほかも全部同じことがいえますが。それと[[𬬷]]などは『[[w:中華字海|中華字海]]』に「类推」简化字であると書いてあるのですよ。
拼音の追記についてはありがとうございます。初版でそこまではやってられないので。そして類推簡化字の項目を猛烈に投稿してもらってることについてはたすかります。--[[利用者:Charidri|Charidri]] ([[利用者・トーク:Charidri|トーク]]) 2024年1月27日 (土) 13:56 (UTC)
== 情報減▲ ==
異体字の項目は、音訓のフォーマットを省略しているだけであって、[[𧥞]]での[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)
[[𧥞]]の発音を戻しておいてくださいよ。--[[利用者: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=漢字語}} *<[[修]][[養]]>;[[修養|*]] #[[修養]]。」
2340618
wikitext
text/x-wiki
=={{L|ko}}==
==={{pron}}===
{{ko-IPA}}
==={{noun}}===
{{head|ko|noun|cat2=漢字語}}
*<[[修]][[養]]>;[[修養|*]]
#[[修養]]。
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)
:どちらの条件も満たしていません。
:私としては、「その表記が普通名詞と一致する固有名詞」であることから作品名の記述を追加したまでです。しかし、その理屈が通るとすれば、無名な作品までいちいち記載する羽目になるので、冷静に考えれば不適切です。
:したがって、当該の記述は削除しました。--[[特別:投稿記録/~2026-47618-09|~2026-47618-09]] ([[利用者・トーク:~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)
:どちらの条件も満たしていません。
:私としては、「その表記が普通名詞と一致する固有名詞」であることから作品名の記述を追加したまでです。しかし、その理屈が通るとすれば、無名な作品までいちいち記載する羽目になるので、冷静に考えれば不適切です。
:したがって、当該の記述は削除しました。--[[特別:投稿記録/~2026-47618-09|~2026-47618-09]] ([[利用者・トーク:~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|}}}| の[[帯気音化]]| の[[帯気音化]]。}}|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|}}}|| in}}<!--
-->|[https://helyesiras.mta.hu/helyesiras/default/akh#{{{section}}} § {{{section}}}]{{#if:{{{onlylink|}}}|| in}}<!--
-->}}<!--
-->|{{cln|hu|terms referencing the spelling regulation without specifying its section}}<!--
-->}}<!--
-->{{#if:{{{onlylink|}}}|| [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|}}}|| in}}<!--
-->|[https://helyesiras.mta.hu/helyesiras/default/akh#{{{section}}} § {{{section}}}]{{#if:{{{onlylink|}}}|| in}}<!--
-->}}<!--
-->|{{cln|hu|terms referencing the spelling regulation without specifying its section}}<!--
-->}}<!--
-->{{#if:{{{onlylink|}}}|| [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>}}}
もしこのページの削除に同意できなければ、'''記事を適切な内容に改めた上で''' {{即時版指定削除}} を取り除いてください。
[[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>}}}
もしこのページの削除に同意できなければ、'''記事を適切な内容に改めた上で''' {{即時版指定削除}} を取り除いてください。
[[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>}}}
もしこのページの削除に同意できなければ、'''記事を適切な内容に改めた上で''' {{即時版指定削除}} を取り除いてください。
[[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