[[boa#Finnish|boa]]
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.