Two guns have I got.
One length they are not.
The long one’s for Reds,
The short for girls’ beds.

Update:

I’m not satisfied with the above translation, particularly the last line. There are no “beds” in the original, and in fact the gun is not for girls’ beds but for the girls themselves. A literal translation would be:

I have two guns.
The length is different.
The long one “fights” Communist spies.
The short one “fights” girls.

The word I’ve rendered “fight” can have any number of meanings — attack, beat, do, make, use, etc. — depending on the object. A translation should use the same word in both lines, but English doesn’t have any verbs quite as versatile as 打, so I cheated and used a preposition.

Also, the rhyme scheme of the original is AAXA, not AABB. I think the original form should be preserved, since the mild rhyme subversion (you think it’s going to be AABB until you hear the last word) adds something to the punchline.

So here’s my latest attempt at a translation:

We’ve guns of two classes
In length one surpasses
Its peer; that’s for Commies.
The short one’s for lasses.

Still not perfect, but I think it’s better than the first.

(Incidentally, I find this song to be an amusing reflection of cultural differences. Can you imagine any self-respecting American soldier singing a song in which he refers to his penis as “the short one”?)

Military service is compulsory for all young men in Taiwan, “real” Taiwanese included, but of course it was the ROC government brought over by Chiang Kai-shek which decided that the Reds were the enemy.