[[boa#Finnish|boa]]
It's treating -oi- as a diphthong, which means it gets -hin in the plural. And there is a rule in the code: "-- If the plural stem ends in a vowel + i, then replace the i with j".
Yes. I browsed through the 5400 koira-type nominals we have and did not spot a word to which this rule would apply.
There's probably only one word with which something like that happens: poika, but it can be handled by assuming ik-j gradation. Also, there are dialects in which e.g. reikä would be inflected like reikä-reijän-reikää-reikään-reijät-reikien-reikiä-reikiin but if needed, also they can be handled using k-j gradation:
Inflection of User talk:CodeCat/boa/reply (5) (Kotus type 10*L/koira, k-j gradation) | ||||
---|---|---|---|---|
nominative | reikä | reijät | ||
genitive | reijän | reikien | ||
partitive | reikää | reikiä | ||
illative | reikään | reikiin | ||
singular | plural | |||
nominative | reikä | reijät | ||
accusative | nom. | reikä | reijät | |
gen. | reijän | |||
genitive | reijän | reikien reikäinrare | ||
partitive | reikää | reikiä | ||
inessive | reijässä | reijissä | ||
elative | reijästä | reijistä | ||
illative | reikään | reikiin | ||
adessive | reijällä | reijillä | ||
ablative | reijältä | reijiltä | ||
allative | reijälle | reijille | ||
essive | reikänä | reikinä | ||
translative | reijäksi | reijiksi | ||
abessive | reijättä | reijittä | ||
instructive | — | reijin | ||
comitative | See the possessive forms below. |
The difficulty is that I wrote the module so that these rules apply to all declension types. So if I remove it, it will break others as well. I'll set up some tracking to see which other terms currently are affected by the rule, and then make it type-specific.
See Special:WhatLinksHere/Template:tracking/fi-nominals/i-j and Special:WhatLinksHere/Template:tracking/fi-nominals/h.
I don't think there are such terms. Good to check, however. Let me know if you find any.
Am I correct to assume the change of i to j in the partitive plural only occurs if it's preceded by the final vowel (possibly modified) of the stem, but it remains i when that vowel is replaced by i? In other words, it's bo-i-a because the singular final vowel a got replaced by i in the plural. Whereas for example in risti, the vowel is not replaced (though it is modified), but i is added on: rist-i > rist-e-i, thus rist-e-j-a.
I don't know whether the rule can be formulared that way. I don't think it's even necessary, because the change can be handled as ordinary consonant gradation. In the case of "boa" I'd think it depends on pronunciation: the "o" is long although it is spelled as short.
The Finnish oblique plural marker is perhaps best considered //j// rather than //i// (with vocalization rules to produce /i/ when not intervocalic), if you wanted to analyze it in terms of a single agglutinative marker.
However, you could just as well analyze Finnish plural stems as rather having two markers - an agglutinative ending /i/, and a vowel mutation rule that changes /ä/ → /i/, /a/ → either /o/ or /i/, and /i/ → /e/. In the kala and risti types they co-occur, with the result that e.g. //kalo-i-a// produces kaloja; but elsewhere you only ever have one or the other. There's no real benefit to an analysis that e.g. vesiä would be underlyingly //vesi-i-ä//.
(As we see from words like punainen or ajaja, the rule *aj > *i/*oi had ceased to be surface-phonological already in Proto-Finnic.)
I guess you figured this out already, but here's a list of declension classes where "j" appears in the partitive plural and/or "h" in illative singular or plural in at least one of the alternative inflected forms (in "mies" H appeears also in nominative plural and genitive singular and plural):
- F
- Template:fi-decl-filee H
- H
- Template:fi-decl-hame H
- K
- Template:fi-decl-kahdeksas
- Template:fi-decl-kaksi
- Template:fi-decl-kala J H
- Template:fi-decl-kalleus
- Template:fi-decl-katiska J H
- Template:fi-decl-kevät
- Template:fi-decl-koira
- Template:fi-decl-korkea H
- Template:fi-decl-kulkija H
- Template:fi-decl-kuollut H
- Template:fi-decl-kynsi
- Template:fi-decl-kytkin
- Template:fi-decl-käsi
- L
- Template:fi-decl-laatikko J H
- Template:fi-decl-lapsi
- Template:fi-decl-lämmin
- M
- Template:fi-decl-maa H
- Template:fi-decl-mies H
- N
- Template:fi-decl-nainen
- Template:fi-decl-nalle J H
- O
- Template:fi-decl-ohut H
- Template:fi-decl-omena H
- Template:fi-decl-onneton
- Template:fi-decl-ovi
- P
- Template:fi-decl-palvelu J H
- Template:fi-decl-paperi J H
- Template:fi-decl-parfait H
- Template:fi-decl-pieni
- R
- Template:fi-decl-risti J H
- Template:fi-decl-rosé H
- S
- Template:fi-decl-sisar
- Template:fi-decl-sisin
- Template:fi-decl-solakka J H
- Template:fi-decl-suo H
- T
- Template:fi-decl-tiili
- Template:fi-decl-toimi
- Template:fi-decl-tuhat
- U
- Template:fi-decl-uni
- V
- Template:fi-decl-valo J H
- Template:fi-decl-valtio
- Template:fi-decl-vanhempi
- Template:fi-decl-vapaa
- Template:fi-decl-vasen
- Template:fi-decl-vastaus
- Template:fi-decl-veitsi
- Template:fi-decl-vieras
I guess I have a working solution, albeit a bit patch-like. I think you should rewrite the lines 180 to 193 in the nominals module such that they are only applied to those declension classes in which the i>j -change actually takes place. That would mean the classes kala, katiska, laatikko, nalle, palvelu, paperi, risti, solakka and valo. In other classes (koira in the case of "boa") there's never such change. I mean these lines:
if not stems["par_pl"] and stems["pl"] then stems["par_pl"] = {}
for _, stem in ipairs(stems["pl"]) do -- If the plural stem ends in a vowel + i, then replace the i with j if mw.ustring.find(stem, "[aeiouyäö]i$") then require("Module:debug").track("fi-nominals/i-j") table.insert(stems["par_pl"], (mw.ustring.gsub(stem, "i$", "j"))) else table.insert(stems["par_pl"], stem) end end end
The function that generates these stems doesn't have any idea what the declension class is, though. It applies "universal" rules. If the declension class specifies the partitive plural stem itself, it gets used as-is, otherwise it's generated based on the code you posted, using the general plural stem as the base.
In this case, the rule is not universal, so the part that replaces i with j has to be removed and put in the individual classes instead.
I've now made this change: diff. Essentially, the code that generated the partitive plural stem by changing i to j was removed from the "universal" part, and three rules for individual classes were added to compensate. Let me know if this fixes it.
It seems to fix the partitive plural, but now I realise that there's similar problem with illative plural. It becomes "biotin" but it should be "boiin".
That's just bizarre. Where is it getting the t from??
What code are you writing to make the table? I can investigate it further then.
Sorry, it's a typo, or rather proofreader-generated error. I wanted to write "boihin". I believe the "h" is generated by the lines following those which generate the "j".
To be more exact, it seems to be the line 202 through 214: if not stems["ill_pl"] and stems["pl"] then stems["ill_pl"] = {}
for _, stem in ipairs(stems["pl"]) do -- If the stem ends in a long vowel or diphthong, then add -h if mw.ustring.find(stem, "([aeiouyäö])%1$") or mw.ustring.find(stem, "[aeiouyäö][iyü]$") then require("Module:debug").track("fi-nominals/h") table.insert(stems["ill_pl"], stem .. "h") else table.insert(stems["ill_pl"], stem) end end end
Thanks. The illative plural problem still remains. It is similar in nature, but the affected declension categories are not the same, see the table a little bit up this discussion chain.
Except that I just noticed an omission in the table. The words in "kevät" -category have a rare illative plural form "keväihin". I need to check if there are other cases like that.