# [Zsh](https://www.zsh.org) `-y`, <sup><s>412</s></sup> 383 bytes

<pre><code class="lang-bash">for x y (first
two-turtle-doves second
three-french-hens third
`for a b (four call\ -birds
five golden-r\ s
six geese-a-lay
seven swans-a-swimm
eight maids-a-milk
nine ladies-danc
ten lords-a-leap
eleven pipers-pip
twelve drummers-drumm)()(&lt;&lt;&lt;$a-$1ing$2\ ${${a%[et]}/%v/f}th) $b`)&lt;&lt;&lt;&quot;On the $x day of Christmas
my true love gave to me
$1a partridge in a pear tree
&quot;&amp;&amp;1=&quot;$y
${1-and-}&quot;</code></pre>

[Attempt This Online!](https://ato.pxeger.com/run?1=LVFLbsIwEFW3PsUoMogsLJSuuqCrHqAHACSGeJJY9SfyOIEUoR6kG6SqPVRPU0PZzBs9vzf283x-vXP3sy7UVGwv30Nq1NPvw0cTIhxhgkVjIieRDkGlISZLSoeRGJjq4LVIXSRSTSRfd6ojz5A6E7XYXf0I--wPQ4Qard2A2ucjFo0ZCdpgNXkVN8CCzRFaIiaFyuIkmEbywAf0nBk-GOcEmbZL4NDoK-eMfRPeeAKL2hArjb4WKbtsiDeFJewF2duk3vQUWWXIOcjm23UcnLtyt6ZclIvVaiVRycr4Vj5uQJ7kCWdrStvzcjYum3PqSpD7XZl1xavPKQnkETROEBp46aLh5JCFmyDFIT8rXDNiLimAIyErhB5jika3BMbnv-kJYxYTiWI-r54LOQl5qhR6rc7F_x7u67jc8Q8)

This may be the first time I've used Zsh's anonymous functions in golf. By combining it with the `-y` option, I can conveniently split `$b` into `$1` and `$2`.

Makes use of some interesting symmetries:
- all the gifts (starting with the fourth) contain `ing`
- fi**ve** -> fi**f**th; twel**ve** -> twel**f**th (that's a mini-etymology lesson for you)
- nin**e** -> ninth; eigh**t** -> eighth