This is actually fairly easy to fix, and I have therefore had this bookmarked since May.
In this case, and it's most often this easy, it's just to rewrite from
printf(_(%d gemstone), $gemstoneCnt);
to
printf(ngettext('(%d gemstone)', '(%d gemstones)', $gemstoneCnt), $gemstoneCnt);
This has the side effect that the translations will be removed meanwhile though.