It seems to be correct. (Just note that your remark “If the second and third forms are the same, the form need only be written once.” should be valid generally, it is implemented as Language::preConvertPlural, which pads the array of the forms to its full length by copying the last one.)